"Better news: the Blender Game Engine project might be getting a revival. The UPBGE team is very motivated to keep Blender engine work, and help with aligning BGE with the goals we set for 2.8 – at least to use the new viewport and pbr shader system. A new logic system is still undefined."
Very excited about this. I deeply want to use Py with BGE, but I had been worried about learning a soon to be deprecated game framework. There have been a couple tickets open on the main blender tracker about completely deprecating BGE and it seemed like a lot of core developers were in favor of doing that so as to not divert away valuable dev time from core development.
I feel like Blender Game Engine is a massive waste of dev resources. There are much better game engines out there. I wish Blender concentrated on their core software. Full OpenCL support in Cycles would be nice.
I don't think it's an unreasonable position, and I have read similar arguments on the mailing list. I think you're correct that there are much better game engines out there. But, I like that BGE is open source, I like how well it integrates with Blender, and I like that it has Python as a first class citizen. For that reason, I don't know if it necessarily has to compete with other game engines, especially AAA ones. It could just be something which integrates well with numpy, SciPy, etc.
Ironically the license (GPL) is one of the biggest show stoppers for BGE to get taken seriously.
I feel like building the engine in to blender is not very viable because of the GPL license, but using Blender as a game editor is not a bad idea at all - so if you're going to do an OSS game engine I think the best solution would be to start with a more permissive license (eg. MIT or something like that) and not have any dependencies on blender in the actual engine, instead the blender integration code should be strictly separate, that part would be covered by GPL, but the engine core would still remain MIT as it's not derived from GPL code, so you could distribute your game without releasing the source.
I'm sorry, but this is just not true. You do not need to release your source code or assets for a commercial game.
According to the licensing page[1], you just need to distribute your executable and core .blend file separately. You would have a (GPL) small python script which loads your (commercial, closed source) blend file containing all of your artwork and Python code.
>According to the licensing page[1], you just need to distribute your executable and core .blend file separately
That's simply wrong - your scripts use GPL APIs - this means your code is derived from GPL - if you could just ship stuff that uses GPL at run-time without being affected LGPL would not exist.
And even if that's how they interpret the license this still means you can't ship smartphone apps.
Clearly you don't understand the GPL. A derivative of the APIs themselves would need to be licensed with the GPL, but calling the APIs would definitely not.
Any content you make using blender is not restricted by the GPL (or any other license). Only blender itself is.
You're saying you can dynamically link to GPL content from say a scripting language and distribute the GPL stuff separately and you would not be affected by GPL. This is not how I've seen people interpret GPL and is clearly against the spirit of the license. LGPL is meant to cover that use case explicitly.
I have been thinking perhaps BGE is better marketed toward more of scientific simulation / interactive simulation rather than games.
Python would work well for this purpose, and I have been hearing about usage of Blender in with context of biology, and also things like GIS, and disaster recovery. (I've thrown in disaster recovery as I've at least seen once on TV that it was used modeling Fukushima power plant after the earthquake/tsunami.)
It is the usual definition of open source: you can download, modify, and compile the source for the entire engine. It's not free software, which is different from being open source. A common misunderstanding does not a definition justify.
1. Free Redistribution
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
2. Source Code
The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost, preferably downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
3. Derived Works
The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
I have a very simple, possible naive use case (I'm bad at designing stuff and don't know much about that "world") that I struggled with last time I tried Unity. I imported from a variety of formats/tools...so maybe there's an easy way of doing this with Blender/Unity that I'm not aware of.
I want to create a model of some real world item (say a simple 2mx2m block for arguments sake) using the exact sizes of the object. Then I want to import it in Unity and have the size stay correct. Iirc one base unit in Unity is 1mx1m so if I make a 2mx2m block I'd like it to be imported and displayed as 2 unity units...for some reason the conversions lead to all sorts of bizzaro size adjustments. Must be a Unity thing but that was a rather frustrating experience.
I've written custom importers for Unity and it's a fairly straight forward process as long as the format you want to export to a format Unity likes from has an exporter you can call from the command line.
You just maintain some metadata on what hasn't been imported yet and use the asset import hooks to activate your conversion to a format that Unity already knows (usually FBX for 3D).
But honestly I wasn't aware that Unity doesn't already have reasonable Blender integration. I've been using Unity + Blender for years and never had too many issues.
It's been broken between Blender versions before because it does exactly what I describe (fires up instances of Blender with a python script that converts to FBX), but you can edit the script that Unity uses to convert and apply fixes which usually get shared pretty quickly.
There's also a little weirdness with the differences in coordinate space, but it just takes some mindfulness on the Blender side of things to deal with.
I don't know how much better the integration could get without going a step further and actually generating the FBX data from outside of Blender, but you can already do that with the same asset import hooks I mentioned before
Not FUD. Backup: take a look at the number of outside contributors in Unreal engine release notes for each release. Its not FOSS, but still commercial licensed visible source. People can find and fix the bugs they encounter. Then take a look at commercial middleware vendors that can integrate with Unreal on their own, without having to involve Epic. Take a look at the list of companies committing development time to Blender because the see their effort improving the ecosystem instead of just adding to Unity own IP.
Also take a look at the ancient .NET integration in Unity that has been strangled by licensing problems with Xamarin. Even though Microsoft has re-licensed .NET recently, it doesn't look like Unity will have an upgrade anytime soon. The only development environment for Unity is C#. Look at the numerous VMs and language integration in Unreal, in addition to any language that links with C++.
Answering your own questions is obnoxious. Public API documentation for software only available behind a commercial subscription is completely irrelevant when integrating with open source.
100% agree. It would be fantastic to see these developer resources put into tight third party game engine integration. Unity is not the only other engine out there, think godot or any number of HTML5 engines.
The BGE and blender's python api is kind of a mess. The list of quality games is pretty small there.
I use Jython with LibGDX and I wrote a class-loader that lets me run the code on Android too (interpreted so theoretically don't have to compile Dalvik)
I'd like to see some modular pipeline that allows for quality rendering - Ambient Occlusion / Shadow Mapping without having to learn someone else's GUI.
Godot and some other engines have potential but there just seems to be too much learning curve and lack of "commercial - like" examples / community.
It'd be nice if there could be a "Blender" for Video Games given how many people probably want one.
Very excited about this. I deeply want to use Py with BGE, but I had been worried about learning a soon to be deprecated game framework. There have been a couple tickets open on the main blender tracker about completely deprecating BGE and it seemed like a lot of core developers were in favor of doing that so as to not divert away valuable dev time from core development.