BookReview [게임 프로그래머로 산다는 것]
게임 프로그래머로 산다는 것
가볍게 일기 좋은 책이라고 생각해서 생각도 정리할 겸, 이동중에 읽을려고 샀다.
빠르게 다 읽었는데 정리를 못해서 이제야 올린다..!
내용은 전반적으로 색이 다른 게임 개발자의 개개인의 삶을 보여준다.
1장 김성완의 나는 인디게임 개발자다.
50대가 되어도 여전히 코딩을 할 수 있고 새로운 걸 공부하고 있다는 것입니다.
물론 젊은 시절만큼의 체력과 속도는 없지만
대신 그걸 메꾸고도 남을 만큼 지혜가 생긴다는 것입니다.
그러니 늙는 것을 두려워하지 말고 매일 매일 신나게 살았으면 합니다.
게임 개발의 역사를 짧게 체험할 수 있는 내용이다.
저자의 게임개발에 관련된 이야기를 읽고 있으면 내가 지금 얼마나 쉽게 개발하는 환경에 있는지 알 수 있다.
물론 시대적 차이가 있지만 내용으로 소개되는 아리타, 둠등 그 시대에 게임들을 보고 느끼며 게임을 개발해왔는지..
게임을 인간의 놀이 즉, 고등한 생물들의 국한된 행위로 보는 것이 마치 놀이하는 인간(호모 루덴스)
라는 책이 생각난다.
컴퓨터가 없던 시절 보드게임부터 지금의 3D게임까지의 역사도 한 인간의 삶보다 짧다는 것이 진짜 신기하기도 하고 저자가 생각하는 미래의 게임 프로그래머의 모습또한 신기하다.
VR/AR을 끼고 블럭을 조립하듯이 게임을 만들 것이라는 생각 자체가 게임(놀이)와 제작의 경계가 좁혀지는 지금 현대사회를 많이 예측한 듯 하다.
점차 모듈화를 거듭하기도 하지만 그럼에도 변하지 않는 것
은 항상 배워야 함을 강조한다.
프로그래밍이란, 컴퓨터에 지시할 일을 컴퓨터가 언어를 이용해 규칙에 따라 차근 차든 명령서를 작성하는 일이었고 그러한 명령서가 곧 프로그램이였다.
계속드는 생각인데, 자유로움과 불편함은 비례하는 것 같다.
자유로울수록 불편함은 올라가는..
책에서도 나오는 확증편항의 위험성또한 좋은 말인 것 같다.
한가지 언어나 한가지 프레임워크 한 가지 툴등..
이 경험을 통해서 프로그래머는 책 한권으로 쉽게 특정 언어의 신도가 되고 교조주의에 빠지면 안 된다는 교훈을 얻었다.
멘토님이나 다른 프로그래머 현직자분들도 강조하는 확증편향, 교조주의등을 조심해야하는 이유와 사례를 볼 수 있다.
그럼에도 위에서 말한 것 과 같이 변하지 않는 것을 학습하는게 중요하다.
프로그래머는 절대로 꼰대가 되면 안 되는 것이다.
말 그대로 교조주의나 학습을 게을리하는 순간 되고 싶지 않아도 꼰대가 될 수 밖에 없다.
이 책을 읽기 잘했다는 생각은 정말 짧지만 한국의 게임개발의 연대기의 중심에 서있는 사람의 말을 들을 수 있기 때문.
등장하는 미리내회사나 GDC등 흥미롭고 알면 좋은 정보들을 얻을 수 있다.
인디게임개발자를 희망하고 있는 나는 항상 고민에 빠지곤 하는데 인디게임개발자에게 해주고 싶은 말도 많이 정리되어 있다.
인디 게임 개발자들은 어쩌면 가난하기 때문에 행복한 사람들인지 모르겠다.
인디 게임 개발자들은 개별적으로는 약하고 부족하지만 오히려 그렇기 때문에 서로에게 의지할 수 있고,
상업적인 이해 타산보다는 게임에 대한 순수한 열정을 공통분모로 삼아 서로 도움을 주고 받을 수 있으며,
그래서 기쁨은 물론 슬픔도 기꺼이 함께 나눌 수 있는 사람들이다.
2장 산타모니카 게임 프로그래머의 좌우충돌 생존기
Q. 좋은 게임이란 무엇이라고 생각하나요?
재미있는 게임입니다. 그래픽이 뛰어나고, 기술적으로 우수하고, 버그가 적고 등등 여러 평가 요소가 있지만 결국 게임은 재미로 귀결된다고 생각합니다.
나는 한번도 해외에서 취업을 해보고 싶다는 생각을 해본 적이 없었다.
저자는 처음부터 해외 취업을 준비하였고 그 시대에는 매우 험난한 도전이였다.
중간 중간 등장하는 소제목들이 되게 인상적이였다.
프로그래밍이라는 기술, 게임이라는 상품
프로그래밍이라는 기술보다는 기예에 가깝다는 생각과 어차피 우리는 게임을 만들어 팔아야 하는 제작자이다.
알고리즘 문제를 정말 100만번 푼 사람과 한 번도 안풀어본 사람이 만든 게임의 퀼리티는 사실 크게 다르지 않다.
내부적인 동작방식이 다를 수 있지만, 후자의 경우가 만든 조잡한 게임이 백만 다운로드를 얻는 경우도 종종 있다.
1장과 마찬가지로 게임 프로그래머의 필수적 요소로 영어와 수학을 절대적이라고 말하며 추가적으로 국어 또한 코딩도 하나의 글쓰기로 보고 있다.
간단함은 굉장한 미덕이지만 그를 얻기 위해선 노력을 많이 해야 하고 그 진가를 알아 볼 수 있는 안목도 필요하다.
영웅주의에 대한 경계
눈에 띄진 않지만 외교로 전쟁을 미연에 방지하는 리더와 일어난 전쟁을 엄청난 헌신과 승리로 이끄는 리더 중 어떤 이를 리더로 삼고 싶은가?
필자는 전자를 선택하며 말한다.
문제는 더 많은 라인을 짠 프로그래머가 일을 더 열심히 한 것처럼 보이듯이, 생각을 깊게 하고 철저한 테스트를 통헤 문제를 미연에 방지한 프로그래머보다 빨리 기능을 구현한 뒤 발생한 버그들을 영웅적인 희생으로 해결하는 프로그래머가 더 칭송받기 쉽다는 것이다.
잊지 맗아야 할 것은 프로그래밍도 결국 도구의 하나일 뿐이며 최종 목적은 개발자들, 사람들의 생산성을 높여 좋은 게임을 만다는 것이라는 사실이다.
중간에 등장하는 경력관리에 대한 이야기도 정말 공감이 된다.
일에 치이다 보면 공부를 소홀히 하기 쉽다.
일 자체가 공부지 별도 공부가 필요하느냐는 생각이 들 수 있다.
하지만 실력 향상에는 의도적 공부가 필수다.
인생은 과감한 모험이거나, 아니면 아무것도 아니다.
3장 게임 서버 프로그래머로 산다는 것
Q.클라이언트 게임 프로그래머에서 서버 프로그래머로 전직하기 위해 필ㅇ요한 것은 무엇인가요? A. 이미 클라이언트 프로그래머이므로 회사 내에서 전직을 요청하시면 알아서 해줄 것입니다. 필요한 것은 용기뿐입니다.
정리를 시작하기 전에 최근에 읽은 게임 개발자 커리어에 관한 가장 좋은 내용이다..!
게임을 만드는 즐거움
저자가 보는 게임이 내가 생각하는 게임의 분류가 비슷해서 기분이 좋았다.
앞서 다룬 1, 2장에서 처럼 게임의 과거사를 다룬다.
게임이 소설이나 영화와 같은 문화 컨텐츠와 다른 점은 게임이 놀이의 한 종류라는 데에 있다.
소설가나 영화감독이 자기가 만든 작품을 오랫동안 계속해서 즐긴다는 이야기는 들어보지 못했다.
하지만 게임은 수동적으로 콘텐츠를 감상하는 것이 아니라 놀이처럼 직접 체험해야 하는 것이기 때문이다.
게임은 수동적으로 콘텐츠를 감상하는 것이 아니라 놀이처럼 직접 체험해야 하는 것이기 때문이다.
놀이는 자기 자신뿐만 아니라 주변 사람까지 참여하게 만들어서 재미가 더욱 상승하게 된다.
게임은 다른사람들에게 퍼지고 소스코드는 더욱 발전한다.
오픈소스와 해거 문화처럼 말이다.
게임이라는 것은 세상을 움직이고 영향을 미치는 매력적인 콘텐츠이고 게임을 만드는 것은 프로그래머에게 있어서 뿌리치기 힘든 유혹이다.
게임이라는 명칭
자체가 메타버스가 등장하면서 사라지고 삶과 융화되는 현상이 종종 나타나는 것 같다.
반면 게임 소프트웨어는 어떤 문제도 해결하지 않는다.
게임 소프트웨어를 사용하는 유저는 그 소프트웨어 자체를 경험하기 위해 실행하는 것이지, 어떤 업무의 생산성을 높이거나 하는 데 이용하기 위한 것이 아니다. 그냥 플레이함으로써 즐거움을 느낄 뿐이다.
정말 맞말..
내가 게임 개발자의 길을 계속 걷고 있는 이유도 만들면서 해당 로직이 동작할 때의 재미와 쾌감은 어디서도 얻기 힘들며, 만들어진 순간, 프로그래밍을 할 때의 재미는 어디서도 얻기 힘들다.
게임은 여타 문제를 해결하기 위한 솔루션이 아니며 하고 싶은 이야기를 하는 예술에 가깝다.
요즘 프로그래밍도 많이 공부하며 느끼는 개발하는 과정 또한 예술처럼 느끼기에..
게임을 만드는 사람들
게임 개발팀을 만들기 위해서는 아트, 프로그래머, 기획 이렇게 3명이 필요하다
현재 한국은 게임에 대한 규제 때문에 적은 게임 개발사가 있으며 아직도 생겼다 사라지는 것을 반복중이다..
한국의 게임 산업 정책이 거꾸로 가더라도 전세계 게임 산업은 발전하고 있다.
앞으로도 소설, 영화보다 양적 질적으로 더욱 크게 발전할 것이다.
아직 희망을 버리기 이르다.
서버 프로그래머가 되는 법
게임 프로그래머에서 클라이언트에 비해 서버 프로그래머는 현저히 적다..
가장 먼저 생각나는 이유는 눈에 보이지 않는 영역이기 때문이다.
특히 서버 프로그래머가 일을 잘할수록 게임을 즐기는 유저는 서버가 있는지 없는지조차 모를 수 있다.
그리고 서버 프로그래머보다 클라이언트 프로그래머가 되기 더 쉽다.
난이도의 문제가 아니라 접근성과 진입장벽이 낮은 걸 말하는 것
마치 연극의 화려한 무대는 클라이언트이고 무대 뒤의 분주한 스탭들의 모습은 서버의 모습 같이 느껴진다.
서버 프로그래머의 커리어 패스를 간략하게 알려주는데 만약 준비한다면 도움이 될 것 같다..
그리고 클라이언트 개발자라고 해도 서버의 지식정도는 함양해야 하기에..
서버 프로그래머가 되기 위해선 다양한 기술에 열린 마음을 가지고 임해야 한다.
꼼꼼하게 공부해야 한다.
TCP/IP의 구조에 대해서 공부를 시작하여 기초를 탄탄하게 다지고 C언어를 추천하고 해당 언어로 깊게 들어가보는 걸 추천
자료구조, 알고리즘..
이후에은 객체지향언어로 넘어가 객체지향의 개념을 학습하고 다양한 디자인 패턴을 만나보는게 중요하다.
디자인 패턴은 다양하기도 하고 복잡해서 해당 패턴을 꼭 적용해야지라는 생각은 버리는 게 좋다.
이후에 좀 더 하이 레벨의 언어로 넘어가서 간단한 머드 게임을 만들어 보는 걸 추천
OS는 리눅스로 배우는 걸 추천
Git을 사용..
웹에 적용해보기 등등의 과정을 거치면서 서버 프로그래머가 되기 위한 기초를 다지는 것이 좋다.
게임이라는 콘텐츠를 소비하는 사람이 되기보다는 콘텐츠를 만드는 사람으로서의 역할에 더 충실해야 한다.
신입사원 메뉴얼
게임회사는 다른 회사들 보다 좀 더 자유로운 부분이 있다.
다양한 미디어를 통해 이미 알고 있는 내용이긴 하지만..
어느정도 운이 따르기 때문에 좋은 상사를 만나는 것도 중요하다.
현 시대에 프로그래밍을 공부하기는 어떤 지식보다 쉽게 취득할 수 있다.
내 생각도 마찬가지며 따라서 궤도에 오를 수 있어야 한다..
경력관리
자본주의 사회에서 회사원은 경력을 어떻게 관리하느냐에 따라서 실력에 비해 연봉을 높게 받을 수 있고 적게 받을 수 있다.
게임 프로그래머도 마찬가지이다..
사실 프로그래머의 실력을 평가하는 요소는 상당히 주관적이고 많이 다르기 때문에 운같은 요소가 많이 작용한다.
성공한 프로젝트가 있다면 그 사람이 개똥같이 코드를 짜도 좋게 보기 때문에..
대부분 한달 정도 일해보면 실력이 들통난다.
실제로 NC에는 아직까지 게임을 출시못한 개발자도 수두룩하다고 한다..
과연 그 개발자가 실력이 없어서 일까?
서버 아키텍처
서버 프로그래머들은 서버 아키텍처를 기획단계에서 기획이 나오고 게임이 서비스되었을 때 지속할 수 있느냐 없느냐로 첫 단계가 결정된다.
건축의 설계와도 마찬가지로 처음 잡은 구조는 변경하기 힘들며 구조를 결정하는 것은 게임의 특성에 따라 달라진다.
개발론에 관련된 이야기가 등장하는데..
신기술 도입과 익숙한 작업에 대한 생각이다.
보수적이지만 안정성을 챙기는 것이냐 새로운 기술을 도입하여 간편성을 챙기냐..
읽은 책들은 거의 대부분 안정성을 챙기라고 말하는 것 같다.
새로운 프로젝트 자체에 검증된 기술이면 도입은 좋은 방향이지만 현재 서비스나 개발중에 도입은 위험할 수 있다.
오픈소스에 대한 생각도 비슷하다 “바퀴를 다시 발명하지 말라”라는 말처럼 이미 검증된 기술을 사용하는 것이 좋다.
게임 로직 프로그래밍
서버가 동작하는 간단한 방식이라 이해가 잘된다.
서버를 공부하기 전에 이 책을 읽어서 도움을 많이 받고 간다..
게임 로직 프로그래밍은 프로그래머가 게임 개발에서 가장 재미를 느끼는 부분이다.
게임의 완성과 운영
게임을 완성하고 서비스를 시작했다..!
과연 끝일까..?
아니다 게임의 완성에는 끝이 정해져 있지 않다.
인기가 없어지고 망해야지 게임의 끝이 결정난다.
대부분의 게임은 박수 칠때 떠나지 않고 정말 못 쓸정도가 되면 종료가 된다.
게임의 완성과 운영에 대한 글을 읽다가 어제 읽은 객체지향의 인터페이스이야기가 떠오른다.
게임도 패치를 주기적으로 하며 업데이트를 진행한다.
마찬가지로 사용자에게 보여주는 인터페이스는 변함이 최대한 없어야 하고 내부 세부사항 즉, 구현부만 변화를 거듭해야 한다.
간혹 새로운 UI를 도입하게 되면 사용자들의 불만이 폭주한다.
롤 같은 경우도 UI는 거의 바뀌지 않지만 새로운 매칭 시스템이 도입되자마자 사람들이 아우성을 쳤다.
지금은 다들 익숙해진 듯 하다..
게임의 버그
게임도 소프트웨어의 일종으로 버그가 존재할 수 밖에 없다.
인디게임은 버그를 들고다니는 수준이니..
프로그래머가 키보드를 타이핑해서 코드를 작성하는 것은 이미 프로그래밍을 머릿속에서 끝내고 이를 실제로 구현하는 작업을 하는 것이다.
내가 프로그래밍을 가장 많이 하는 시간은 길을 걸을 때, 출퇴근길에서 또는 지하철 버스, 샤워할 때, 책을 읽을 때이다.
근무시간에 회사 책상 앞에 앉아서도 고민 하지만 문제를 해결하는 좋은 아이디어는 책상 앞에서 떠오른 적이 거의 없다.
정말 엄청 공감.. 요즘 진행하고 있는 프로젝트에 대한 설계를 어디서나 생각한다.
좋은 아이디어나 설계가 떠오르면 꼬리를 물고 생각이 나서 그런 설계조차 즐겁다.
이것저적 고민거리
여기서 말하는 CPU의 병렬처리는 최근 뜨고 있는 ECS에 관한 내용일까..?
더욱 더 ECS가 궁금해진다..
4장 50대 게임 프로그래머의 이야기
나는 아직도 필드에 있고 싶다.
Q. 현업 게임 프로그래머라면 도저해볼 만한 게 있을까요?
A. 저는 게임 엔진을 한번 만들어보라고 권하고 싶습니다.
도전하면서 배우는 게 많죠.
현실적으로 “좋은 게임 엔진 많은데 왜만드냐?”하는 질문을 하는 경우가 많지만 개발자로 성장하는 데 많은 도움이 된다고 생각합니다.
프로그래머로 입문하는 길에서의 선택과 변신
저자의 학부생부터 지금으로 따지면 약 30년정도의 과거 이야기를 들을 수 있다.
지금 시대와 공통점도 분명히 존재하고 다른 점도 존재하지만 저자가 말하고자 하는 바는 선택의 영역이다.
어떤 선택의 순간이 오고 방향들이 주어졌을 때 난 사람을 선택하라고 말하고 싶다.
물론 사람이 어떤 사람인가는 매우 중요하다.
믿을 만한 사람이라고 판단이 선다는 전제가 필요하다.
그리고 우리가 알아야 할 본질은 세상을 움직이는 것은 궁극적으로 사람이라는 사실이다.
자신의 꿈에서 크게 벗어나지 않는다면 나도 사람을 선택할 것 같다.
지금까지 진행한 여러 프로젝트가 있지만 그 중에서도 기억에 남는 사람들이 있다.
그런 사람들과 다시 팀을 한다면 좋겠다는 생각은 가지고 있으며 기술적인 부분이 아닌 성장적인 측면에서 유리하고 그가 어떤 사람인지 알기 때문..
최근에 본 영화인 애애올
에브리씽 에브리웨어 올 앳 원스라는 영화는 거의 순간의 선택에 대한 내용을 다루는데 내가 선택한 순간을 사랑해야 한다는 느낌을 많이 받았다.
그 모든 곳에서 그 모든 것이 한꺼번에 될 수 있다해도 지금 이 순간을. - 이동진 -
자신이 선택한 삶에 대해서 되돌아보면 “다른 선택을 했다면 좋은 결과가 나왔을 텐데..”라고 생각할 수 있지만, 늘 그렇듯 나는 최선의 선택을 한 것이고 그 순간을 사랑해야 한다.
코드도 마찬가지인 것 같다..
대부분의 프로그래머는 인수인계를 받아 작성된 코드를 보면 그 코드가 똥이라고 생각한다.
구조, 설계를 생각하지 않고 짠건가..? 왜 이렇지.. 이런 생각을 하게 되는데,
사실 그 사람은 그 때, 그 코드가 최선의 방법이였을 것이다.
여기서 말하는 최선의 방법은 개인적인 귀찮음, 개발자의 경험, 개발자의 능력, 개발자의 성향 등등 여러가지가 있을 것이다.
그걸 생각하더라도 그 순간에는 최선이였다는 걸 알아야 한다.
직업 선택의 갈림길
어떤 선택을 하느냐가 중요한 게 아니고 선택 후에 따르는 노력이나 그에 따르는 운이 더 중요한 결정 요소가 된다는 것을 지금은 알고 있기 때문이다.
선택후 따르는 노력을 생각하고 선택하는 것은 좋은 방법인 것 같다..
내가 해당 선택을 매력적으로 생각하는지 객관적으로 한번 검토해볼 필요가 있다.
또한, 운에 대한 이야기는 나 또한 그렇다.
항상 운이 좋다고 생각하는 나는 매번 능력에 비해 좋은 경험을 하거나 결과를 얻는다.
좋은 사람들도 주위에 생기고 하니.. 최근에는 더 바빠지고 싶다는 생각이 든다.
프로그래머로 사는 길에서의 변신
다른 이의 격려는 커다란 보상이다.
나 역시 그랬다. 그 경험은 나에게 회사에서 능력을 인정받게 했고,
나 스스로도 클라이언트에 대한 일종의 자신감을 얻은 계기였다.
격려는 프로그래머가 성장할 수 있는 중요한 양분이며, 자신의 능력을 인정받는 것은 프로그래머로서의 자신감을 높여준다.
사소한 격려를 시작으로 새로운 길이 열리기도 하고.. 새로운 눈을 뜨기도 한다..
프로그래머로 발전하는 길에서의 변신
살면서 느끼게 된 것이 선택고 변신은 상당 부분 어쩔 수 없는 경우가 많다는 것이다.
그러나 그러한 순간을 위해 미리 준비하는 마음가짐이 그 순간에 필수적이었다는 것을 다시 한번 알게 된 경우였다.
항상 변신을 받아들이는 마음가짐을 가지고 있어야 한다.. 다른 의미로는 “기회를 잡을 준비가 되어있어야 한다.”
성공을 원한다면 남들과 다른 차별화된 경쟁력을 키워야 한다는 점이었다.
이런 생각은 어느 순간 내 마음속에 새겨진 것이지만 프로젝트에 참여하고 충고해 주는 주위의 도움이 있어 가능했다.
누구에게서 듣거나 책에서 읽어 배운 교훈과 몸소 배운 교훈 사이에는 큰 차이가 있다.
프로그래머에서 사회인으로 느끼는 순간에서의 변신
하고 싶은 일을 순수한 마음으로 시작하고 그 결과를 공명하게 나눠가진다는 생각이 점차 변하기 시작한 것이다.
자본주의 사회에서 능력에 맞게 대우를 해주지 못하면 불만을 다스릴 다른 방법은 없다는 것을 점차 깨닫게 되는 계기가 되었따.
진행중인 프로젝트에 몰입된 경험이 몇번 있는데 그 때는 솔직한 관계로(수평적) 작업을 하다보니 너무 즐거웠다..
하지만 하나 둘 취업하니 프로젝트 진행에 문제가 생기기 시작하고.. 그 때 나는 차라리 현재 팀이 회사에 속해있었으면 좋았겠다.. 라는 생각을 했다.
자본주의라는 어쩔 수없는 상황이기 때문에.. 그런 생각을 하게 되는 것 같다.
물론 그들을 욕하는 게 아닌 상황 자체를 받아들이는 것이 중요하다고 생각한다.
나는 아직도 개발자로서 시대 흐름에 뒤지지 않으려고 노력을 하는 중이다.
새로운 OS나 새로운 언어를 익히려고 노력하고, 새로운 개발 툴과 새로운 개발 플랫폼을 배우는 중이다.
이런 노력이나 성과가 언제까지 가능할지 모르겠지만, 마음속에서는 여전히 전문 관리자가 아닌 개발자로서의 욕심이 나를 인도하고 있다.
단지 아쉬운 점은 몸이 예전 같지 않다는 점이다.
개발자로서 공부를 진행하다 보면 깊이를 파고 내려가든 다양하게 탐색하든 늘 새로운 것을 배우게 된다.
새로운 지식은 꼬리를 물고 따라오고 넘칠만큼 다양한 지식들이 존재한다.
앞서 읽은 책에선 자신이 공부하고자 하는 항목을 우선순위 큐와 같이 관리하고 계속 업데이트를 해야 한다고 강조한다.
프로그래머는 할 만한 직업인가를 생각하는 순간에서
나는 스스로 자기 관리가 필요하다는 생각을 했고 어느 정도의 실천을 해 왔따는 점에서는 자부심을 가지고 있다.
이런 자부심과 의식이 내가 개발자로서 남아 있을 수 있게 하는 토대가 되고 있다.
이처럼 쉽게 보이는 자기 관리 방법이 나에게는 아직도 마음속에서 ‘너는 아직 게임 개발자야’하고 의미를 부여해 주고 있다. 그래서 나는 아직 행복하다.
개발자는 정말 많은 요구사항이 있는 것 같다.
최근에 읽은 실리콘밸리의 팀장
에서 요구되는 관리, 의사소통능력..
빠른 변화를 받아들이고 새로운 기술을 습득하는 능력..
기본적인 소프트웨어적인 지식.. 등등
앞서 말한 능력을 배양하기 위해선 자기 관리가 필수적이다..
축구선수처럼..
서로 다른 능력의 사람들은 아마도 서로 다른 종류의 일을 해야 한다.
그래야 일을 끝까지 마무리 지을 수 있다.
이러 점을 좀 더 일찍 깨닫고 행동했더라면 나는 좀 더 유능한 팀의 리더가 되었을 텐데 하는 아쉬움이 남는다.
몰입에 관한 내용인 것 같다.
같은 목표를 바라보고 행동해야만 앞으로 나아갈 수 있다..
pm에 관한 나의 생각인데..
좋은 상사, pm은 해당 팀의 문화를 만드는 사람이고, 프로젝트를 전체적으로 볼 줄 알아야 하며 다양한 의견을 수용하되 자신의 기준에 맞게 잘라서 적용하는 사람인 것 같다.
수평적 관계는 물론이거니와 모든 의견을 수용하여 누더기 골렘을 만드는 것 또한 좋은 피해야 한다.
자신이 먼저 피드백을 받으며 팀원들 모두 쉽게 피드백하는 문화와 스스로 좋은 직장과 좋은 동료들과 일한다는 생각을 주입할 수 있는 좋은 상사가 되거나 만나보고 싶다.
프로그래머로서 아쉬운 선택의 시간
지금 생각해 보면 이 순간이 매우 중요한 때였다. 우리는 개발 환경을 변경하지 못했다.
최소한 일부라도 새로운 개발 환경에 대비해 조금씩 준비를 했어야 했다.
심각한 문제에 부딪혀 좌절을 맛볼 상황은 그 후 오래지 않아 나타났다.
바로 게임 개발 분야에서였다.
멘토님이 과거에 해주신 이야기가 기억에 난다.
우리는 변하지 않는 것에 집중해야 한다는 것이다.
과연 유니티는 몇백년동안 변하지 않을까?
절대로 네버 그럴 일이 없다.
무조건 변할 것 이고 변화에 적응하지 못한다면 도태되어 버릴 것이다.
그런 변화에 적응하기 위해선 한 가지에 몰입하는 것도 중요하지만 다양한 기술을 접해보는 것도 중요하다.
그치만, 전문성을 가지기 위해선 어느정도 몰입이 필요하기 때문에 커뮤니티 활동을 통해 다양한 기술을 접해보는 것도 좋은 방법이라고 생각한다.
외부의 변화는 느린 듯 보이지만 어느 순간에는 막다른 절벽으로 우리를 몰아 넣는다.
변화의 순간에서 이를 인지하지 못하면 그에 대한 대가를 치르는 것은 당연한 일이다.
변화에 대비하자..
변신의 순간에서 한 선택이 우리를 다소 어려운 길로 인도를 했고 아쉬움을 남게 했지만 그것도 넓게 보면 우리에게 주어진 귀중한 기회였다고 생각한다.
당시엔 힘들었지만 되 돌아보면 좋은 기회고 경험이었던 경우가 종종 있다..
지금도 그런 극한의 경험을 쌓기 위해 더욱 바빠지고 싶다.
균등과 차등이라는 주제에 대해 과거를 돌이켜 보면, 누구에게는 어쩌면 한가하게 들릴 수 있겠지만, 나는 어떤 것이 독이고 어떤 것이 약인지 명확하지 않은 선택의 순간에서 살고 있다는 엄중함이 느껴진다.
정리하며 실제로 경험한 실수나 착오를 가감없이 말해줘서 좋았다.
하지만 그런 부분도 최선의 선택이였으니 후회는 없다.
5장 테크니컬 디렉터로 산다는 것
1996년 첫번째 프로젝트 이야기
저자의 첫 직장의 프로젝트의 이야기인데 이야기의 주된 내용은 한 사람의 몰입에 관한 이야기이다.
인생에 몇번은 있었던 것 같은데 10분이 흐른 것 같지만 몇시간이 지나있던 몰입했던 순간이..
그런 순간들을 경험하면 성장폭이 크게 다가온다.
혹자가 말한 인생에’ 와!!’하는 경험이 한 번이라도 있었다면 성공한 인생이라고 하는데 아직까진 몰입까지는 가 봤지만 프로젝트의 성공이나 몰입의 결과로 이어진 적은 없는 것 같다.
요즘에는 몰입도 크게 하지 못하는 것 같고 몰입이 될 때는 해야하는 이유, 온전히 집중할 수 있는 공간등이 있을 때 몰입하여 작업하는 것 같다.
글로 읽기만 해도 소름돋는 저자의 10시간 개발과정..
코딩의 매력은 이런 부분이 아닐까? 단순 문제해결의 성격을 가졌지만 결과물로 얻을 수 있는 성과가 있으니..!
밤새워 코딩을 하던 나의 열정과 절대로 포기하지 않겠다고 결심하던 순간의 오기, 그리고 그 모든 것에 화답하듯 만들어진 기적과 같은 상황, 겪어보지 않고서는 알 수 없는 마법과 같은 시간들.
게임 프로그래머는 무엇으로 사는가?
모든 프로그래머는 자신이 만든 프로그램이 문제없이 돌아갈 때 희열을 느끼며 그런 경험으로 프로그래머를 지속한다.
게임 프로그래머도 마찬가지 이지만 좀 더 그 반동이 큰 것 같다.
정말 그 세계 속에 내가 들어가서 무림의 고수인냥 땅을 가르고 하늘로 박차오르고 있었으니까 말이다.
그것이야말로 세상을 창조하는 게임 개발자만 누릴 수 있는 호사가 아닐까?
게임 엔진과 테크니컬 디렉터
테크니컬 디렉터란, 각 게임 개발 파트에서 문제가 발생해 SOS를 요청할 경우, 전체 프로젝트를 살펴보고 문제점을 파악하고 이를 해결하는 것이 주된 역할이다.
테크니컬 디렉터는 아트와 개발자 중간 위치에 가깝고 의견을 조율, 제시하는 역할이다.
줄여서 TD라고 부른다.
엔진이란..?
게임 엔진에 대한 정의는 다양하게 이루어 질 수 있는데 일반적으로는 2가지로 분류할 수 있다.
게임 개발에 필요한 대부분의 기능과 IDE를 포함하고 있는 솔루션의 형태가 있다.
언리얼, 유니티등이 여기에 해당한다.
또 한가지는 단일한 형태로 특정 기능만을 제공하는 것으로 Emotion FX, Rad Game Toos등이 여기에 해당한다.
요즘에는 이런 통합 형과 미들웨어 형으로 나뉘지 않고 게임 엔진하면 통합형을 가리키는 추세이다.
엔진을 제작하는 상황을 가정해 본다면 개발팀을 제외한 리소스팀은 불확실성을 가진 작업을 이어나가야 한다.
이런 시간, 비용적인 부분 때문에 상용엔진을 많이 사용한다.
그래서 프로그래머와 아트의 견해차를 보완하기 위해서 대부분의 회사에는 TA나 TD라는 직군이 존재한다.
TA는 일반적으로 아트 직군쪽에서 경력을 쌓아서 프로그래머적 스킬을 습득한 사람을 지칭하고,
TD는 프로그래머에서 시작해서 아트적 소양을 쌓은 경우를 일컫는 경우가 많다.
테크니컬 디렉터는 주로 이런 일을 한다.
내가 만든 게임을 하며 플레이어가 기뻐하는 것도 즐겁지만, 함께 일하는 동료가 나로 인해서 행복해 한다는 것은 또 다른 즐거움이다.
TA가 하는 일의 한가지 사례와 코드를 볼 수 있는데 이런 문제를 찾아가는 과정은 크게 다르지 않은 것 같다.
하지만 랜더링, 최적화 지식이 빠삭해야 할 것 같다..!
세상은 정지해 있지 않다.
세상은 빠르게 변하가고 책에는 등장하지 않았지만 요즘에는 chatGPT까지 등장하면서 정보가 쏟아지고 있다.
다른 책에서도 같은 맥락으로 말하지만 정보를 습득하는 능력을 키워야 하는 시대이고 자신만의 강점을 키워야 살아남는다.
한마디로 C언어는 해커를 위한 언어이다. 컴퓨터에 대한 거의 무한대에 가까운 권한을 주면서, 프로그램에 문제가 생겼을 경우에 대한 무한대의 책임도 프로그래머에게 주는 것이다.
최신의 언어들은 프로그래머가 실수하더라도 프로그램이 죽는 경우가 없도록 하는 다양한 안전장치가 마련되어 있다.
요즘 게임 개발의 문제점은 사실 게임의 필수적인 자료구조, 언어, STL, TCP/IP, Window API, DirectX, 수학, 3D, 쉐이더 등 다양한 지식이 필요한데 게임 엔진이 발전하면서 이러한 지식을 공부하지 않는다는 점이다.
실제로 문제가 발생했을 때 해결하지 못하는 문제점이 크게 나타나고 있다.
흔히 말하는
공짜 점심은 없다.
라는 것이다.
무엇인가 이익이 있으면 어딘가 희생되는 부분이 생기게 되는데, 그 희생되는 부분의 덩치가 커지면 초반에 이익이었던 부분이 불이익으로 바뀐다는 것이다.
흔히 트레이드 오프라고 하는데 모든 분야는 공통적으로 수반되는 것 같다.
그 균형을 잘 잡는 것이 가장 중요..!
계속 전진해야 하는 게임 프로그래머의 숙명
세상은 급변한다.
지금은 엔진을 잘 활용하는 것으로 게임을 개발할 수 있지만, 새로운 기술이 나왔을 때 그것을 얼마나 빠르게 수용하느냐가 관건이 될 수 있다.
실제로 20년간 게임 개발 기술이 발전할 때도 그랬지만, DOS에서 윈도우즈로 바뀔 때 플랫폼에 적응하지 못한 개발자 상당 수가 포기했다.
2D에서 3D로 바뀔 때 수학을 모르는 사당수의 개발자가 포기했다.
3D에서 셰이더가 나왔을 때 렌더링 파이프라인의 내부 구조를 모르는 상당수가 포기해야 했다.
이처럼 신기술은 개발자에게 고통을 안겨준다.
하지만 이 고통을 감내하고 새로운 기술을 끊임없이 받아드리면 늘 새로운 즐거움이 함께 하는 셈이다.
마치며
게임 프로그래머는 매우 즐거운 직업이다.
스스로 적성에 맞는다고 판단되면 새로운 문이 많이 열리고 기회도 끊임없이 주어진다.
필자가 알고 있는 업계의 고수들은 지금도 1년에 하나씩 새로운 프로그래밍 언어를 익히고, DirectX 12로 틈틈히 자신의 엔진을 포팅하고, 눈이 쌓이는 현상을 모델링하기 위해 미분방정식을 쓴다.
Q. 저자에게 게임이란? A. 내 기술적 한계를 시험할 수 있는 최고의 실험대
6장 게임 프로그래머 그리고 교육자로서의 삶
저자는 게임 프로그래머의 목표를 이루고 실무생활은 하다 지금은 교육자로서의 삶을 살고 있다.
게임 프로그래머로 산다는 것에 먼저 선행되어야 할 게임 프로그래머가 되기 위한 내용을 다룬다.
게임 개발자가 되고 싶은 이유가 뭐야?
‘하고 싶다’, ‘되고 싶다’라는 모든 열망에는 다 그 이유가 있기 마련이다.
게임 프로그래머를 꿈 꾸는 사람이라면 반드시 첫 번째로 스스로에게 물어야 할 질문이 바로 게임 개발을 하고 싶은 이유, 게임 프로그래머가 되고 싶은 이유이다.
게임을 좋아한다는 단순한 이유만으로 게임 프로그래머가 되어 보겠다고 도전하는 것은 꽤 무모한 발상이다.
필자는 역시 게임이리면 자다가도 벌떡 일어날 정도로 좋아했지만 막상 경험을 해보니 게임을 하는 것과 만드는 것은 전혀 다른 일이었다.
따라서 게임 프로그래머가 되려는 이유가 단지 게임을 좋아하기 때문이라는 것은 개발 공부를 하기 위한 에피타이저에 불과한 것이다.
게임 프로그래머가 되기 위해 필요한 것들
게임 프로그래머가 되기 위해 가장 먼저 필요한 준비물은 바로 정확한 동기이다.
게임 개발이 왜 하고 싶은지, 왜 게임 프로그래머가 되고 싶은지에 대해 스스로 명확한 답을 내릴 수 있다면 앞으로 닥칠 여러 난관을 헤처가는 데 훌룡한 원동력이 될 수 있다.
훌룡한 결과를 만들어내기 위해서는 충실한 과정이 수반되어야 하고, 그 과정을 만들어가는 데 가장 필요한 것이 바로 동기부여이니 말이다.
게임 프로그래머에게 있어서 결과물을 구현해내는 프로그래밍 실력은 가장 기본이 되어야 할 부분이며, 게임 개발은 많은 사람들의 의사 결정 과정을 통해 만들어지는 것이니만큼 훌룡한 인성 또한 요구된다.
코드에는 정답이나 왕도가 없다.
더 효율적이거나 더 최적화가 잘된 코드가 있을 뿐이다.
코드를 많이 짜보고 동작 원리에 대해 끊임없이 고민해보고 연구해 보는 것만이 조금이라도 더 코드를 잘 짤 수 있는 지름길이다.
요즘에 정말 많이 공감한다..
정답은 없고 예술적인 감각을 키워야 하는 것 같다.
자주하는 질문들
언어는 그 언어를 쓰는 환경에 많이 노출되면 노출될수록 또 사용하면 사용할수록 유창해진다.
10년 넘게 영어를 배워도 회화 한마디 못하던 사람이 외국에서 몇 개월간 거주해도 금방 영어가 유창해지는 것과 같은 이치다.
결국 프로그래밍도 환경에 많이 노출될수록 또 많이 이용할수록 실력이 느는 것이다.
게임 프로그래머를 꿈 꾸는 분들께 드리는 이야기
필자는 참 평범한 사람이다. 천재와는 정 반데에 서 있는 사람이라고 할 수도 있겠다.
천재를 이기지 못한다고 해서 자포자기 하고 가만히 있으면 뭔가 이뤄질까?
가능성이 적다라는 것은 적어도 제로는 아닌 것이라고 생각한다.
마치며
젋은 날의 매력은 결국 꿈을 위해 무언가를 저지르는 것에 있다.
앨빈 토플러의 말이다.
게임 프로그래머는 명확한 꿈을 꿔야 하며, 되고 싶다면 저질러라!
댓글남기기