월간 지앤선

번역: 이상한모임 번역팀

편집: 지앤선 편집장 아델라

 

0. 시작하기 전에

프로게이머를 그만두고 지식이 전무한 상태에서 게임프로그래머가 되어 2년에 걸쳐 앱 8개를 릴리스하면서 얻은 경험을 비망록 대신해서 쓴 글입니다.

또한, 이과도 아니고 프로그램은 전혀 만져보지 않고 살아온 음대지망생이었던 제가 이 업계에 뛰어들면서 "프로그래머로서 가져야할 '사고방식'과 '일반적인 시점'을 습득하기까지" 엄청난 고생을 했기 때문에 2년 전에 제가 알았더라면 더 좋았을 마음가짐도 후반부에 정리했습니다.

그리고 개인적인 이유로 능동적으로 나서는 것을 꺼리는 타입이기 때문에 그 성격을 극복하고 싶다는 목적도 있습니다.

 

1. 어떤 프로게이머였나?

프로게이머의 정의는 각양각색이지만 먼저 제 자신은 어떤 프로게이머였는지 가볍게 소개하겠습니다. 제가 플레이했던 게임은 League of Legends(통칭: LoL)이라는, 세계에서 가장 즐기는 사람이 많으며 월간 약 1억 명이 플레이하는 게임으로, 당시 일본 1위 LoL 프로팀인 “DetonatioN”에서 약 1년 6개월간 활동했습니다.

LoL팀은 게임하우스라고 부르던 쉐어하우스(합숙소)에서 선수 , 애널리스트(게임 분석, 팀을 개선하는 사람), 영양관리사(요리사), 코치, 스탭 등... 많은 사람들과 공동생활을 하며 매일 세계정상을 목표로 활동하고 있었습니다. 저는 "선수"로서 계약을 하였으며 의식주가 제공되고 스폰서로부터 지원을 받았으며 (Logicool, NVIDIA, KDDI 등), 대회 상금 등이 있었고 프로게임팀으로는 일본에서 급여제도가 처음 도입되는 등 상당히 좋은 환경에서 경기에 전력으로 집중할 수 있었습니다.

 

2. 프로그래머가 되기까지

현역을 은퇴할 당시 게임을 플레이하는 쪽에서 만드는 쪽으로 직업을 바꾸고 싶다고 생각했고 취업활동을 시작했습니다. 인생은 환경에 많이 좌우되므로 기술습득은 쉬운지, 장래 희망에 맞을지, 직장 분위기는 좋은지 등을 판단기준으로 삼아 일단 제가 희망하는 회사를 알아봤습니다. 취업지원 서비스를 최대한 활용해 대충 300개 회사를 선별 → 우선순위를 정해 100개 회사에 지원서 발송 →우선순위가 높은 곳으로부터 서류가 통과된 회사로 면접을 가는 흐름이었습니다.

지식도 경험도 없어서 지원서류를 보내기만 해서는 통과되지 않으리라 생각했기에 각 회사에 맞는 기획서를 만든다든가 전직 프로게이머로서 경험을 살리는 방안을 제안하는 등 어필한 결과, 다행히도 몇몇 회사가 흥미를 보였고 취업을 하게 되었습니다. 그 와중에 저에게 맞는 회사를 골라 3개월만에 취업활동을 종료했습니다.

면접을 보면서 인상적이었던 것은, 회사들이 미경험자라도 잠재력을 보려고 하는 곳에서부터 압박면접으로 지원자를 못살게 구는 곳까지 각양각색이었다는 점입니다. 프로게이머라는 직함이 면접관의 흥미를 끌어내긴 했지만, 그 다음엔 "게임을 어떻게 대해왔는지"를 추궁당하는 기분이었습니다.

 

3. 프로그래머로서

소셜게임 개발&운영, VR、AI…등을 하는 회사에서 일했습니다.

초기에는 정말 아무것도 몰랐기 때문에 Unity와 C#을 중심으로 공부를 시작해 게임레벨 디자인, 버그대응, 소셜게임 운영(중급콘텐츠작성)등 여러 업무를 맡으며 꾸준히 프로그래머로서 지식을 쌓았습니다. 기술을 익혀 소셜게임 개발에 참여하기도 하고 개인적인 앱을 개발할 수 있는 업무를 맡았습니다.

