라벨이 서버개발일반인 게시물 표시

cocos2d-x 또는 Unity3D용 게임에 쓸 Server Engine Research

이미지
 회사 차기 프로젝트에 서버까지 해야할 듯 싶네요. 이젠 정말 다시  클라이언트 게임 개발자가 게임 서버 프로그래밍도 해야 하는 길 을 가야할 때가 다시 온 것이죠. MMO나 MO처럼 큰 건 아니고 캐쥬얼 게임정도 처리를 하면 될 듯한데 Client Engine은 cocos2d-x아니면 Unity3D로 갈 듯해서 이와 궁합이 잘 맞는 서버로 작업을 진행해볼까 합니다. 서버 완전 제일 밑단부터 만들거나 하진 않을 거구요, 그래서 서버 엔진들을 리서치 해봤습니다.  여기서 잠시 제 네트워크 개발 관련 지식 수준을 까발려보자면, 2003년 게임스쿨 다닐시 EventSelect 방식의 채팅 프로그램 RF 온라인 클라이언트 개발하면서 서버와 패킷 주고받기 ACE Framework 리서치 ACE기반인 HalfNetwork 리서치 및 1년 정도 사용 국산 서버 엔진인 ProudNet 리서치  이게 다 입니다. 네트워크 Core 딴부터 개발하는 뭐 그런거 없는 전 클라이언트 프로그래머에요~ 막막하네요, 서버 엔진을 찾아도 DB는 또 어쩔.....; 각설하고 간단하게 찾은 종류만 정리해봅니다.   Server Comparison Chart 를 누군가가 정리해 놨더군요. 요즘 유니티3D와 같이 많이들 사용한다는  photon server ,  SmartFox Server  등이 보이는군요. 차트에는 없지만  RakNet 이라는 녀석도 있죠. 각 서버에 대한 자세한 설명은 링크를 통해 확인하면 될 듯하고 일단 유료는 배제합니다.  무료 서버 엔진중에 뭐가 있을까 보니 차트에 Lidgren 라는게 보입니다. XNA 프로젝트에 사용되던 엔진인 듯합니다. C#으로 되어있구요.  XNA에 Lidgren을 써서 만든 테스트 게임들 영상입니다.  현재는 Unity3D도 지원해주고 있네요.  리서치를 해보니 이미 ...

클라이언트 게임 개발자가 게임 서버 프로그래밍도 해야 하는 길

구글링 중 우연치 않게 지인의 블로그가 검색이 되었고 거기서 괜찮은 글을 찾았습니다. 다름아닌 게임서버프로그래머가 되는 길이라는 제목의 포스팅인데요, 그에 대한 느끼고 생각한 것을 간단히 정리해 봅니다. 원문보기 일단 원문을 보고 간단히 정리 해보겠습니다. 서버이외에 클라이언트도 마찬가지겠지만 일단 사전 기초 공부( 20% ) + 신규 프로젝트 개발( 30% ) + OBT 이후 유지보수 서비스( 50% )라고 하셨는데 저도 동감합니다. 이는 기초 지식이 있어야 개발이 가능하고 그 개발했던 것이 잘 작동하는지 등에 대한 완성도를 높이기 위해서는 유지보수 서비스도 해봐야 만든 서버 모듈 또는 프레임워크가 검증이 되는 것이겠죠. 원문을 보고 느낀점을 뭐랄까 원문과는 살짝 다른... 게임 서버 프로그래머가 되는 길보다도 게임 서버 프로그래밍도 해야 하는 길이 제목에 더 맞을듯 싶어 저는 포스팅 제목을 그렇게 했습니다. 원문은 신입이 서버 프로그래머로 시작하는 것에 관한 것에 비해 제가 현재 처한 상황은 클라이언트 개발자에서 서버도 해야하는 상황이기 때문이죠. 이제 제목대로 제 입장에 대한 이야기를 풀어가고자 합니다. 현재 진행하는 프로젝트 상황이 그닥 좋지만은 않습니다. 서버 개발자 멘토도 없고 저 또한 서버 개발 관련 지식이 전무합니다. 단지 약간의 희망이 있다면 서버 엔진이 있다는 것 정도... 일단 저는 서버 엔진을 가지고 시작할 것이기 때문에 네트워크 기본지식을 건너뛰고 DB 관련 공부를 먼저 해볼까 합니다. 네트워크 관련 기본 지식을 알면 좋지만 모르고 써도 될만큼 엔진딴이 구현이 되어있으니까요. 하지만 엔진이 현재 2개가 컨텍이 되었는데, 엔진 선택에 있어서 또한 머리를 아프게 하네요. 클라이언트 개발자가 잠깐 보고 엔진을 선택하는게 과연 옳을지? 아니면 지인과 인맥을 통한 선택을 해야할지? 아주 그냥 딱!!하고 골라서 개발해 나갈지!? 머리 아프네요 ㅎ; 아무튼 이렇게 저렇게 해서 어느정도 캐릭터가 붙어 ...

