주제 : 빨리 가려면 잘 가야 한다!


나는 게임개발을 하고 있지만, 게임개발을 할 때 겪은 문제는 내가 어렸을 때 양봉업하시던 할아버지의 교훈이 도움이 되었다.

할아버지의 교훈 : 니가 배웠던 건 언젠가 다 써먹을 때가 온다.

내가 할아버지의 양봉업을 도와준 적이 있는데, 벌들도 집지을 때 밀랍구성을 잘해놔야 꿀도 잘만들고 알도 잘깐다.

프로그래밍도 마찬가지다. 토대가 잘 구성되어야 한다.


코드를 구성하다보면 훗날 덧붙여 나가면서 기능을 업데이트 하게 되는데,

처음부터 수정될 것이 무지 많을 것임을 상정하고 처음부터 잘 설계해야

나중에 발생한 오류를 고치거나 새로운 기능을 추가할 때 필요한 시간 소모가 적어서 빠르게 개발할 수 있다.


다음은 개발자로서 맞이한 문제가 이랬고 이렇게 해결한 것들이다.


1. GUI 상호작용에 대해

우린 GUI가 이렇게까지 복잡해질 줄은 상상도 못했다. 따라서 이러한 부분 기초를 다시 다지면 엄청난 개선 효과가 있을 것이다.

우리는 0.17 업데이트 이후 어느정도 코드개선작업을 수행했고, 꽤나 만족스러웠다. 그러나 여전히 코드가 깔쌈하지 않았다.

특히 상호작용 요소를 추가하려고 할 때마다 건드려야할 부분이 많은 것이 문제였다.


다음은 우리가 상호작용하나를 만드는데 필요한 작업사항을 나열한 것이다.

존나 수고롭지 않은가? 우리는 이러한 짓거리를 500개가 넘는 액션 스크립트를 구성할 때마다 반복했다. 개빡치는 일이 아닌지?

그래서 우리는 GUI에서 람다와 콜백함수를 활용해서 간편하게 만들었다(번역이 정확하지 않음).



이하 개선 작업을 통해 보다 짧고 간결해진 코드 구성

이렇게 개선하기 위해 존나 많은 시간이 걸렸다. 하지만 그럴만한 가치가 있었고, 얼마나 우리가 구식으로 개발을 해왔는지 깨달았다.

개선작업으로 수천 줄의 코드가 사라졌다.(개꿀딱)


2. 수동 건설

코드클리너를 만듦으로서 얻고자 하는 것들은 꽤나 다양하다. 중복 코드를 제거하는게 제일 우선사항일 것이다. 프로그래밍이 제대로 되지 않았다는 것을 파악하는데에는 코드가 중복되는 걸 확인해보는게 가장 좋다. 만약 중복된게 있다면 그 코드는 좋은 코드가 아니다. 구조화가 이상하거나 변수값이 이상한 건 고치기 쉽다. 근데 역할이 중복되는 각기 다른 코드가 5개가 넘어가고 그게 여기저기 적용되고 있는 걸 해결하는 건 끔찍한 일이다. 중복되는 이유가 의도적인 건지 우연한 건지 파악하고 적당히 분류해서 처리하는 건 결코 쉽지 않다.


수동 건설이 이런 문제가 있었다. 코드가 존나 길었다.

그리고 고스트 건설(드론을 이용한 건설 명령인듯?)일 때 이 코드양이 두배가 된다.

그리고 이렇게 된 두배가 된 코드가 또 두배가 된다. 왜냐고? 지연 방지를 위한 모드(fff 38)때문에!

이미 문제가 많은것 같은데 여기서 끝이 아니다.

오랜 시간 많은 사람들이 버그픽스를 하고 계속 수정을 거듭해오면서 스파게티 코드까지 되어버렸기 때문

그리고 이렇게 길어진 코드의 핵심부분은 우리 밥 삼촌이 말하길

"미친 너무 길어서 지평선 같네"라고 말할 정도였다. 이러면 당연히 개발 속도에 부정적인 영향을 미친다.


이 개선작업은 부차적으로 몇주간 주목표와 함께 짬짬이 이루어졌고 꽤나 많은 코드가 합쳐졌다.

이렇게 깨끗해진 코드를 다룰 때 우리 개발자들은 행복할 것이다.


3.~6 이하 테스트 모델 구성, 개선했다는 내용

....

(.. 대충 테스트 모델도 개선했다는 듯 (테스트 모델의 의존성 제거, TDD(테스트 주도 개발))

처음으로 테스트 커버리지(테스트 케이스가 얼마나 많은 코드를 검사하고 있는지)도 개발 중.. 밥 삼촌이 제안한 거임

....


결론

빨리 가려면 잘 가야 한다!

만약 나의 이러한 개발 방침에 감동하였다면 Factorio 팀에 지원해라