2D游戏引擎,HGE的一个简单教程

合集下载

HGE游戏开发第三课

HGE游戏开发第三课

LOGO
• •Байду номын сангаас• • • • • • • • • • • •
GetScale GetProportion GetRotation GetTracking GetSpacing GetSprite GetPreWidth GetPostWidth GetStringWidth GetHeight 字体描述文件格式 需要 头文件: hgefont.h 库文件: hgehelp.lib
LOGO
比特率 比特率表示单位时间(1秒)内传送的比特 数bps(bit per second,位/秒)的速度。 通常使用kbps(通俗地讲就是每秒钟1000 比特)作为单位。cd中的数字音乐比特率为 1411.2kbps(也就是记录1秒钟的cd音乐, 需要1411.2×1024比特的数据),音乐文 件的BIT RATE高是意味着在单位时间(1秒) 内需要处理的数据量(BIT)多,也就是音 乐文件的音质好的意思。但是,BIT RATE高 时文件大小变大,会占据很多的内存容量, 音乐文件最常用的bit rate是128kbps, MP3文件可以使用的一般是8~320kbps
LOGO
HGE游戏开发第三课
授课人:张达伟
LOGO
• 音乐播放器
LOGO
• 游戏音效 电子游戏中发生特定行为或进行特定操作时播放的效果音乐。 如子弹发射时的声音、怪物死亡时的惨叫、点击按钮时的 “咔嚓”声音等。
LOGO
按音效格式和制作方式分类 (1)单音音效 单音音效是指单个wav文件为一个独立 音效,游戏中的音效绝大部分都是单音音效, 由程序调用发声并控制远近、左右位置。 (2)复合音效 复合音效是指具有多个声音元素,在游 戏过程中由程序即时对这些元素合成发声的 音效。有的游戏专为声音设计了复合音效引 擎。这种音效最大的优点是元素可以重复使 用,有效控制了音效元素的下载负担,而且 变化丰富。缺点是制作难度大,技术要求复 杂。 (3)乐音音效 乐音音效更像是一小段音乐,通常在进 入地图的时候闪现出来,这种音效属于音乐 制作范畴,通常由音乐制作方来制作。

hge引擎

hge引擎

Hge引擎介绍Overview总述HGE is an easy to use yet powerful hardware accelerated 2D game engine. It is a full featured middleware for all who want to develop commercial quality 2D games rapidly and easily. It covers all imaginable 2D game genres:you could create everything from a simple puzzle to advanced multilayered platformer or strategy without even thinking of any non game logic code! And you don't have to know anything about "window messages", DirectX programming and all that stuff. Instead you can start developing your own game within 15 minutes!HGE是一个使用起来十分简单但是却拥有很强大的2D加速器的游戏引擎。

它使所有的以中间件进行开发的商业品质的2D游戏程序变得迅速且简单。

它覆盖了你能想象到的所有2D游戏流派:你可以创造出所有的东西从简单的谜语到高级的多层次的装置或者策略,却并不需要关心游戏的逻辑代码是否连贯。

同样你也可以不了解任何关于“window messages”,DirectX 设计和所有同等程度的信息。

将你自己的游戏替换到这个里面只需要15分钟!HGE runs on Microsoft Windows 98, 2000, NT, ME, XP and requires DirectX 8.0. It will run even on low-end video cards, including built in video cards such as Intel Solano (i815 chipset).HGE can be used with virtually any C++ compiler including Visual C++, Borland C++, MinGW and Metrowerks Codewarrior.HGE的运行条件基于是微软Windows 98, 2000, NT, ME, XP和必不可少的DirectX 8.0。

LGame(Android及J2SE游戏引擎)入门示例——如何构建一个游戏

LGame(Android及J2SE游戏引擎)入门示例——如何构建一个游戏