덧붙여 프로그래머 커리어 초기에는 C# 서적을 혼자 읽으며 공부하고, Unity의 튜토리얼을 따라 하다 혼란에 빠지기도 하고, 회사가 무리한 업무를 던져 준 데 화를 내기도 하는 등 여러가지 일이 있었습니다. 또, 운영중인 소셜게임의 밸런스조정이나 레벨디자인을 적절한 정도로 하기 위해서는 “게임을 누구보다도 잘 이해하고 있을 필요가 있다” → “먼저 랭킹 1위가 될 필요가 있다”라는 생각때문에 실제로 PVP게임(온라인으로 플레이어가 조작하는 캐릭터가 전투하는 게임) 1위까지 해본 적도 있습니다. 이는 프로게이머였던 경험이 (개발에) 직접적으로 도움이 된 셈입니다.

운좋게 회사 선배 중에는 인품이 좋고 존경할 만한 엔지니어가 많았습니다. 이런 경험없는 초보가 업무를 같이 할 수 있었던 건 친절하게 가르쳐준 선배 엔지니어 덕분이며 아주 좋은 환경에서 프로그래머로서의 경력을 시작할 수 있었습니다.

프로그램 조금만 하면된다

 

4. 앱을 8개 릴리스하다

입사하고서 약 1년 후에 앱 개발을 시작해서 지금까지 캐주얼 게임으로 불리는 앱을 8개 릴리스했습니다.

그중에서 프로그래머로서 뼈저리게 잊고 싶지 않은(독단과 편견이 담겼을 수 있지만) 마음가짐 3개를 적어보았습니다.

 

5. 프로그래머로서 3가지 마음가짐

 

① 모르는 것을 명확히 한다

 

"게임을 만들고 싶어. 그렇지만 어려울 것 같아", "게임을 잘하고 싶어. 그렇지만 무얼해야 능숙해지는지 모르겠어", "물 마시고 싶어. 그런데 물은 뭐지? 어느 거지?", "왠지 잘 모르겠어"

 

무엇을 모르는지조차 모르는 상태, 그런 상태로는 스스로도 다른 사람도 해결해줄 수 없습니다. 그건 프로그래머로서 가장 위험한 상태인데 저도 입사 했을때 그런 적이 많이 있었습니다. 처음에는 모르는 것을 아는 것(이해하기, 해결하기)이 되지 않더라도 모르는 것을 명확히 하는 것(뭘 모르는 거지?)이 중요하다고 생각을 바꾸는 것이 첫걸음입니다. 무엇을 모르는지 명확하게 한 이후에는 Google에서 답을 얻을 수 있습니다.

물론 처음부터 이해하고 있는 양이 많으면 많을수록 좋겠지만 프로그램의 세계에서 전부 외워두는 건 대부분의 사람이라면 무리이기도하고, "모르는 것을 명확히 해서", Google에서 답을 찾아 본다면 살아나갈 수 있다는 걸 알았습니다.

저 자신도 그것을 깨닫기까지 시행착오를 많이 겪었습니다. "이건 외워야 해" 이라든지 "이건 절대로 이해하지 않으면 안 돼" 라는 강박관념에 시간을 쓰느니 그 정도 모르는 것은 조사해서 해결하는 프로세스로 가는 편이 기술력 향상에 스피드가 올라갔습니다.

Google에서 효율적으로 도움을 받기 위해 필요한 것은, 영어로 검색하는 실력을 기르는 것, 디버그 로그의 신봉자가 되는것, 지금 상태를 언어화해서 생각해보는 것 등이 아닐까요.

② 사물을 세분화해서 생각하기

뭔가를 목표로 삼았을 때, 세분화하여 생각하면 빠르게 해결이 됩니다.

예를 들어, "RGB게임을 만들고 싶어" → "Unity로 만들자" 처럼 추상적인 해결책을 내는 것으로 끝내기보다는,

"RGB게임을 만들고 싶어" →"전투의 구현은 턴제로 한다."→"공격/마법/방어 명령어를 먼저 만든다."→"공격시 처리" →"대화 씬(scene)을 만들고 싶어"→"대화 씬 용도로 범용적인 구현을 해야 함"→"대화 씬 발생시 호출처리를 작성"→"대화 씬에 적절한 메세지를 호출하는 처리와 대화 데이터베이스를 만듦"과 같은 식으로 자세히 구체적으로 하면 할수록 해결이 빨라집니다.

게임으로 말하자면 생각을 뒤집으면 프로게이머 때도 이와 비슷했습니다. 당시에 생각을 떠올리면 이런 기분이었겠죠.

"게임을 잘하고 싶어" "뭐가 문제지?" "조작이 정교하지 못해"→"시합 전에 30분 실수하기 쉬운 조작을 연습한다", "입력방법을 고쳐본다" "사용캐릭터의 이해도가 낮음"→"사양을 이해하기", "상급자의 움직임을 동영상으로 배움" "왜 졌는지 모르겠음"→"시합마다 터닝포인트(승패를 가른 순간)를 명확히 하기"→"그 원인을 시합때 언어화해서 두뇌에 되새김"

