goguelike에 zombie를 추가 했습니다.
By SeukWon Kang
goguelike는 로그라이크게임치고는 꽤나 여유로운? 플레이가 가능한 편입니다. 그 이유는 진성 로그라이크와는 달리 플레이중 죽어도 이어서? 플레이가 가능하기 때문입니다. ( 로그라이크의 특징중 하나가 죽으면 새로 시작입니다. ) ( 자비로운? goguelike는 경험치가 좀 깍이고, 아이템을 좀 드랍하는 정도로? 끝납니다. -어디서 많이 본듯하지만 - )
다만 공개한적 없는 전용 클라이언트(linux - sdl용) 에서 플레이할때와는 달리 웹 클라이언트로 포팅된후 생긴 문제가 하나 있습니다.
브라우저 페이지를 실수로 reload ( F5를 누르거나 모바일에서 아래로 당겼다가 놓거나 ) 하는 경우 게임이 끝나 버린다는 거지요.
클라이언트 프로그램상에서 어떻게 해볼수 있지 않을까 하고 고민 했었는데 브라우저내에서 실행된다는 한계상 클라이언트에서 어찌 해볼 방법이 없다는 결론에 도착 했습니다.
그래서 서버에서 어떻게 해보려면 일단 클라이언트가 끊기면 서버에서 클라이언트에서 사용하던 캐릭터 를 지워 버린다. 는 것부터 바꿔야 합니다.
일반적 MMORPG라면 서버에서 캐릭터를 빼버리더라도 disk/db에 저장되어 있으니 문제가 없겠지만 goguelike는 캐릭터를 저장하지 않습니다.
그러면 메모리상에 유지하는 수 밖에 없는데 클라이언트가 끊긴 캐릭터가 서버에서 살아 움직이면?
좀비!
해서 좀비가 되었습니다.
이 좀비상태인 캐릭터에 클라이언트가 다시 연결되면 다시 정상 캐릭터로 돌아 옵니다.
그래서 바뀐 시작 화면이 위의 그림입니다.
시작할때 버튼이 두종류가 되었는데 기존 좀비가 있으면 연결하고 없으면 새로 시작 버튼이 [Enter] 기존 좀비와 연결이 있으면 끊음 버튼이 [Clear session] 입니다.
클라이언트가 sessionkey를 저장하고 있고 서버는 그 sessionkey를 가지고 기존 캐릭터에 연결할지 여부를 결정 기존 캐릭터가 뭐였는지 알아내는 정보로 사용합니다.
따라서 브라우저가 바뀌면 이어서 플레이가 안됩니다.
아무튼 이 좀비 상태 캐릭터는 서버내에서 살아 움직이기는 하는데 몇몇 제한이 걸릴니다. ( 추가로 더 제한을 걸 생각입니다. )
이게 잘못하면 그냥 작업장을 공식 지원 ( 클라이언트가 끊긴 상태에서도 파밍과 성장을? ) 하게 되는 것이라 아이템 사용, 획득, 캐릭터 성장, 층간이동 등을 모두 제한 할 생각입니다. AI도 좀비 전용 AI로 바뀌게 됩니다. ( 어리 버리하게 행동하도록 )
좀비를 지원 해서 이어 하기가 가능하게 되긴 했지만 여전히 저장하진 않기 때문에 서버가 새로 시작되거나 업데이트 되면 기존 정보는 모두 지워 집니다. 그리고 세션은 서버 (타워 ) 별로 따로 입니다.
위 그림에서 타워별로 버튼이 2개씩 있는 이유입니다.
일단은 플레이 가능상태까지 개발되어서 서버에 올려 두었습니다.
http://goguelike.iptime.org/?authkey=659b63f3-4c3d-9327-5c29-069de2d8b4f0