목록개발자 팁 (63)
kyuseo의 게임 프로그래밍
개요.. 누리게임즈에서 사용중인 게임 소프트웨어를 개발하기 위한 프로세스 UML도표 입니다. 모든 게임의 개발은 사람이 하는 것이기 때문에 항상 변화가 필요 하지만 룰을 만들어 지키고자 노력하면 더욱 체계적이고, 즐거운 개발환경을 유지 할 수 있습니다. 간단한 게임 제작 프로세스 조금은 더 복잡한 게임 개발 프로세스
개요.. 게임 개발 회사에서는 여러 가지 방법으로 게임 개발팀을 운영하고 있습니다. 각각의 방법마다 장단점이 존재하여 팀을 운영하시는 회사에서 어떠한 방법이 좋은지 신중하게 판단하여 운영하시면 많은 도움이 될 것입니다. 그럼 게임 개발팀의 운영 형태에 대하여 설명 드립니다. 게임 개발팀의 운영 형태 게임 개발팀의 운영 형태 작성자 : 채경석 http://a.tk.co.kr - 직원 일반적인 게임팀의 모든 개발 체계를 회사에서 관여하고 비용을 지불하며 게임 개발에 대한 모든 책임을 회사가 지는 안정적이고 관리적인 형태. - 스튜디오.. 회사에서 게임팀의 모든 비용을 부담하지만 게임팀의 독립적인 개발을 보장하고 수익의 일부분을 보너스 등으로 할당하는 방법으로 창의적이고 독립적인 형태 - 독립 채산제(팀) 회..
개요.. Visual Studio 2008 에서 개발된 프로젝트(vcproj)를 Visual Studio 2005 에서에서 열 수 있도록 다운그레이드하는 방법을 소개해 드립니다. 방법 프로젝트 파일(.vcproj) 을 노트패드로 열어 아래와 같이 Version="9.00" 을 Version="8.00" 으로 변경하면 됩니다. 변경전 비주얼 스튜디오 2008 프로젝트.. 비주얼 스튜디오 2005 프로젝트로 변경후
개요.. 저희가 서비스중인 최대 동접 6000명인 온라인 네트워크 게임 서비스의 MRTG 트래픽(사용량) 공개해드립니다. 참고로 아래 트래픽은 티케이게임( www.tk.co.kr ) 및 아이폰, 안드로이드 클럽 맞고, 포커, 해외 온라인 게임 등에 사용된 트래픽입니다. 이것을 기초로 참고하시어 게임 서버를 구성하실 경우 어느 정도의 네트워크 부하를 사용할지 추측이 가능하며 IDC 센터 선정에 도움이 되시기를 바랍니다. 서비스 중인 게임 목록 "클럽맞고", "클럽채팅", "포즐온라인", "배드볼", "클럽포커", "클럽고스톱", "메가워드", "파인소프트", "서치아이", "클럽바둑이", "클럽홀덤", "클럽섯다", "스마트폰 빙고", 해외게임 "스마트폰 솔리테르", 해외게임 "스마트폰 클럽맞고", "스마..
개요.. STL의 random_shuffle을 이용하여 vector 이나 list 가 아닌 일반 배열을 무작위로 랜덤하게 만드는 방법을 설명 드립니다. 일반 배열을 랜덤하게 섞는 소스코드 아래 소스코드와 같이 배열의 시작과 배열의 마지막 값 포인터를 인자로 하면 무작위로 값이 섞이게 되어있습니다. 소스코드 BYTE m_Ball[ 10 ]; // 볼을뒤섞는다. for( int i = 0; i < 10; i++ ) { m_Ball[i] = i+1; } random_shuffle( m_Ball, m_Ball + 10 ); // 볼을검증한다. for( int i = 0; i < 10 ; i++ ) { static int nTrace = 0; TRACE( "%s(%d) : nTrace = %d \n" , __FI..
개요.. 프로그래밍 특히 Visual Studio 을 사용하다 보면 CPU 의 성능이 남아있음에도 불구하고 하드디스크(HDD) 의 지연 현상으로 컴파일 및 빌드 속도가 매우 느립니다. 저 역시 그와 같은 현상 때문에 이번에 SSD 로 작업 드라이브로 변경하였는데 매우 만족하는 성능 향상을 볼 수 있습니다. 참고로 제가 사용하는 하드웨어의 주요 스팩은 아래와 같습니다. 2.66 -> 3.xx Intel 4 CPU 4G 램 (RAM) SSD 1개, HDD 2개 여유가 된다면 운영체계가 설치된 C 드라이브도 SSD 로 바꾸면 좋겠네요. 참고 : Visual Studio 듀얼코어, 쿼드코어 CPU를 활용한 컴파일(빌드) 속도 향상방법 이번에 구매한 작업용 삼성전자 MMCRE64G5MXP SSD 프로그래미 컴파일..
개요.. UML이란 프로그램 제작, 기획, 개발에서 자신의 생각을 보기 좋게 정리하는 기술과 규칙입니다. 제 경험과 생각으로는 UML 은 단순한 방법론이고 생각을 정리하는 도구이기 때문에 규칙을 반드시 따르거나 할 필요가 없다고 생각합니다. 따라서 그것의 문법에 억매이지 말고, 자유롭게 자신의 생각을 정리하고, 다른 사람과 쉽게 공유할 수 있는 것으로 단순한 도구로써 습득을 하신다면 꼭 프로그램 개발이 아니라 다른 모든 곳에 활용할 수 있는 좋은 브레인 툴이 될 것입니다. 실무에서 사용한 UML Diagrams(UML다이어그램)의 예 (무료 프로그램 StarUML 사용) UML Sequence Diagrams(시퀀스 다이어그램) UML Component Diagrams(컴포넌트 다이어그램) 을 활용한 서..
개요.. 프로그래밍 작업 시 유용한 외부 Preforce Merge(P4Merge) 툴을 TortoiseSVN에 등록하여 사용하는 방법을 설명 드립니다. 참고로 프로그래밍에서 소스 버전 관리 툴 ( SVN ) 및 Merge 사용은 몇 번을 강조하여 말해도 지나치지 않으니 프로그래머라면 반드시 사용하시기를 권장해 드립니다. 참고로 KDiff3는 별도의 설정없이 설치를 하면 자동으로 TortoiseSVN과 연결이 되니 더욱 편리하게 사용이 가능합니다. 방법 1. Preforce Merge(P4Merge) 다운로드 합니다. http://www.perforce.com/perforce/downloads/index.html 2. Preforce Merge(P4Merge) 를 설치합니다.. 주의할 점은 Merge 기..
개요.. 테트리스 (Tetris)는 한때 넷마블, 엠게임, 피망, 프리챌 등 거의 모든 게임 포털에서 서비스되었습니다. 하지만 현재 아쉽게도 다양한 게임 형태를 원하는 유저들의 요구사항을 충족하지 못하지만 한게임에서 독점으로 서비스 되고 있어 테트리스 유저들이 즐겁게 게임을 하고 있는데 대략 한국에서 온라인 서비스되던 모습을 추정해봅니다. 현재 한국에서 독점 서비스되는 사유 - 테트리스게임 자체에 특허권 및 저작권이 확실하다. - 한국 내 라이선스비용이 매우 비싸다. 입니다. 생각해볼 문제 - 게임 소프트웨어의 저작권 특허권 문제 - 대기업의 유사 작품의 무작위 소송 등 횡포 (특허를 회피한 게임이라고 하더라도…) - 게임, 소프트웨어의 아이디어는 보호 받아야 하는가? - 알고리즘의 특허, 독점, 저작권..
개요.. 바둑이, 포커 게임의 경우 겜블링 성격이 강하여 사행성 PC방이나 온라인 게임사이트에서 각광을 받고 있는 게임입니다. 최근 바둑이뷰어, 포커뷰어를 원하시는 분들이 많아서 제작 방법 및 원리를 고민해 보았는데 일반적으로는 다음과 같은 원리로 제작 및 개발이 되지 않을까 추정됩니다. ※ 해킹 및 크래킹, 바둑이 뷰어 개발은 불법으로 큰 처벌을 받을 수 있습니다. ※ 법에 의해 처벌을 받기 전에 형님들에게 손목 및 생명에 큰 봉변을 당할 수 있으므로 만들지도, 쓰지도 맙시다. ※ Kyuseo 는 어떠한 뷰어나 해킹 프로그램을 개발한 경험이 없고, 개발 하지도 않고, 만들줄도 모릅니다!!! (문의사절) 방법 1 – 패킷 스니퍼 , 네트워크 패킷 가로채기 클라라이언트와 서버의 네트워크 통신(패킷)을 검사..
개요.. Tortoise SVN은 매우 유용한 소스 파일 버전관리 유틸리티 프로그램입니다. 하지만 잦은 하드디스크 액세스로 컴퓨터의 전반적인 성능저하를 나타나게 하는데 Tortoise SVN 옵션에서 캐시 조절을 통하여 하드디스크 부하 감소, 속도향상을 하는 방법을 설명해드립니다. 캐시 감소 방법 1. SVN 설정을 실행합니다. 2. 아이콘 오버레이로 이동하여 제외경로에 포함경로를 설정합니다. - 일반적으로 제외경로는 루트(Root) 디렉토리를… C:\* D:\* E:\* F:\* - 포함경로는 프로젝트 경로를 설정합니다. D:\FungrepGraphic\* D:\FungrepDesign\* D:\FungrepHomepage\* D:\FungrepProject\* D:\PMangoEngine\* D:\S..
개요.. 터틀스 SVN 을 약 3년간 사용하면서 소스세이프보다 매우 만족하면서 사용을 하였습니다. 하지만 최대의 문제점은 잦은 하드 디스크 엑세스로 인한 전체적인 컴퓨터 성능의 저하로 불편함을 느꼈는데 이것을 조금이나마 해소할 수 있는 터틀스 SVN(TortoiseSVN) 속도 향상 방법에 대하여 소개해드립니다. 로그캐싱을 중단한다 . 설정 -> 로그캐싱 ->로그캐싱사용 불가로 설정 로그 보기의 속도가 느려지기는 하지만 하드 엑세스를 하지 않아 전반적인 성능이 올라갑니다. (Kyuseo 가 추천합니다.) 아이콘 상태 캐시를 중단한다 . 설정 -> 아이콘 오버레이 -> 상태캐시 없음으로 설정 아이콘 자동 갱신을 사용하지 않아 상태 표시가 어렵기는 하지만 하지만 하드 엑세스를 하지 않아 전반적인 성능이 올라..

