조회 수 1398 추천 수 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. 물체 밀어서 움직이는 이벤트 조금 더 쉽게 하는 법

  2. [마지막 3명 모집] [취업연계무료교육] VR/AR 게임 콘텐츠 전문가 양성 과정 교육생 모집

  3. rpg vxa 로 겜만들때 데미지 설정 공식[링크]

  4. [꿀팁] 간단하게 만들 수 있는 실시간 전투 시스템

  5. JSON parser 변환데이터 저장시 생기는 Object Too Deep 해결하기

  6. 앙뜨프리너십에서 해커톤 부트캠프 모집중이네요

  7. RPG MV에서 플러그인 오류의 원인에 대하여

  8. RPG MV 게임 도중에 윈도우 스킨 파일 자체를 통째로 바꿔버리는 방법 (출처: HIME)

  9. 게임의 버전을 짜 보자! - 유의적 버전 2.0.0

  10. 텍스트 대화 도중 메뉴 여는 방법을 알아냈습니다!

  11. rpgmv 마우스 지원과 터치 지원이 되니.

  12. RPG Maker MV 와 AJAX를 이용한 웹통신 관련 영상.

  13. RPG게임 뻔한요소들.

  14. 자바스크립트와 관련해서 참고할 만한 사이트들

  15. 꿀잼이군요!

  16. [RPG2000/3 팁] 간편한 이벤트 단축키

  17. [RPG2000/3 팁] 간편한 이벤트 단축키

  18. [강의링크] 대비법칙-색상대비-밀당의 재미 약한 반대색 설계

  19. 오다 주웠습니다.

  20. 무료 이미지 사이트 Pixabay!

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(김원배) | 사신지(김병국)