This, this is just heartbreaking for the Blender Game Engine.

What I think BGE can improve on: mostly management/flow.

  • Logic brick is really hard to look at and not as beautiful/meaningful zoomable as NODES. So… me start coding…
  • Using codes/internal text editor is not friendly - cut, paste. indentation and spaces. Me… go back to logic brick…
  • Huge ‘published’ executable - This is bad because everything will be dumped in. BGE should be able to trim down published size by choosing what library to use (eg:libgdx). This also will assist on tracing what causing the bugs (eg: sound, graphics, image libraries, controls, etc).
  • How nice if screen management/flow are also in NODES.
  • NODES will assist beautiful/pleasing/easy to understand documentation - for further troubleshooting, bugs removal, optimization & enhancement.

I am using small i3 laptop with no GFX. Slow/limited bandwidth/connection internet line… BGE is perfect for me - making some demos/presentations/prototypes (with some crashes of course).

I am saying the same all the time. Nodes are awesome thing. I love material nodes as example. However, they’re not easy to implement in Blender. BGE logic nodes would require totally new script and weeks of work for such a small team…

Well…then why not started with something small by actually creating small prototypes or templates for different types of games as stated before.
As a bge community instead of staying here talking about the issue the best approach to solve an issue is by actually experimenting and finding ways to fix the problem.
Fixing and improving bge is not impossible but a small dev team cant fully work on it and they need support from the community.
You like bge but there is not a feature which you want in it ?,then I guess its time to add it !

Adreas is a good example of this concept

It would be a great idea if the bge community would start a team project where they work together to add more features nd optimizations to the bge

The game itself wasn’t bad

I’m assuming that something happened during the compiling of the game so…

Yeah

again, no offense to the developer

Result got cast to signed short.

It is physically impossible for me to resist answering these sorts of questions.

Platform specific, but typically involves a mutex-protected doubly-linked free list above contiguous chunks allocated by the OS, subject to fragmentation over time that can prevent the OS reclaiming unused memory. As allocators go it’s simple and gets the job done with the assistance of its charming counterpart free(), without attracting the infinite fountain of controversy that is a garbage collector of any kind. (It merely attracts a massive but theoretically bounded amount of controversy.)

…listen, uh, I can sort of see where this is going. You should probably stop asking things.

Well, it would push to a concurrent task queue, then the consumer thread would load and interpret the resources, adding them to synchronised lists, and signal success.

Oh. I… I’m sorry. I drifted off for a second into a lovely daydream. Forgot where I was. What was your question again?
reads

for the love of all that is good and beautiful in this world what have you done

Okay. I’m going to understand this. All of it. Just remember, you asked me to do this. In case I die of malnutrition, it’s been an honour to develop games with you. All of you. Here we go!

LibLoad starts off with a typical python wrapper resembling tubifex roadkill, encapsulating a C function gLibLoad from KX_PythonInit.cpp. We call one of two C++ methods depending on whether it’s loading from memory or from file: LinkBlendFileMemory from KX_BlenderSceneConverter.cpp, which calls C function BLO_blendhandle_from_memory from readblenentry.c, which calls blo_openblendermemory from readfile.c, or LinkBlendFilePath, which calls BLO_blendhandle_from_file (‘path’ went on sick leave), which calls blo_openblenderfile. The only slightly marred naming symmetry of these invocation chains is also seen in the implementations, since the first and second pairs of functions are 95% character-for-character identical in their implementation.

Anyway, moving on. Our LinkBlendFile variants both have handles to their respective .blend files, and conclude by calling … well, LinkBlendFile, which emphatically denies it is going to measure how long anything takes with //TIMEIT_START(bge_link_blend_file);. It goes on to say /* only scene and mesh supported right now */, which the official API documentation helpfully clarifies as actually meaning “only “Action”, “Mesh” and “Scene” are supported”. After a little book-keeping it calls load_datablocks three times so things are ‘properly loaded’ (functions are like that sometimes, you gotta keep hammering until they stick), and then it, well, uhm…

… then it closes the handle. And says /* done linking */.

So, to summarise, at this point, it has read the data from the .blend and interpreted it into real, usable Blender structures. All of that happens regardless of the promise of an asynchronous LibLoad; the file is opened and closed before LibLoad returns. Intruiging! …yes, definitely intruiging! Keeping calm and carrying on.

After the actual task of loading the library from file is accomplished, we create a KX_LibLoadStatus and start getting excited about the promise of at least doing something in another thread. What is left is to convert the Blender structures into BGE structures. There are three possible things to convert: Meshes, Actions, or Scenes. Of these, meshes and actions are converted immediately, presumably because scenes were the most requested type (fair enough). Scenes must surely link to the previous datatypes anyway, but I won’t digress. Forward unto concurrency!

We begin by pushing all scenes to a list, then create a new thread that runs async_convert. This function creates BGE scenes from that list; each time it finishes a scene, it adds an amount of progress. Thus, the usefulness of the progress percentage increases with the number of scenes you are loading, and the speed at which the real library load occurs. Therefore it is recommended you subdivide libraries into as many scenes as you can, and bundle an SSD and ramdisk software with your games.

