HGE游戏引擎是一个基于directX的游戏引擎,它的渲染及逻辑是基于帧回调的框架模式,其提供一些基本的图像操作和输入控制功能。

项目如图:

fontconv测试代码(参数二:文件路径):

int main(int argc, char* argv[])
{HANDLE             hSearch;WIN32_FIND_DATA     SearchData;int                  nfiles=0;bool              done=false;char                *buf, filename[256];filelist            *newFile, *nextFile;printf("\nHGE Font 1.XX -> 1.6 converter\nCopyright (C) 2003-2006, Relish Games\n\n");if(argc!=2){printf("Usage: FONTCONV.EXE <wildcard>\n\n");printf("All files found by the specified wildcard will\n");printf("be automatically converted to newer format. Bitmap files\n");printf("should be available along with font description files.\n\n");return 0;}else{hSearch=FindFirstFile(argv[1], &SearchData);nextFile=0;for(;;){if(hSearch==INVALID_HANDLE_VALUE || done){FindClose(hSearch);break;}if(!(SearchData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){strcpy(filename, argv[1]);buf=strrchr(filename, '\\');if(!buf) buf=filename; else buf++;strcpy(buf,SearchData.cFileName);newFile=new filelist;strcpy(newFile->filename,filename);newFile->next=0;if(nextFile) nextFile->next=newFile;else files=newFile;nextFile=newFile;}done=!FindNextFile(hSearch, &SearchData);}hge=hgeCreate(HGE_VERSION);hge->System_SetState(HGE_USESOUND, false);hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 640);hge->System_SetState(HGE_SCREENHEIGHT, 480);if(!hge->System_Initiate()){hge->Release();printf("\nCan't initiate HGE.\n\n",nfiles);return 0;}newFile=files;while(newFile){if(convert(newFile->filename)) nfiles++;nextFile=newFile->next;delete newFile;newFile=nextFile;}hge->System_Shutdown();hge->Release();printf("\n%d file(s) successfully converted.\n\n",nfiles);return 0;}
}

效果如图:

fonted测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);hge->System_SetState(HGE_INIFILE, "fonted.ini");hge->System_SetState(HGE_LOGFILE, "fonted.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Bitmap Font Builder");hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);hge->System_SetState(HGE_USESOUND, false);if(hge->Ini_GetInt("HGE", "FullScreen",0))   hge->System_SetState(HGE_WINDOWED, false);else hge->System_SetState(HGE_WINDOWED, true);if(hge->System_Initiate()){InitEditor();hge->System_Start();DoneEditor();}else MessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_TASKMODAL);hge->System_Shutdown();hge->Release();return 0;
}

效果如图:

hge 和hgehelp是引擎动态库!~

particleed测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);hge->System_SetState(HGE_INIFILE, "particleed.ini");hge->System_SetState(HGE_LOGFILE, "particleed.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Particle Systems Editor");hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);hge->System_SetState(HGE_USESOUND, false);if(hge->Ini_GetInt("HGE", "FullScreen",0))   hge->System_SetState(HGE_WINDOWED, false);else hge->System_SetState(HGE_WINDOWED, true);if(hge->System_Initiate()){InitEditor();hge->System_Start();DoneEditor();}else MessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);hge->System_Shutdown();hge->Release();return 0;
}

效果如图:

pngopt测试代码:

int main(int argc, char* argv[])
{HANDLE             hSearch;WIN32_FIND_DATA     SearchData;int                  nfiles=0;bool              done=false;char                *buf, filename[256];filelist            *newFile, *nextFile;printf("\nPNG Optimizer v0.2\nCopyright (C) 2003-2008, Relish Games\n\n");if(argc!=2){printf("Usage: PNGOPT.EXE <wildcard>\n\n");printf("The image data of all files found by the specified wildcard\n");printf("will be expanded beneath the alpha channel boundary.\n");printf("So images will render without artifacts when scaled, stretched,\n");printf("rotated or rendered into not integer coordinates.\n\n");return 0;}else{hSearch=FindFirstFile(argv[1], &SearchData);nextFile=0;for(;;){if(hSearch==INVALID_HANDLE_VALUE || done){FindClose(hSearch);break;}if(!(SearchData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){strcpy(filename, argv[1]);buf=strrchr(filename, '\\');if(!buf) buf=filename; else buf++;strcpy(buf,SearchData.cFileName);newFile=new filelist;strcpy(newFile->filename,filename);newFile->next=0;if(nextFile) nextFile->next=newFile;else files=newFile;nextFile=newFile;}done=!FindNextFile(hSearch, &SearchData);}hge=hgeCreate(HGE_VERSION);hge->System_SetState(HGE_USESOUND, false);hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 320);hge->System_SetState(HGE_SCREENHEIGHT, 200);hge->System_SetState(HGE_SHOWSPLASH, false);if(!hge->System_Initiate()){hge->Release();printf("\nCan't initiate HGE.\n\n",nfiles);return 0;}newFile=files;while(newFile){if(convert(newFile->filename)) nfiles++;nextFile=newFile->next;delete newFile;newFile=nextFile;}hge->System_Shutdown();hge->Release();printf("\n%d image(s) successfully optimized.\n\n",nfiles);return 0;}
}

