Texte, Projekte und Fundsachen rund um Medien, Bildung und Computer
www.dirk-hoeschen.de
Kleines Breakout-Spiel mit Irrlicht 3D
Erstellt am: 19 Apr. 2007

Ich habe letztes Jahr ein Spiel im Rahmen der open Source Konferenz - Wizzard of OS 04 programmiert. Schüler sollten das Spiel selbst modifizieren, um die Vorteile offener Spieleplattformen zu verdeutlichen. Grund genug, es hier vorzustellen.


*

Irrlicht 3D ist eine open Source 3D Library in C++. Irrlicht kann sowohl Software, als auch DirectX und OpenGL rendern. Dadurch sind Spiele prinzipiell auch unter Linux und Mac OS lauffähig.

Das Spiel

* Mit ein wenig Programmierkenntnis, wird man überrascht sein, wie einfach die Entwicklung von kleinen 3D-Spielereien ist. Dabei hilft Irrlicht3D, da es sehr gut strukturiert und dokumentiert ist. Sogar ein Editor zum gestalten der 3D Szenen ist dabei.

Schon wenige Zeilen Code zaubern ein bewegtes 3D Model auf den Bildschirm.

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#endif
int main()
{
IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d(640, 480), 16, false, false, false, 0);

device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");

VideoDriver* driver = device->getVideoDriver();
SceneManager* smgr = device->getSceneManager();
GUIEnvironment* guienv = device->getGUIEnvironment();

Guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",
rect(10,10,260,22), true);

IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

if (node)
{
   node->setMaterialFlag(EMF_LIGHTING, false);
   node->setMD2Animation ( scene::EMAT_STAND );
   node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
}

smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

while(device->run())
{
   driver->beginScene(true, true, SColor(255,100,101,140));
   smgr->drawAll();
   guienv->drawAll();
   driver->endScene();
}

device->drop();
   return 0;
}

Vom Spiel selbst darf man sich natürlich nicht zuviel erwarten. Damit das Programm auch unter Linux ohne Änderungen läuft, habe ich auf andere Libraries verzichtet. Allerdings kann man eigene Level entwerfen. Eigene Klassen oder Headerdateien habe ich auch nicht benutzt, da der Code eh sehr kompakt sein sollte. Das Ganze Spiel passt auf 3 DIN A4 Seiten.

Source: main.cpp

Download

Das komplette Spiel inklusive der Source, Mediadateien und einer Win32 EXE könnt ihr hier runterladen: arkanoid.zip (2.7 MB)

Wer das Spiel verändern und selber compilieren will, der benötigt die Irrlicht Library. Das ca. 13 MB große Paket kommt mit vielen Beispielen. Über die .NET Schnittstelle lässt sich Irrlicht auch in Visual Basic oder Delphi programmieren.

*Als IDE empfehle ich Anfängern Code::Blocks. Auch Codeblocks gibt es für Linux und Windows. Die Entwicklungsumgebung ist gut auf Irrlicht abzustimmen.

Alternativ gibt es noch Ogre3D. Auch Ogre ist nur eine 3D C++ Lib, die allerdings mittlerweile zig Plugins kennt und auch für professionelle Spiele, wie Ankh eingesetzt wird.


Artikel Bookmarken bei...
Mister-Wong Webnews Yigg Alltagz Infopirat Delicious Furl Linkarena Yahoo Google

0 Kommentar(e)

Keine Kommentare bis jetzt.

Beitrag kommentieren

Ich freue mich jederzeit über Fragen, Anmerkungen und Kritik. Also gebt euch einen Ruck und kommentiert diesen Artikel.

Name
eMail optional für Antworten: wird nicht veröffentlicht!
Webseite optional
Kommentar
Kontrollcode
Spamvermeidung: bitte den Code im Bild eingeben
 

* zur Übersicht

Aktuelle Projekte

MBE Druckprofis Immoblienmakler Berlin - Hauptstadtmakler Lehranstalt für Gartenbau und Floristik Großbeeren Kunstleihhaus computer-daten-netze : feenders.de