마음 속 하늘은 항상 맑음~!

OpenTTD r19333 AI 버그 잡기. 본문

프로그래밍

OpenTTD r19333 AI 버그 잡기.

파르셀수스 2010. 3. 6. 21:19

 아래 OpenTTD 시뮬레이션을 소개한 것에 알 수 없는 오류가 발생해서 프로그램이 다운되는 문제가 있는데, 처음 문제를 알고 알렸을 때 개발자 쪽에서는 윈도우즈가 아닌 시스템에서는 문제없이 실행이 된다는 답을 받았다. 그런데 이게 단순히 save파일의 구조적인 문제인줄 알고 그냥 넘어가려 했으나 새로운 맵에서도 발생하는 것을 보면 OpenTTD의 문제로 판명 디버깅을 했는데, 특정 API의 데이터 리스트 작업 삭제 중에 문제가 생기는 것을 찾아서 임시적인 방편으로 살짝 보완처리를 했다. 완벽한 처리는 아니지만 다운이 되지 않는걸보니 괜찮은 것 같다.

 인공지능이 사용하는 데이터리스트(STL을 사용한다)에서의 알고리즘 문제로 아마 개발자가 아직 문제를 알아내지 못한 것 같다. 결국 VS2008 익스프레스까지 설치를 하면서 난리를 치뤄서 답을 찾았다.

 그런데 오브젝트 파스칼을 주로 이용하던터라 C++의 컴파일 속도의 경이적인 느림을 체감을 못했는데(사실 Borland C++에서 살짝 알아채고 있었다), 이번에 OpenTTD 플젝을 컴파일 동안에 절실히 느꼈다.
 C++ 프로그래머가 가져야 하는 하드웨어의 스펙에 대해서도 실감.

 많은 시간을 들어가며 컴파일 해대는 사람들의 노력에 경의를 표하고 싶을 정도다. mingw로도 비슷하게 컴파일을 시도해봤지만 그만큼은 안걸렸는데 이건 거의 커피 3잔 마시고도 남을 시간. 반대로 참으로 안타까움을 느낄만큼 느리다는 것은 정말 한숨이 훅훅 나올 정도다.

 결론은 오브젝트 파스칼 룰즈~!

 그리고 문제를 해결한 새로운 빌드의 OpenTTD의 언어파일과 실행파일을 첨부.

 
 새로운 버전의 바이너리로 업데이트. 라이센스 파일을 빼먹어서 다시 포함 -ㅁ-;


 모두 포함된 파일로 약간의 코드 수정 후 만들어진 새로운 실행파일.


 새버전 r19362


 p.s.
  r19371에서 버그가 사라짐.