效果如图(没有参数):

hge_tut01测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{// Here we use global pointer to HGE interface.// Instead you may use hgeCreate() every// time you need access to HGE. Just be sure to// have a corresponding hge->Release()// for each call to hgeCreate()hge = hgeCreate(HGE_VERSION);// Set our frame functionhge->System_SetState(HGE_FRAMEFUNC, FrameFunc);// Set the window titlehge->System_SetState(HGE_TITLE, "HGE Tutorial 01 - Minimal HGE application");// Run in windowed mode// Default window size is 800x600hge->System_SetState(HGE_WINDOWED, true);// Don't use BASS for soundhge->System_SetState(HGE_USESOUND, false);// Tries to initiate HGE with the states set.// If something goes wrong, "false" is returned// and more specific description of what have// happened can be read with System_GetErrorMessage().if(hge->System_Initiate()){// Starts running FrameFunc().// Note that the execution "stops" here// until "true" is returned from FrameFunc().hge->System_Start();}else{    // If HGE initialization failed show error messageMessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);}// Now ESC has been pressed or the user// has closed the window by other means.// Restore video mode and free// all allocated resourceshge->System_Shutdown();// Release the HGE interface.// If there are no more references,// the HGE object will be deleted.hge->Release();return 0;
}

效果:

hge_tut02测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{// Get HGE interfacehge = hgeCreate(HGE_VERSION);// Set up log file, frame function, render function and window titlehge->System_SetState(HGE_LOGFILE, "hge_tut02.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 02 - Using input, sound and rendering");// Set up video modehge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);if(hge->System_Initiate()){// Load sound and texturesnd=hge->Effect_Load("menu.wav");quad.tex=hge->Texture_Load("particles.png");if(!snd || !quad.tex){// If one of the data files is not found, display// an error message and shutdown.MessageBox(NULL, "Can't load MENU.WAV or PARTICLES.PNG", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}// Set up quad which we will use for rendering spritequad.blend=BLEND_ALPHAADD | BLEND_COLORMUL | BLEND_ZWRITE;for(int i=0;i<4;i++){// Set up z-coordinate of verticesquad.v[i].z=0.5f;// Set up color. The format of DWORD col is 0xAARRGGBBquad.v[i].col=0xFFFFA000;}// Set up quad's texture coordinates.// 0,0 means top left corner and 1,1 -// bottom right corner of the texture.quad.v[0].tx=96.0/128.0; quad.v[0].ty=64.0/128.0; quad.v[1].tx=128.0/128.0; quad.v[1].ty=64.0/128.0; quad.v[2].tx=128.0/128.0; quad.v[2].ty=96.0/128.0; quad.v[3].tx=96.0/128.0; quad.v[3].ty=96.0/128.0; // Let's rock now!hge->System_Start();// Free loaded texture and soundhge->Texture_Free(quad.tex);hge->Effect_Free(snd);}else MessageBox(NULL, hge->System_GetErrorMessage(), "Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL);// Clean up and shutdownhge->System_Shutdown();hge->Release();return 0;
}

效果如图(鼠标可以操作中间的圈圈):

hge_tut03测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);hge->System_SetState(HGE_LOGFILE, "hge_tut03.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 03 - Using helper classes");hge->System_SetState(HGE_FPS, 100);hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);if(hge->System_Initiate()) {// Load sound and texturesnd=hge->Effect_Load("menu.wav");tex=hge->Texture_Load("particles.png");if(!snd || !tex){// If one of the data files is not found, display// an error message and shutdown.MessageBox(NULL, "Can't load one of the following files:\nMENU.WAV, PARTICLES.PNG, FONT1.FNT, FONT1.PNG, TRAIL.PSI", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}// Create and set up a spritespr=new hgeSprite(tex, 96, 64, 32, 32);spr->SetColor(0xFFFFA000);spr->SetHotSpot(16,16);// Load a fontfnt=new hgeFont("font1.fnt");// Create and set up a particle systemspt=new hgeSprite(tex, 32, 32, 32, 32);spt->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE);spt->SetHotSpot(16,16);par=new hgeParticleSystem("trail.psi",spt);par->Fire();// Let's rock now!hge->System_Start();// Delete created objects and free loaded resourcesdelete par;delete fnt;delete spt;delete spr;hge->Texture_Free(tex);hge->Effect_Free(snd);}// Clean up and shutdownhge->System_Shutdown();hge->Release();return 0;
}