개요.. MySql에서 활성화된 프로세스의 정보를 보는 / 제거하는 명령어(함수)를 알려드립니다. MySql 프로세스 명령어 (함수) show processlist : 활성화된 프로세스 목록을 나열한다. kill 127909137 : 해당 아이디의 프로세스를 제거한다. 실행 모습

개요.. Visual Studio 에디터를 분할하여 코드를 작성하는 방법을 설명해드립니다. 이와 같은 코딩 기법은 비슷하면서 틀린 2개의 코드를 서로 비교하면서 작성하거나, 서로 참고할 프로그래밍 내용들을 비교하는데 큰 효과가 있습니다. 방법 1. 우측 상단의 막대기(?)를 클릭하여 위치를 조정합니다. 2. 분할된 2개의 화면으로 코드를 작성합니다.

개요.. 바탕화면 보기를 할 수 있는 프로그램 소스코드를 공개합니다. 소스코드 // 바탕화면보기만들기... CString str = "[Shell] \r\n" "Command=2 \r\n" "IconFile=explorer.exe,3 \r\n" "[Taskbar] \r\n" "Command=ToggleDesktop \r\n"; // 파일에 기록한다. .. CPFile::WriteString( "desk.scf", str ); // 바탕화면보기를실행한다. ShellExecute( m_hWnd, "", "desk.scf", NULL, NULL, SW_SHOWNORMAL );

