조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
964 RPG Maker RPGXP 스크립트를 공부 합시다. -2강(수치의 계산 편)- 1 장아찌 2005.06.05 1058
963 [RPG2000] 가이드북 -4- 1 창조도시 2005.06.07 10519
962 RPG Maker 대화창의 무궁무진한 발전 [수정] Norid 2005.06.09 1941
961 RPG Maker [넬바]인생게임을 만들려고?그러면 읽어봐![추가 추가 추가 !] Nelba 2005.06.15 1459
960 RPG Maker RPG XP 배워보기 <변수를 마스터하자 중편> 덩키동크 2005.06.17 1196
959 언어/기타 스위치 예를들어 소넥 2005.06.18 643
958 RPG Maker 원경에 대하여 알아본다. Norid 2005.06.19 870
957 언어/기타 인터넷으로 케메하기 안티테제 2005.06.19 1113
956 언어/기타 변수의 비밀을 파보자. 장아찌 2005.06.20 890
955 RPG Maker 프로텍팅의 파워업![수정] 간장맛봉봉 2005.06.21 661
954 언어/기타 게이지바 만들기 블리쳐 2005.06.24 1740
953 언어/기타 스위치와 변수를 배워보자! 2005.06.27 1078
» RPG Maker Ham Engine Library for 2D/3D Game Programmer #1 하앙e 2005.06.28 1347
951 언어/기타 정령 장아찌 2005.06.30 455
950 RPG Maker 기본메뉴샘플 [액션RPG] file 싸이클론 2005.07.01 2144
949 언어/기타 게임 속 죽음의 이해/머리글. GAiA 2005.07.01 416
948 RPG Maker 웨이브 파일 용량 줄이는 법 file 아마란스 2005.07.01 1741
947 RPG Maker RPG XP 케릭터 메이커입니다. 타다기 2005.07.04 2328
946 언어/기타 Ham Engine Library : 햄 엔진 최신 버전 업데이트 및 설치 하앙e 2005.07.05 814
945 RPG Maker 칩셋의 우선순위 한계를 극복하자!!! file 책벌레공상가 2005.07.09 954
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 51 Next
/ 51






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

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