이와 같은 행동을 자주 했습니다. 어디까지나 제 경우이지만, 게임을 숙달하는 방법을 프로그래밍에 응용할 수 있는 부분은 상상 이상으로 많았다고 느끼고 있습니다. 또한 그 능력을 기르기 위해 매일 생각하는 시간을 가지는 것이 효과적입니다.

예: 상급자의 플레이 영상 볼때...나라면 저 상황에서 똑같이 할까? 내가 따라할 수 있을까? 저 사람이 왜 저렇게 하는지 이해가 되는가? 새로운 게임 앱을 봤을 때... 이 게임의 이 부분은 어떻게 구현되어 있을까? 음악을 들을 때... 곡을 들을 때 악기구성, 곡의 구성을 인식하면서 머리속에서 놀아보기 밖에서 걸을 때(미술)... 저 지붕은 나라면 어떻게 그릴까? 물감은 어떤 식으로 섞을까?

이러한 시점의 습관을 가진다면 프로그래머로서 머리속에 코드를 만드는 기술이 향상되는 것을 느낄 것입니다.

 

③ 형태로 만든다

어쨌든 "완성"을 목표로 해야 합니다. 그때 목표로 하는 것은 "완벽"이 아니어도 됩니다. 트위터에서 본 어느 개발자의 트윗이 인상적이었는데 (출처는 찾지 못했습니다) 릴리스할 수 있는 사람과 못하는 사람의 차이는

 

  • 가능한 사람

    • 베타판 0.9 릴리스했습니다.

    • 버그수정 베타판 0.95 릴리스했습니다.

    • 기능추가 베타판 0.98 릴리스했습니다.

    • 여러 가지 수정 배타판 0.99 릴리스했습니다.

  • 못하는 사람

    • 전투부분 개선중

    • 디자인을 더 멋있게 하고 싶어

    • 버그가 너무 많아서 수정하는 중

같은 것들이 있을 것 같습니다.

프로게이머들은 특히 완벽주의인 사람이 많은데 이런 스타일의 사람은 "릴리스 안하는 사람"이 되기 쉽습니다. 내가 납득할 수 없는 상태로 사람들 앞에 보여주는걸 용서할 수 없다고 생각해서요.

하지만 개발은 이야기가 다릅니다. "개"를 만든다고 생각한다면 개의 "눈"을 완벽히 만든 다음에 "다리"를 완벽하게 만드는 식으로 일을 하면 언제까지고 끝낼 수 없습니다. "개"를 만든다면 "최소한 개라고 인식할 수 있는 것" 을 먼저 만드는 것이 우선이므로 "골격"과 "색" 정도를 만들어 두면 일단은 베타버전이 만들어집니다. 릴리스하지는 않더라도 말입니다. 개발의 전체 모습을 보지 않고 욕망에 사로잡혀 세세한 부분에 집착하면 완성할 수 없습니다.

 

지금보다 좋게 구현한다는 건 찾으려면 어디든지 있을 것이고 납득하는 형태를 추구하기 시작하면 욕망의 늪에 빠져버리고, 집착하기 시작하면 끝이 없는 것이 개발이라고 생각합니다. 지금 있는 실력으로 실현 가능한 최고의 완성을 목표로 해야 합니다. 너무 완벽함을 추구한다면 완성품은 영원히 만들 수 없습니다.

 

이건 극단적인 예지만 Unity로 Update에서 GetComponent 함수를 호출하는 바보같은 방법을 써도 처리상 문제없이 움직인다면 우선 그걸로 됩니다. 초보자라면 더욱 그렇습니다. 다음 수정버전에서 더 좋은 방법을 찾아 개선하면 되는 것이고 우선은 완성하는 것에 힘을 쏟아야 합니다.

최종형태를 머리에 그려 먼저 만들어보는 자세는 "릴리스를 할 수 있느냐"에만 그치지 않고 자신이 성장하는 데도 큰 영향을 준다고 생각합니다.

이것도 프로게이머 시절의 지식이지만, 프로게이머의 선구자 우메하라 씨의 “승패의 결과는 중요시할 것이 아니다... 그만두지 않고 계속 하는 것이 진정한 승리다”라는 사상을 받아들여 저는 프로게이머 시절에도 “그때 그때의 승패보다는 장차 강해질 수 있는 행동”이 중요하다고 인식하게 되었습니다. 쇼기(일본식 장기) 기사인 하부 요시하루씨도 "항상 가장 강한 방법으로 가면 안된다. 그 국면에서 가장 강경하게 대응하는 수가 최선의 수는 아니다... 앞을 멀리 내다보는 수를 둘 수 있는 이성이 필요하다 "고 말했습니다. 게임에 있어서 눈앞의 시합에 이기는 행동과 장기적으로 승리할 수 있는 행동이 다르듯 개발에 있어서도 완성을 바라보지 않고 국소적으로 최적화하는 "지금의 방법"과 자신의 기술력이 결과적으로 향상되는 "미래의 완벽"은 다르다고 생각합니다. ※ 1 ※ 2