개요.. PHP 에서 INT64 자료형의 매우 큰 숫자 (예: 1조)를 다양한 문자열로 변환하여 출력하는 방법을 설명해드립니다. PHP 에서 매우 큰 숫자(1000000000000, 1조)를 출력하면 1E+012 와 같이 출력이 됩니다. 이와 같이 출력되는 숫자가 1000000000000 또는 1,000,000,000,000으로 출력하는 방법을 설명해드립니다. 코드 $plus_money = 1*1000000000000; // 1조 $a0 = $plus_money; echo( $a0. " " ); // 1E+012 $a1 = sprintf( "%.0f", $plus_money ); echo( $a1 . " " ); // 1000000000000 $a2 = number_format( $plus_money )..

개요.. 인스톨쉴드(InstallShield), NSIS로 만든 인스톨 프로그램이 프로그램 추가/제거에 크기(용량)이 크게 나올 경우 해결 방법을 알려드립니다. 실제 설치된 프로그램의 디렉터리 파일 크기보다 너무 크게 보이는 모습 올바르게 크기가 나오는 모습 원인 문제의 핵심은 레지스트리 키 값에 클럽맞고 와 같이 한글이 포함된 것이 문제였습니다. 한글로 만들어진 키값이 모습 해결방법 따라서 인스톨 프로그램 개발 시 아래와 같이 영어로만 키값을 만들면 해결됩니다.

