wxgame2 의 네트웍 버전이 거의 완료 되었습니다.
By SeukWon Kang
사진 설명 - 서버에 네개의 네트웍 클라이언트를 접속하여 실행 중인 화면.
이전 글들 이후로 개인적 여유 시간을 대부분 투자하여 ( 아직 버그가 좀 남아있긴 하지만;) wxgame2 의 네트웍 버전을 거의다 만들었습니다.
github의 코드 를 보시면 알게 되겠지만 기존 wxgame2 코드의 상당부분이 재 작성 되었으며 네트웍 쪽 코드도 수차례 재 작성하였습니다.
정식 MMORPG처럼 모든 판단은 서버에서 이루어지며 각 클라이언트는 시각화와 클라이언트 AI 만 작동하는 형태 입니다. 서버 사이드 AI도 존재 하는데 이것은 서버의 NPC를 시뮬레이션 하는 것입니다.
기존 코드의 수정은 대부분 네트웍 용으로 로직과 AI, 시각화를 분리 하는 작업이었으며 기존 설계의 결정사항들이 이제와서 보니 맘에 들지 않아 단순화, 명료화 시키는 작업들 이었습니다.
아직 남아 있는 문제점들은 호밍 미슬이 오작동하고 있습니다. 네트웍쪽을 select를 쓰도록 수정하였는데 cpu 사용율이 너무 높습니다. 가능하면 twisted가 아닌 다른 방법을 사용해보고 싶어 선택한 것인데 역시 한계가 있는 듯 합니다. 현재는 thread를 사용하여 async IO(network 전용 thread) 를 구현하고 있는데 gevent 를 사용해 보면 어떨까 싶기도 합니다.
그리고 클라이언트를 실행하면 무조건 AI(플레이어 시뮬레이션)가 같이 실행되는데 AI없이 순수 관찰모드(observer mode) 클라이언트를 지원하면 좋을 것 같습니다.
플레이어가 직접 조종하는 클라이언트가 없으니 아직 까지는 게임 시뮬레이터지 게임이라고는 할 수 없는 상태입니다. 언젠가 만들 생각은 있지만 플레이어가 저 AI들 사이에서 살아남을 수 있을지 모르겠네요. ^^
기존 설계에서 수정하고 싶은데 아직 못한 것 . 게임내 주 오브젝트들의 class를 dict와 list로부터 상속받은 클래스로 만들었는데 이게 이점보다 개념의 혼돈에 따른 단점이 더 많이 발생합니다. 상속보다는 소유형태가 더 좋은 선택이었을 것 같습니다만 수정하려면 좀 양이 될 듯 하여 ( 일단 급하지도 않고 ) 수정하지 않았습니다.
2014-03-16 update hommingbullet bug fixed 초기화시 파라미터를 잘못 설정한 탓이더군요. 덕분에 코드 refactoring 을 더 했습니다.