Engine für Einsteiger
-
Welche Engine z.Z. für Einsteiger?
Welche Grafikbasis: OGL oder DX?Wo gibt es die raschesten Erfolge?
-
OGL und DX sind beides keine Endschinns

-
OGL und DX sind beides keine Endschinns
Das weiß ich auch, Du Nieslöwe.
Welche Engine verwendest Du? OGRE?
-
Garkeine

Ich glaube aber dass die Basis (OGL vs. DX) egal ist. Wenn die Endschinn gut ist ist sie gut und sonst ist sie nicht gut. Der eine kommt nach Paris, der andere kommt nicht nach Paris, wie das Leben halt so is'
Mich würde auch interessieren was es im Moment für empfehlenswerte Engines für C++ gibt, welche die halbwegs modern programmiert sind, deren Implementierung man sich ansehen kann ohne dass einem gleich ganz schlecht wird, wo es entsprechende Tools dafür gibt (z.B. Plugins für Max, Maya, Softimage etc.).
-
Also für Einsteiger würde ich Irrlicht empfehlen, damit erzielt man ziemlich schnell gute Ergebnisse.
Aber ich verwende im Moment OGRE. Kommt einfach nur perfekt.
Als ich mir das das erste mal vor einigen Monaten angesehen habe, hab ich gedacht, dass man dieses komische resources.cfg Gezeugs zwingend braucht. Aber als ich das letzte mal in Doku geschaut hab, hab ich herausgefunden, dass man die ganzen Einstellungen auch per Hand vornehmen kann. Und bis jetzt hab ich noch nix an dem Teil gefunden, das mich stört/das mir fehlt. 
-
erst sollte man wissen was man machen will, und dann eine passende engine dazu auswaehlen ;).
-
Also Irrlicht und Ogre.
-
Mal 'ne Frage: Wenn man Irrlicht 1.4.1 mit MSVC++6 koppelt, kommen folgende Meldungen:
D:\IRRLICHT ENGINE\IRRLICHT-1.4.1\INCLUDE\SColor.h(301) : error C2780: 'const T &__cdecl irr::core::min_(const T &,const T &,const T &)' : Erwartet 3 Argumente - 2 unterstuetzt D:\IRRLICHT ENGINE\IRRLICHT-1.4.1\INCLUDE\irrMath.h(80) : Siehe Deklaration von 'min_'Gibt es hier ein Workaround? Die ersten Tutorials sind immerhin noch für MSVC++6.
1.4.1: Added min and max functions with 3 values: core::min_ and core::max_
Wenn man diese auskommentiert:
:\IRRLICHT ENGINE\IRRLICHT-1.4.1\INCLUDE\SColor.h(301) : error C2782: 'const T &__cdecl irr::core::min_(const T &,const T &)' : Vorlagenparameter 'T' ist mehrdeutig koennte 'unsigned int' sein oder 'unsigned __int32'
-
Ich habe das Ganze nun auf MSVC++ 2008 laufen lassen, alles bestens.
-
Welche Tools benötigt man von der Irr-Toolchain?
Wo kann man ein Beispiel für ein kleines Spiel zum Üben downloaden?
Gibt es ein Step-by-Step-Tutorial für ein Übungsspiel?
-
ich hab als einsteiger bei Blitz-Basic gute erfolge gemacht, also wirklich schon nach wenigen Wochen erste Spiele, und das komplett ohne Programmiervorkenntnisse. In C++ gibt es sowas imho nicht. Man braucht eigentlich immer mindestens gute c++ kenntnisse, um wirklich damit arbeiten zu können. Eine Grafikengine bedeutet wenn man einsteiger ist auch fast immer viel zu lernen, viel misserfolg, und viel Arbeit, bis überhaupt mal etwas klappt.
also es gibt genau zwei wege:
Du hast das Ziel wirklich viel Zeit und energie in Grafikprogrammierung zu stecken, dann solltest du mit low-level programmierung anfangen, also einfach sprites rendern, tastenabfragen realisieren etc. Gute c oder c++ kenntnisse vorausgesetzt, kannst du dann mit SDL, Allegro, oder SFML anfangen. Wobei allegro altlasten trägt.
Du möchtest mit wenig Zeit erste erfolge Segen können. Dann versuch dich an Gamemakern, denn die Geluld die nötig ist zu Programmieren wirst du sowiso nicht aufbringen können. Clickteam hat einige hilfreiche tools zu bieten, ist aber 2D. Im 3D sektor gibt es da imho nichts wirklich brauchbares.
-
Welche Tools benötigt man von der Irr-Toolchain?
Diese Frage beantwortet sich relativ rasch von selbst: Irrlicht-Engine, Irrklang, Irr-Edit.Wo kann man ein Beispiel für ein kleines Spiel zum Üben downloaden?
Ein akzeptables Spiel mit Beschreibungen und Source ist mir bisher nicht über den Weg gelaufen. Das finde ich seltsam, wenn eine Engine einsteigerfreundlich sein soll. Der Code ist nicht selbsterklärend. Könnt ihr mir hier weiter helfen?Gibt es ein Step-by-Step-Tutorial für ein Übungsspiel?
Das ist doch der beste Weg. Warum findet man diesen nicht?@Krux: ich sehe dies anders. Wenn Du bereits recht gut in C++ bist, kannst Du eine Engine bei ausreichender Doku recht effizient verwenden. Gamemaker sind zumeist in eine Richtung optimiert, so dass man Spielideen nicht frei umsetzen kann.
Die Tutorials sind viel zu langatmig. Texte müssen knapp sein gehören so nahe wie möglich zum Punkt des Geschehens. Hier mein Vorschlag für das Einstiegstutorial von Irrlicht:
/* VideoDriver, GUIEnvironment, SceneManager. */ #include <iostream> #include <irrlicht.h> #include <windows.h> using namespace irr; using namespace core; using namespace scene; using namespace video; using namespace io; using namespace gui; /* http://irrlicht.sourceforge.net/docu/namespaces.html */ /* To use Irrlicht.DLL, link Irrlicht.lib in project settings or by pragma comment */ #ifdef _IRR_WINDOWS_ #pragma comment(lib, "Irrlicht.lib") #endif int main() { IrrlichtDevice *device = createDevice( video::EDT_DIRECT3D9, // EDT_SOFTWARE, EDT_BURNINGSVIDEO, EDT_NULL, EDT_DIRECT3D8, EDT_OPENGL dimension2d<s32>(640,480), // windowSize 32, // bits per pixel when in fullscreen mode false, // fullscreen mode: true, window mode: false false, // stencilbuffer false, // vsync 0); // eventReceiver /* caption of the window, wchar strings used, not visible in fullscreen mode */ device->setWindowCaption( L"Irrlicht Engine 1.4.1 - Demo für VideoDriver, GUI-Environment, Scene-Manager" ); /* video driver, SceneManager, GUI environment */ IVideoDriver* driver = device->getVideoDriver(); ISceneManager* smgr = device->getSceneManager(); IGUIEnvironment* guienv = device->getGUIEnvironment(); /* label using the GUI environment */ guienv->addStaticText( L"This is your first tutorial. Have fun!", // text rect<s32>(10,10,100,50), // rectangle true); // 3D-border /* load and display Quake2 model "Sydney" (modelled by Brian Collins): get the Mesh from the Scene Manager and add a SceneNode to display the mesh. also possible: Maya object file (.obj), Quake3 map (.bsp), Milkshape file (.ms3d) */ IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2"); IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh ); if(node) { node->setMaterialFlag ( EMF_LIGHTING, false ); //disable lighting (no dynamic light) node->setMD2Animation ( scene::EMAT_CROUCH_WALK ); //animation frame loop: looped between the frames 0 and 310 node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") ); //texture for the mesh } /* camera at position (0, 30, -40). The camera looks from there to (0,5,0). */ smgr->addCameraSceneNode(0, vector3df(30,30,-30), vector3df(0,5,0)); /* draw: device runs in a while() loop, until window is closed (by X or Alt+F4) */ int alpha = 250; int red = 10; int green = 30; int blue = 100; driver->beginScene(true, true, SColor(alpha,red,green,blue)); while( device->run() ) { /* draw between beginScene() and endScene(). beginScene clears the screen with a color and also the depth buffer if wanted. Scene Manager and GUI Environment draw their content. endScene() puts everything on the screen. */ int alpha = 200; int red = 0; int green = 30; int blue = 200; unsigned int t = (device->getTimer())->getTime(); static short int c=0; if(t>3000) { ++c; node->setMD2Animation ( EMD2_ANIMATION_TYPE(c) ); std::cout << EMD2_ANIMATION_TYPE(c) << std::endl; (device->getTimer())->setTime(0); if (c>=20) c=0; } driver->beginScene(true, true, SColor(alpha,red,green,blue)); smgr->drawAll(); guienv->drawAll(); driver->endScene(); } /* delete the Irrlicht Device, because all objects created with 'create...' must be deleted. The object is simply deleted by calling ->drop(). See the documentation at http://irrlicht.sourceforge.net//docu/classirr_1_1IUnknown.html#a3 */ device->drop(); }Hier ist ein Link zu einem deutschsprachigen Tutorial: http://pille.iwr.uni-heidelberg.de/~gameengine1/
-
Bezüglich
(device->getTimer())->setTime(0);möchte ich noch ergänzen, dass die "Animateure" von der Zeitsteuerung abhängen. Ein Zurückstellen auf Null gibt diesen absolut den Rest. Daher sollte man für eigene Zeitsteuerungen - wenn überhaupt notwendig - eher clock() oder andere von Irrlicht unabhängige Timer verwenden.