Jump to content
  • Advertisement
Sign in to follow this  
wildhalcyon

Recommended 3D Library?

This topic is 4724 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Im working on a 3D RPG with blocky landscape graphics, roughly isometric, and fairly simple character graphics - maybe even 2D sprites. This would sort of be like Final Fantasy Tactics, but I prefer to relate it to the Simcity 3000 building editor, which had blocky shapes also, since most people think that I am designing a tactics-type game when, in fact, its more in the vein of the classic Final Fantasy rpgs from the SNES. Therefore, the doesn't really need to be too complex. I am more concerned with ease-of-use, and maybe support. The game will most likely start off as a windows game, but possibly a linux version might be warranted if it becomes popular enough. As for my experience, this isn't my first program - I have a BS in CSE.

Share this post


Link to post
Share on other sites
Advertisement
Realistically, a 3D library should be backed by a hardware driver. Nowadays that limits your choice to either DirectX or OpenGL. Since you mention doing a possible Linux version, it is OpenGL you want. If you abstain from using platform-specific functions, or take care to isolate them so that they can easily be replaced (i.e. you write wrappers), then having your code run on multiple platforms is possible. But that's not really something that can be tacked on as an afterthought. Libraries like SDL can help you achieve that, taking care of windowing, sound, input ... without you needing to directly use platform-specific functions.

Share this post


Link to post
Share on other sites
Quote:
Original post by wildhalcyon
Therefore, the doesn't really need to be too complex. I am more concerned with ease-of-use, and maybe support. The game will most likely start off as a windows game, but possibly a linux version might be warranted if it becomes popular enough. As for my experience, this isn't my first program - I have a BS in CSE.


Ogre3D. I don't have any links handy, but I do have numerous posts around this forum on why Ogre3D is so great [wink]. In short though, best community and support, rapidly progressing technology, and it's pretty easy to use. Not to mention it's cross platform and is independent of any graphics APIs - it uses OpenGL, D3D7, or D3D9 though the render plugins. Note that it is one HUGE library though. Good luck!

Share this post


Link to post
Share on other sites
After looking at Ogre3D.. if you feel it's too much, there's also Irrlicht (http://irrlicht.sourceforge.net). I prefer that over Ogre.. it's easier for me to use.

Share this post


Link to post
Share on other sites
Ogre looked great and it seems to be able to do more than Irrlicht but I also chose Irrlicht because of ease of use.

Just to give you an idea of the simplicity of it I removed the comments from the first example and here it is. It loads and loops an animation of an MD2 model.

#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#pragma comment(lib, "Irrlicht.lib")

int main()
{
IrrlichtDevice *device = createDevice(EDT_SOFTWARE, dimension2d<s32>(640, 480), 16,false, false, false, 0);

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

IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();

guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",rect<int>(10,10,200,22), true);

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

if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
node->setFrameLoop(0, 310);
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(0,200,200,200));

smgr->drawAll();
guienv->drawAll();

driver->endScene();
}

device->drop();

return 0;
}


Share this post


Link to post
Share on other sites
For an isometric tactics game, I don't really see the need for a 3d engine. Just use SDL, drop the 3d stuff and stick to sprites and iso tiles, and life will be that much easier.

Share this post


Link to post
Share on other sites
Quote:
Original post by coldacid
For an isometric tactics game, I don't really see the need for a 3d engine. Just use SDL, drop the 3d stuff and stick to sprites and iso tiles, and life will be that much easier.


Good point. Wildhalcyon, take a look at Kyra.

Share this post


Link to post
Share on other sites
Quote:
Original post by coldacid
For an isometric tactics game, I don't really see the need for a 3d engine. Just use SDL, drop the 3d stuff and stick to sprites and iso tiles, and life will be that much easier.


Now days I tend not to agree with such statements. A while ago, I certainly thought that is true, but now, it is getting to the stage where it is easier doing 3D. The libraries for 3D games are much more advanced and feature rich and robust, with much better communities and support. As strange as it may seem, for a typical indy/hobby programmer, it is easier to make and animate a model than a sprite (I have made several decent models, and animated them fairly realistically with the use of free animation tools and modellers). Try making a sprite of a humanoid and animating that frame by frame. Unless you create a 3D model and render it from each angle (but then why not just use 3D) it is very difficult to do unless your a great artist.

With the right tools and tutorials, you can make basic 3D geometries for your game in no time, with some basic textures and animations. Then when you get around to it later, you can improve the models and textures and animations. This doesnt work with 2D, once you draw an image that is it, if you want to improve it, you have to a draw a brand new one pretty much. This iterative design works well, and prevents your work pipeline to be slowed down at certain phases.

Engines like Irrlicht are so incredibly simple to use and feature packed (GUI, file packing etc), I could not find a similar free 2D engine (Clanlib is good, but there is still so much missing from it to make an iso engine, HGE is not free). Plus you get things built-in like level loading and saving, mouse picking etc. Not to mention the number of great and easy to use level editors for making your levels.

Also by doing 3D, you are making your project more future proof, incase you want to enhance it graphically, add shaders etc. Having that extra dimension lets you enhance the gameplay in many ways too later on. If you want to move into professional game development, then certainly having 3D creations under your belt will be worth more.

I can go on and on, but as you can see, my point is that you might as well use 3D, unless your project specifically requires it to be 2D. I believe your life will be simpler, and you will have a better product at the end. Even if your game is 2D in nature, 3D will make it look better, and give you nice features like rotating view etc built in. If you want a strict isometric game, just use ortographic projection with 3D, but generally a perspective view will be fine.

Share this post


Link to post
Share on other sites
Irrlicht all the way, definatly, without a doubt. Although I have had people comment on its core (apparently its messed up) but i havent had any problems.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!