조회 수 1347 추천 수 4 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

HAM Engine
Library Engine for Developer 3D/2D Game(C++).
Made by Kernys(하앙e/jenycany@hanmir.com)

1. 햄 엔진 소개

햄 엔진은 쉬운 프로그래밍을 위해 DirectX의 기능을 적극 활용하여 한층 더 감싼 라이브러리 입니다.

이 엔진은 메시 출력 및 그림 파일 출력을 간단히 할 수 있으며, 이를 활용하면 좋은 게임을 제작할 수 있을 것 입니다.

 

1. 햄 엔진 작동 환경 및 설치

햄 엔진은 Visual Studio .NET 2003 이상의 환경(그리고 DirectX SDK가 설치가 되어있어야 합니다.) 에서 작동하고, 16개의 파일로 이루어져있으며, 프로젝트 폴더에 이 파일들을 모두 넣고 다음의 과정을 통해 쉽게 사용하실 수 있습니다.

 - 솔루션 탐색기에서 자신의 프로젝트를 선택하고 오른쪽 버튼, 그리고 속성(R)에 들어갑니다.

 - 그 후에 왼쪽 폴더에서 '링커' 폴더로 들어간 후에 입력을 선택한 다음 추가 종속성에서 맨 마지막에 한칸을 띄우고 'Ham_Engine.lib' 이라고 적습니다.

 - 그리고 확인을 눌러 다시 원래 상태로 돌아옵니다.

 

그 이후에 프로젝트에 사용할 헤더 파일을 만든 후에 헤더 파일 제일 위에 다음의 소스를 넣습니다.


#include <winsock2.h> // 네트워킹을 위한 환경 지원

#include <d3d9.h> // D3D 환경 지원
#include <d3dx9.h> // D3DX 환경 지원

#include "StdAfx.h" // 엔진과 연결

#include <windows.h> // 윈도우즈 환경과 연결

 

using namespace Ham; // 햄엔진의 네임 스페이스를 사용할 것을 정의
class CApp : public Ham::System::CHam_Engine { // 메인 어플리케이션 클래스
   public:
      BOOL Initialize(char *pWindowName,char *ClassName,int iWidth,int iHeight,int iXPos,int YPos,DWORD Style,int CursorNum,int IconNum,float fFrameSkip = 50.0f);
      BOOL DoEvents(float Delta,float fFrame);
};


 

이로써 간단한 메인 어플리케이션 클래스의 뼈대를 작성했습니다.

그리고 이제 헤더 파일에서의 할일은 끝났고, 소스 파일로 이동합니다.

소스 파일에서는 다음의 소스를 기본적으로 삽입합니다.

 


#include "WinMain.h"

CApp g_App; // 메인 어플리케이션 객체
Graphic::CGraphics g_Graphic; // Direct3D 객체


int main() {
 puts("프로그램 초기화를 시작합니다.");
 g_App.Initialize("ProgramClass","Hello!! Ham Engine World!!!",800,600,100,100,WS_OVERLAPPED | WS_SYSMENU,0,0); // 프로그램 초기화
 g_App.Execute(); // 프로그램 시작
 g_App.Release(); // 프로그램 소멸

 return 0;
}

 

BOOL CApp::Initialize(char *pWindowName,char *ClassName,int iWidth,int iHeight,int iXPos,int YPos,DWORD Style,int CursorNum,int IconNum,float fFrameSkip /* = 50.0f */) { // 프로그램의 초기화 루틴

 if(CHam_Engine::Initialize(pWindowName,ClassName,iWidth,iHeight,iXPos,YPos,Style,CursorNum,IconNum,0.0f)) {
    if(!g_Graphic.Initialize(this,NULL,TRUE,TRUE,D3DFMT_D16)) return FALSE;

    // 이곳에 초기화 할 값이나 정보를 삽입해주세요

 

    return TRUE; // 프로그램 초기화 완료

 }

 return FALSE;

}

 

BOOL CApp::DoEvents(float Delta,float fFrame) {

   LPDIRECT3DDEVICE9 pDevice = g_Graphic.GetD3Device(); // 본래의 Direct3D 객체를 얻음

   pDevice->Clear(0,0,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,255),1.0f,0); // 하얀색으로 화면 전체를 지움

   if(g_Graphic.BeginScene()) // 화면의 녹화 시작

  { // 이 안에 있는 내용 물은 모두 녹화(렌더링) 됩니다.

   g_Graphic.EndScene(); // 화면의 녹화 종료

  }

 

   g_Graphic.Present(); // 현재까지 녹화한것을 출력

}


 

이제 간단한 하얀창을 띄우기에 성공했습니다. 이제는 우리가 이 화면에 무엇을 그려야 합니다.

