王朝百科
分享
 
 
 

JGE++

王朝百科·作者佚名  2010-04-11  
宽屏版  字体: |||超大  

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++ 有点初步了解了,一起用它来写游戏吧!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有