ACE기반이면서 ACE보다 사용하기 쉬운 HalfNetwork

이미지
HalfNetwork는 한국 개발자이신 자바워크라는 분이 ACE를 가지고 만드신 오픈소스 C++ 네트워크 라이브러리입니다. 뭔가 덩치크고 복잡한? ACE를 Half-Sync Half-Async 패턴 을 구현해 개발자들이 쉽게 사용할 수 있도록 만드셨다고 하네요. HalfNetwork 간단 구조. 출처 : 자바워크님 블로그 간단하게 그림처럼 되어있다고 하네요. HalfNetwork 라이브러리는 ACE의 API를 사용해서 구현이 되어있고 사용하는 어플리케이션에서는 큐에 쌓인 메세지 블럭들을 가져와 처리만 하면 되는 구조인듯 합니다. Proactor(IOCP)와 Reactor(WaitForMultipleObjects) 두가지 네트워크 모델을 가지고 있고 둘다 Acceptor과 Connector을 붙일 수 있다고하네요. TCP 사용 Proactor(IOCP) Reactor(WaitForMultipleObjects) 패킷 생성기 타이머 ADO 방식 DB 라 XML파서 메모리풀 간단한 로깅 시스템 Windows, Linux 지원 64비트 지원 BSD 라이센스 ACE의 올바른 사용법을 배우고 싶거나, 네트워크 프로그램을 좀 더 쉽게 개발하실 때 사용하면 되겠네요. 대한민국에도 이런 멋진 오픈소스가 있다는게 정말 자랑스럽네요!! 가장 최신 버전 0.6.5가 2010년 8월에 릴리즈가 되었네요. 아래 링크에서 다운로드 가능합니다. 관련자료 자바워크님 게임 개발자 네트워크 미니 컨퍼런스 발표자료 관련링크 HalfNetwork 소프포지 다운로드 HalfNetwork 구글코드 HalfNetwork 개발자 자바워크님 블로그 HalfNetwork 스프링 노트 HalfNetwork 구글 그룹스 또다른 HalfNetwork Committers jacking님 블로그

Network FrameWork ACE Overview

