조회 수 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

?

  1. MID 파일의 소리를 개선해보자.

    Date2010.02.07 CategoryRPG Maker By밀크커피 Views820
    Read More
  2. HP이외에 정신력 만들기!

    Date2005.11.16 CategoryRPG Maker By다크아머 Views596
    Read More
  3. Ham Engine Library for 2D/3D Game Programmer #1

    Date2005.06.28 CategoryRPG Maker By하앙e Views1347
    Read More
  4. Centy 의 허접한 아이디어(1)

    Date2005.11.09 CategoryRPG Maker Bycenty Views453
    Read More
  5. 30분동안 만들어본 방식 rpg 아이디어정보공유에도올림

    Date2005.12.30 CategoryRPG Maker By*YeNa* Views311
    Read More
  6. 2개이상의 캐릭조종

    Date2006.02.02 CategoryRPG Maker ByRess Views715
    Read More
  7. 2006.6.19 님의 질문에 대한 설명.....

    Date2006.02.16 CategoryRPG Maker By『연금술사』 Views440
    Read More
  8. 2000,2003으로만드는 전략시뮬

    Date2005.07.30 CategoryRPG Maker By무역장사 Views1471
    Read More
  9. 11. 맵배치 (숲길, 건물, 건물 안속 만들기)

    Date2007.02.24 CategoryRPG Maker By천영진 Views2065
    Read More
  10. 1 - 1. 변수 응용 프로그램 만들기 (난수)

    Date2007.03.06 CategoryRPG Maker By천영진 Views1279
    Read More
  11. -Jindow_v0.1-체험판

    Date2007.01.16 CategoryRPG Maker By-제이- Views1357
    Read More
  12. ***특명*** rpg2k로 srpg를 만들어라!(1)

    Date2006.05.09 CategoryRPG Maker By길모나 Views347
    Read More
  13. * 기타 - '대기'의 종류

    Date2007.02.24 CategoryRPG Maker By천영진 Views1527
    Read More
  14. '마나'에 관한 고찰...

    Date2005.05.28 CategoryRPG Maker By강연 Views952
    Read More
  15. <기본강좌> 쉐로의 RPG2000 강좌 1편: 필드에서 책 읽기

    Date2007.02.10 CategoryRPG Maker By쉐로, Views742
    Read More
  16. 맵ID 사용법 하나 발견;;

    Date2006.04.18 CategoryRPG Maker By다크아머 Views296
    Read More
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 Next
/ 15






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

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