效果如图(影艳):

hge_tut04测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);hge->System_SetState(HGE_LOGFILE, "hge_tut04.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_GFXRESTOREFUNC, GfxRestoreFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 04 - Using render targets");hge->System_SetState(HGE_FPS, 100);hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);tar=0;target=0;if(hge->System_Initiate()) {snd=hge->Effect_Load("menu.wav");tex=hge->Texture_Load("particles.png");if(!snd || !tex){// If one of the data files is not found, display// an error message and shutdown.MessageBox(NULL, "Can't load one of the following files:\nMENU.WAV, PARTICLES.PNG, FONT1.FNT, FONT1.PNG, TRAIL.PSI", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}spr=new hgeSprite(tex, 96, 64, 32, 32);spr->SetColor(0xFFFFA000);spr->SetHotSpot(16,16);fnt=new hgeFont("font1.fnt");spt=new hgeSprite(tex, 32, 32, 32, 32);spt->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE);spt->SetHotSpot(16,16);par=new hgeParticleSystem("trail.psi",spt);par->Fire();// Create a render target and a sprite for ittarget=hge->Target_Create(512,512,false);tar=new hgeSprite(hge->Target_GetTexture(target),0,0,512,512);tar->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE);// Let's rock now!hge->System_Start();// Delete created objects and free loaded resourcesdelete par;delete fnt;delete spt;delete spr;delete tar;hge->Target_Free(target);hge->Texture_Free(tex);hge->Effect_Free(snd);}// Clean up and shutdownhge->System_Shutdown();hge->Release();return 0;
}

效果如图:

hge_tut05测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);hge->System_SetState(HGE_LOGFILE, "hge_tut05.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 05 - Using distortion mesh");hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);hge->System_SetState(HGE_USESOUND, false);if(hge->System_Initiate()) {// Load sound and texturetex=hge->Texture_Load("texture.jpg");if(!tex){// If one of the data files is not found, display// an error message and shutdown.MessageBox(NULL, "Can't load TEXTURE.JPG", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}// Create a distortion meshdis=new hgeDistortionMesh(nCols, nRows);dis->SetTexture(tex);dis->SetTextureRect(0,0,512,512);dis->SetBlendMode(BLEND_COLORADD | BLEND_ALPHABLEND | BLEND_ZWRITE);dis->Clear(0xFF000000);// Load a fontfnt=new hgeFont("font1.fnt");// Let's rock now!hge->System_Start();// Delete created objects and free loaded resourcesdelete fnt;delete dis;hge->Texture_Free(tex);}// Clean up and shutdownhge->System_Shutdown();hge->Release();return 0;
}

效果如图(图片有波动):

hge_tut06测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);hge->System_SetState(HGE_LOGFILE, "hge_tut06.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 06 - Creating menus");hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, 800);hge->System_SetState(HGE_SCREENHEIGHT, 600);hge->System_SetState(HGE_SCREENBPP, 32);if(hge->System_Initiate()){// Load sound and texturesquad.tex=hge->Texture_Load("bg.png");tex=hge->Texture_Load("cursor.png");snd=hge->Effect_Load("menu.wav");if(!quad.tex || !tex || !snd){// If one of the data files is not found, display// an error message and shutdown.MessageBox(NULL, "Can't load BG.PNG, CURSOR.PNG or MENU.WAV", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}// Set up the quad we will use for background animationquad.blend=BLEND_ALPHABLEND | BLEND_COLORMUL | BLEND_NOZWRITE;for(int i=0;i<4;i++){// Set up z-coordinate of verticesquad.v[i].z=0.5f;// Set up color. The format of DWORD col is 0xAARRGGBBquad.v[i].col=0xFFFFFFFF;}quad.v[0].x=0; quad.v[0].y=0; quad.v[1].x=800; quad.v[1].y=0; quad.v[2].x=800; quad.v[2].y=600; quad.v[3].x=0; quad.v[3].y=600; // Load the font, create the cursor spritefnt=new hgeFont("font1.fnt");spr=new hgeSprite(tex,0,0,32,32);// Create and initialize the GUIgui=new hgeGUI();gui->AddCtrl(new hgeGUIMenuItem(1,fnt,snd,400,200,0.0f,"Play"));gui->AddCtrl(new hgeGUIMenuItem(2,fnt,snd,400,240,0.1f,"Options"));gui->AddCtrl(new hgeGUIMenuItem(3,fnt,snd,400,280,0.2f,"Instructions"));gui->AddCtrl(new hgeGUIMenuItem(4,fnt,snd,400,320,0.3f,"Credits"));gui->AddCtrl(new hgeGUIMenuItem(5,fnt,snd,400,360,0.4f,"Exit"));gui->SetNavMode(HGEGUI_UPDOWN | HGEGUI_CYCLED);gui->SetCursor(spr);gui->SetFocus(1);gui->Enter();// Let's rock now!hge->System_Start();// Delete created objects and free loaded resourcesdelete gui;delete fnt;delete spr;hge->Effect_Free(snd);hge->Texture_Free(tex);hge->Texture_Free(quad.tex);}// Clean up and shutdownhge->System_Shutdown();hge->Release();return 0;
}