이미지
Adaptive Communication Environment( 이하 ACE )라는 네트워크 관련 프레임워크 모듈이 있습니다. Schmidt라는 Vanderbilt 대학 전자공학 및 컴퓨터과학 교수가 이론적인 것을 거의 완벽하게 구현을 했다고합니다. redpixel님이 번역하신 Overview of ACE 를 참고했습니다. ACE 동시처리방식 네트워크의 핵심 패턴들을 구현한 오픈소스기반의 크로스플렛폼 객체지향 프레임워크입니다. wrapper facade 패턴을 사용해서 재사용가능한 클래스들과 일반적인 네트워크 상에서 실행되는 프레임워크 요소들의 모음입니다. ACE에 의해 제공되는 네트워크 기능들. 이벤트 다중수신( event demultiplexing ) 이벤트 핸들러 디스페칭( event handler dispatching ) 시그널 핸들링( signal handling ) 서비스 초기화( service initialization ) 프로세스간 통신( interprocess communication ) 공유메모리 관리( shared memory management ) 메세지 라우팅( message routing ) 분산 서비스들에 대한 동적 (재)설정( dynamic (re)configuration of distributed services ) 동시실행과 동기화( concurrent execution and synchronization ) 장점은? 이식성의 증가 - ACE 컴포넌트들은 다른 운영체계로 포팅하는 작업을 쉽게 해줍니다. 소프트웨어 품질의 증가 - 네트워크 어플리케이션의 핵심 품질요소( 융통성, 확장성, 재사용성, 모듈화 등 )들을 향상시키기 위해 많은 핵심 패턴을 사용해서 구성되어있습니다. 효율과 예측력의 증가 - 다양한 네트워크 분야의 어플리케이션 요구를 지원하기위해 구성되어 있습니다. 요구들에는 딜레이에 민감한 어플리케이션을 위한 낮은 지연, 대역폭에 민감한 어플리케이션을 위한 높은 성능, ...

존심 쌘 서버엔진이 있다! 넷텐션(Nettention)사의 프라우드넷(ProudNet)!!

이미지
포스팅 제목 참 ㅋㅋㅋ;; 달리 말하면 자부심이 강한 엔진이 될려나요? 아무튼 프로젝트 극 초반... 팀원은 클라이언트뿐이 없고 서버 인력을 구해도 서버를 처음부터 짤 것은 아니기 때문에 서버 엔진 또는 미들웨어를 리서칭을 할까 합니다. 그 첫번째로 Nettention(이하 넷텐션)사의 국산 온라인 게임 서버 엔진인 ProudNet(이하 프라우드넷)입니다. 일단 SDK 같은게 없으므로 홈페이지의 정보나 구글링을 바탕으로 정리를 시작합니다. 넷텐션(Nettention) 간단한 프라우드넷 이력 프라우드넷을 만든 배현직(imays) 씨는 15년 넘는 서버 개발 경험을 바탕으로 엔진을 만들었다고 합니다. 예전 GpgStudy에서도 많은 활동을 하셨던 분인데 이렇게 엔진까지 내놔 요즘 잘 나가시는듯? 합니다. 2011년 1월 현재 홈페이지에는 40개 이상의 게임 프로젝트가 프라우드넷을 사용하고 있다고 합니다 . 이것도 기준이 2010년 3월이니까 지금은 더 늘지 않았을까요? 사업한지 얼마 안 된 신생 업체 맞나요? ㄷㄷ;; 잘 되시는듯~ 간단 리서칭 후 일단 제가 서버 프로그래머도 아니고 뭐 그래서 기반 기술이나 전문용어도 모르는 상태이기 때문에 대충 홈페이지를 훝어보고 드는 생각은 검증되고 안정적일 것 같다. 혼합 통신 위상 기반 기술... 멋지다!! 강력한 P2P지원! P2P하면 문제인 홀펀칭도 문제 없는듯. 성공율 99%! API도 간단하다는데! 하루 정도 분석하고 첫날부터 개발 가능할 정도로! 등등등 자세한 건 이곳에서 결론은... 총 개발 비용이 서버를 무에서 개발하거나 간단한 프레임워크에서 시작하는 것보다 쌀 것같다. 마지막으로 홈페이지에 있는 글 인용과 PT자료 추가하고 리서치를 마칩니다. 게임 서버와 네트워크 기능은 만드는 것은 쉬워 보입니다. 그럼에도 불구하고 많은 회사들은 개발 지연과 고경력 개발자 부족으로 고통받고 있습니다. 왜냐하면 온라인...