kyuseo의 게임 프로그래밍
서버 프로그램 개발, 프로그래머, 라이블러리, 게임 네트워크 엔진 외주 관련 문서 본문
개요.. |
저희 회사 ㈜펀그랩에서 서버 프로그램 개발 인력, 라이블러리, 게임 네트워크 엔진 지원 문의 및 답변 문서입니다.
프로그램 개발, 프로그래머 외주를 요청하는 업체에게 당부의 말씀 |
서버와 클라이언트가 유기적으로 맞물려 돌아가야 하기 때문에 서버 개발만으로는 프로젝트가 완수되지 않고 신작 게임의 특성상 개발도중 변화되는 부분이 변화 무쌍합니다.
요구하신 부분은 견적을 받아서 개발하기는 시간으로나, 비용으로나 애로사항이 많고, 개발 완료된 이후 서버의 수정 및 업데이트가 문제가 많습니다.
저 역시 개발업체를 많이 봐왔지만 일반적으로는 어느 업체, 개인이 의뢰를 받아 개발을 하더라도 직원이 아닌 외주 개발로는 서버 프로그램이 요구사항에 부합될 수 없고 개발이 완료되더라도 이후 업데이트가 어렵고 결국은 서로 실패할 가능성이 매우 높습니다.
제가 제안하는 방법은 다음과 같습니다.
- 회사가 신생회사라면, 외주보다는 함께 오래 근무 할 정말 믿을 수 있는 초~중급의 서버 프로그래머를 구인 또는 모집합니다. 실력과 센스가 있다면 기존의 1년 차 분도 좋습니다.
- 고급의 서버 개발자를 구인하신다면 더욱 좋겠습니다.
- 저희가 그분을 도와서 서버 프로그램을 개발 할 수 있도록 능력을 키워 드리고 노하우, 구조, 네트워크 라이브러리를 제공해 드립니다. 즉 서버 개발 팀장의 역할을 해드립니다.
- 비용은 최초 네트워크 엔진, DB 엔진 전체 소스 제공 비용과 방문 횟수에 따른 비용을 책정하시면 됩니다.
- 총 개발 기간은 저희 제공 부분과 직원 분의 능력에 달렸다고 보시면 됩니다.
자세한 내용은 방문하셔서 상담을 하시면 좋겠습니다.
서버 프로그램 외주 개발에서 필요한 분야 .. |
- 서버 전체:
서버 네트워크 엔진
데이터 베이스 엔진
데이터 베이스 설계
로그인, 서버, 채널, 게임 방 관련 프로그래밍
유저 분산 서버,
- 클라이언트와 서버의 연동 부분
클라이언트 네트워크 엔진,
로그인, 서버, 채널, 게임 방 관련 네트워크 프로그래밍
- 상점
구매하기, 선물하기, 버리기, 인벤토리, 착용하기, 사용하기, 상점목록,
상점 관리자 프로그램, 복잡한 구매관련DB 등 서버와 DB에 수많은 기능이 생겨납니다.
- 추가기능: (선택사양)
쪽지, 1:1대화, 초대하기, 친구 메신저 등
비용 및 기본 구조 |
1. 최초 네트워크 엔진, DB 엔진 전체 소스 제공 비용
: 2003년부터 개발 & 업데이트되었고 상용 프로그램도 많이 개발되어 안정적입니다.
전체 소스코드 제공, 기본사용법 지원, 개발지원
비용: X천만 원
저작권: 펀그랩, 회사 내 모든 프로젝트 무기한 사용권 제공
개발지원: 소스코드의 버그 수정 6개월, 5회 방문하여 개발지원
2. 해당 엔진을 이용하여 개발된 실제 안정적으로 서비스되는 클럽 맞고를 기반으로 한 서버 & 클라이언트 프레임워크 및 DB 구조를 이용하여 기본 프로그램을 개발해드립니다.
: 제공 프로그램 및 소스: 채널서버, 로그인 서버, 게임서버, 연동되는 클라이언트
(참고 게임 클럽 맞고: URL: http://www.tk.co.kr/matgo/)
비용: X천만원
저작권: 펀그랩, 회사 내 모든 프로젝트 무기한 사용권 제공,
개발지원: 소스코드의 버그 수정 6개월, 5회 방문하여 개발지원
추가옵션:
버그(오류) 콜스택 자동 리포팅 시스템, 자동업데이트 툴, ActiveX 홈페이지 게임실행,
서버다운 감지 SMS 발송 프로그램, 서버 자동실행, 생존 프로그램
3. 방문 횟수에 따른 서버&클라이언트 개발 지원 비용:
: 1회 4시간 기준 XX만원,
질문 / 답변.. |
1. 조인서버에 채널 서버 n대가 물리고, 채널서버 1대에 게임서버 n대가 물리는 구조 같은데요.
일반적으로 서버에 쓰이는 4CPU 머신을 기준으로 했을 때 보통 1머신에 게임, 채널 서버를 어떻게 띄우나요?
그리고, 1머신 당 최대 동접을 어느 정도로 생각하면 될까요?
- 기본구조는 채널서버1, 조인서버1, 게임서버 N 입니다.
- 1서버당 1000 ~ 5천명은 커버가 될듯합니다.
하지만 다양한 조건과 상황이 있기 때문에 실제 서비스를 하면서 결정해야 합니다.
- 여러 개의 서버 구동은 아래 이미지와 같이 그냥 실행하면 여러 개를 구동할 수 있습니다.
서비스로 개발하는 방법도 있지만 개발, 관리가 어려워서 프로그램 방식으로 개발하였습니다.
2. 클라이언트가 조인서버, 채널서버, 게임서버에 직접 연결하는 방식인가요? 아니면 frond-end 서버를 따로 두는 방식인가요?
만약 직접 각 서버에 연결하는 방식이라면 채널이동 시/게임시작 종료 시에 커넥션 연결/해제가 발생하나요?
- 클라이언트는 게임서버와 채널서버 만 접근이 가능합니다.
채널서버의 용도는 게임서버의 아이피와, 유저 수, 접속정보 등을 유저에게 전달하는 단순한 역할만 합니다.
3. DB 서버가 메모리 DB나 pooler의 역할을 수행하나요? 아니면 요청 시 즉각 즉각 쿼리를 날리는 형식인가요?
- DB서버는 별도로 구동되지 않고 서버 프로그램 내부에서 처리됩니다.
메모리 DB는 사용하지 않고, 즉각 쿼리를 처리할 수 도 있지만
랙을 고려해야 하므로 별도의 쓰레드를 이용하여 비동기적으로 DB를 처리합니다.
4. 메신저등을 지원하는데 다른 채널 유저들끼리도 채팅이 가능한가요?
- 예 가능합니다. (조인서버가 1:1채팅 서버의 역할을 합니다.)
- 친구 찾기, 1:1대화를 제외한 커뮤니티 기능들은 (메신저 및 쪽지, 방명록, 클럽)
Web 와 PHP, 게임서버를 이용하고 복잡한 방법으로 개발되어있기 때문에 자체적으로 추가개발을 해야 합니다.
- 서버가 여러 개 구동된 모습: 동접 200 명일 경우 CPU는 1%도 차지하지 않습니다.