프로그래밍 관련/게임프로그래밍

[서버] 자바로된 PC 온라인 게임 서버 제작 가이드

AlrepondTech 2020. 9. 13. 18:56
반응형

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

출처: http://www.androidside.com/bbs/board.php?bo_table=B25&wr_id=13

자바로된 pc 온라인겜 캐주얼 서버를 작성해 봤습니다. 현재 상용온라인 게임 서비스 중이구요.

예전에 개발한거라,

요새 SNG서버로 자바를 이용해 개발을 하더군요. 처음이신 분이라면 도움이 되기 바랍니다.

질답에 올리려 했는데 권한이 안되네요.

 

c++ 서버에 관련된 것도 이런것들이 좀 올라왓으면 좋겠습니다.

 

추천 가이드 및 라이브러리

- NIO를 사용한 Apache MINA 라이브러리 사용할것 (세계최고의 개발자들이 만듬, 성능 입증된것임, 네티보다 추천)

- log4j 를 통한 로깅 관리

- apache commons 라이브러리를 이용하고 쓸데없는 코딩 줄일것 (개인적으로 boost 보다 강력하다고 봄)

- DB접근은 commons 내의 pool,dbcp를 이용해 커넥션 풀링 할것 (자동재연결,max,min 세부 조정 모두 가능)

- gmtool 개발은 Java swing으로 개발하면 됨

- sql query 는 사용하지 말고 db proc로 작업할것(느림) :

   apache dbutil 추천, 쓸데없이 preparedStatement 로 코딩하지 말것, 이 라이브러리 하면 3줄이면 됨

- 나머지는 모두 일반  c++  서버와 동일함

  (인증/분산,게임,관리,릴레이,DB-Proc서버 등등)

- 팁! Java 최대의 강점인 엔터프라이즈 프레임웍 기술을 이용해 전서버 동일한 캐쉬정보 로딩을 통한 세션 공유화가 가능

   (Grid 연결방식의 무한 확장이 가능) : 이건 저도 기술 구현만 해놓고 적용은 못해봄

 

- 소스 관리: SVN 이나 Mercurial 추천함 ( 왠만하면 Mercurial 사용하시길)

- 자동빌드 관리: ant 기술을 이용하면 됨, 패키징까지 완료,

- 윈도우 서비스 등록관리: 왠만하면 런쳐툴 만들고 JavaService 라는 오픈소스가 있음, 이걸 이용해 서비스 관리를 할것

- 타 서버(c++)와 연동작업시: 빅/리틀 엔디안 확인 잘하실것

- 서버구동시 네트웍 IO 스레드는 항상 미리 생성해놓고 대기할것 (생성시 느림)

- 동기화(이건 머 어디서나 중요하죠)처리 정말 신경써서 하실것, 성능 잡아먹음

 

- UI 개발은 Eclipse에 Google의 WindowsBuilder 플러그인 깔아 쓰면됨( Google이 사서 오픈해 버린 프로젝트임 )

- 엑셀 관련 import/export는 apache poi 라이브러리 사용하시면 됨 ( gmtool 에 이런기능 꼭넣으실것, 운영사에서 좋아함)

 

- JUnit을 이용한 모듈별 TestCase 꼭 작성할것(작성안하는 개발자있으면 혼내시길)

 

장점:

- 편리한 Eclipse 개발툴 사용 ( 이걸 사용하다보면 비주얼 스튜디오가 쓰레기로 보임 )

- 엄청나게 많은 오픈 소스 API 사용가능

- Google Apps로 작성된 다른 플랫폼과 라이브러리 연동 가능성

- c#같이 편리한 코딩이 가능

- java의 멋진 구조를 바탕으로 효율적인 프레임웍 구성 가능

 

단점:

- 개발자 전무, 교육에 반을 투자 해야함(경력/신입 밑바닥 부터 교육시켜야함)

- C++ 보다는 느림(그러나 체감하지 못함)

- SNG 를 제외한 일반 MMO/캐주얼 게임 쪽으로는 이직 힘듬(그러나 개인나름)

- java라고 대충짜면 메모리 뻑남, 특성상 자바개발자를 조금더 뽑는데 개념을 확실하게 심어줘야함

 

 

 

=================================

=================================

=================================

 

 

반응형