개요.. 소스세이프(Source Safe)보다 좋은 버전관리 프로그램 Tortoise SVN 을 소개해드립니다. 홈페이지 : http://tortoisesvn.net/ 버전관리를 통한 소스 관리의 중요성 프로그래머, 개발자라면 반드시 소스의 버전관리를 해야 합니다. (선택이 아니라 필수입니다.) 소스관리 소프트웨어를 사용하는 대표적인 이유는 다음과 같습니다. - 백업 - 팀 프로젝트 (팀원과 공통 소스 개발) - 잘못 만들어진 소스 복구 저(Kyuseo) 역시 예전에는 MS 사의 소스세이프(Source Safe)를 10년 가까이 사용하였으나 최근 3년간 Tortoise SVN을 사용해본 결과 이제는 소스세이프를 사용하는 프로젝트는 손까락도 대기 싫습니다. 업무 효율상 20%~30% 이상 이득을 보았다고 ..

개요.. 네트워크의 안정성이 최우선인 윈도우 2003 서버 컴퓨터에서 별다른 이유 없이 네트워크 링크가 분리되거나 끊어져 있을 경우 해결책을 알려드립니다. 오류발생 서버 사양 네트워크 어댑터: Intel(R) PRO/1000 EB Network Connection with I/O Acceleration 서버 컴퓨터 : SmartServer ZSS-132Q 73GB SAS(1.86GHz) ProcessorIntel Quad Core Xeon Clovertown 1.86GHz / 8MB (FSB 1066MHz)RAM1 GB ECC Registered DDR2 533 FBDIMM MemoryHDD73GB 15000rpm SAS HDD Disk 운영체계는 다음과 같습니다. Windows Server 2003 S..
개요.. 인터넷 서핑 도중 마메 (MAME) 소스코드가 공개된 사이트가 있어서 링크 해드립니다. MAME Source Code 링크 : http://mamedev.org/source/src/index.html 아래 코드를 보면 알겠지만 원본 소스코드 그대로 이네요. 모두 다 저작권이 있을 텐데 어떻게 공개가 되었는지 궁금하네요. 지저분해질 수 밖에 없는 C코드인데 정말 깔끔하게 잘 짰네요. 1943 및 텐가이등 각종 Psikyo 소스 코드 중 일부 아래코드를 보면 알겠지만 코드를 하나 작성하여 1943, 사무라이 에이스, 1945 스트라이커스, 텐가이 등 여러 코드에서 재활용하여 사용하였네요. http://mamedev.org/source/src/mame/drivers/psikyo.c.html 1 /**..

개요.. 가끔 Visual Studio 가 실행되거나, 종료되지 않을 경우(켜지지도 않고 꺼지지도 않을 경우) 가 발생합니다. 그럴 경우에는 어쩔 수 없이 강제종료를 해야겠지만 그래도 안전하게 몇가지 시도를 해보도록 합시다. 제가 사용하는 해결 순서를 알려드립니다. 해결 순서 1. 모든 정보를 저장한다. (혹시 저장이 되지 않는다면 내용을 별도의 파일에 복사해둔다.) 2. Visual Studio 를 정상 종료를 시도해본다. 3. Explorer나 인터넷, 각종 실행중인 프로그램을 종료 후 Visual Studio 를 종료, 시작을 시도해본다. 4. 작업 관리자에서 devenv.exe 파일을 찾아서 강제종료 후 Visual Studio 를 종료, 시작을 시도해본다. 5. 컴퓨터를 재 부팅한다. -_-+ ..