效果如图:

hge_tut07测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{int i;hge = hgeCreate(HGE_VERSION);// Set desired system states and initialize HGEhge->System_SetState(HGE_LOGFILE, "hge_tut07.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 07 - Thousand of Hares");hge->System_SetState(HGE_USESOUND, false);hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, SCREEN_WIDTH);hge->System_SetState(HGE_SCREENHEIGHT, SCREEN_HEIGHT);hge->System_SetState(HGE_SCREENBPP, 32);if(hge->System_Initiate()){// Load texturesbgtex=hge->Texture_Load("bg2.png");tex=hge->Texture_Load("zazaka.png");if(!bgtex || !tex){// If one of the data files is not found,// display an error message and shutdownMessageBox(NULL, "Can't load BG2.PNG or ZAZAKA.PNG", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}// Load font, create spritesfnt=new hgeFont("font2.fnt");spr=new hgeSprite(tex,0,0,64,64);spr->SetHotSpot(32,32);bgspr=new hgeSprite(bgtex,0,0,800,600);bgspr->SetBlendMode(BLEND_COLORADD | BLEND_ALPHABLEND | BLEND_NOZWRITE);bgspr->SetColor(0xFF000000,0);bgspr->SetColor(0xFF000000,1);bgspr->SetColor(0xFF000040,2);bgspr->SetColor(0xFF000040,3);// Initialize objects listpObjects=new sprObject[MAX_OBJECTS];nObjects=1000;for(i=0;i<MAX_OBJECTS;i++){pObjects[i].x=hge->Random_Float(0,SCREEN_WIDTH);pObjects[i].y=hge->Random_Float(0,SCREEN_HEIGHT);pObjects[i].dx=hge->Random_Float(-200,200);pObjects[i].dy=hge->Random_Float(-200,200);pObjects[i].scale=hge->Random_Float(0.5f,2.0f);pObjects[i].dscale=hge->Random_Float(-1.0f,1.0f);pObjects[i].rot=hge->Random_Float(0,M_PI*2);pObjects[i].drot=hge->Random_Float(-1.0f,1.0f);}SetBlend(0);// Let's rock now!hge->System_Start();// Delete created objects and free loaded resourcesdelete[] pObjects;delete fnt;delete spr;delete bgspr;hge->Texture_Free(tex);hge->Texture_Free(bgtex);}// Clean up and shutdownhge->System_Shutdown();hge->Release();return 0;
}

效果如图:

hge_tut08测试代码:

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{hge = hgeCreate(HGE_VERSION);// Set desired system states and initialize HGEhge->System_SetState(HGE_LOGFILE, "hge_tut08.log");hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);hge->System_SetState(HGE_RENDERFUNC, RenderFunc);hge->System_SetState(HGE_TITLE, "HGE Tutorial 08 - The Big Calm");hge->System_SetState(HGE_USESOUND, false);hge->System_SetState(HGE_WINDOWED, true);hge->System_SetState(HGE_SCREENWIDTH, SCREEN_WIDTH);hge->System_SetState(HGE_SCREENHEIGHT, SCREEN_HEIGHT);hge->System_SetState(HGE_SCREENBPP, 32);if(hge->System_Initiate()){fnt=new hgeFont("font2.fnt");if(!InitSimulation()){// If one of the data files is not found, display an error message and shutdownMessageBox(NULL, "Can't load resources. See log for details.", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);hge->System_Shutdown();hge->Release();return 0;}hge->System_Start();DoneSimulation();delete fnt;}hge->System_Shutdown();hge->Release();return 0;
}

