请输入您要查询的百科知识:

 

词条 JGE++
释义

JGE++(Jas Game Engine++)是一套有硬件加速的PSP的2D游戏引擎,支持WINDOWS下的跨平台开发。包括完整的游戏制作步骤:编码、DEBUG和测试,都可以在 WINDOWS下进行。开发者也可以开发WINDOWS游戏,不过主要平台还是PSP。JGE++ 就是一个利用GU库写成的2D游戏引擎,GU库的原本用途是用作编写3D游戏,我们把它应用在2D游戏上,就可以享用硬件加速所带来的种种好处,例如运行速度的提升,着色/半透明色效果,图像放大缩小和旋转等。JGE++ 基本上可以说是一个跨平台游戏引擎,写好的游戏,可分别编译成WINDOWS版和PSP版。JGE++ 在WINDOWS上是用了一个叫HGE的游戏引擎(需要DIRECTX8.0以上)作为根基。而PSP版则依然要安装了PSPSDK才可以编译。

硬件加速功能包括:

缩放、滚转、色彩混合。

动画精灵。

几何体渲染,包括三角形、 圆形、矩形和粗线。

读取PNG.JPEG和GIF图片

位图字体

中文GBK字体

True Type 字体

立体声WAV回放

硬件MP3解码

资源管理器

ZIP格式资源支持

使用XML脚本进行渲染

基本的3D函数,包括渲染带贴图的三角形,QUAKE2(MD2)模型和OBJ模型

让我们先看一下 JGE++ 和 JGE++ 应用程序的目录结构:

Code:

______JGE

|___Demo

|___bin

|___Debug

|___JGEFramework

|___Release

|___src

|___GameApp.cpp

|___GameApp.h

其中 GameApp.cpp 和 GameApp.h 就是所有 JGE++ 应用程序的主要部份.

因为暂时还没有VC6.0 建立 JGE++程序的向导,当大家想写自己的游戏时,最方便的办法,就是拿Demo的 GameApp.cpp 和 GameApp.h 来作更改.

看一下GameApp.h 就知道JGE++程序的结构很简单:

Code:

GameApp(JGE *engine);

virtual ~GameApp();

virtual void Create(); // 设定变数/载入图,音乐等

virtual void Destroy(); // 释放有关物件等

virtual void Update(); // 更新有关变数/用户操控

virtual void Render(); // 显示更新

参考GameApp.cpp,我们就更可以进一步了解实际的情况:

Code:

void GameApp::Create()

{

// 载入贴图

mTexture = mEngine->LoadTexture("Res/mario.png", true);

// 设定卡通角色的贴图范围

mMario = new JQuad(mTexture, 0.0f, 0.0f, 62.0f, 72.0f);

// 设定贴图范围的中心点

mMario->SetHotSpot(31.0f, 36.0f);

// 设定"Hello World!"的贴图范围

mHello = new JQuad(mTexture, 0.0f, 100.0f, 128.0f, 28.0f);

// 设定贴图范围的中心点

mHello->SetHotSpot(64.0f, 14.0f);

// 载入音乐和播放

mMusic = mEngine->LoadMusic("Res/smarioa.mod");

mEngine->PlayMusic(mMusic);

// 载入点阵字体

mFont = new JLBFont("Res/f3", 16, true);

// 设定有关变数

mScale = 1.0f;

mAngle = 0.0f;

mDelta = 0.001f;

}

void GameApp::Destroy()

{

// 释放有关物件

if (mTexture)

mEngine->FreeTexture(mTexture);

if (mMario)

delete mMario;

if (mHello)

delete mHello;

if (mMusic)

mEngine->FreeMusic(mMusic);

if (mFont)

delete mFont;

}

void GameApp::Update()

{

// 按"△"截图

if (mEngine->GetButtonClick(PSP_CTRL_TRIANGLE))

{

char s[80];

sprintf(s, "ms0:/screenshot.png");

mEngine->ScreenShot(s);

}

// 按"X"退出

if (mEngine->GetButtonClick(PSP_CTRL_CROSS))

{

mEngine->End();

return;

}

// 拿出由上一次更新到现在相隔的时间

float dt = mEngine->GetDelta();

// 更新有关变数

mAngle += 0.001f*dt;

if (mAngle > M_PI*2.0f)

mAngle = 0.0f;

mScale += mDelta*dt;

if (mScale > 2.0f || mScale < 0.5f)

{

mDelta *= -1;

mScale += mDelta*dt;

}

// 下面只是调试用,可以不用理会

mEngine->printf("FPS:%6.2f", mEngine->GetFPS());

}

void GameApp::Render()

{

// 设定四个点的颜色

PIXEL_TYPE colors[] =

{

ARGB(255,0,0,255),

ARGB(255,62,114,189),

ARGB(255,255,255,255),

ARGB(255,255,255,255)

};

// 以渲染方式清除背景

mEngine->FillRect(0.0f, 0.0f, SCREEN_WIDTH_F, SCREEN_HEIGHT_F, colors);

// 贴上卡通角色

mEngine->RenderQuad(mMario, 80.0f, 80.0f);

// 贴上卡通角色同时改变它的角度和大小

mEngine->RenderQuad(mMario, 400.0f, 80.0f, 1.0f, 1.2f, 1.2f);

// 贴上卡通角色同时旋转角度

mEngine->RenderQuad(mMario, 80.0f, 200.0f, mAngle, 1.0f, 1.0f);

// 设定渲染颜色再贴图

mMario->SetColor(ARGB(128,255,255,0));

mEngine->RenderQuad(mMario, 380.0f, 150.0f, 0.0f, mScale, mScale);

// 重设默认颜色

mMario->SetColor(ARGB(255,255,255,255));

// Hello world!

mEngine->RenderQuad(mHello, SCREEN_WIDTH_F/2.0f, SCREEN_HEIGHT_F/2.0f, 0.0f, mScale, mScale);

// 显示字串

mFont->SetColor(ARGB(255,255,255,0));

mFont->DrawString("JGE++ Demo", 240.0f, 20.0f, JGETEXT_CENTER);

}

利用JGE++写游戏的最大好处是我们可以利用VC6.0,在WINDOWS上测试和调试,不用每个小更改,都要弄上去PSP去试,更不用担心把PSP锁死而要拆电池了!至于用VC6.0 Debugger来调试的好处,在下更是不用多说了!

相信大家现在都对JGE++ 有点初步了解了,一起用它来写游戏吧!

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/12 7:54:28