I have recently posted on a topic that is turning out to be a gaping hole in the usability of the BGE for big projects (read: Including serious commercial games). The problem is that the GE is apparently unable to draw material into a game without having everything in memory, all at once. Can you imagine having every model, texture, sound, etc. from an entire game put into your computer’s memory at once? No problem for small to medium puzzle games, or even Mario-style platform games, but bad news for anything approaching bigger modern games. Half-Life? Not likely. Fallout? No way. Any high-end 3D RTS or RPG? Forget it.
It seems the BGE cannot load a model etc. during a game. That is a very big problem when you go beyond the mentioned smaller games. My knowledge is limited (I do some OpenGL 3D programming, but that’s it), but I have been informed that every serious game creation kit (CrystalSpace and the like) CAN do this, and my OpenGL experience seems to support it. There is no logical reason it should not be possible in BGE. And it is what is needed, IMNSHO, to put the GE on the map. Without it, the BGE is doomed to stay ‘a fun experiment’. With it, it is a up-and-coming powerhouse for the 3D industry.
I have set up a Blenderstorm suggestion on this, because Blenderstorm seems to work incredibly well. If it gets voted up, I am sure it will happen. That would increase the strength of the GE many-fold. I am hoping that there are enough people who would like to see this happen and who will help me get the topic voted up.
You kind of imply that you have to pack all game files into a single .blend
I know that is not what you are talking about but scene on scene you can have models in external blends that are linked to the game.blend (See Yo!Frankie).
With the external .blend method you can update the external files separately allowing animators and programmers to tweak movement while level designers use an older version of a character in testing the levels. Then when the animators save and the programmers save the next time the game.blend is loaded the new character is there.
i think he is talking about run time, when the game is started, EVERYTHING passed trough the scene converter and its saved in ram. one efficient approach could be to save the pre-converted data in some format when you generate the .exe, and load the different blocks as they are needed. (that would use less memory and cpu than just loading and converting external blends on demand, but requires some well-thought redesign and implementation.)
If you remember Half-Life I, it loads maybe 3-4 times in a level. They separated one level in four fragments…we can do the same with four blends. And ofcourse we dont need 23440002833 models for a game…10 different types of humans and 5 types of trees and some objects and foliage…and the usage of “add/end object” on the scene is more than enought for a decent game level. I think Crysis is far far away,but 2002-2005 quality games is absolutely possible…even large ones.
PS. I don’t know if you know, but adding unlimited separated objects on the scene is not a practice in any game industry…most of the games are made with the smaller numbers of objects they can allow to use.
For example…ground,foliage,houses,crates,tables…and everything that is not moving is joined as one object. Thus the game engine will compute one very complex mesh as one object and it will increase you performance dramtically.
@haidme: I know that the game industry has a lot of methods for reducing both human and computer workload. I also know that clever work-arounds exist to allow a bit more with less memory drain on Blender GE. The problem is that things like this should not really be done through improvised patchwork fixes, it should be something that the core game engine has a way to handle. Also, the project I am involved in does not have that option at all, and other projects I have been part of have had similar problems with the GE.
Yes, you are right, but my point is that, this is a free game engine after all and the way to attract some attention for developing it further is to do good games like “yo franke!” did.
If there is enought quality games here, the developers will see a good reason to move the engine to another higher stage of development.
Great to know there is interest in the subject! However, the post on Blenderstorm only seems to have gone 1 up. Please vote for it there, because Blenderstorm really is a great instrument in influencing the development of Blender when you’re not a developer…
the fact of the matter is that whatever the engine is, you’ll find situations where a workaround is necessary. Regardless of what software you use. If you read the articles on how the latest feature CG film was made you’ll see that a decent portion of the development was put toward working around some issue or another that hadn’t been solved before to their knoweldge. They don’t say, “DAMMIT 3dsMAX doesn’t have this feature gotta wait on them to make it grrrrr!”
No, they just figure a way around the problem OR they fix get their hands a bit dirty and they fix it themselves. But outsiders don’t see that part. So they assume that only they have to workaround certain issues, but that simply isn’t true.
If you go to the Crysis forums you’ll find people complaining that explosions aren’t big enough and that maps are HUUUUUUGE enough. And they complain that Crytek needs to make them bigger, when they could simply shrink their objects thus increasing the size of the world and therefore the particles. =) This is what I call “a workaround”
But look at what nintendo and squaresoft have done with even less powerful engines. You could easily fit the entire Ocarina of Time game into a single Crysis map probably 100,000x
and Final Fantasy VII playable parts could fit in a Crysis map even more than that because a lot of the maps were just 2d backgrounds.
In reality, not many engines have a feature for streaming levels from a disk. Its quite high end and BGE isn’t high end at the moment. Also there is one more problem. The BGE loads all of its geometry media from .blend files through a painfully slow conversion process which would greatly reduce the performance of a streaming system. It is possible to implement a streaming system without optimizing this aspect of BGE but it would lose a big part of it effectiveness. Also its not that realistic to work on huge games made with BGE since there are SO much better alternatives for huge games. For exceptionally large games you need much more than just a good streaming system. You need an insane culling (maybe even general prupose culling) system integrated with a some kind of billboarding system for far away obects.
But newerthless, a streaming system would make BGE a bit more advanced again, nothing bad with that one ;).
A) No workaround can be found, by me or any of the people I have discussed this with. If one exists, I would be eternally grateful to know it!
B) “There are always problems” is no reason not to fix the problems (or whatever you want to call it. I currently consider it a lack/problem).
C) But of course, people are free to consider it unnecesary. It would be greatly appealing to some projects, but logically not all. I consider it the Ultimate Next Big Thing (UNBT for short :))
@toonist: I was informed that CrystalSpace and ‘others like it’ (not sure which those are) have this fully implemented. As mentioned, my limited experience with OpenGL shows no reason why it would be the slightest impossible. The inefficiency of using a .blend file as a source is probably true, tho. Someone suggested here or elsewhere that the game designer might be permitted to save objects as some form of game file, structured for efficient run-time loading; I like that idea, though it would take some added planning.
Also its not that realistic to work on huge games made with BGE since there are SO much better alternatives for huge games.
Yeeeaaaaahhhhh… but I like Blender Also, I tend to build projects with blenderheads, so… And there once were faaar better 3D packages than Blender, too! Being behind is no reason not to push to the front And once that cornerstone is set, all the optimizations you mention can begin!
I’d say a lot more advanced, snapping at the heals of bigger tools. But we’re on the same page