=======================
=======================
=======================
출처: http://voova.egloos.com/47506
안드로이드펍 개발자공간에서 퍼온 글.. 안드로이드에 런칭되어있는 mole hole을 만드신 분이셨다니..
존경스럽다는..
안녕하세요? 비니아빠 바야바입니다.
일단 조회수를 위해 제목만 거창하게 달아봤습니다. 죽여주세요.
오늘은 제가 만든 온라인 게임들은 어떻게 만들어졌는지 진짜 간단하게 소개해보려고 합니다.
2G->3G->LTE를 거치면서 모바일 네트워크 성능은 점점 더 진화하고 있고,
앞으로 모바일 온라인 게임이 마켓의 트렌드가 자리잡을 날도 머지 않았기 때문입니다.
1. 게임 서버
알까기 온라인의 초창기 시절에는 집에서 개인PC 한대를 서버 전용으로 돌렸습니다.
동접이 늘어나서 향후에는 17만원 상당의 서버 호스팅 서비스를 이용했구요.
알까기, 장기, 오목, 탱크가디언까지 4개 온라인 게임을 1대의 서버에서 모두 실행했습니다.
최근에 개발한 치킨팝 온라인은 KT의 클라우드 서비스를 이용하고 있는데 성능은 괜찮습니다만,
KT측의 클라우드 서비스가 죽어서 2번 정도 서비스가 중단되는 사태가 있었습니다.
게임 서버는 윈도우 서버를 사용했고, Visual C/C++를 이용해 서버당 동접 3천명을 처리하도록 개발했습니다.
알까기는 최대 1700명을 기록했고, 장기가 900명, 오목이 250명, 탱크는 150명 수준을 기록했습니다.
게임 서버의 스레드는 이벤트 방식으로 원스레드 방식을 썼습니다.
Z9별이라는 MMORPG를 개발할 당시에는 멀티스레드를 사용했습니다만, 제가 만든 게임들은 모두 턴 게임였기 때문에
필요성이 느껴지지 않아서 그냥 원스레드로 개발했고, 성능에도 아무런 문제가 없었습니다.
2. 데이터 베이스
게임의 DB는 윈도우 서버라서 MS-SQL을 썼습니다.
다만 서버 호스팅 비용보다 MS-SQL 임대 비용이 더 비싼 관계로, 월 6,900원짜리 DB호스팅을 이용했습니다.
그럭저럭 사용할 만한 수준은 됐습니다만, 역시 전용 DB가 없으니 속도상 느린 것은 어쩔 수 없더군요.
DB호스팅을 한 후에, 게임 서버와 ODBC로 연결하여 쿼리를 날렸습니다.
MySQL이 더 편하신 분들은 MySQL을 쓰셔도 아무런 문제가 없습니다.
3. 소켓과 프로토콜
온라인 게임을 만들려면 서버에서 TCP 소켓을 열고 패킷을 주고 받아야 합니다.
제가 자바를 할줄 몰라서 그렇긴 합니다만, 자바로도 충분히 게임 서버를 만들 수 있을걸로 생각됩니다.
게임 서버에서 TCP 소켓을 열고, 패킷을 주고받을 프로토콜이 완성되면
안드로이드 클라이언트에서 서버와의 통신을 위한 스레드를 하나 만듭니다.
게임이 돌아가는 동안에도 네트워크와 계속 통신하면서 데이터를 보내고 받아오고 해야 하기 때문입니다.
socket.setSoTimeout( 60000 );
socket.setTcpNoDelay( true );
=======================
=======================
=======================
'개발이야기' 카테고리의 다른 글
카발 (비밀결사): Valve의 Half-Life 기획 과정 (0) | 2020.09.11 |
---|---|
[IT 정보] [머니투데이] 미국서 최고 인기 직업, 한국에선 3D (0) | 2015.05.28 |
[IT 정보] [CIO Korea] 반백의 개발자가 전하는 '7가지 프로그래밍 레슨' (0) (0) | 2015.03.12 |
개발자간 공유 문화 정착이 힘든 이유 (0) | 2015.03.12 |
팝업차단 관련. (사파리, 크롬, 윈도우, 맥) (0) | 2012.11.05 |