1월, 2011의 게시물 표시

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 컴포넌트들은 다른 운영체계로 포팅하는 작업을 쉽게 해줍니다.소프트웨어 품질의 증가 - 네트워크 어플리케이션의 핵심 품질요소( 융통성, 확장성, 재사용성, 모듈화 등 )들을 향상시키기 위해 많은 핵심 패턴을 사용해서 구성되어있습니다.효율과 예측력의 증가 - 다양한 네트워크 분야의 어플리케이션 요구를 지원하기위해 구성되어 있습니다. 요구들에는 딜레이에 민감한 어플리케이션을 위한 낮은 지연, 대역폭에 민감한 어플리케이션을 위한 높은 성능, 실시간 어플리케이션을 위한 예측능력등이 있습니다.

구조 및 기능


OS Adaptat…

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

이미지
포스팅 제목 참 ㅋㅋㅋ;; 달리 말하면 자부심이 강한 엔진이 될려나요? 아무튼 프로젝트 극 초반... 팀원은 클라이언트뿐이 없고 서버 인력을 구해도 서버를 처음부터 짤 것은 아니기 때문에 서버 엔진 또는 미들웨어를 리서칭을 할까 합니다. 그 첫번째로 Nettention(이하 넷텐션)사의 국산 온라인 게임 서버 엔진인 ProudNet(이하 프라우드넷)입니다. 일단 SDK 같은게 없으므로 홈페이지의 정보나 구글링을 바탕으로 정리를 시작합니다.

간단한 프라우드넷 이력 프라우드넷을 만든 배현직(imays)씨는 15년 넘는 서버 개발 경험을 바탕으로 엔진을 만들었다고 합니다. 예전 GpgStudy에서도 많은 활동을 하셨던 분인데 이렇게 엔진까지 내놔 요즘 잘 나가시는듯? 합니다.
2011년 1월 현재 홈페이지에는 40개 이상의 게임 프로젝트가 프라우드넷을 사용하고 있다고 합니다. 이것도 기준이 2010년 3월이니까 지금은 더 늘지 않았을까요? 사업한지 얼마 안 된 신생 업체 맞나요? ㄷㄷ;; 잘 되시는듯~

간단 리서칭 후
일단 제가 서버 프로그래머도 아니고 뭐 그래서 기반 기술이나 전문용어도 모르는 상태이기 때문에 대충 홈페이지를 훝어보고 드는 생각은 검증되고 안정적일 것 같다.혼합 통신 위상 기반 기술... 멋지다!!강력한 P2P지원! P2P하면 문제인 홀펀칭도 문제 없는듯. 성공율 99%!API도 간단하다는데! 하루 정도 분석하고 첫날부터 개발 가능할 정도로!등등등 자세한 건 이곳에서
결론은... 총 개발 비용이 서버를 무에서 개발하거나 간단한 프레임워크에서 시작하는 것보다 쌀 것같다. 마지막으로 홈페이지에 있는 글 인용과 PT자료 추가하고 리서치를 마칩니다.
게임 서버와 네트워크 기능은 만드는 것은 쉬워 보입니다.
그럼에도 불구하고 많은 회사들은 개발 지연과 고경력 개발자 부족으로 고통받고 있습니다.
왜냐하면 온라인 게임 개발은 많은 경험을 필요로 하기 때문입니다.
빠른 처리 성능, 단순한 사용법, 게임 개발에 필요한 기능의 포괄적 제공, 다양한 컴퓨팅 환경에서의…

레드마인 일감 검색양식 추가하기

이미지
저희 회사 시스템 팀에서 세팅한 레드마인 초기 상태가 원래 이런건지 모르겠지만 일감 항목이 뭔가 어색하더군요. 시작날짜나 완료날짜 같은게 없고 말이죠.


 역시나 옵션이 있습니다. 옵션을 누르면 컬럼을 세팅할 수 있습니다. 여기서 원하는데로 컬럼을 추가 삭제 할 수 있어요. 저는 일단 변경을 빼고 시작시간, 완료기한, 진척도를 추가했습니다. 그리고 저장을 눌러줍니다.


 저장페이지입니다. 이름을 적고 저장을 하시면 그만입니다.