미래의 실력을 향상 시키면서 완성을 목표로 합시다.

지금 이런 것을 만들고 싶다는 마음이 있다면 반 년 후에 만들 수 있는 자세가 되기 위해 최적의 행동이 무엇일지 생각해 본다면, "사람들에게 보여 주기 창피하다", "자존심이 어떻다", "스스로 용서할 수 없다" 등의 바보같은 요소는 배제하고, 어쨌건 반 년 후의 목표로부터 역산하여 생각해 보는 것이 중요하다고 생각합니다. 이 아티클을 쓰는 것도 아웃풋의 선택지로써 글을 가지고 있던 편이 좋기 때문에 그 연습의 일환이라는 의미도 있긴 합니다.

 

6. 프로그래머에게 프로 게이머의 경험이 어떻게 도움이 되었을까?

야구선수든지 기사든지 프로게이머든지 어떤 세계에서 정상을 목표로 하는 사람 중에는 어떤 일을 할 때 절도있는 생각을 단련하는 사람이 많다고 생각합니다. 제 경우도 게임의 궁극적인 방법론이 프로그램의 학습에 상상 이상으로 응용 가능한 감각이 있었습니다. 특히 저는 현역시절부터 특정한 산을 오르는 능력보다는 어떤 산이든지 오를 수 있는 일반적인 능력을 갖추자고 의식해서 살아왔기에, 프로그래머로 실제로 지식이 전무한 상태에서 산을 오르기 시작하는 경험을 기쁘게 받아들이고 있습니다. 어쨌든 게임을 플레이하기만 했던 사람도 게임을 만드는 사람(아직 쓰레기 코드라도)이 될 수 있는 듯 합니다.

 

7. 후기

최근, 또 새로운 분야에 도전하며 저의 생각이나 지식을 되돌아 보는 것이 많아지고, 미래의 자신을 위해 한 번 정리해두고 싶은 기회를 더해서, 아무런 지식이 없는 사람이 조금씩 여러 가지 일을 할 수 있게되는 과정을 보고 다른 이들도 용기를 가졌으면 하는 마음에 생각을 정리했습니다. 조금이라도 프로그래밍의 즐거움을 경험하는 사람이 많아진다면 기뻐할 것입니다. 아직까지 프로그래밍은 게임에 못지 않게 즐겁습니다.

실천보다는 마음가짐에 대한 이야기이고, 두서가 없고 졸렬한 글이지만 내성적인 성격을 극복하겠다는 염원을 담아 써 보았습니다. 미숙하지만 부디 너그럽게 봐 주세요.

 

8. 참조

프로게이머 시절의 나의 트위터 https://twitter.com/yumeoti_lol

프로게이머팀「Detonation」http://team-detonation.net/aboutus

 

DetonatioN Gaming

Pro eSports Team – DetonatioN Gaming

team-detonation.net

※1 직관력(하부 요시하루 저)

※2 승부론~우메하라 유파~(우메하라 다이고 저)

 

🖋 원문 출처: https://qiita.com/yumeoti/items/fa064adb8a7f0bf444f9

 

元プロゲーマーが知識0からプログラマーになって2年でアプリ8本リリースするまでの話 - Qiita

0.はじめに プロゲーマー を辞めて、知識0から ゲームプログラマー になり2年が経ったので、 アプリを8本リリースしたりしながら得た知見を備忘録代わりに記事にします。 また、理系でもなくプログラムに一切触れずに生きてきて、音...

qiita.com

🖋 원문 저자: @yumeoti

 

yumeoti(@yumeoti_lol) 님 | 트위터

@yumeoti_lol 님 언뮤트하기 @yumeoti_lol 님 뮤트하기 팔로우 @yumeoti_lol 님 팔로우하기 팔로잉 @yumeoti_lol 님 팔로우 중 언팔로우 @yumeoti_lol 님 언팔로우하기 차단됨 @yumeoti_lol 님이 차단됨 차단 해제 @yumeoti_lol님 차단 해제 대기 중 @yumeoti_lol 님이 보낸 팔로우 요청 승인 대기 중 취소 @yumeoti_lol 님에게 보낸 팔로우 요청 취소하기

twitter.com

🖋 기술 번역: 이상한 모임 번역팀