반응형
“이거 하나만 고쳤을 뿐인데, 신나게 와르르 무너지는 하울의 움직이는 성”
가장 자주 터지는 사고 유형 중 하나다.
처음 기획대로만 작동하도록 코드를 짜면, 기획이 바뀌는 순간부터 코드가 무너진다.
그래서 유연한 구조 설계는 필수다.
실제 프로젝트에서 자주 쓰이는 대응 방식들을 정리해본다.
1. 하드코딩 vs 데이터 드라이븐
- if(skillType == 1) 같이 숫자 박아놓은 코드는 기획이 바뀌면 전부 찾아 고쳐야 한다
- 실무에선 enum이나 string key를 쓰더라도 별도 데이터 테이블에서 조절 가능하게 만드는 게 기본
- 기획 변경 가능성이 있는 항목은 코드가 아니라 데이터에서 제어하게 한다
2. 조건식이 늘어나면 상태 머신으로 빼야 한다
- 상태가 많아지는 시스템(예: 보스 AI, 튜토리얼 조건, 퀘스트 트리거)은
if 문 늘릴수록 관리가 어려워진다 - 유지보수가 필요한 조건 분기는 대부분 FSM, ScriptableObject, DSL 등 구조화한다
3. UI/인게임 연동은 이벤트 기반이 안전하다
- 실무에서 흔히 발생하는 문제: "체력이 줄었는데 HP바가 안 줄어요"
- 직접 호출 방식 대신 Observer/Event 시스템으로 데이터 변화에 반응하게 만들면
구조가 유연해지고 문제 발생 지점을 좁힐 수 있다
4. 이펙트, 사운드, 리소스는 '연결 정보'만 코드에 둔다
- 코드에 PlaySound("LaserFire")를 직접 넣는 건 나중에 이름 바뀌면 다 깨진다는 뜻
- 데이터로 이름 연결하고, 코드에선 key만 넘기는 구조로 설계해야 리소스 변경에 강해진다
정리하며
유연한 구조는 개발자를 위한 게 아니라, 게임 전체가 무너지지 않기 위한 안전장치다. (+ 야근방지)
기획이 바뀔 수밖에 없는 구조라면 (어떤 상황이든 기획은 반드시 바뀌긴 하지만..), 코드도 바뀌지 않도록 짜야 한다.
실무에서 버그 안 나는 코드는 대개 '안정성'이 아니라 '분리'에서 나온다.
반응형
'겜언니의 게임개발' 카테고리의 다른 글
씬 로딩이 너무 느리다면 – Unity에서 로딩 구조를 어떻게 짜야 할까 (0) | 2025.06.23 |
---|---|
프레임 드랍은 왜 생길까 – 어디서부터 봐야 하나? (0) | 2025.06.23 |
처음 기획대로 나오는 게임은 없다 – 실무에서 기획이 바뀌는 순간들 (0) | 2025.06.23 |
출시 이후에도 계속 개발은 멈추지 않는다 – '라이브 개발'이란 무엇일까? (0) | 2025.06.23 |
UX가 나쁘면 명작도 욕먹는다 – 몰입도를 가르는 UI 설계의 힘 (1) | 2025.06.22 |