较早前LGame示例下载地址:/files/LGame-Simple-0.2.5.7z最新版LGame(0.2.6)下载地址:/files/LGame-0.2.6.rar1、如何启动LGame目前的LGame提供有J2SE以及Android两个开发版本,两版的主要类及函数虽然相同,但由于Android版对应于手机环境,而J2SE版对应于PC环境,所以依旧有少许的差别。

J2SE版:在J2SE环境下,只需要在Main函数中构造如下内容即可。

view plaincopy to clipboardprint?1.public static void main(String[] args) {2.// 获得一个游戏窗体3. GameScene frame = new GameScene("窗体名",4.480, 320);5.// 得到此窗体所对应的游戏部署器6. Deploy deploy = frame.getDeploy();7.// 设定此游戏屏幕(在任何时候都可以通过Screen中的setScreen函数切换游戏屏幕)8. deploy.setScreen(new Game());9.// 是否显示FPS10. deploy.setShowFPS(true);11.// 是否显示框架logo12. deploy.setLogo(false);13.// 允许的最大刷新率14. deploy.setFPS(100);15.// 开始游戏主循环16. deploy.mainLoop();17.// 显示游戏画面18. frame.showFrame();19.}Android版:而在Android版中,我们则需要分两步走,一是需要配置相关的AndroidManifest.xml文档。

如下所示:view plaincopy to clipboardprint?1.<?xml version="1.0"encoding="utf-8"?>2.<manifest xmlns:android="/apk/res/android"3.package="org.loon.test"4.android:versionCode="1"5.android:versionName="1.0">6.<application android:icon="@drawable/icon"android:label="@string/app_name">7.<activity android:name=".Main"8.android:configChanges="orientation|keyboardHidden"9.<intent-filter>10.<action android:name="android.intent.action.MAIN"/>11.<category android:name="UNCHER"/>12.</intent-filter>13.</activity>14.</application>15.<uses-sdk android:minSdkVersion="3"/>16.<uses-permission android:name="android.permission.INTERNET"/>17.</manifest>而调用的方法如下:view plaincopy to clipboardprint?1.package org.loon.test;2.import D;3.import org.loon.framework.android.game.LGameAndroid2DActivity;4.import org.loon.framework.android.game.core.LSystem;5.import android.os.Bundle;6.public class Main extends LGameAndroid2DActivity {7.public void onCreate(Bundle icicle) {8.// 有Admob广告,纵屏显示,广告居于屏幕下方,广告ID为“XXXXXXXX”,广告刷新速度为60秒9.this.initialization(icicle,false,LAD.BOTTOM, "XXXXXXXX",60);10.// 无Admob广告,纵屏显示11.// this.initialization(icicle,false);12.// 使用游戏窗体Game13.this.setScreen(new Game());14.// 设定FPS为6015.this.setFPS(60);16.// 不显示游戏Logo(设定Logo为setLogo)17.this.setShowLogo(false);18.// 显示FPS19.this.setShowFPS(true);20.// 显示游戏画面21.this.showScreen();22. }23.}这时LGame框架就会根据我们所实现的不同Screen,来展示我们的游戏了(很简单吧)。

hge引擎-加载纹理

hge引擎-加载纹理

加载纹理HGE::Texture_Load函数Loads a texture from memory, resource pack or disk file.从内存、资源包或者磁盘文件加载纹理。

HTEXTURE Texture_Load(const char *filename,DWORD size = 0,bool bMipmap = false);Parameters参数filenameTexture file name.纹理文件名。

sizeIf this parameter isn't 0, it is the size of memory block containing the texture in one of the known formats and the parameter filename is treated as a pointer to this block.如果这个参数不是0,那么这个纹理在内存中的大小就使用参数filename中所指定的这个指针。

bMipmapIf true, a set of mipmap levels is automatically created and used for rendering.如果为真,一组mipmap标准将自动建立并使用渲染。

(Mipmap 是目前应用最为广泛的纹理映射技术之一,它可以在内存中保存不同分辨率和尺寸的纹理图形,当3D对象移动时允许纹理光滑变化。

)Return value返回值If successful, returns the texture handle.Otherwise returns 0.如果成功,返回纹理句柄。

否则返回0。

Remarks注释Supports BMP, DDS, DIB, JPG, PNG and TGA graphics file formats. DDS format allows usage of DXT1-DXT5 texture compression which results in better performance and lower video memory requirements.支持BMP, DDS, DIB, JPG, PNG 和TGA图形文件格式。

游戏开发:构建2D游戏的五个步骤

游戏开发:构建2D游戏的五个步骤

游戏开发:构建2D游戏的五个步骤你曾经玩过那些令人上瘾的2D游戏吗?这些游戏既让人回味无穷又令人沉浸其中。

如果你是一位有创意的开发者,并且想要构建属于自己的2D游戏,那么你来对地方了!本文将介绍构建2D游戏的五个步骤,帮助你在技术和创意方面迈出成功的第一步。

步骤一:明确游戏概念首先,你需要明确你游戏的概念和目标。

想象一下你的游戏,它是什么类型的游戏?是一个冒险游戏?还是一个平台游戏?定义游戏的核心玩法和主题是非常重要的,这样你才能够聚集精力构建一个有趣的游戏。

在这个步骤中,你还可以开始设计你的游戏角色和世界。

想象一下你的主角是谁?他/她有什么特殊技能?游戏的世界是什么样子的?一个有趣和吸引人的设计能够让玩家更有参与感,并提高游戏的整体体验。

步骤二:选择合适的游戏引擎选择合适的游戏引擎对于构建2D游戏至关重要。

游戏引擎可以简化开发过程,并提供丰富的工具和资源来帮助你实现你的创意。

在选择游戏引擎时,你需要考虑以下因素:1.易用性:游戏引擎应该是易于理解和使用的,即使你是一个初学者也不例外。

2.性能:游戏引擎应该能够处理大量的游戏元素和图像,以确保游戏的流畅运行。

3.支持性:游戏引擎是否有一个活跃的社区和丰富的文档,可以帮助你解决问题和学习新技术。

4.平台兼容性:游戏引擎是否支持你想要发布游戏的平台,如Windows、iOS或Android。

目前,一些最受欢迎的2D游戏引擎包括Unity、Cocos2d、Godot和GameMaker。

当然,你可以根据你的需求和个人喜好来选择合适的游戏引擎。

步骤三:构建游戏场景和关卡既然你已经确定了游戏的概念,并选择了适合的游戏引擎,那么接下来的步骤就是构建游戏的场景和关卡。

在这一步中,你需要使用游戏引擎提供的工具和编辑器来创建游戏的不同场景和关卡。

一个好的游戏场景应该包括各种不同的元素,如背景、地形、道具和敌人。

关卡的设计应该有趣并具有挑战性,以保持玩家的兴趣和参与度。

一步一步教你cocos2d游戏引擎之新建工程图文并茂

一步一步教你cocos2d游戏引擎之新建工程图文并茂

原创:一步一步教你cocos2d游戏引擎之新建工程(图文并茂)cocos2d的安装在:一步一步教你Mac OS X系统下安装cocos2d(图文并茂)中以介绍。

测试环境:Mac OS X系统版本10.8.5Xcode版本5.1cocos2d版本cocos2d-iphone-2.11、打开Xcode-->;Create a new Xcode project。

2、选择iOS-->;cocos2d v2.x-->;cocos2d iOS,点击next。

3、在Product Name栏内输入:Hello Cocos2d,Device Family栏选择iPhone,其他的可以先不理会,点击next。

4、保存在一个合适的目录下,点击Create。

5、接下来出现如下的界面,点击run(左上角的倒三角),出现Build Succeeded,表示运行成功。

6、我们一行代码也没有写,但iPhone模拟器中确显示&ldquo;Hello World&rdquo;标签。

7、我们所要做的就是在模拟器显示&quot;Hello Cocos2d&quot;,这样的字符,点击stop(左上角的黑色正方形),打开Hello Cocos2d文件夹下的HelloWorldLayer.m文件,找到名为-(id)init的方法。

8、将CCLabelTTF *label = [CCLabelTTF labelWithString:@&quot;Hello World&quot; fontName:@&quot;Marker Felt&quot; fontSize:64]; 改为CCLabelTTF*label = [CCLabelTTFlabelWithString:@&quot;HelloWorld&quot;fontName:@&quot;MarkerFelt&quot;fontSize:64];将[self addChild: label];和[self addChild:menu];之间的代码删除。

hge引擎lua写法

hge引擎lua写法

HGE引擎与Lua的结合可以通过以下步骤实现:1. 绑定HGE到Lua:这可以通过写pkg文件和使用tolua++.exe 程序处理该文件,从而生成绑定代码实现。

在生成绑定代码后,将其添加到自己的工程中一起编译即可。

目前已经绑定了HGE、hgeSprite、hgeFont、hgeResourceManager、hgeRect等类。

2. 编写Lua脚本:在绑定HGE后,可以开始编写Lua脚本。

例如,可以在脚本中创建HGE对象、设置属性、调用方法等。

以下是一个简单的示例代码,展示如何在Lua中使用HGE引擎创建一个精灵(Sprite):```lua-- 创建一个新的HGE游戏窗口local game = hge.new("Game")game:setCaption("HGE Lua Example")-- 创建一个场景local scene = game:add("Scene")-- 创建一个精灵,并设置其位置和大小local sprite = scene:add("Sprite")sprite:setPosition(100, 100)sprite:setSize(100, 100)-- 设置精灵的图像sprite:setTexture("example.png")-- 更新游戏窗口和场景game:run()```以上代码中,首先创建了一个新的HGE游戏窗口,然后添加了一个场景,并在场景中添加了一个精灵。

设置了精灵的位置、大小、图像等属性,最后运行游戏窗口。

注意,需要在代码中引入hge.lua 文件,以便在Lua中使用HGE引擎的函数和类。

可以使用类似于`require "hge"`的语句来引入该文件。

hge引擎

hge引擎

Hge引擎介绍Overview总述HGE is an easy to use yet powerful hardware accelerated 2D game engine. It is a full featured middleware for all who want to develop commercial quality 2D games rapidly and easily. It covers all imaginable 2D game genres:you could create everything from a simple puzzle to advanced multilayered platformer or strategy without even thinking of any non game logic code! And you don't have to know anything about "window messages", DirectX programming and all that stuff. Instead you can start developing your own game within 15 minutes!HGE是一个使用起来十分简单但是却拥有很强大的2D加速器的游戏引擎。

它使所有的以中间件进行开发的商业品质的2D游戏程序变得迅速且简单。

它覆盖了你能想象到的所有2D游戏流派:你可以创造出所有的东西从简单的谜语到高级的多层次的装置或者策略,却并不需要关心游戏的逻辑代码是否连贯。

同样你也可以不了解任何关于“window messages”,DirectX 设计和所有同等程度的信息。

将你自己的游戏替换到这个里面只需要15分钟!HGE runs on Microsoft Windows 98, 2000, NT, ME, XP and requires DirectX 8.0. It will run even on low-end video cards, including built in video cards such as Intel Solano (i815 chipset).HGE can be used with virtually any C++ compiler including Visual C++, Borland C++, MinGW and Metrowerks Codewarrior.HGE的运行条件基于是微软Windows 98, 2000, NT, ME, XP和必不可少的DirectX 8.0。

HGE引擎-绘制,声音,碰撞处理

HGE引擎-绘制,声音,碰撞处理

HGE引擎-绘制,声⾳,碰撞处理另外,年代久远,该引擎官⽹早已上不去了1.库的安装和下载2.HGE实例#include<hge.h>#pragma comment(lib,"hge.lib")Q:为什么要导⼊这个lib?不是在配置⾥⾯添加了吗?A:由于不可知的原因,在VC6.0中配置时,加⼊了lib之后,所有其他的函数都可以使⽤,只有hgeCreate函数总是提⽰“⽆法解析的外部符号”。

⽽这个函数是创建HE游戏引擎的函数,可谓是巨头函数,这个函数不能⽤,那整个程序就Game Over了。

所以在⽤代码导⼊这个lib之后,就可以使⽤了。

//定义全局变量HGE * hge = NULL ;hgeQuad quad ; //⽤于保存绘图的顶点,纹理,和混⾊的函数Q:hgeQuad结构是什么?A:查看HEG的官⽹,上⾯解释说这个结构是跟绘图有关的结构。

如果要绘图,就需要有这个结构存在。

以下是这个结构的详细定义:struct hgeQuad{hgeVertex v[4] ;HTEXTURE tex ;int blend ;};上⾯结构中的⼏个成员分别是hgeVertex顶点结构,⽤于保存顶点的信息;第⼆个是HTEXTURE结构的数据,此结构是纹理的句柄;blend 表⽰混⾊模式。

HEFFECT snd ; //保存⾳效的句柄float x = 100.0f , y = 100.0f ;float dx = 0.0f , dy = 0.0f ;const float speed = 90 ;const float friction = 0.98f ;//定义播放⾳效的函数void boom(){int pan = int((x-400)/4);float pitch = (dx*dx+dy*dy)*0.0005f + 0.2f ;hge->Effect_PlayEx(snd,100,pan,pitch); //snd是⾳频资源的句柄,100表⽰声⾳⼤⼩,pan表⽰左右声道,pitch表⽰播放频率}Q:Effect_PlayEx函数是什么⽤处?A:Effect_PlayEx函数,⽤于播放指定的⾳效⽂件,同时可以根据后⾯的⼏个参数来进⾏声⾳,声道,播放频率的改变。

hge引擎-hge系统状态

hge引擎-hge系统状态

Hge系统状态HGE System statesHGE系统状态HGE has various internal system states that can be changed and received with System_GetState and System_SetState functions. The state names are defined with hgeState enumeration type: HGE是多方面的内部系统状态,可以使用System_GetState 和System_SetState函数对其进行更改和接收。

使用hgeState列举名称说明类型:System state 系统状态Type类型Default默认Description说明HGE_FRAMEFUNC bool*() NULL Pointer to a user-definedframe function that takes noparameters and returnsbool.This function will becalled each frame, put yourgame logic here. When youwant the application toterminate, return true.Otherwise return false. Ifthis state is not set,System_Start function callwill fail. Although it can bechanged at any time later.指向用户定义的框架函数,它无法获取参数并返回bool。

这个函数将会被各个框架调用,将你的游戏逻辑放在这里。

当你想要应用程序终止时,返回真。

否则返回假。

如果这个状态不设定,System_Start函数命令将会失败。

尽管它能在任何事件之后改变。

基于Unity引擎的2D角色扮演游戏的设计与实现

基于Unity引擎的2D角色扮演游戏的设计与实现

基于Unity引擎的2D角色扮演游戏的设计与实现基于Unity引擎的2D角色扮演游戏的设计与实现一、引言随着时代的发展和科技的进步,电子游戏成为人们生活中不可缺少的一部分。

而其中的角色扮演游戏(Role-playing game,简称RPG)更是备受玩家追捧的一类游戏。

本文将探讨如何基于Unity引擎设计并实现一款2D的角色扮演游戏。

二、游戏概述本款游戏是一款2D角色扮演游戏,玩家在游戏中扮演主角,通过探索游戏世界、战斗敌人、完成任务等方式来逐步提升角色的能力和经验。

游戏将采用Unity引擎作为开发工具,通过使用C#编程语言开发游戏逻辑、界面交互和角色等功能。

三、游戏设计与实现1. 游戏场景设计游戏中的场景是玩家与敌人交战和探索世界的背景,需要具备丰富的细节和可交互性。

我们可以使用Unity引擎的Scene视图来构建游戏世界的布局,通过导入2D素材和地图解析,创建可供角色移动和交互的场景。

2. 角色设计玩家可以根据自己的喜好创造自己的游戏角色,角色的属性、技能和装备将直接影响游戏的进行。

角色可以包括物理属性(如生命值、魔法值等)、技能属性(如攻击力、防御力等)等。

使用Unity引擎可以为角色创建3D模型或者2D角色贴图,并且通过代码控制角色的行为和状态。

3. 物品系统设计游戏中的物品系统可以为玩家提供各种装备和消耗品,增强角色的能力。

物品系统需要包括物品的类型和属性(如武器、护甲、药水等)以及对应的效果。

在Unity中可以使用ScriptableObject来创建物品脚本,用来定义物品的属性、图标和使用效果等。

4. 多样化敌人设计游戏中的敌人是玩家战斗和挑战的对象,需要设计不同种类的敌人以增加游戏的趣味性。

敌人的属性、行为和可以通过代码来控制。

使用Unity的Animator组件可以为敌人创建不同的动画状态,增加游戏的动态效果。

5. 任务系统设计任务系统是游戏中的核心模块,玩家通过完成任务来推动游戏剧情的进行。

HGE基础教程

HGE基础教程

HGE基础教程⽆意中发现了hge中⽂社区,听朋友介绍,认识了hge,然后开始对它进⾏研究,并使⽤hge开始制作游戏。

因为我所得的资料基本上都是来源于各位⾼⼿的⽆私翻译,所以,我打算也做⼀些贡献出来,在这⾥写⼀篇hge的基础教程,供刚接触hge 的朋友研究学习。

教程中可能会出现⼀些错误,请⼤家及时指正。

由于我也是初学者,包括c++,也只是⼀个初学者,所以写出的教程可能质量并不⾼,也请⼤家谅解。

另外,学习此教程需要c++的基本知识,不需要⾮常⾼深,只需要了解函数调⽤、结构体、枚举、常量、变量、类的基本知识、函数指针等基本知识即可。

我使⽤的编译器:我使⽤的编译器是microsoft的visual c++ 2005,但是visual c++ 6.0或者visual c++ 2003等visualstudio的c++编译器都是可以使⽤hge的,另外,borlandc++也是可以使⽤hge的,本教程将使⽤visual studio 2005为⼤家做讲解,如果有⼀些编译器问题上的出⼊,请⼤家搜索或者提问解决。

hge基础教程第⼀章:初识hgec++有⼀个理念,我记得是在我看c++ primer学习时看到的,那就是⼀次代码编写,处处使⽤,所以,就出现了诸如dll,lib等便于⼤家使⽤的代码库。

其思想基本就是把写好的代码打包,然后只要在⼯程中链接lib或dll,就可以使⽤dll或者lib中写好的代码,它们的出现,为资源共享创造了空前的便利。

那么,hge也是贯彻这个思想的⼀个库,它把directx进⾏封装,⽅便⼤家使⽤,由于直接使⽤directx需要直接接触其他硬件上的东西,所以不利于⼊门,hge的出现,让⾼效图形编程成为了简单的东西。

关于免费:hge是⼀个完全免费的,并且开源的引擎,所以我们可以随便使⽤在⾃⼰的商业或⾮商业项⽬,在此,我们也向hge的编写者致敬。

激动⼈⼼的时刻:第⼀个hge程序。

创建⼯程:我们在visual c++中新建⼀个win32⼯程,选择win32控制台程序/win32 console,为你的项⽬起⼀个名字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 接口函数 ( Interface functions ) : hgeCreate --- 初始化 HGE 指针 , 这是一个全局函数 , 除了这个函数 , HGE Cor e Funtions 中所有的函数都需要通过 HGE 指针调用 . Release --- 释放 HGE 接口 , 调用了 hgeCreate 就应该调用 Release 释放 .
2. 系统函数 ( System functions ) : 这类函数都是以 System_ 开头 , 后面加上表示函数意义的单词 ( 不出现下划线 ) , 之后介绍的函数也将使用这种命名方式 , 即类型前缀 + 有意义的单词 :
System_Initiate System_Shutdown System_Start System_SetState System_GetState System_GetErrorMessage System_Log System_Launch System_Snapshot
从上图可以看见 : 1 ) 用于代码只需要架构在 HGE Helper Classes 之上 2 ) 通常游戏资源 ( Game Resources ) 需要使用 HGE 创作工具来产生
3. 体系结构概述 : 1 ) Core Functions 层 <1> 图形格式支持 : 支持 BMP, JPG, PNG, TGA, DDS, DIB 文件格式 <2> 支持窗口模式和全屏模式 <3> 音频支持和音乐回放 ( music playback ) : 支持 WAV, MP3, MP2, MP1 and OGG 音频文件格式 ( audio file formats ) 持压缩流的回放 . 声音大小和声道的控制 <4> 输入设备支持 : 鼠标和键盘 <5> 资源 : 读取硬盘上的资源 , 支持 ZIP 打包的文件格式 <6> 日志支持 2 ) Helper Classes 层 <1> 精灵 ( Sprites ) 和动画 ( Animations ) , 支持 MO3, IT, XM, S 3M, MTM, MOD and UMX 音乐文件格式 ( music file formats ) , 支
初始化相关软件和硬件 恢复声音模式并且释放资源 开始运行用户定义的帧函数 设置系统内部状态 返回内部状态的值 返回最后出错的 HGE 错误描述符 在日志文件中书写格式化消息 运行 URL 或者外部可执行文件或数据文件 截屏并保存到一个文件
3. 在游戏开发中使用 HGE 首先建立一个空的 Win32 工程 , 然后选择 Project->Settings...->Link
按图所示 , 输入 hge.lib 和 hgehelp.lib 当然 , 也可以使用预编译器指令 pragram 来打到同样的目的 .
3. 初试 HGE
当 HGE 安装完成之后 , 就可以使用了 , 关于 HGE 的安装 , 可以参考 << HGE 系列教材 ( 2 ) --- 安装 HGE >> 现在使用 HGE 开发一个极小的程序 : 1. 包含 hge.h 文件 , 并且定义一个 HGE 的指针 , 通过这个指针 , 我们可以访问 HGE Core Functions 层的函数 . #include <hge.h> HGE *pHge = 0; 使用完 HGE 指针之后 , 需要释放这个指针 , pHGE->Release(); 2. 帧函数 ( Frame Function ) 是一个用户定义的函数 , 每一帧时间 , 它会被 HG E Engine 调用一次 , 函数返回 true , 则调用停止 : bool FrameFunc()
对于所有硬件设备特性的直接支持 : 锚点 ( anchor ) 支持 , 伸展 . 缩放 . 旋 转的支持 , 不同的回放模式的支持 <2> 字体 读取和渲染 ( render ) 位图字体 , 多种字体排列方式 , 旋转和缩放字体 , 字符 串宽度计算等 <3> 粒子系统 ( particle systems ) 和网格变形 ( distortion mesh ) 高效的粒子系统 , 可用于创建烟雾 . 爆炸 . 魔法效果等 , 提供粒子系统的管理 , 支持定界盒 ( bounding box ) 计算和冲突检测 ( collision detection ) <4> 资源管理 : 通过简单的函数调用 , 来创建复杂的对象 , 自动的内存管理 . 对于资源组 ( resource groups ) 采用预先缓存和特殊的清除处理 ( 这是一种通过控制 对象分配和释放来提高效率的方法 ) <UI <6> 矢量 ( Vectors ) , 对于 2D 矢量的完全支持 3 ) Authoring Tools 层 <1> 资源的打包 ( pack ) : HGE 使用 ZIP 格式的资源包 , 你可以使用任何的 打包工具 , 甚至还可以给资源包加密 <2> 纹理 ( Texture ) 工具 <3> 粒子系统编辑器 : 能够设定粒子的速度 , 方向 , 生命周期 , 轨迹 , 颜色 , 透明 等 <4> 位图字体编辑器 : 运行通过系统中已经安装的字体来创建位图字体 , 你可以 使用图形编辑器来为位图字体添加额外的效果
5. 整个完整的程序如下 : #include <hge.h> HGE* pHge = 0; bool FrameFunc(){
if (pHge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ pHge = hgeCreate(HGE_VERSION); pHge->System_SetState(HGE_FRAMEFUNC, FrameFunc); pHge->System_SetState(HGE_WINDOWED, true); pHge->System_SetState(HGE_USESOUND, false); pHge->System_SetState(HGE_TITLE, "HGE 小程序");
if (pHge->System_Initiate()) { pHge->System_Start(); } else { MessageBox(NULL, pHge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL); } pHge->System_Shutdown(); pHge->Release();
return 0; } 注意 , 程序运行之后 , 一直调用函数 FrameFunc 直到用户按下 ESC , 那么跳到 pHge->System_Shutdown() 处执行 .
4.HGE Core Function
HGE Core Functions 层中的函数需要通过 HGE 指针来访问 , 就如 << HGE 系列 教材 ( 3 ) --- 初试 HGE >> 所谈到的一样 , 通过调用 hgeCreate 函数来初始化 HG E 指针 , HGE Core Functions 层中的函数 , 大致分层一下几类 :
2. 体系结构 : HGE 有 3 个抽象层 ( layers of abstraction ) : 1 ) 核心函数 ( Core Functions ) 处于核心的函数和例程 ( routines ) , 被整个系统所依赖 . 2 ) 辅助类 ( Helper Classes ) 游戏对象相关的类 , 架构于 HGE Core Functions 层之上 , 辅助用户进行游戏 开发 . 3 ) 创作工具 ( Authoring Tools ) 用于游戏开发的一组工具 .
{ if (hge->Input_GetKeyState(HGEK_ESCAPE)) { return true; } return false; } 3. 建立一个 WinMain 函数 , WinMain 函数是标准的 Windows 应用程序入口 , 这里 , 我们首先初始化 HGE 指针 : int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { pHge = hgeCreate(HGE_VERSION); // ... pHge->Release(); return 0; } 通过 HGE 指针 , 我们才可以访问 HGE Engine 的接口 . 调用了 hgeCreate 函数之后 , 不要忘记了使用 Release 函数释放资源 .
HGE 引擎教程
1.简介 HGE 是一个硬件加速 ( Hardware accelerated ) 的 2D 游戏引擎 ( Game Engin e ) , HGE 是一个富有特性的中间件 , 可以用于开发任何类型的 2D 游戏 . HGE 封装 性良好 , 以至于你仅仅需要关系游戏逻辑 ( Game Logic ) Windows 消息循环等 . HGE 架构在 DirectX 8.0 之上 , 能够跑在大多数的 Windows 系统上 . 1. 选用 HGE 的理由 : 1 ) 专业化 --- 专注于 2D 领域 2 ) 简单化 --- 非常容易使用 3 ) 技术优势 --- 基于 Direct3D API 有较好的性能和特性 4 ) 免费 --- 对于个人或者商业用户都免费 , 遵循 zlib/libpng license 5 ) 代码高度的一致性 --- 代码是否具有一致性 , 是衡量代码质量的标准之一 ( << Code Reading: The Open Source Perspective >> ) , 而不需要在意 DirectX ,
相关文档
最新文档