[Dev] GSoC 2012 BGE Fixup + Converter Improvements Feedback Thread

Google Summer of Code kicked off yesterday (May 21), and my project is to work on getting the BGE bug tracker back under control and working on converter improvements while I’m at it. The original proposal focused primarily on the converter, and can be found here:

Pretty much the only parts still planned to be tackled are the asynchronous loading and general converter optimizations. The rest of the focus is bug fixing. If you want to see my current (and growing) task list, look here:

The purpose of this thread is to get feedback on the project. I also wouldn’t mind requests for bugs which you’d really like to see fixed (it must be in the tracker so I can keep track of it!) or small features. To avoid scope creep (the scope is already kinda wonky as it is), I’ll be pretty picky about what I’ll add to my task list (especially new features). I’ll probably also give some priority to bugs hindering larger projects and not rare corner cases.

I’ve been assigned to the Swiss Cheese branch, although some bug fixes will probably go straight into trunk. I’ll also be posting weekly status reports to my blog here:


Wow, cool. It sounds like a really cool set of features to work on - smooth loading would really help out the BGE.

One feature that I would like to see added is the ability to directly send binary data to the logic.startGame() function, so that you can decrypt and run an encrypted blend file in one swoop, rather than having to save it back to disk and then load it.

EDIT: I think I tried the LibLoad function, but it didn’t work perfectly for one reason or another.

Also, it would be really cool if Ambient Color feature had a blend mode type for GLSL mode, so that you can make a scene globally lighter or darker without having to use another lamp (set the blend mode to Multiply, and set the color to dark gray to make shadows and dark areas lighter). Currently, Ambient Color gets added to every color, washing out the scene. Anyway, just ideas.

As for bugs, I’m not sure if command-line arguments work with Multitexture mode, for some reason.

EDIT: Another good feature would be the ability to load a portion of a datablock from the LibLoad function - that way you could just load, say, 10% of a piece of data a frame, so that the process doesn’t lock the engine. The same thing could be done for starting an external blend file, though this may not be necessary with the changes that you’re considering. Anyway, I would like to see how this shapes up!

As far as i know GPL dont allow Obfuscation or run-it-encrypted-directly as you say, but you can save it into RAM,
anyways i think we have to step-up by another features, more related to real time PERFORMANCE.

I dont want to partially encrypt blenderplayer, i think more something like Real Time L.O.D., Volumetric Light and Smoke, built-in Particle system, full Networking support for massive amount of players, some kind of built-in plain text Chat API connected to that Networking, on the fly mesh-merge, and such.

And as i posted before, try to integrate somehow (at least an exporter, but built-in can be amazing) the ioDoom3 engine, which has the same Licence as Blender, and with a lot of features already working stable and optimized.

PD: You can compress code (i.e. using semicolons, like JavaScript does, but you cant obfuscate into any way its not readable, talking about a GPL thing), anyway on RAM everything is readable, for real, i’ve read encrypted data by taking the key from RAM :slight_smile:

To my understanding, the GPL licensing only applies to resources bound in with the BlenderPlayer. For external blend files (that are already encrypted), it would be exceptionally useful to be able to load them into RAM and decrypt them without having to re-save them back to disk.

EDIT: I think that it would be best to focus on features that currently aren’t possible in the BGE. For example, mesh-merging isn’t possible with the BGE currently, so that would definitely be a good feature to add.

You already CAN do that.
With Python its posible…

The only thing that I’ve seen is just LibLoad, which does work, but doesn’t ‘wholly load the blend file’, if I recall - I guess it’s the “inability to load text datablock” bug that needs to be fixed.

What about adding a new compression format to .blend file format?, i dunno where to request this but…
actually .blend uses .GZ compression, we can add .7Z a Libre format which has 2 interesting features:

-Better compresion, so smaller .blend files.
-Encryption Built-in, you dont care anymore about the .blend, it can be encrypted itself (or not), you dont need to do anything.

EDIT: meh, im going a little OT :frowning: nice blog moguri, and i like the features, i go to read the wiki link…

Oh, a really nice feature that shouldn’t be too difficult to implement is a feature to force VSync or not. Same thing with a full-screen toggle capability (I guess both should be Python functions).

1 thing : yes!! Harmony I guess it will be mainly maintained by Kupoman since he is not into GSOC.
Good luck Moguri.

Glad that you got accepted.

What can we expect with Asynchronous loading?

Would it be much work to enable quadbuffer within the interface for stereo display?

  • Date: 2011-12-16 03:37
  • Sender: Dalai Felinto
  • So, it actually has never been possible to implement Quadbuffer via the interface.

In 2.59 we exposed all the stereo options in the UI, but the quadbuffer actually was never hooked up with the code.
Apart from the fact that it requires fullscreen, there should be no stoppers (code-wise) to have it implemented.


I really like the ActionActuator to get fixed. The Python bindings to the animation system seems to be fine. But the actuator which is the most used one is currently only usable in Play mode.

Amazing, some more great improvements and additions for the ge. I would love to see asynchronous LibLoad. Will that mean there will be no more freezing as the library is loaded? That has always bugged me a bit.

Good luck with the project, your work on the game engine is always great, so I’m sure your changes will be amazing.

Sounds great.
I hope this will allow some communication with the blender scene in realtime, with information about the progress of loading the data? ie So a loading bar can show a percentage until completion, something I havent seen done before with a BGE game.

The Game Actuator (when set to “Start Game From File”) will have an “Asynchronous” options (or some similar “user-friendly” wording) that will switch scenes after the new scene has been converted, and not block the game in the meantime.

Can you return a Loading value to bge.logic? With that we can make some good loading bars.
Great Project as always. Thanks moguri ^^

Bring back Motion Blurr…

Motion Blur is still there.
Great news, thanks Moguri.

“I really like the ActionActuator to get fixed.”
One vote for this.

Hi Moguri,

Is it possible to add to your list the following bug?:

[#30734] BGE python setdeactivationlinearthreshold and angularthreshold functions don’t work.

The patch included in the bug report fix this issue and additionally it exposes the thresholds to blender UI.


Nope, its not working, try it, you can call it, but can not stop it, i already reported a bug, and its confirmed.