After all the scenes are converted, we deallocate the list created in the main thread, and in turn, leave one for the main thread to deallocate. Cross-thread memory management: for fun and profit and furious tears of regret.

Back in the main thread, in KX_KetsjiEngine::NextFrame, we poll for scenes to merge because software design. According to documentation, merging scenes is estimated (or rather, forced) to account for 10% of the work actually tracked by the progress percentage, and is finished within a single frame. This means that creating a heavyweight thread, converting the scenes, and destroying the thread, must theoretically be done within 9 frames, or 0.15 seconds. That’s… that’s a really fast scene load. We couldn’t have intentionally created a concurrent loading mechanism that causes a major frame freeze regardless, right? That would make it useless for dynamic loading! a… all those thousands of lines of code… well, regardless, it’s theoretical time well spent, since it was in another thread, and multithreading is good. And loading screens can be useful and let the player know how much time is left with a progress b- … well, it can entertain them with a little spinning doodad.

We can make the loss back, though: as bad as the progress feedback is and always will be until a major rewrite, there might be Pythonic progress callbacks in future, allowing you to receive the progress metric whenever it changes, because optimising your progress bars to only update when the value changes represents a performance boost worthy of a few more dead tubifex colonies. Especially since it changes so infrequently! And we’ll get right on that, when Python’s Global Interpreter Lock stops being so global.

But of course, we should now discuss how the LibLoad functionality infects almost every other function associated with BGE data conversion with a ‘libloading’ argument to tell it what context it’s operating in, because cross-cutting concerns are a truly fantastic opportunity to weed out the people who can’t keep more than twenty files open at once what am I doing with my life.

…seriously people, I have nothing but respect for the BGE developers. They have made brilliant choices under the circumstance of building on an existing codebase, especially as earlier developers did not plan for the BGE’s current direction, much less actual existence. However, as always, the intersection of multiple brilliant development efforts operating with different goals and awareness of problems has … not panned out. And the consequences are evident. My criticism is intended to be affectionate and productive if at all possible. Also, if I got anything wrong about how libload works, I apologise immediately and profusely. I didn’t dig especially deep.

just a bit

Something for everyone to think about:

is a full-featured FPS in 96 kilobytes.
The BGE can present absolutely nothing in 107 megabytes. In case the 7 is distracting you, that’s more than a tenth of a gigabyte, for the minimum engine distributable. With 7z Ultra compression it becomes 23.8 megabytes. ‘Towering pillar’ is insufficient. Perhaps ‘hulking planetoid’?

[SUB]I AM THE ALPHA GRINCH grinds teeth at happy things[/SUB]

I’ve seen the BGE codebase too and I confirm it, it’s a mess. Every time you look at it you are tempted to go and use something else, then when you see that your graphic card and linux barely suport Unity/Unreal and the alternatives are godot (wich doesn’t use python, C++ or any respected language) or an even more outdated engine than blender, you come back. The cicle repeats.

Edit: If you ever get a good machine and accept working in windows the BGE loses any chance.

I can run The Witcher III - Wild Hunt @ Ultra settings and I’m Windows user only…and still prefer Blender over Unity(+4 years of XP)/Unreal(seen enough of it). :yes:
I’ve also seen the codebase of several AAA games…and guess what…they are total mess too, but that doesn’t stops them from being best sellers. I can’t see your point.

what if the libLoad Bugs are from double execution?

what happens if you add a object that calls libLoad and then endObject?

(just to test the theory)

what would happen if you had a bunch of double executions on LibLoad or LibFree?

would that cause havoc? (not many people know the subtle nuances of python in the bge)

You’re a wierd case of someone that has done a good game in Blender, I have not played it tought. I’m not talking about the codebase of the games, I’m talking about the codebase of the engine. If the code of an AAA game is a mess, well that’s bad, but it’s not so important becouse you won’t have to add new features to the game over the years. The next game will be better. If the game engine code is a mess it will die soon. I’ve just browsed a little over Unreal engine source code and guess what, It’s well organitzed and pure C++, not a C/C++ mix with files of thousends of lines, god objects, and a poorly distinction of what’s on the runtime player and whats on the editor.

My point is, do you want the BGE to have more developers working on it? Start cleaning then, becouse no one wants to come in.

That reminds me, where are the BGE patches that you were planning to write as part of becoming an actual BGE developer?

This was many months back and it seems by now it was just talk, if you believe that a few changes is all that is needed to make the BGE a very potent engine, then pull out your copy of the source code (which you said before you now have) and start patching.

Please don’t respond by saying you’ll do it tonight and such, I’ve heard it way too many times to take it at face value (it’s the same with your claims on the progress of Wrectified, where you’ve been making statements about almost everything being in place for more than a year now).