그러면 이렇게 오른쪽에 검색양식이라고 생깁니다. 저는 담당자별 진행과 완료 일감양식을 만들어 봤습니다.


양식을 클릭하면 좀 불편했던 일감 확인란이 설정한데로 이렇게 보입니다. 시작날짜, 완료기한, 진척도가 추가된 모습으로 말이죠.
전 이렇게 담당자별로 진행, 완료 일감양식정도만 있으면 될 듯하네요. 더 추가하실 분들은 자신의 입맛에 맛게 다양하게 수정하신 후 사용하시면 되겠습니다.

부모와 자식이 namespace다르고 자식에서 부모 객체 사용시 namespace로 인한 error C2065

namespace State
{
class State
...
}

namespace GameState
{
calss InitState : public State::State
...
}

이렇게 되있었고

사용은

namespace GameState
{
...
void
InitState::EndFrame()
{
   State::State* pState =
...
}
}

이런식이었는데 error C2065: 'pState' : 선언되지 않은 식별자입니다. 라는 컴파일 에러가 나오더군요.

뭐지? 하고 왜 선언이 안되었다는 거야!! InitState.h 에 State.h 도 include 되있는데...

해결은 State::State를 그냥 State로 해주니 되더군요.

namespace GameState 안에 있어서 State::State 해줬더니만 부모 상속 받을때만 namespace를 명시적으로 해주고 cpp에서 사용할 때는 그냥 객체만 해줘도 되는 모양입니다. 뭐 조만간에 State객체의 namespace를 GameState로 바꾸긴 할꺼지만...자세한 c++ 메커니즘은 몰라서;;; 멀고도 험한 c++의 세계~

Failed creating the Direct3D device

이미지
회사 프로젝트 클라이언트 기본 프레임워크를 어느정도 만들고 컴파일에러 잡고 실행했는데 뜨는 에러창...;;

디버그를 해보니 DXUTFindValidDeviceSettings 에서 DXUTDoesAppSupportD3D9로 d3d9 검사중


return GetDXUTState().GetIsD3D9DeviceAcceptableFunc() ||
            GetDXUTState().GetD3D9DeviceCreatedFunc() ||
            GetDXUTState().GetD3D9DeviceResetFunc() ||
            GetDXUTState().GetD3D9DeviceLostFunc() ||
            GetDXUTState().GetD3D9DeviceDestroyedFunc() ||
            GetDXUTState().GetD3D9FrameRenderFunc();

다 등록된 Func이 없던것이 었다.. 사실 내가 함수를 등록 안하고 진행했던 것도 있지만 등록 안했다고 d3d 디바이스 생성 실패가 뜨는구나.. 이것 말고도 다른 여러가지 영향으로 디바이스 생성 실패 하것지만.. 일단 정리해 놓구 추가로 다른원인으로 발생하면 내용을 수정해본다.

간단한 XML 소개와 XML 파서 종류

데이터 구조가 잡히기 전 임시? 데이터 파일용으로 xml을 사용하려고 합니다. 뭐 만들어두면 간단한 설정파일등에 사용도 가능하구요.

기존에 잘 썼던 TinyXml을 쓸까 하다가 MSXml과 XmlLite등 다른 것들도 포착이 되네요. 세부적으로 프로그래밍 API까진 아니고 간단하게 리서치 한 내용을 포스팅 해봅니다.

XML 파싱 방식 SAX(Simple API for XML)와 DOM(Document Object Model)이 있습니다.

