게임 코어를 짜는 중인데....
필요하다보면 완성된 코어 소스는 공개를 할까 생각중인데..
오픈 소스 개념으로.. 말이죠..
한번도 C언어로는 게임을 만들어본적이 없어서 조금 힘이 부딪히기는 하네요 -
게임코어 소스를 대충 어느정도 만들어지는거 같으면
소스 오픈하려고 합니다..(전혀 졸작이지만... =ㅅ=)
소스를 공개 오픈해서 다른 사람이 그 소스를 개조해서 올리고...
또다른 사람은 소스를 받아서 또 개조해서 올리고 해서
우리도 리눅스의 오픈소스 정신을 이어 받는데 참여 하실분 없나여??
일단 계획하는게... 저도 온라인을 목표로 하고 있습니다 헤헤헤 -
일단 데이타베이스는 ODBC로 MS-SQL 데이타베이스를 쓸려고 하구 있구요...
네트워크는 멀티플렉싱기반으로 구현 할려고 합니다. (IOCP로 구현하고는 싶은데...
실력이 너무 딸리네요 흑흑 ㅠ_ㅠ)
그런데 GDK라이브러 함수의 실제 소스들은 라이브러리 파일 안에 꽁꽁 숨겨져 있어서
따로 개조하기가... 음... 이미지 파일들을 보호하기는 힘들듯 하네요 -_-;;
네트워크 RPG와 다른점은 일단 다크GDK가 C/C++기반을 하기때문에
스크립트를 기반으로 하는 네트워크 RPG보다 직접 네트워크 엔진을 구현해야 하지만
그만큼 기존에 공개되어 있는 윈도우 소켓 프로그램 소스를 가져다 쓸수가 있다.
멀티플렉싱기법이 그렇게 접속자수가 많이 받기는 힘들다지만...
(현재 대부분 상업용 온라인 게임은 IOCP기반으로 온라인 게임이다.)
적어도 넷플레이를 이용한 네트워크 RPG보다 더많은 동접이 가능하다!!
(50명 이상의 동접은 가능 할듯 -)
오픈 소스로 관심있으신분들도 개조해서 올려주세요!!
아방스님 다크 GDK게시판 하나 만들어 주셔야 할듯 -후후후 +ㅁ+
모여서 공유 할만한... ㅠ_ㅠ
일단은 심플하게... 맵로딩하고.. 케릭터 움직이는거정도 살짝 작업해봤는데..
실제 구동파일은 제블로거에 링크를 걸게요 -
http://blog.naver.com/zkdlfhrm/110077600895 <- 받아서 실행해보세요 -
만약 실행이 안된다면! -
비쥬얼 스튜디오 2008 SP1 재배포 가능 패키지 다운로드 링크
설치해주시길...
다음은 다크 GDK라이브러리를 사용한 본파일의 전체 소스입니다.
역시 !! Dark GDK 소스의 양이 가히 짧죠!?
물론 다크 GDK라이브러리를 그냥 쓰기에는 빈약해서 따로 래핑하고 수정해서
프레임워크는 따로 만들어야겠지만... ㄷㄷ ㅅ
#include "DarkGDK.h"
#include "dinput.h"
#include <windows.h>
void DarkGDK ( void )
{
int x=0;
int y=0;
char Texta[50];
// 60 FPS.
dbSyncOn ( );
dbSyncRate ( 60 );
// 윈도우텍스트설정.
dbSetWindowTitle("다크GDK 테스트 - by Saber");
// 글자크기20.
dbSetTextSize(20);
// 진하게.
dbSetTextToBold();
// 굴림체폰트로129번국제문자집합(한국어)을사용
dbSetTextFont("굴림체", 129);
// Display Mode 설정.
dbSetDisplayMode ( 1024, 768, 32 );
//dbSetWindowOff();
// 맵로드
dbLoadImage("Back_PNG.PNG", 1);
// 0, 0에배경배치.
dbSprite( 1, 0, 0, 1);
// 컬러키설정.
dbSetImageColorKey(128, 0, 255);
// 케릭터스프라이트이미지로드.
dbCreateAnimatedSprite ( 999, "download.png", 4, 4, 999 );
while ( LoopGDK ( ) )
{
// 케릭터위치를재배치.
dbSprite(999, 450, 300, 999);
wsprintf(Texta,"X좌표: %d Y좌표: %d", abs(x-450), abs(y-300));
dbText(0, 0, Texta);
dbDrawSpritesFirst( ) ;
if(dbKeyState(DIK_LEFT))
{
x+=2;
dbSprite ( 1, x, y, 1);
dbPlaySprite ( 999, 5, 8, 80 );
}
if(dbKeyState(DIK_RIGHT))
{
x-=2;
dbSprite ( 1, x, y, 1);
dbPlaySprite ( 999, 9, 12, 80 );
}
if(dbKeyState(DIK_UP))
{
y+=2;
dbSprite ( 1, x, y, 1);
dbPlaySprite ( 999, 13, 16, 80 );
}
if(dbKeyState(DIK_DOWN))
{
y-=2;
dbSprite ( 1, x, y, 1);
dbPlaySprite ( 999, 1, 4, 80 );
}
dbSync ( );
}
// 스프라이트이미지제거.
dbDeleteSprite( 999 );
dbDeleteImage( 999 );
// 배경이미지제거.
dbDeleteImage( 1 );
return;
}