절망의 시작
아, 진짜… 이 글을 쓰는 지금도 손이 떨린다.
유니티로 몬스터가 우르르 나오는 게임을 만들겠다고 큰소리 뻥뻥 치면서 시작했다. 처음엔 자신만만했지. “어차피 몬스터 프리팹 몇 개 만들어서 Instantiate하면 되는 거 아니야?” 하면서.
그런데…
첫 번째 지옥의 관문 몬스터가 10종류만 넘어가도 코드가 스파게티가 되기 시작했다. 각 몬스터마다 스크립트를 다 따로 만들어야 하나? HP, 공격력, 스피드 이런 걸 하드코딩으로 박아놨더니 밸런스 조정할 때마다 스크립트를 열어서 숫자를 바꿔야 했다.
두 번째 지옥의 관문 기획자가 “이 몬스터 HP 좀 올려줘” 하면 스크립트 열고, “이 몬스터 공격력 내려줘” 하면 또 스크립트 열고… 빌드 시간만 해도 10분씩 걸리는데 이딴 식으로 작업하니까 하루 종일 컴퓨터만 쳐다보고 있었다.
세 번째 지옥의 관문 – 최종 보스 몬스터가 50종류를 넘어가니까… 아, 진짜 미치겠더라. 코드는 복사 붙여넣기의 향연, 버그는 하나 고치면 세 개가 생기고, 새로운 몬스터 추가하는데 하루 반나절이 걸리고…
매일 새벽 3시까지 앉아서 “아 이거 왜 안 되지? 분명히 똑같이 했는데?” 하면서 모니터를 노려보는 일상이 반복됐다.
그리고 절망의 절정 어느 날 갑자기 깨달았다. “아… 나 뭔가 잘못하고 있구나.” 인터넷을 뒤져보니까 다들 스크립터블 오브젝트(ScriptableObject)라는 걸 쓰더라.
“스크립터블 오브젝트가 뭐야…?”
찾아보니까 데이터를 분리해서 관리하는 건데, 나는 그동안 뭘 한 거지? 멘탈이 와장창 무너졌다. 6개월 동안 삽질한 게 한순간에 의미없어진 기분이었다.
희망의 빛
그런데… 진짜 우연히 이 책을 발견했다.
처음엔 “또 이론만 주구장창 늘어놓는 책이겠지” 하면서 반신반의했는데…
읽고 나서 충격받은 것들:
- 아, 이렇게 하는 거구나! – 게임 데이터를 스크립터블 오브젝트로 분리하는 방법이 진짜 자세하게 나와 있었다. 코드는 건드리지도 않고 인스펙터에서 바로바로 밸런스 조정이 가능하더라.
- 내가 오랫동안 삽질한 게 2시간 만에 해결됐다 – 진짜 허무했다. 책에 나온 대로 따라 하니까 몬스터 50종류를 하나의 시스템으로 깔끔하게 관리할 수 있게 됐다.
- 확장성이 미쳤다 – 새로운 몬스터 추가하는 게 이제 5분 컷이다. 그냥 스크립터블 오브젝트 하나 만들고 데이터만 입력하면 끝.
- 기획자가 좋아한다 – 프로그래밍 모르는 기획자도 스크립터블 오브젝트 파일만 건드리면 밸런스 조정이 가능해졌다. 내가 중간에 끼어서 작업할 필요가 없어졌다는 뜻이다!
진심 어드바이스
만약 지금 나처럼 삽질하고 있는 사람이 있다면 제발 듣거라:
- 몬스터/아이템/스킬 데이터를 하드코딩으로 박고 있다면 → 지금 당장 멈춰라
- “나중에 리팩토링하지 뭐” 하고 있다면 → 나중은 없다
- 스크립터블 오브젝트를 모른다면 → 지금 당장 배워라
나처럼 6개월 삽질하지 말고, 처음부터 제대로 하면 된다. 이 책 하나면 충분하다.
진짜 진심으로… 내가 이 책을 6개월 전에 만났더라면 얼마나 좋았을까. 새벽에 모니터 앞에서 절망하지 않았을 텐데.
현재 상황:
- 몬스터 추가: 5분 컷
- 밸런스 조정: 실시간 가능
- 코드 스파게티: 깔끔하게 정리됨
- 개발 스트레스: 90% 감소
- 수면 시간: 다시 확보
P.S. 아직도 가끔 예전 코드를 보면 치가 떨린다. 그때의 나를 때리고 싶다. 하지만 이제는 괜찮다. 스크립터블 오브젝트라는 구세주를 만났으니까.
제발… 나 같은 삽질러가 더 이상 나오지 않기를. 🙏
(이 글은 픽션입니다)