잘못된 클론 코딩

게임 업계에서 개발자들의 포트폴리오로 자주 나오는 요소는 클론 코딩입니다. 본인이 좋아하는 게임을 만들어보기도 하고, 지원하는 회사와 가장 밀접한 프로젝트를 만들어서 제출하기도 합니다. 물론 아주 잘 만든 분들도 있지만, 대부분은 제출한 클론 코드가 안 좋은 결과를 만드는 경우가 많습니다.

어떤 경우일까요? 제가 경험한 사례를 좀 공유해보려고 합니다.

사례 1. 스크린샷뿐인 모작

3년 전쯤 마인크래프트 모작을 제출한 분이 있었습니다.

마치 마인크래프트처럼 보이는 월드와 블록들이 있는 스크린샷이 있었습니다. 정말 똑같다(?)는 생각이 들 정도로 잘 구성된 스샷이었습니다. 그리고, 내용에는 이 모작을 만드는데 몇 주가 걸렸고, 만들 때 어떤 엔진을 사용했는지 기입해 두셨습니다.

당연히 이분은 탈락했습니다.

모작을 할 때 중요한 것은, 이게 얼마나 걸렸고, 무슨 엔진을 썼는지보다, 어떻게 구현했는지가 가장 중요합니다.

그런 관점에서 비슷해 보이는 단편적인 스크린샷은 오히려 전혀 매력적이지 않습니다.
오히려, 블록이 2개밖에 없더라도, 혹은 블록이 화이트 박스 형태더라도, 절차적으로 생성되는 월드나 직접 배치하는 샌드박스가 있다면, 훨씬 높은 점수를 줄 것 같습니다.

사례 2. 핵심을 벗어난 모작

두 번째 사례는 캔디크러시 사가와 같은 매치3 퍼즐 게임 모작을 제출한 분이었습니다. 데모도 같이 보내주셨고, 본인이 작성한 핵심 소스 코드도 제출해 주셨습니다.

허나 아쉽게도 이분도 탈락했습니다.

가장 큰 이유는 데모를 플레이할 때 연쇄가 잘 되지 않는 점이었습니다.
3-매치 게임의 핵심은 레벨 디자인도 중요하지만, 한번 매치가 되어 블록이 사라지면 그 자리를 다른 블록들이 채우면서 발생하는 연쇄작용에 있습니다. 그 연쇄작용하는 코드가 미완성 상태였고, 실제로 제출된 코드에서 연쇄 구현이 제대로 되지 않았음을 볼 수 있었습니다.

비슷한 사례로, 간혹 액션 게임 쪽에서 채용을 할 때 마영전 모작이나 리니지 모작도 자주 볼 수 있는데, 거의 대부분 탈락 처리됩니다.

우선, 마영전 모작의 경우 클라이언트-서버 구조를 굉장히 강조하는 분들이 많습니다. 사실 왜 그걸 강조하는지 잘 모르겠습니다. (어쩌면 학원에서 그렇게 시켰을 수도 있겠죠.) 마영전의 핵심은 멀티플레이 논타겟 액션입니다. 제가 본 마영전 모작 중에서는 아쉽게도 마영전의 논타겟 액션 동기화를 본인만의 방식으로 만들어서 설명해주신 분이 없었습니다.

리니지 모작도 마찬가지입니다. MMO 서버-클라이언트 구조라고 강조하는 분들을 많이 봅니다. 정말 놀랍게도, 만드는데 2주밖에 안 걸렸다는 분도 있었는데… 어필 포인트가 너무 어긋나서 할 말을 잃었던 것 같습니다. 실제로 그런 분들 중에서 MMO의 핵심 요소 중 하나인 월드 채널링이나 MMO에서 퀘스트와 같은 콘텐츠를 본인만의 방식으로 만들어서 설명해주신 분들은 없었습니다.

클론 코딩을 포트폴리오로 만드는 방법

위의 잘못된 클론 코딩 사례가 거의 포트폴리오에 있는 클론 코딩의 90%를 차지하기 때문에, 클론 코딩을 포트폴리오로 만드는 방법은 생각보다 쉽습니다. 바로 안티패턴을 피하는 것이죠.

우선, 클론할 게임의 핵심을 아는 것부터 시작해야 합니다.
마인크래프트, 오버워치, 3-매치, 마영전, 리니지 등 다양한 게임들의 핵심은 모두 다릅니다. 그리고 주니어 개발자 입장에서 이런 핵심을 관통하기란 쉽지 않은 것도 사실입니다. 그러나 조금만 검색해보면 나오는 것도 맞습니다.

두 번째는 핵심 기믹만 모작하는 것도 가치가 있다는 것입니다.
예를들면, 포탈2의 들어가는 포탈/나가는 포탈은 다양한 기술적 챌린지(렌더링, 공간 이동)가 있습니다. 총게임들의 Netcode(예측, 보간)들도 꽤 좋은 챌린지가 됩니다. 그래서 이런 기믹들은 만들어서 포트폴리오에 넣으면 게임플레이 프로그래머로 홍보하기 좋습니다.

개인적으로 이런 핵심 요소를 클론한 유튜브 하나를 추천해드리면, Mix and Jam 이 있습니다.

제가 생각했을 때 클론코딩의 모범사례에 가깝고, 클론 코딩에 대한 좋은 예를 보실 수 있습니다.

마무리하며,

클론 코딩은 분명히 개발자로서의 역량을 보여줄 수 있는 좋은 방법입니다. 하지만 그 과정에서 중요한 것은 단순히 게임을 흉내 내는 것이 아니라, 게임의 핵심 메커니즘을 이해하고 그것을 구현하는 능력을 보여주는 것입니다. 단순히 비슷해 보이는 결과물을 만드는 것보다, 그 안에 숨겨진 원리를 이해하고 자신만의 방식으로 풀어내는 것이 더 중요합니다.

더불어 이벤트 홍보(?)

그래서, 이번에 저와 함께 클론 코딩을 도전해볼 사람을 찾습니다!! :)

[챌린지 개요]
😀현직 개발자 멘토와 함께 4주 동안 클론코딩 챌린지 도전할 사람 찾습니다!
각 분야별 유데미 멘토들과 함께 클론코딩부터 코드리뷰까지 할 수 있는 기회!

💪이번 챌린지는 [프론트엔드 / 백엔드 / 게임개발] 진행 됩니다 :)
유데미 개발 챌린지에서 개발자 커리어를 시작해보세요!

🥇챌린지 참여 혜택 무엇이 있나요?

  1. 현직 개발자와 라이브 특강
  2. 주차별 미션 제공
  3. 멘토와 1:1 커피챗 (미션 과제 우수자 선정자)
  4. 참가 혜택 : 유데미 개발 강의 할인 쿠폰팩, 지난 챌린지 특강 제공

💌챌린지 자세히 보러가기 :
https://udemy.wjtb.co.kr/event/id/272

🌞친구와 함께 신청하면 배민 상품권 제공!
https://forms.gle/2fxpfmh68ioELCwG8

  • 모집/신청 기간 : 2024년 8월 19일(월) ~ 9월 22일(일)
  • 챌린지 진행 기간 : 2024년 9월 23일(월) ~ 10월 18일(금)

제가 맡은 게임 개발 챌린지 주제는 “뱀파이어 서바이벌(뱀서류) 클론코딩"으로,
라이브 특강에서 포트폴리오가 되는 모작 만들기, 현업에서 사용하는 게임 프로그래밍 디자인 패턴과 테크닉, 수강생 코드리뷰까지 함께 다뤄볼 예정입니다.
많은 관심과 참여 부탁 드립니다.
감사합니다.