game engine class / extension /wrapper

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
Post Reply
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

game engine class / extension /wrapper

Post by ulao »

Hey all, Please note I have search and search before posting this as I know how irritating it can be to see post after post of the same stuff. I have not seen this question before, but lots of talk about it.

In the simplest form I'm looking for something like NGE:

http://nusoftwarege.sourceforge.net/phpBB2/index.php

However each one I come across has sorta vanish or stopped work. This is understandable for the most part as this is an all open source project thus eliminating the need for dedication ( no greed, only self motivation / gratification).

I also know to each programmer their own. Everyone likes to do this there own way and respectfully so...I saw a few group projects like irrext, and the NGE and the "Component-based Entities" example but seems there are all abandon.

So I guess I have two questions.

1) Is there a project like I mentioned above that many people tend to use, or at least active.

2) More specific to my immediate needs. Are there any classes examples of a way to parse irr files and crate pointers to the found entities. I'm well aware of the irrloader example but I'm looking for a complete effort preferable in the way of a class.

I'm new to Irrlicht and started to write a loader class and found that many people have done this already. It just seems rather silly for so many people to invent a wheel. I know why a person "would" want to, but others like my self could benefit from a such a thing.

Oh I should also mention I have 1.5, in some cases that matters ;)

thx..
Last edited by ulao on Mon Feb 09, 2009 10:07 pm, edited 1 time in total.
rogerborg
Admin
Posts: 3590
Joined: Mon Oct 09, 2006 9:36 am
Location: Scotland - gonnae no slag aff mah Engleesh
Contact:

Post by rogerborg »

I'm not aware of anything under active development.

In this specific case, I'm really not sure what other functionality you want. Example 15 shows how to load an .irr file. The scene nodes are created for you. That's a "complete" loader right there.

The issue is getting pointers to the nodes. The scene manager can get you pointers by name or by type, or (as shown) can get you an array of every scene node. I'm not sure what higher level abstraction you want. Perhaps if you expressed what you want as requirements, or a user story, we could provide an example or even (gasp) extend the API.
Please upload candidate patches to the tracker.
Need help now? IRC to #irrlicht on irc.freenode.net
How To Ask Questions The Smart Way
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

In this specific case, I'm really not sure what other functionality you want. Example 15 shows how to load an .irr file. The scene nodes are created for you. That's a "complete" loader right there.
No your right its a good example but looking at this.

http://irrlicht.sourceforge.net/phpBB2/ ... 81d8aff815

Just shows me the example is not complete. And I'm sure there is even more to it that could be done.