그래서 이제부터 간단한 예제인 그림 파일 띄우기를 해보겠습니다. 출력할때 필요한 파일을 하나 준비해주세요.

 

그리고 다음에 지시에 따라 소스코드에 써 넣습니다

WinMain.cpp(소스 파일)에 있는 맨 윗줄부분인

Graphic::CGraphics g_Graphic; // Direct3D 객체

부분 밑에

Graphic::CTexture g_Texture; // 텍스쳐(3D 환경에서의 이미지) 객체

를 써 넣습니다.

그리고 나서 아까 Initialize 함수에서 다음

// 이곳에 초기화 할 값이나 정보를 삽입해주세요

부분 밑에

Texture.Initialize(&g_Graphic,"test.bmp" /* 파일 이름 */); // 텍스쳐의 초기화

이것을 넣어주십시오.

그리고 나서 방금전에 나온

   if(g_Graphic.BeginScene()) // 화면의 녹화 시작

  { // 이 안에 있는 내용 물은 모두 녹화(렌더링) 됩니다.

   g_Graphic.EndScene(); // 화면의 녹화 종료

  }

부분 사이에

Texture.Blit(0,0,0,0);

를 넣어주십시오.

그리고 다시 컴파일을 하시면 창에 왼쪽 상단에 그림이 하나 뜰 것 입니다.

이제 Blit 함수의 인수에 대해 알아봅시다.

우리가 사용한 Blit 함수의 인수는 다음과 같이 되어있습니다. ( 원래 기본 인수도 있지만 여기서는 초보적 설명이므로, 제외 하겠습니다. )

BOOL Blit(float DestX,float DestY,long SrcX,long SrcY); // 텍스쳐 블리트

여기서 DestX와 DestY는 화면에 어디 위치에 출력할지를 입력해주는 곳 입니다.

제가 0,0,에서 쓴것은 화면의 제일 왼쪽 상단에 출력하라는 의미이지요.

그리고 SrcX와 SrcY는 그림의 어디 부분부터 출력할지 입력하는 곳 입니다.

 

이제 간단히 여기 까지 알아보았습니다.

아직은 햄엔진의 1% 기능 밖에 사용하지 못했지만, 앞으로도 많은 기능을 소개하여 100%까지 끌어 올리도록 하겠습니다 ^^

 

읽어주셔서 감사합니다

Thanks for reading my lecture

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
784 RPG Maker [쯔꾸르] 애기들 따라다니게 만들기 1 file 2012.06.26 1397
783 RPG Maker 게임자체가 히든피스!! [S's-S] 2006.09.28 1397
782 RPG Maker 전투애니매이션으로 전투를 만들어보자. LeeGang 2005.10.03 1396
781 언어/기타 vnap 로드는 load로 되는데 세이브는 save로 안된다??????????? ㅡ.ㅡ; 협객 2007.05.13 1393
780 언어/기타 획기적인 게임 제작 제1편(게임의 전체적인 분위기의 선택) Santiago 2006.12.04 1389
779 언어/기타 [구기술체험소] Fast Chatting System file 비밀소년 2007.05.03 1385
778 언어/기타 [DX&C++] DirectX란 무엇인가? Zeprod 2007.02.17 1385
777 언어/기타 ARM 어셈블리 강좌 #1: ARM 뜯어보기 원스타 2006.08.17 1380
776 RPG Maker [ODS] ONE 상에 그림 띄우기 Zeprod 2008.05.02 1374
775 언어/기타 0707후반기[제작자포럼]공성결과 천무 2007.08.01 1372
774 언어/기타 액션알피지의 간단한 스킬... ; 피카츄 2005.09.19 1366
773 RPG Maker 어떻게 하면 스토리를 잘 구성할수 있을까? Game/over 2006.07.28 1362
772 언어/기타 [이벤트] 초&중급자 정도의 퀘스트. ~대장장이의 편지를 전달하라!!~ 바람을 가르는 자 2005.05.31 1361
771 언어/기타 축구게임 시스템 헤지혹 2006.12.10 1358
770 RPG Maker -Jindow_v0.1-체험판 file -제이- 2007.01.16 1357
769 RPG Maker 원형 거리 측정(세 줄 스크립트) 타이머 2007.02.12 1356
768 언어/기타 3D좌표계에 3D물체를 찍기위환 기초과정 실베 2007.03.31 1355
767 언어/기타 [DX&C++]3D공간상 카메라 시점의 대한 정의 실베 2007.04.02 1351
» RPG Maker Ham Engine Library for 2D/3D Game Programmer #1 하앙e 2005.06.28 1347
765 언어/기타 수영 시스템 입니다. 레인시 2006.07.28 1342
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 51 Next
/ 51






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)