개요.. 프로젝트를 개발을 하면 프로젝트 또는 파일의 디렉터리를 탐색하는 경우가 매우 빈번합니다. 외부도구를 사용하여 Visual Studio파일 익스플러러, 프로젝트 Explorer 탐색기를 등록하여 사용을 하면 편리하게 해당 디렉터리에서 탐색기를 실행할 수 있습니다. 등록방법 도구 -> 외부 도구를 실행한다. 아래와 같이 프로젝트 익스플러러 와 파일 익스플러러를 등록한다. 등록이 정상적으로 완료되었다면 아래와 같은 메뉴가 생깁니다. (추가로 단축키를 등록하여 사용하면 더욱 편리합니다.) 실행을 하면 다음과 같이 프로젝트 또는 파일의 디렉터리 탐색기가 실행됩니다.

개요.. Visual Studio 2005 에 눈에 잘 띄지는 않지만 소스 코드의 에디터 변경, 저장 여부 저장을 확인할 수 있는 기능이 있습니다. 아래와 같이 - 녹색으로 표시된 부분은 수정하여 저장된 라인을 뜻하고 - 노란색으로 표시된 부분은 저장하지 않은 수정된 라인을 뜻합니다. 비록 눈에 안 띄는 세세한 기능이기는 하지만 개발자의 노고가 느껴지네요. ^^*

개요.. 프로그램 개발에서 소스 관리는 매일 강조해도 지나치지 않습니다. 때문에 대부분의 개발자들은 SVC, Tortoise SVN, 소스세이프(Source Safe)등을 활용하여 소스를 관리하는데, 팀 단위 개발은 물론이고 나 홀로 개발일지라도 소스관리 프로그램을 사용하는 것이 안전을 위해서나, 복구, 수정, 확인을 위해서 매우 편리하고 중요한 역할을 합니다. 이번에는 Tortoise SVN 을 활용하여 로그보기, 업데이트된 곳 찾기, Diff등을 활용해봅니다. 로그 보기 다음과 같은 방법으로 SVN 로그 보기를 하면 업데이트된 날짜와 사람, 수정되거나 추가, 삭제된 항목이 화면이 나타납니다. 바뀐점 보기 바뀐점 보기를 사용하면 프로그램 소스코드에서 수정, 삭제, 추가된 부분을 검사할 수 있습니다.

개요.. 상용 서버 프로그램은 별다른 UI 도 필요 없는 것이 대부분입니다. 그러하기 때문에 많은 서버 개발자 분들은 서비스 기반으로 개발하시는 분들도 많은데 ,간혹 조작을 하거나 몇 가지 점검을 하기 위해서는 메시지나 로그보다는 간단하게나마 UI가 있으면 더욱 관리하기가 편하더군요. 저는 개인적으로 서비스를 개발이 불편하고 어려워서 가급적 다이얼로그 기반으로 서버 프로그램(데몬, Demon)을 구성하고, 서비스 기반이 아니기 프로그램 자동 시작, 재 시작 등을 위하여 때문에 제가 개발한 자동 재실행 프로그램(Auto Alive, Auto Restarter)을 유틸리티로 활용합니다. 다른 개발자 분들은 어떻게 서버 UI을 구성하시나요? 아래는 제가 개발한 서버프로그램의 UI 입니다. 서치아이 서버 프로그..