For me, I would do this.. ( I'm no expert )

content = myGame->loadIRRFile( filename );
player = content->findEntity( blahh );
player->doSomthing;


That is all I would ever want to see in a main file, the rest in a class. And that is what I'm aiming for and confident I'll program wy way to it...but if its been done, time and time again.... .. I was just wondering if some one had a few classes for various Irrlicht functions. And I know the argument here is " well thats what programing is". Yeah well "collaboration" makes life easier. I'm a put heads together type of person, rather then a know it all ( not aimed at rogerborg).
rogerborg
Admin
Posts: 3590
Joined: Mon Oct 09, 2006 9:36 am
Location: Scotland - gonnae no slag aff mah Engleesh
Contact:

Post by rogerborg »

ulao wrote: content = myGame->loadIRRFile( filename );
player = content->findEntity( blahh );
player->doSomthing;

Code: Select all

	smgr->loadScene( "../../media/example.irr");
	scene::ISceneNode * player = smgr->getSceneNodeFromName("player");
	player->setPosition(core::vector3df(0, 0, 0));

Please remember that Irrlicht is not a game engine. If you have particular requirements about "content", "player", "entity" and "Somthing" (sic), then those are issues for the application, not for Irrlicht.

Even if NGE or a similar engine was active, I'd imagine that the chances of it providing all the functionality that you need are minimal. The very best professional engines still need to be customised to provide appropriate data representations for individual applications. There's no automagical way for an engine to know, for example, what sort of collision geometry you want enabled in your scene, or what extra data comprises a "player" entity. At some point, you just have to tell it.
Please upload candidate patches to the tracker.
Need help now? IRC to #irrlicht on irc.freenode.net
How To Ask Questions The Smart Way
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

Ok rogerborg, Please remember that I'm not complaining. The goal was not to find a cleaver way to do something in three lines of code LOL. Rather to show the skeleton that I'm after. I know Irrlicht out of the box is not a full game engine, but in its defense it is about the best your going to find in the open source word as far as completion goes and still allowing some control ( unlike neoAxis) .

I'm also not looking for a 100% solution here. but you cant tell me that many people around here dont have similar code. If that was the case then projects like irrExt and NGE would not have been.

As far as the topic goes, I guess you answered it, "no".
sudi
Posts: 1686
Joined: Fri Aug 26, 2005 8:38 pm

Post by sudi »

ulao wrote:content = myGame->loadIRRFile( filename );
player = content->findEntity( blahh );
player->doSomthing;
well that piece of pseudo code looks very specific.
I could provide u with a entity layer if u want but that layer is empty. no functionality. Bc most of the time u need totaly different stuff. so a "player" in game a might be a comander controling an army and in game b a sword swinging warrior. so the stuff u r looking for is not here and will not be. except u take a game from someone else and mod it. but thats a different story.
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

I could provide u with a entity layer if u want but that layer is empty.
-Could be interesting to see it.

most of the time u need totaly different stuff. so a "player" in game a might be a comander controling an army and in game b a sword swinging warrior. so the stuff u r looking for is not here and will not be.
- Yeah this is not what I'm after ( to specific ). I'm looking more so for basic classes that anyone would use when programming in irrlicht. It would be rather hard for me to example since I have not use irrlicht much yet.

but I'll try.

lets say there is a sdl implementation for irrlicht.. I really dont know, as I have not look yet. So joyInput being the pointer:

joyInput -> isDown()
joyInput -> isUp()
joyInput -> wasPressed()

and so on. Real basic game like classes.

At this point I feel I must re state my objective or someone reading this will jump all over me. I'm not looking for code creation here, one way or another I plan to get there. I'm only, and humbly asking if it exists. I'm also not looking for anything in specific rather just "asking" if there are any shared reusable classes that people have.

I think rogerborg, has answered the main questions though. And that's is that there is nothing active like this any longer. And fair enough, don't hate a person for asking.
FuzzYspo0N
Posts: 914
Joined: Fri Aug 03, 2007 12:43 pm
Location: South Africa
Contact:

Post by FuzzYspo0N »

im developing a framework/game wrapper. It sounds a little like what you are refering to but im finding it hard to follow just exactly what you want. Like irrWizard is a good starting point for a framework i think, i havent actually looked at it.

What im making : a layer to make making a game easier. For example, i have a data system.i have a level system.spawns,cameras,any entity really..they are all part of the data system.a data object is a transparent layer between 3d app,2d app,menu designer, stuff like that. The framework has pieces that understand those entities...like my main menu, it goes from editor - transparent data layer - elements.sprites,images,layers, etc.

Its hard to explain from my cellphone but im kinda still not sure what you mean. There are these things around. like sudi is working on a cool engine as well.
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

im developing a framework/game wrapper. It sounds a little like what you are refering to but im finding it hard to follow just exactly what you want. Like irrWizard is a good starting point for a framework i think, i havent actually looked at it.
Hmm, I though irrWizard was a solution creator, LOL. I'll have to check that out.
UPDATE: Ok I never would have though about that approach. This is not exactly what I was asking for but it sure is interesting. I see there is a teaser about irrEdit on the wiki, but its blank. Thx for bring that to my attention.

Code: Select all

What im making : a layer to make making a game easier. For example, i have a data system.i have a level system.spawns,cameras,any entity really..they are all part of the data system.a data object is a transparent layer between 3d app,2d app,menu designer, stuff like that. The framework has pieces that understand those entities...like my main menu, it goes from editor - transparent data layer - elements.sprites,images,layers, etc.
Ah, ok I bit more then I was asking for . I would be delighted to beta it with you. I think this may be the closes to what I'm after. If this is modular in the scene that I could include a class, for example your "data system" and then create a pointer to it and use it, then its what I was hoping to find.
Its hard to explain from my cellphone but im kinda still not sure what you mean. There are these things around. like sudi is working on a cool engine as well.
I'm not opposed to trying an engine out but like sudi said it would be hard to appease every type of game.

i have a level system.spawns,cameras,any entity really
Something in cooperation with irrEdit?
FuzzYspo0N
Posts: 914
Joined: Fri Aug 03, 2007 12:43 pm
Location: South Africa
Contact:

Post by FuzzYspo0N »

no the level editing is done in 3dsmax or blender, i have written tools for both and plan to add more later on.

Image

The values in that dataobject can be whatever i want, and code side its as easy as using it as so :

Code: Select all

bool CGameCameraEntity::fromGameObject(core::stringc &name,CGameEngine* engine)
{
		CDataObject tocreate = engine->sgeData()->getObjectByName(core::stringc(name));
		if(tocreate.paramExists(core::stringc("position")))
			mPosition = tocreate.getParameterAsVector3df(core::stringc("position"));		
		if(tocreate.paramExists(core::stringc("rotation")))
			mRotation = tocreate.getParameterAsVector3df(core::stringc("rotation"));		
		if(tocreate.paramExists(core::stringc("target")))
			mTarget = tocreate.getParameterAsVector3df(core::stringc("target"));		
		if(tocreate.paramExists(core::stringc("fov")))
			mFov = tocreate.getParameterAsFloat(core::stringc("fov"));
		if(tocreate.paramExists(core::stringc("near")))
			mNear = tocreate.getParameterAsFloat(core::stringc("near"));
		if(tocreate.paramExists(core::stringc("far")))
			mFar = tocreate.getParameterAsFloat(core::stringc("far"));

		return true; //todo::checking
}

Something in the dataObjects from a level might include :

Code: Select all

ShadowObject(gameMesh://levelprop_arch1) {
	position = x[234.34] y[21.0] z[100.0];
	scale = x[1] y[1] z[1];
	texture0 = textures/levelprop_arch1_diffuse.jpg;
	texture1 = textures/levelprop_arch1_normals.jpg;
	texture2 = textures/levelprop_arch1_glowmap.jpg;
};

Code: Select all

ShadowObject(config://mainMenu) {

	background = ./data/menu/background.jpg;
	windows = CDOHudWindow://profileWindow;
	items = CDOSprite://menuNewGame,CDOSprite://menuProfiles,CDOSprite://menuOptions,CDOSprite://menuQuit,CDOSprite://menuSelector;

};
See, so each data object gets stored by type and by name...
sgeData()->getObjectByName, getObjectsByType (gets a list of those types)

So, in general the data system makes the engine super easy to modify (as you can clearly see).
The other aspect of the engine is simple object registration... Such as the menu... a menu needs a few functions such as :

init()
render()
shutdown()
run()

This is part of the core of the engine, and the menu class inherits a list of these it can or doesnt have to use, and each one can be registered with the core, based on a priority. Such as the data system is priority 1, where the simple things can be priority 4 or 5...

Code: Select all

gEngine->sgeProcess()->registerOnInit(this,CGameWork::GAMEWORK_PRIORITY_2);
gEngine->sgeProcess()->registerOnRun(this,CGameWork::GAMEWORK_PRIORITY_2);
gEngine->sgeProcess()->registerOnRender(this,CGameWork::GAMEWORK_PRIORITY_4);
gEngine->sgeProcess()->registerOnShutdown(this,CGameWork::GAMEWORK_PRIORITY_2);
This kinda shows a tiny bit, dont wanna post too much cos its still coming along and might change quite a bit... But you can atleast see what im aiming for. Also, there is a version coming soon for free, to the community. Which has the basic functionality to "plug" a game into the engine, with an already minimal state system etc so that if i wanted to prototype something it would take a handful of code, in seperate pieces (for updating the framework thingy), plugging into the engine.

Hope this makes sense, is that what you are referring to?
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

Again more then I was looking for but surly would be interested. I'm gathering from the "free, to the community" that the intent is sale? Cant doc you there, have to make a living..

Any plans on using maya?
FuzzYspo0N
Posts: 914
Joined: Fri Aug 03, 2007 12:43 pm
Location: South Africa
Contact:

Post by FuzzYspo0N »

free, to the community
i dont know how that could be construed to mean my intent is sales, but the tools will be for sale at low low cost. THE FRAMEWORK will be free. you could always make your own custom tools (as most games have custom data) but the tools that are specific for this framework make making a game really simple. And i could make a pro version of the engine if i wanted, but i feel ill have progressed past this by then, and the framework will be different but better.

Thats all i meant. The framework basis (like,as a framework) will be free. that means any integration of say physics, networking, is things i will do because i need it in my game, and those pieces (when complete, if ever) i guess i could sell but my intention is to make making games easier for the users of irrlicht.

And the tools for maya : sure, i can get into it later on when im done with the engine. but being a max user by default, and moving over to blender thanks to licencing on max and stuff, there are those two only for now. And, they are specific to my game with the felxibilty to be expanded of course.

Either way, i noticed you were looking for a "full fledged" game engine right? Put simply, Sudi has the closest to that that i know of, and mine will head in that direction later on (it already has bullet, including softbodys, shaders, etc thanks to blindsides efforts on it as well) but as with any smart engine starting out, its written for this specific game that we working on, and there are things missing that we wont need that you might, and you can add at your own leisure when its out.

it will be flexbile for that, but "Real basic game like classes."

is exactly what it is, levels, entitys, events, etc so if you have some time to wait on it it will be out soon enough. If you are interested enough to question more feel free to PM or email me or something. i wont be posting more details on it here cos it could change a lot soon to be better. who knows ;P
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

Good to here it FuzzYspo0N, I'll keep you in mind.

Code: Select all

Either way, i noticed you were looking for a "full fledged" game engine right? 
LOL no, not at all. But simple game extensions, yes. but the definition of a "game engine" does get a bit stretched. "full fledged" to me would mean more like gameMaker or something that is all in one package. I would rather just have a pool of includes to make code time quicker. If 10 men invent the wheel, someone is bound to do it right, why not store that knowledge away.. I'm just looking for a few wheels to use, that is all. I think your frame work is just that.
FuzzYspo0N
Posts: 914
Joined: Fri Aug 03, 2007 12:43 pm
Location: South Africa
Contact:

Post by FuzzYspo0N »

I think i see what you mean more now, so giving a list of possible engines , or wheels might help? Like for physics, there is physX, newton, bullet. For sound there is openAL,irrKlang,cAudio. For networking there is enet,irrNetlite,raknet.

If you are looking for a simple already put together engine ask about sudis engine it incorporates some of these wheels into one, with a data layer. There are a few of there around,even higher level wrapper like irrai,irrphysx,some wrapper for nearly any of the pieces required, im sure. If those are what you looking for i can point you to them and list the rest when im not posting from my cellphone again lol.

Hope this helps
ulao
Posts: 274
Joined: Fri Mar 28, 2008 2:13 am

Post by ulao »

Yes that sounds like a match. Any arrows would be appreciated.
Post Reply