Man you really need to chill out. If you have such a negative view on the BGE and on anyone that wants to make it better, then you really shouldn’t be here. There are many other engines that you can use, and many other forums where you can go with your positive comments, but being negative here isn’t doing anyone (including you) any good. It seems pretty clear in your last post that the only thing you are trying to do is personally attack BPR. Don’t worry about what he said he was going to do. If he is going to do it then he will find time to do it, and if he doesn’t do it then he just doesn’t do it (not that big of a deal considering that it ISN’T HIS JOB TO DO SO). Every time somebody has a problem with their game and asks for help, BPR is usually the first person there helping them figure out their problem out of the kindness in his heart (he finds time for the needy even though he has projects of his own). So if he doesn’t have time to write the BGE patches he promised, then who cares? It is perfectly fine to have a bad opinion on the BGE, but don’t try to bring somebody down because of it. Your time would be better spent working on your own games.

They represent the two major political factions of the Blender game community. Ace Dragon holds the lead with an average of 7 posts per day, but BPR has been gaining momentum with a promotional video campaign. It’s too close for either side to drop out of the race.

Aaand the thread degrades into a cesspool of personal attacks.

Hi Pqftgs, I like developing games,

how is your day?

has anyone ran a debug build against the libLoad/libFree cycle lately?

do we know why it does not crash? I am going to need to libLoad/libFree scenes repeatedly soon.

Moguri Slayed another bug today, (Property based actions can’t be deactivated)

:smiley:

https://developer.blender.org/T45886

Like creep nose said dude, take a chill pill. I have huge respect for all blender developers, but do we really need to resort to personal attacks? This thread actually convinced me to log in to BA for the first time in weeks. I think what blender needs is better lighting and graphical effects, those seem to be the main selling points in most major game engines. As for what this thread was originally about… I Will Escape needed a bit more polish and it could have been great…just like Silicone 2 needed just a small amount of polish to be better. If games like this continue to be released, BGE will have a worse reputation that it already has.

For video campaign you don’t mean those buggy demos with a wierd walking astronaut and raycast lines all arround don’t you?

what bugs are those?

and you never use visual debuging in your pre alpha games?
That means your missing out if your trying to understand what your game is doing

replace bge.render.drawLine with #bge.render.drawLine
sure takes a long time :no:

what games have you made?

Hello there! It’s a nice day, but I’ve been locked inside and haven’t been able to shake this headache. It’ll pass soon enough.

do we know why it does not crash? I am going to need to libLoad/libFree scenes repeatedly soon.

Just gonna note the BGE has been pretty damn stable lately, it’s awesome. Actively moving projects to 2.76 with no issues. Finally able to take advantage of those multithreaded animations :]

For video campaign you don’t mean those buggy demos with a wierd walking astronaut and raycast lines all arround don’t you?

LOL! One in the same xD

Nah BPR we’re cool. I’m just poking fun, it’s the Internet after all.
That is a LOT of videos though.

EDIT: This laughter isn’t helping my headache. I’m out

Blender Open Project - as opposed to blender closed game project.

I learn, I rinse, I repeat, what I don’t do is try and sell unpolished untested
games. I am still learning (lately its Ui) (Not posting videos of that ff game am I?)

It still is maturing rapidly, I also work a little here and there on many games,
and I am still developing resources as well.

and I tried getting into editing the blender source, but I have a nagging feeling,
that the best thing I could contribute is money, from finishing a game, as It feels unfamiliar and foreign trying to edit the blender source, and no one would really sit and coach me.

where as I can do almost everything I try in python.

(I don’t really know c++ or c well at all let alone the bge source)

BPR: Using visual debugging for a promotional video. Great idea. Just fill half of the sreen with debug properties too please. Also, the camera goes behind a wall a lot of times.

I’ve just done 2 games, the first one was a race game. It was bugged, fun, but bugged. Doing it I learned 2 things. 1, blender is not great for making games and 2, I’m not a great artist. That was also the first time I touched code besides vbB, so I did not know what I was doing half of the time (like most of the BGE comunity nowadays).

I’ve realizing that the physics of BGE (and actually most game engines) cant handle tiny things moving too fast. Then I’ve decided to make a raycast based phycis library for blender. It did stop bullets for traspasing walls but it was bugged too. I discovered that blender was prety good for presentations and experiments tought. Then I did a prototype of a character for a platform game and realized how hard it is, even more with BGE than with other engines. Then I’ve tried to make a open world in BGE and failed miserably becouse BGE doesn’t support loading a terrain dinamically. Well I actually managed to use libload to load chunks of a terrain and it worked prety well but since Blender doesn’t have a terrain editor for open worlds modify each chuck was a pain in the ass. Not only that but since asyncronic libload is fake you can imagine what happened to the framerate.

Finally now I’m doing a more simple game, something that I think even the BGE can handle. It’s working pretty wall so far but I’m not going to post it in this forum. Anyway it’s something so simple that could be easily handled by any engine, with Blender tought I had to crate a Template for it wich is posted in the resources forum. I’m also the developer of the Build Game Addon, thought I don’t use it anymore, it’s not worth it having the template.

promotional? my videos are dev logs.

anyway, success and failure is trial and error

success is gaining knowledge,

faliure is ignoring it.

And I have reported many bugs, that were confirmed and destroyed, this is the best thing we as users can do.

Besides finish well made polished games.

To help
1.Donate money to a dev fund for the bge
2.Make polished games
3.Help others make polished games
4.Report bugs
5.Don’t attack each other, it makes us all look bad.