Skip to main content

Posts

Game Prototyping in Blender

Too often developers prototype games using tools like, 3dsMax and Unity Engine. So many times I have watched developers waste over a hundred thousand dollars on a shamefully boring prototype with no future. If you are prototyping games in Unity with C# and PlayMaker, you are a complete fool The ultimate tool for game development is Blender, and this is not well understood by game developers. The confusion partly stems from the BGE (blender game engine) and it being featured as a solution for game-dev. The BGE is not a solution for anything, its just a distraction that needs to be removed from Blender. The videos above do not use BGE, instead they run in the regular Blender view, with the game play logic abstracted away from Blender's internals.
Recent posts

GTK3

Above Unblender running on Fedora and Gnome desktop. This is just a prototype of GTK3 integration and requires Xorg (Xembed is broken on Wayland), next step is to remove Ghost and the Xembed hack, which will allow this to run on all platforms. In this example GTK is used to add buttons to the window header and options to the main application menu, normally this is just wasted space in Blender because Ghosts lack of support for these native APIs. github commit

Metadata

Blender supports meta-data per-object using Custom Properties , these allow the user to attach any number of key/value pairs to an object. The problem with Custom Props is they only allow for values of numbers or strings, and not pointers to other objects. It becomes very hard to use Custom Props to define all the interconnections and relationships between objects you may need when exporting to an external game engine. Without pointers, your stuck with naming conventions. Unblender solves part of this problem by making standard common abstractions like: on-spawn-script, on-update-script, on-near-script, and on-collision-script. These are all language neutral and optional, its up to you to define how your engine importer parses each script. An integrated text editor, and library linking, are two key features of Blender that come in handy with these abstractions. Blender's integrated editor allows you to write code inside of Blender, so you are not dependent on external

Abstract Interconnections

Metadata and game logic abstraction are two major things that hinder game development. Often artist and coders have to keep in sync using naming conventions, which break easily. Tools like Maya and 3DSMAX are extensible, but they are bloated, and pipelines built on top of them end up being bloated as well. Blender can be fully recompiled from source in less than five minutes, its code base is tiny, efficient, and easy to modify. With Blender you are not limited to plugins, you can easily fork Blender, and fully define how your pipeline is going to flow from begining to end. Unblender allows for greater abstraction by changing the core data types in Blender, so that any object type can reference any other object by reference. This is done with real pointers, and not naming conventions. You are free to interconnect data in any abstract way, and not have to worry about losing those links when you rename an object. In this example the material type has been modified to allow

Unblender

Unblender is the hard fork of Blender that removes the old BGE and replaces it with a generic pipeline for exporting logic and data to external game engines like Unreal Engine. We are working now to rewrite the core of Blender from C, into modern C++14, allowing you to quickly create your custom game pipeline. Above shows the modified Blender text editor that can store object and material references per-line of code. This will allow you to abstract away the object names in the 3D scene, from variables names in your game logic. https://github.com/hartsantler/unblender/commit/9c95ef78f37ed9f9255955e6f42b8f9606c202f5