개요.. 저희 회사 ㈜펀그랩에서 서버 프로그램 개발 인력, 라이블러리, 게임 네트워크 엔진 지원 문의 및 답변 문서입니다. 프로그램 개발, 프로그래머 외주를 요청하는 업체에게 당부의 말씀 서버와 클라이언트가 유기적으로 맞물려 돌아가야 하기 때문에 서버 개발만으로는 프로젝트가 완수되지 않고 신작 게임의 특성상 개발도중 변화되는 부분이 변화 무쌍합니다. 요구하신 부분은 견적을 받아서 개발하기는 시간으로나, 비용으로나 애로사항이 많고, 개발 완료된 이후 서버의 수정 및 업데이트가 문제가 많습니다. 저 역시 개발업체를 많이 봐왔지만 일반적으로는 어느 업체, 개인이 의뢰를 받아 개발을 하더라도 직원이 아닌 외주 개발로는 서버 프로그램이 요구사항에 부합될 수 없고 개발이 완료되더라도 이후 업데이트가 어렵고 결국은 ..

개요.. 게임서버가 다운이 안되게 하는 것이 좋지만 다운이 되면 사후조치를 잘 하는 것이 더욱 중요합니다. 게임 서버 다운 현상 발생시 대처방법을 소개해드립니다. 게임서버의 모습 티케이게임에서 서비스되는 게임서버의 모습 방법 1. 게임서버의 다운을 감지한다. ( 체크서버를 이용하여 감시) 2. 서버에 접속하여 간단히 원인을 조사한다. 3. 서버를 재빨리 재시작 한다. 4. 닥터왓슨 (Dr. Watson, Drwtsn32.exe)을 이용하여 프로그램 콜스텍과 크래시 덤프를 조사하여 오류 원인을 자세히 검사한다. 5. 프로그램 오류에 해당하는 의심 나는 소스코드를 조사하여 수정하거나 로그를 남긴다. 6. 일정을 결정하여 서버를 패치, 업데이트한다.

개요.. 오늘이 주말인지 무슨 요일인지 검사하는 코드입니다. 요일과 숫자의 연관도 : 월요일 = 1 화요일 = 2 수요일 = 3 목요일 = 4 금요일 = 5 토요일 = 6 일요일 = 0 소스코드 // 주말여부를확인한다. 작성자 : kyuseo time_t ttCurrent = time( NULL ); tm TM; localtime_s( &TM, &ttCurrent ); if( TM.tm_wday == 0 || TM.tm_wday == 6 ) { return 1; } return 0;

개요.. 게임, 프로그램을 개발하다 보면 특정 상황에서 다운이 되는 현상이 발생합니다. 해당 콜스텍(Call Stack)을 알 수 있다면 오류를 쉽게 수정할 수 있지만 개발자의 PC가 아니므로 오류재현도 쉽지가 않습니다. 이를 자동화하고 해결하고자 오류 신고 시스템과 PDB 파일을 이용한 오류 덤프 시스템을 혼합하여 사용합니다. 오류 신고 시스템이 작동되는 과정 1. 프로그램 오류가 발생되면 PDB 파일을 암호화하여 배포된 파일에서 오류 함수를 콜스택(Call Stack)검색하여 오류 정보를 작성합니다. (SeTranslator를 이용함) 2. 간단한 사용자의 시스템과 실행되고 있는 함수 목록을 작성합니다. 3. 아래와 같은 오류 신고 시스템이 프로그램을 작동합니다. 4. 게시판에 오류내용을 등록합니다...

개요.. C++ 게임, 어플리케이션 프로그래머 입장에서 개인적으로 판단하는 비쥬얼 스튜디오 Visual Studio 6.0 vs 2005 vs 2008 선택의 기준을 알려드립니다. 개인적으로 생각하기에는 2003 버전은 프로그램 자체의 버그와 불편함으로6.0 보다도 못하다고 생각합니다. VS 는 2005 버전에 이르러 좀더 정확하고 버그가 줄어들었고 많은 개발자들이 선호하고 있습니다. 하지만 C++ 게임, 어플리케이션 프로그래머 입장에서는 2005와 2008버전은 크게 변화가 없다고 생각합니다. 그래도 아직 VS 6.0을 사용하는 회사가 생각보다 많고 그들이 아직 2005 버전이상으로 변경하지 않는 이유는 회사의 특성과 소프트웨어 비용, 개개인 툴 적응 시간이 있고, 이미 6.0로 개발되고 서비스되는 모..