조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
296 RPG Maker 맵ID 사용법 하나 발견;; 다크아머 2006.04.18 296
295 RPG Maker <기본강좌> 쉐로의 RPG2000 강좌 1편: 필드에서 책 읽기 쉐로, 2007.02.10 742
294 RPG Maker '마나'에 관한 고찰... 강연 2005.05.28 952
293 RPG Maker * 기타 - '대기'의 종류 천영진 2007.02.24 1527
292 RPG Maker ***특명*** rpg2k로 srpg를 만들어라!(1) 길모나 2006.05.09 347
291 RPG Maker -Jindow_v0.1-체험판 file -제이- 2007.01.16 1357
290 RPG Maker 1 - 1. 변수 응용 프로그램 만들기 (난수) 천영진 2007.03.06 1279
289 RPG Maker 11. 맵배치 (숲길, 건물, 건물 안속 만들기) 천영진 2007.02.24 2065
288 RPG Maker 2000,2003으로만드는 전략시뮬 무역장사 2005.07.30 1470
287 RPG Maker 2006.6.19 님의 질문에 대한 설명..... 『연금술사』 2006.02.16 440
286 RPG Maker 2개이상의 캐릭조종 Ress 2006.02.02 715
285 RPG Maker 30분동안 만들어본 방식 rpg 아이디어정보공유에도올림 *YeNa* 2005.12.30 311
284 RPG Maker Centy 의 허접한 아이디어(1) centy 2005.11.09 453
» RPG Maker Ham Engine Library for 2D/3D Game Programmer #1 하앙e 2005.06.28 1347
282 RPG Maker HP이외에 정신력 만들기! 다크아머 2005.11.16 595
281 RPG Maker MID 파일의 소리를 개선해보자. 1 file 밀크커피 2010.02.07 815
280 RPG Maker PNG 그림파일을 출력할 수 있는 라이브러리 file 에스페란사 2005.08.02 796
279 RPG Maker Rpg 2000 , 2003 으로 2 p 를 만들어 보자! 다크세이버™ 2006.06.29 910
278 RPG Maker RPG 2000 강좌 No.1 쉐로, 2006.07.27 421
277 RPG Maker RPG 2000/2003에서의 마우스 사용(수정) file Black-☆ 2007.11.19 3190
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15






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

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