SAX(Simple API for XML) XML문서 구성요소를 읽어 들일때마다 이벤트로 처리해 주기 때문에 대용량 처리에 적합하고 빠르고, 대용량 문서나 많은 문서를 처리할 때 적절합니다. 단점으로는 읽어낸 데이터를 다시 이용할 수 없어 재활용하려면 자료구조를 따로 만들어줘야 합니다.
DOM(Document Object Model) 각각의 구성요소를 객체로 모델링화해서 객체가 가진 속성과 메소드를 통해 문서의 구조와 데이터를 다룰 수 있도록 W3C가 국제표준으로 제안한 XML 프로그래밍 인터페이스입니다.

XML 문서를 해석하여 DOMTree형태로 메모리에 올립니다. 해서 자료구조를 가지고 있어서 데이터를 바로 읽고 수정뿐 아니라 노드 추가등의 작업도 가능합니다. SAX보단 느립니다.
XML 관련 모듈TinyXml DOM 방식
UTF-8 파싱을 지원하지만 기본적으로 유니코드로 컴파일이 안된다.
UTF-8로 된 파일에서 한글을 읽을 때 MultiByteToWideChar에 CP_UTF8옵션으로 읽을 것.
UTF-16미지원

MSXML DOM 방식.
COM.
SAX도 지원하는듯.
MSXML버젼 때문에 정상적으로 파싱 하지 못하는 경우가 발생할 수 있다. 별도 MSXML 배포버젼이 있지만 일반적으로 유저들은 IE를 설치할 때 같이 배포된 MSXML을 사용하기 때문에 사용자의  IE버젼과 OS버젼에 따라 이런 경우가 발생한다.
이걸로 개발하면 유저들도 닷넷 프레임워크를 필요로 한다. 그런데 요즘엔 XP SP2이상이면 기본으로 깔려 있으니 상관…

Visual Studio 처음 설치하고 설정하면 좋은 팁 몇가지

이미지
아래의 팁들은 어찌보면 너무나 단순하고 당연한 것들일 수도 있습니다. 그래도 혹 모르시는 분들을 위해 참고하시라고 포스팅 해봅니다. 티스토리에 포스팅 했던 것도 가져오는겸.

모든 이미지는 클릭하면 크게 보실 수 있습니다.


개발에 최적화 된 폰트 사용 네이버에서 제작한 무료 폰트인 나눔고딕코딩 글꼴을 각 OS에 맞게 다운받아 설치 후 설정하면 한결 보기 편한 폰트로 개발을 할 수 있습니다. 다운로드가기


텍스트 편집창에 라인 넘버 출력하기
도구->옵션->텍스트 편집기에서 각 개발 환경마다 있는 줄 번호 체크 박스를 체크해주면 소스 편집기 창에 라인 넘버가 출력이 되서 몇번째 라인인지 확인이 가능합니다.

활성화 된 소스 파일을 솔루션 탐색기 뷰에서 추적하기
이것은 현재 편집할려고 활성화 한 파일을 솔루션 탐색기 창에서 자동으로 선택한 것처럼 추적해서 펼쳐주는 기능을 합니다. 파일을 이것저것 많이 열어놓고, 프로젝트의 규모가 클 때 유용할 듯 합니다.

코드 한 줄에 80컬럼을 안 넘기기 위한 팁

구글 크롬 개발자를 위한 문서에 보면 아래와 같은 팁이 있습니다. Column LimitYou can setup a guide at 80 column for the source file view.

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\Text Editor] "Guides"="RGB(128,0,0) 80"
You can also try "RGB(192,192,192) 80".
레지스트리 편집기로 Visual Studio 각 버젼에 해당하는 Text Editor 부분에 위와 같이 편집해 주면 됩니다.
이렇게 문자열 값으로 세팅해 주면 됩니다.


결과는?
결과는 이렇습니다. 솔루션 탐색기 부분은 색이 흐려서 잘 안보이네요.
붉은 라인이 세로로 쭉 생기면서 컬럼80의 위치를 알려줍니다. 이렇게 한 …