게임/게임개발

[01/28] <어둠속의유산> 6일차 : 리팩토링

Lou Park 2025. 1. 28. 16:25

어둠속의유산을 배포하고, 원래 하고있던 8시간의 Croptails 튜토리얼을 끝냈다.

어둠속의유산을 개발하면서 우려스러웠던건 테스트였다. 지금은 플레이타임 30초짜리 게임이라서 테스트가 금방금방 끝났지만, 게임의 규모가 커지면 복잡하게 얽혀있는 상태들을 재현하고 관리하기가 어려울 것 같았다.

 

Croptails 튜토리얼 선생님은 항상 Test Scene을 만드는 것을 강조하셨는데,

어둠속의 유산은 각 오브젝트마다 함수가 붙어있고, 정확히 그 오브젝트가 Scene에 있어야만 작동하도록 개발했기때문에 TestScene이 올바로 작동하려면 해당 레벨에 있는 모든 Object가 Scene에 붙어있어야만 했다.

 

그래서 이번에는 그 관계를 뒤집었다. 

GameDialogueManager를 만들어서 게임 진행과 관계되는 이벤트들을 signal로 보내고, signal을 받으면 signal에따라 오브젝트가 반응하도록 만들었다.

 

이 변화는 심즈의 심 자유의지 알고리즘과 비슷하다.

심이 자신의 욕구에따라 어떤 행동을 할지 결정할때 심이 직접 부지에있는 오브젝트들을 파악해서, 가장 하고싶은 행동을 결정하는 방식으로 개발했다면 최적화하기도 힘들고, 로직도 복잡했을 것이다. 심즈 개발팀은 이 관계를 뒤집었다. 부지에있는 오브젝트들이 어떠한 신호를 보내고, 심들은 자신들의 욕구상황에 맞게 가장 스코어가 높은 신호를 고르면된다. 심즈 개발팀은 이를 "Advertise" 시스템이라고 불렀다.

 

돌아와서, 어둠속의유산도 이벤트의 signal만 받게되면 TestScene에 해당 오브젝트가 있건말건 다이얼로그 진행을 할 수 있게되어서 조금더 부담없이 테스트 가능하게 되었다.