效果如图:

学习的目标是成熟!~~~~

开源项目之开源的2D游戏引擎 HGE相关推荐

  1. 2d开源游戏引擎linux,Corona实验室开源Corona,免费和跨平台2D游戏引擎

    Corona实验室昨天宣布,它正在制作免费和跨平台的2D游戏引擎Corona,根据GPLv3许可证和商业许可证作为开源提供.构建和发布的许可证保持不变,并且更改仅适用于引擎的源代码. Corona是一 ...

  2. 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程

    认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多 ...

  3. Android 2D游戏引擎AndEngine快速入门教程

    Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...

  4. 2d游戏引擎_8年,从2D到3D,我的学习之路

    Mickey 写了一篇 <一个本科毕业生创业两年的感悟>,从他的视角,总结了我们合作的两年经历. 我也来写一篇,介绍我的学习之路,希望对大家有所帮助,谢谢大家- 我的学习方法 1.直接从0 ...

  5. 开发2d游戏要用什么引擎_下一个游戏要使用什么2D游戏引擎

    开发2d游戏要用什么引擎 A few weeks ago, I posted about my experience attempting to make a prototype in a bunch ...

  6. sdl 游戏引擎c语言,kys-cpp: 《金庸群侠传》C++复刻版,这是一个以SDL2为基础实现的2D游戏引擎。同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。...

    kys-cpp 这是一个以SDL2为基础实现的2D游戏引擎. 基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度. 同时相当于提供了一个使用该引擎制作DOS游戏<金 ...

  7. 2D 游戏引擎 全纪录

    -------------------- Allegro.cc - Main http://www.allegro.cc/ 老牌子了,和SDL同时是很经典两个EG开发组件,最近貌似在和PY进行联合? ...

  8. Java 2D 游戏引擎开发(一)

    以前就想用java做桌面端游戏,基于awt和swing,这样可以在轻易的跨平台运行,同时还比Python,Javascript之类的高效.不过很可惜,一直没有找到一个合适的java写的2d游戏引擎.前 ...

  9. 配置JDKAndroid 2D游戏引擎AndEngine

    配置JDKAndroid 2D游戏引擎AndEngine JDK全称为Java Development Kit(也即Java开发包),是用于支持Java 编程的基础.无论是什么编程,只要用到了Java ...

最新文章

  1. 不允许对系统目录进行即席更新_还不懂Docker?一个故事安排的明明白白!
  2. Linux 磁盘管理命令
  3. AliCloudDenoise 语音增强算法:助力实时会议系统进入超清音质时代
  4. FC冒险岛java版_冒险岛单机版
  5. js反混淆还原工具_SATURN反混淆框架
  6. Hadoop ecosystem
  7. pageContext对象、JSP标签
  8. python-jenkins 操作
  9. Android Screen Orientation
  10. 文件上传后input怎么回显_tftp上传文件报错,tftp上传文件报错怎么办
  11. 夜间灯光数据dn值_一种基于遥感夜间灯光数据和能源消耗统计数据的城市能耗量空间化方法与流程...
  12. 2021暑假Leetcode刷题——Two Pointers(1)
  13. DOOM3源码分析相关文章集合
  14. 修复计算机win10,快速修复Win10系统故障的两大通用方法
  15. dcn网络与公网_ip 中的,内网,外网,公网,dcn网络,分别是什么意思?
  16. mysql中,涉及到金钱的数据类型一般是什么?
  17. Soundex UVA - 10260(soundex编码)(水)(略坑)
  18. 球差透射电镜测试样品的优势有哪些?
  19. 优化 window 命令行使用体验
  20. 从三大行业看大数据应用的三重境界:数据、分析、成果

热门文章

  1. 一个博士在华为的22年!
  2. 设置MAC地址和动态IP
  3. 【2022国赛模拟】摆(bigben)——行列式、杜教筛
  4. c和cpp实现CPU核上绑定固定线程
  5. php账单明细功能怎么实现,php 处理微信账单
  6. FFmpeg流拼接滤镜concat原理与使用注意事项
  7. Android实现网络图片app
  8. Win11退Win10/重装Win10教程
  9. k8s(18)之污点与容忍
  10. 广告投放的相关名词CPM/CPT/CPC/CPD/CPI/CPS