JGE++

JGE++(Jas Game Engine++)是一套有硬體加速的PSP的2D遊戲引擎,支持WINDOWS下的跨平台開發。包括完整的遊戲製作步驟:編碼、DEBUG和測試,都可以在 WINDOWS下進行。開發者也可以開發WINDOWS遊戲,不過主要平台還是PSP。JGE++ 就是一個利用GU庫寫成的2D遊戲引擎,GU庫的原本用途是用作編寫3D遊戲,我們把它套用在2D遊戲上,就可以享用硬體加速所帶來的種種好處,例如運行速度的提升,著色/半透明色效果,圖像放大縮小和旋轉等。

基本介紹

  • 中文名:JGE++
  • 含義:有硬體加速的PSP的2D遊戲引擎
  • 特點:支持WINDOWS下的跨平台開發
  • 功能:縮放、滾轉、色彩混合
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++ 有點初步了解了,一起用它來寫遊戲吧!

熱門詞條

聯絡我們