2009-9-11 0:15:25 阅读297 评论0 112009/09 Sept11
简介
一个基于DX9和FMOD,采用COM组件方式架构的2D游戏引擎。整个RUGE引擎由六个COM组件(程序框架、渲染系统、音频系统、输入系统、随机数发生器、计时器)和一个渲染辅助类库(CAnimation、CColor、CDistortionMesh、CParticleSystem、CRect、CSprite、CVector)组成。由于这些组件及类库对大量繁杂底层操作的封装,使得2D游戏的开发变得相当的容易。
下载
当前版本
v2.0.2.1:ftp://ufownl.gicp.net/RUGE/v2.0.2.1/RangerUFO's%20Game%20Engine.rar
2008-7-19 1:27:57 阅读2498 评论4 192008/07 July19
非MFC程序可以用以下方法检测内存泄露:
1.程序开始包含如下定义:
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_CLIENTBLOCK
#endif // _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#define new DEBUG_CLIENTBLOCK
#endif // _DEBUG
2011-8-9 19:27:34 阅读88 评论0 92011/08 Aug9
这是一个关于Unity内部脚本如何工作的简单概览。
Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成。在脚本对象内部不同的函数被特定的事件调用。最常用的列在下面:
Update:这个函数在渲染一帧之前被调用。这里是大部分游戏行为代码被执行的地方,除了物理代码。
FixedUpdate
这个函数在每个物理时间同步被调用一次。这是处理基于物理游戏行为的地方。
在任何函数之外的代码:
在任何函数之外的代码在物体被加载的时候运行。这个可以用来初始化脚本状态。
2009-9-11 21:51:11 阅读135 评论1 112009/09 Sept11
在这个例子中,我们需要一个QUAD结构体来渲染图形。Quad是RUGE渲染图形的基本图元之一,它包含四个顶点,按顺时针方向编号为0~3。为了播放音效,我们还需要一个Audio句柄。因为要以文本形式显示FPS数据,我们还需要一个字体句柄。
HFONTX g_hFont;
HAUDIO g_hAudio;
QUAD g_Quad;
下面是一些游戏程序运行所需要的一些变量。
float g_fx=100.0f, g_fy=100.0f, g_fdx, g_fdy;
const float g_cfAcceleration=90.0f, g_cfFriction=0.98f;
这里,我们创建一个函数,以精灵对象的位置和速度为参数来播放碰撞的声音。
void Boom()
{
2009-9-11 10:32:54 阅读95 评论0 112009/09 Sept11
首先,我们包含头文件“RUGE.h”、引用静态库“RUGE.lib”并定义一个变量来保存“RUGE Application”接口指针。
#include <RUGE.h>
#pragma comment(lib, "RUGE.lib")
PAPPLICATION g_pApp; // 定义RUGE Application接口指针
int main(int argc, char *argv[])
{
HRESULT hr=0; // 程序返回值
因为RUGE是采用COM组件架构的游戏引擎,所以在程序开始前需要调用CoInitialize函数初始化COM库,而程序结束时亦需调用CoUninitialize函数释放COM库。
2009-9-10 17:37:21 阅读218 评论3 102009/09 Sept10
2009-8-13 10:00:45 阅读191 评论0 132009/08 Aug13
描述 Description
若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。
规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。
输入格式 Input Format
第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。
以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。
接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。
输出格式
2009-8-12 20:22:02 阅读576 评论0 122009/08 Aug12
#include <iostream>
#imp
using namespace std;
void Exit()
{
CoUninitialize();
}
void Travel(MSXML2::IXMLDOMNodePtr pDOMNode)
{
if (pDOMNode->GetnodeTypeString()==(_bstr_t)"element") // 获取节点类型
{
2009-8-12 18:44:29 阅读659 评论0 122009/08 Aug12
#imp
void Exit()
{
CoUninitialize();
}
int main(int argc, char *argv[])
{
CoInitialize(NULL); // 初始化COM环境
atexit(Exit);
MSXML2::IXMLDOMDocumentPtr pDOMDoc;
pDOMDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); // 创建XMLDOMDocument对象
MSXML2::IXMLDOMProcessingInstructionPtr pDOMPI=pDOMDoc->createProcessingInstruction("xml",
2009-7-30 22:51:50 阅读115 评论0 302009/07 July30
; 名称: divdw
; 功能: 不会产生溢出的除法运算, 被除数为dword, 除数为word, 结果为dword
; 参数:
; (ax)=被除数(X)低16位(L)
; (dx)=被除数(X)高16位(H)
; (cx)=除数(N)
; 返回:
; (ax)=结果低16位
; (dx)=结果高16位
; (cx)=余数
; 公式:
; X/N=int(H/N)*65536+int([rem(H/N)*65536+L]/N)
; int() 取商
; rem() 取余数
divdw: push bx