소켓 온라인 게임을 만들때 여러분은 어떤 구조로 만드시는지 경험/조언을 듣고자 질문을 올립니다.
실시간 온라인 "모두의 마블" 게임을 만든다고 가정하겠습니다.
서버와, 클라이언트가 서로 정보를 주고 받는 단 하나의 통로는 소켓이 되겠지요?
서버의 입장에서는.. a 라는 사람은 지금 로비에 있습니다.
그런데 갑자기 a 라는 사람이 "주사위를 던진다" 라는 패킷을 보냅니다. ( 주사위던지는 패킷은 로비가 아닌 게임에서 주고받는 패킷입니다. )
그럼 서버는 이 패킷을 무시 하던가, 아니면 사용자를 끊어버리던지 처리를 하겠지요.
자 그럼 코드로 해보면..
void onSocketData( JSONOBject data ) {
switch( data.getString("packetType") ) {
case "주사위를 던진다":
if( isLobby() ) disconnect(); // 로비에서 주사위를 던져?
throwDice();
break;
case "로비에 입장":
break;
case "로비에서대화":
if( !isLobby() ) disconnect(); //지금 로비에 있지 않는데 로비대화 패킷?
chat();
break;
}
}
요런 형태가 되겠지요.
위에 보면 상황별로 if가 계속 들어갑니다.
packet 종류가 늘어나면 switch 구문도 엄청 길어질거구요..
그래서 지금 저의 고민은...
상황에 따라 listen 해야 하는 패킷이 있고, 듣지 말아야 할 패킷(비정상 패킷) 이 있습니다.
이것을 어떤 구조로 해야 아름다운 구조가 될지 여러분의 조언을 듣고 싶습니다.