"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.
Before 2.5 I hated the UI. But after 2.5, I realized I could work so much faster once I learned the keys and layout. I have used 3ds Max for years and even knowing a lot about that software, I still find myself exporting to blender so I can do something. Usually I can do something in blender with only a couple key presses where in other software I have to click a few different buttons in various popup windows, etc.
I do think some of the UI needs to be a little more logical, but aside from that I honestly want to see their UI in more.
It is very close to vi/vim's philosophy - different modes for different task, key bindings are mnemonics, you combine basic commands to more complex tasks.
Even window manipulation is the same with the hierarchy of content->splits as viewports->layouts.
It is harder to do work without understanding these concepts in blender because editing text is simpler, though.
Main problem is that buttons are reallly all over the place, without some logical consistency. Maybe menus or even a command line would make more sense
Yeah I remember the big switch from 2.49 to 2.5 with the UI redesign. Took some getting used to but honestly it's quite well thought out, pretty good looking, and productive. The modal aspect is a little weird especially if you're not used to vim, but it's definitely one of the better designed UIs IMO.
it's true, but when you figure it out, you wouldn't have it any other way. I remember how much I hated the UI, but like with any tool the more you use the better you get at it.
For example, I find the left/right mouse buttons completely natural now.
Totally agree. I use 3ds Max a lot for work and I have modified as much as possible in those settings to work like blender. It baffles everyone else I work with.
Exactly, it's like most of my programmer co-workers getting baffled when they see somebody using a keyboard/command-line-oriented linux setup instead of a mouse-oriented mac.
How does one define deeply strange? It's right to say it's not what we're used to. But I think if there was some fundamental wrongness with it, I'd have problems switching between Blender and other software with similar uses. e.g. I often use Blender and Unity in tandem and I don't find myself trying to use each the wrong way when I switch between.
OTOH, I disable the left-click to set the cursor because I find it distracting and very rarely want it - only when I want an arbitrary pivot for transforms, or to align vertices from different meshes. It irritates me deeply that there's no way to hide the cursor without also hiding e.g. the selection outline and the grid.
The only problem I really have switching between Unity and Blender is using the viewport controls in Unity. It makes me use the mouse! Blender's keyboard focus is a curse to newbies but a blessing once you get used to it.
So true, I once had to use a specialist 3d package (Daz Studio) for a project and was overjoyed when I discovered that I could tweak its basic navigation controls so that they are exactly like Blender's.
Honestly I haven't seen a 3d tool like that.
Perhaps it's just the nature of the beast and I should be glad that in Blender at least the complicated workflows are smooth once you get past the "bootcamp" stage.
It's been a while, but the trueSpace UI (the "classic" version that went back to Caligari on the Amiga) would be a pretty good match for that. It got a bit hairy with deformations (which is why a different UI mode was added to later editions), but basic geometry, extrusions, lathing, booleans and bones were a breeze either numerically or by click-and-drag. Simple things really were simple.
Modo gets pretty close at times! Dealing with materials and lighting is super smooth -- probably the easiest of the 3D packages to jump in on (which probably explains its popularity in the architecture community).
Slightly unrelated, but for all its pros I had to abandon Modo because it was too unstable - it would crash on me every hour or so. Blender, on the other hand, has been rock solid in my experience.
Right -- you won't find a 'brick wall button' in the default Blender, because that isn't a simple idea, and there's variations of brick walls one could make. You can probably accomplish a brick wall by stretching out a cube, putting an array modifier on it with some kind of offset (maybe duplicate it and then offset that). There's probably some Python-Addons that will do this too.
But honestly, if you're looking for software that ship with presets, get something like Bryce3d.
At least the Python API is deeply strange. Stuff is undocumented to out here, uses different units for input from the UI even though function name is the same, and API actions in a script depend on mouse focus...
He followed up with a actual UX designer, who pretty much told him that his proposal was the wrong way to think about it (objectively, not subjectively). He admitted that his proposal at the blender conference was more of a discussion about the way of the future -- https://www.youtube.com/watch?v=6aIA2LaB2Iw
After that, he stopped pushing so hard on the UI/UX problems of blender. I believe he is still part of the UI committee, but isnt pushing it as hard in his podcasts as he realises he doesn't have the answers.
So, people just told him he was wrong? End of story.
When someone throws out their ideas, people get to shoot them down then the status quo continues. I listened to all his podcasts. It was meant to be a conversation.
I haven't used blender in years, so don't know about recent UI. But I totally loved the interface of the first opened version. It seemed optimized for power users, not casual users. So, steep learning curve but very rewarding/powerful if you invested time to learn it. Reminds me of vim.
This is fantastic news! I use mostly blender for 3d printing, but I expect the 3d scene to get quite frantic when mixed reality will be around. Really hope we may get an opensource alternative to Unity3d (even if Unity is great by itself, but you know, competition never hurt users).
The open source alternative to Unity is UnrealEngine4. Epic's licensing is royalty based, if you make more than a certain amount per quarter. Unreal has both a mature AAA-grade toolkit, and a convenient graphical language for quickly prototyping before optimizing into the C++.
UnrealEngine4 isn't open source. Just because the source is available doesn't make something open source. The source code to Windows 2000 is available but it's definitely not open source.
The agreed definition is "Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose."[1]
There is a modern trend to redefine it as "something for which I can freely get the source code" but that ignores the original ideals of collaboration and cooperation.
Yes. We are reviving the BGE. But we need the collaboration from the community (make games so the engine doesn't die). Currently it suffers from abandon syndrome, where every user abandon it to use other engines.
If you want to ask questions (in real time), just join #upbgecoders on IRC (freenode).
We will answer all the questions :)
One thing I'd love to see is better distributed network rendering. Right now it's neither easy nor intuitive to set up, and last time I tried it (a year or so ago) I couldn't get distributed still rendering to work...
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.