Released BBMOD - the most powerful 3D rendering solution for GameMaker

kraifpatrik

(edited)
GameMaker Dev.
Just downloaded BBMOD GUI free from the website. Is the free version limited by the numbers of materials from the model? Imported 2 models with some materials but only one appears in the tool.
We've already discussed this on Discord but I just wanted to add the info here for others. The free version isn't limited, but it can happen that multiple materials get merged into one if they are redundant. This behavior can be disabled in BBMOD GUI by unchecking the "optimize materials" checkbox under the import settings.
 

kraifpatrik

(edited)
GameMaker Dev.
Updates
It's been quiet here for some time, but that's just because I've been working hard on the next major version of BBMOD -- v3! It's getting very close to release, so I'm writing this to let you know what's coming, and there's a lot!

Performance
  • BBMOD has made a full transfer from matrices to dual quaternions, which are faster to compute and require 2x less memory (which also means your models can have 2x more bones).
  • Interpolated animation frames are precomputed during model conversion, which means much faster animation playback! Animation sampling rate is fully configurable.
  • 3 levels of animation optimization have been added:
    • 0 - Default level. Allows for bone transform through code (inverse kinematics etc.), bone attachments and animation transitions.
    • 1 - Allows for bone attachments and animation transitions. Faster playback than level 0.
    • 2 - No bone transforms, no attachments, no transitions, but super fast animation playback.
    • You can use different levels for different assets based on their requirements (e.g. 1 for the main character, 2 for NPCs and 0 only for special characters that require IK; or use 2 for everything if your game/art style allows for it).
  • Bunch of other optimizations were made, e.g. animation playback now traverses only nodes that are bones, method render traverses only nodes that have meshes etc.
Utility
  • I've made some changes to the scripting API to make it easier to use, e.g. you can call just animationPlayer.render(materials) instead of model.render(materials, animationPlayer.get_transform()).
  • BBMOD will come with its own struct-based math library! Vec2, Vec3, Vec4, Quaternion and DualQuaternion structs included.
  • More handy classes added, like MeshBuilder or OBJImporter.
Modularity
  • BBMOD has been split into multiple folders, each adding more functionality, but only the Core folder is required to run BBMOD!
  • PBR was also moved into its own folder and it is no longer the default shader & material - you don't have to use it if you are making a game with stylized graphics.
Camera, Renderer, sorting draw calls by material, custom render pipelines
  • BBMOD takes a next step to make 3D game development in GM even easier by providing you with a new Camera and Renderer structs. Using these structs you can start making 3D games in just a few lines of code!
  • Method BBMOD_Model.render doesn't immediately submit the model anymore, instead it adds its meshes into queues (each material has its own), which are submitted later in the Renderer. This effectively implements sorting draw calls by material, which reduces texture swaps and shader uniforms changes to minimum.
  • The old immediate-mode rendering is still available through a new method BBMOD_Model.submit.
  • You can inherit from the Renderer struct and define your custom render pipeline.
docs.png
Demo project
  • There will finially be a demo project, showing off how easy it is to make 3D games with GM!
Stay tuned!
 

kraifpatrik

(edited)
GameMaker Dev.
Release of 3.0.0 is getting pretty close, I just have to do some final touches to the example project! This example shows:
  • How to use the new Camera and Renderer
  • 3D audio with the camera as the listener
  • Import of OBJ models
  • Using PBR shaders for stylized visuals - simple materials setup
  • Animated player character with bones controlled in code (arm pointing where camera is looking when aiming)
  • A lot of animated enemy characters, using the maximum animation optimization level
  • Custom animation events - play footstep sounds when foot meets the ground, pick up item, ...
  • Bone attachments - player holding a gun after picking it up from the ground
  • Dynamic batching of gun shells (render a lot of moving models in a single draw call)
  • Static batching example (render static models in a single draw call)
Pics 📸:
BBMODv3_0.jpg
BBMODv3ExampleProject.png
The assets used are by https://kenney.nl/, released under the CC0 license.
 
Last edited:

kburkhart84

Firehammer Games
Out of curiosity, are you looking at making this a more full-blown thing? I'm referring to things like a lighting/shadow system that prioritizes lights based on priority and distance, etc..., a terrain renderer(and appropriate splat shader), and other things that 3d engines typically have. Are you getting enough out of this system to make those additions worth it?
 

kraifpatrik

(edited)
GameMaker Dev.
A renderer with lights, shadows, post-processing etc. is planned for future versions. The system will be very likely developed for my own games to thoroughly test it out and then added to BBMOD. As for the terrain, I think that is a bit outside of the scope of this project, but we will see as time goes 🙂
 

kburkhart84

Firehammer Games
A renderer with lights, shadows, post-processing etc. is planned for future versions. The system will be very likely developed for my own games to thoroughly test it out and then added to BBMOD. As for the terrain, I think that is a bit outside of the scope of this project, but we will see as time goes 🙂
Cool, the first stuff is certainly important for "feature completeness" but I can understand the terrain renderer being more outside of scope. I'm thinking as long as you make the internals easy to get too(like the lighting system easy to touch) for anything people want to add on, it will certainly be less of an issue if you don't get to add on terrain and other similar things.
 

kraifpatrik

(edited)
GameMaker Dev.
I actually hope to see people make their own extensions to the system. The entire library is documented and it is written in such way that it should be easy to understand and extend. Additionally I will be writing "advanced topics" section in the docs, which will explain some parts in more detail 🙂
 

kraifpatrik

(edited)
GameMaker Dev.
Just two more screenshots before the release, I promise! 🤪 This time it's image based lighting showcase. Nothing new, but looks cool:

184698E1-5173-4618-9D94-E7FE509BCB0D.png
72318232-EDBA-4A06-9BC1-FD045F53573D.png
 

kraifpatrik

(edited)
GameMaker Dev.
BBMOD 3.0.0 IS OUT!
This major release focuses on modularity of the GML library, increased animation playback performance, as well as on support for advanced rendering pipelines.

See the full changelog:

Read the migration from 2.5.0 guide:

Add it to your account for free on the Marketplace:

Purchase BBMOD GUI to support the project:

Download the demo project:

Can't wait to see what 3D games you will come up with! ☺
 
Last edited:

c023-DeV

Member
Heya, just want to chime in and say that I'd love to give this a spin soonish.

I can't find any info on supported (animated) file types only saw .obj mentioned somewhere (wich is static). I use 3dsMax 2013 (the last non subscription version) and would like to know more about your pipeline for animation.

In case you are still looking for good formats to support then check out the Doom3 (.md5) format. It's open and fairly easy to work with:
http://tfc.duke.free.fr/coding/md5-specs-en.html

Also pre baked animations might be worth a thought (like the quake 3 arena format) because bone animations are mostly overrated imo. All they are really good for is ragdoll and realtime IK stuff. And pre baked animations might be more performant in some cases.

Anyway, I'd love to see GMS get some solid 3D support so thanks a TON for working on this!

edit: just a little vid I found for blender and the MD3 format (the pre baked format):
 
Last edited:

kraifpatrik

(edited)
GameMaker Dev.
@c023-DeV BBMOD utilizes Assimp for model conversion. All supported file formats are *.3d;*.3ds;*.3mf;*.ac;*.ac3d;*.acc;*.amf;*.ase;*.ask;*.assbin;*.b3d;*.blend;*.bvh;*.cob;*.csm;*.dae;*.dxf;*.enff;*.fbx;*.glb;*.gltf;*.hmp;*.ifc;*.ifczip;*.irr;*.irrmesh;*.lwo;*.lws;*.lxo;*.md2;*.md3;*.md5anim;*.md5camera;*.md5mesh;*.mdc;*.mdl;*.mesh;*.mesh.xml;*.mot;*.ms3d;*.ndo;*.nff;*.obj;*.off;*.ogex;*.pk3;*.ply;*.pmx;*.prj;*.q3o;*.q3s;*.raw;*.scn;*.sib;*.smd;*.stl;*.stp;*.ter;*.uc;*.vta;*.x;*.x3d;*.x3db;*.xgl;*.xml;*.zgl
, MD5 being one of them. BBMOD also supports multiple animation optimization levels, where the highest one is fully precomputed and extremely fast to playback.

EDIT: It does not matter at all which model format you use before you convert it to BBMOD (e.g. FBX, COLLADA, or MD5), the result is always the same data, optimal for animation playback in GM.
 
Last edited:

c023-DeV

Member
Ah, good to know, I wasn't aware of ASSIMP and just looked it up. I'm looking forward to giving this a try! The other solutions I saw mostly put me off because I'm used to using 3ds max for animation and would not want to miss it when I work on a 3d project.
 

kraifpatrik

(edited)
GameMaker Dev.
BBMOD 3.2.0 is in development and it will bring some massive improvements to the physically based rendering pipeline!

ShadowMapping.png
 

kraifpatrik

(edited)
GameMaker Dev.
Time for new screenshots of what I've been working on for BBMOD 3.2.0. If you are on our Discord server, you've probably seen these already, so this is for those who haven't joined it yet.


Chromatic aberration and color grading - simply put this palette
on top of your screenshot, modify in GIMP/Photoshop/etc. and use the modifed palette in BBMOD.


Specular highlights from directional light. The "water puddles" are just a texture with varying roughness.


Using night sky IBL - the "water puddles" are better visible here.


Variable penumbra shadows. They won't be the default, but I will leave them in the repo if anyone wants to use them :)

The future of 3D in GM is bright I'd say 😁
 

kburkhart84

Firehammer Games
Hmmph...still needs a terrain engine :)

I do have a question though. In all these screenshots, I haven't really seen anything showing off detailed normal mapping. Is that something that is part of the PBR shader/material? What about the diff/spec material? If you have it, you should show it if you can. Your screenys look nice but that is the one thing that stands out as missing to me. I know it isn't really in the art style of what you have going there too though, so it's understandable.
 

kraifpatrik

(edited)
GameMaker Dev.
@kburkhart84 Alright, I will add terrain into our Trello board 😄

BBMOD's PBR material has full support for color, normals, metallic, roughness, emissive (RGBM encoded, like the IBL) and translucency (color and thickness). In this demo project I'm using CC0 assets by Kenney (so I can distribute them without issues), which only have base color textures. I can make some screenshots of actual PBR assets and post them here, but I won't be including them in the demo.
 

kburkhart84

Firehammer Games
@kburkhart84 Alright, I will add terrain into our Trello board 😄

BBMOD's PBR material has full support for color, normals, metallic, roughness, emissive (RGBM encoded, like the IBL) and translucency (color and thickness). In this demo project I'm using CC0 assets by Kenney (so I can distribute them without issues), which only have base color textures. I can make some screenshots of actual PBR assets and post them here, but I won't be including them in the demo.
LOL, have fun with the terrain system. It isn't only the geometry, it's the material as well, assuming you do it well with splatmapping, with it going between PBR materials based on the splat map. You've done so work with the limited shader support GM currently has so you can imagine how that's going to go. Now to decide.....voxel terrain, or what style to use?! :)

As far as the assets, I assumed it was like that. You can certainly still make screenshots with assets you have even if you don't include them, just to show the thing off. I figured you supported normals.
 

Saurus

Member
Noob question, but is this compatible with mobile platforms? Can I make a project with this and publish it to iOS and Android, or are there limitations that require desktop rendering?
 

kraifpatrik

(edited)
GameMaker Dev.
Noob question, but is this compatible with mobile platforms? Can I make a project with this and publish it to iOS and Android, or are there limitations that require desktop rendering?
That is totally valid and not a noob question at all. All the shaders are written in GLSL ES, so in theory every platform supported by GM should be able to run them, but the PBR shaders and the post-processing effects that I'm showing off here are computationally too expensive to be run on mobile platforms. After some optimizations and some limits to the desktop material model, it could run on mobile too, but such platform support is not planned for 3.2.0. If your concern is if BBMOD can run on on mobile at all, then yes, so far the platforms we have tested it on are Windows, Opera GX and Android. It is also possible to write your own shaders and materials to make it run fast on specific platforms :)
 

kraifpatrik

(edited)
GameMaker Dev.
BBMOD 3.1.2 was just released! This release mainly adds possibility to define shaders used by a material in individual render passes, which in combination with render queues enables creating advanced rendering pipelines. This update essentialy contains all code that was required to be able to create the new rendering pipeline with shadows etc. (see screenshots from previous posts) that is planned for 3.2.0. Version 3.2.0 still needs some work, but with 3.1.2 you can already create your own rendering pipelines :)

For the full changelog, please see https://blueburn.cz/bbmod/docs/3/Changelog3.1.2.html.
 

kraifpatrik

(edited)
GameMaker Dev.
BBMOD 3.1.5 was just released!

This release adds color grading, chromatic aberration, grayscale and vignette post-processing effects and fast approximate anti-aliasing (FXAA) to renderer. Additionally animation player now supports frame skipping, using which you can for example increase performance when rendering animated characters in the distance by skipping over few frames.

For the full changelog, please see https://blueburn.cz/bbmod/docs/3/Changelog3.1.5.html.

Download new demo from https://github.com/blueburn-cz/BBMOD/releases/download/3.1.5/BBMOD_Demo_YYC.zip.
 

kburkhart84

Firehammer Games
You keep adding shinies to this thing...makes me consider NOT making my own 3d stuff. If it is integrating well with your level editor and you add stuff for performance like a light manager it will be even more complete(I think I said something like this before actually) :)
 

kraifpatrik

(edited)
GameMaker Dev.
@kburkhart84 I do have same optimizations related things on the todo list, like frustum culling for example :) New PushEd for GMS2 is yet to be announced, but I can already say that it will come with BBMOD integration.
 
S

Sam (Deleted User)

Guest
BBMOD 2.4.0 is OUT!

Does it render Quixel Megascans?

Hell yeah, it does! (This image has cost me $22.99. You're welcome... :D)

Does it handle motion captured animations from Mixamo.com?

Hell yeah, it does! (Check out this though!)

Does the batching work?

Hell yeah, it does! (See this and this.)

Now go grab it from the Marketplace and create something amazing with it! It's FREE! And don't forget to see the documentation when you're at it. If have any issues using it, then either join the Discord or ask me here. Cheers! :)
Is it just me or is that shrek's tree stump house from behind? Speaking of which...

A warmth approaches. I feel something touch me.... it's shrek! I'm so happy. He whispers in my ear, "this is my swamp"
 

kraifpatrik

(edited)
GameMaker Dev.
I've released a small path 3.1.6, which fixes rendering of dynamic shadows on OpenGL platforms. Now all platforms that BBMOD was tested on and works properly are Windows, Mac, Linux, iOS, Android and Opera GX. I would also like to have a look at HTML5 support when stuff with higher priority is finished.
 

Mig_PG

Member
Everything looks gorgeous. I'll be diving into the code soon enough. I'd love to add some animating and lighting capabilities to my game.

There seem to be a little problem with the W,A,S,D control keys in your demo. They don't seem to work.
 

kburkhart84

Firehammer Games
Everything looks gorgeous. I'll be diving into the code soon enough. I'd love to add some animating and lighting capabilities to my game.

There seem to be a little problem with the W,A,S,D control keys in your demo. They don't seem to work.
Did you press E a few times to stop the little sign's cutscene first? I caught that as well.
 

kraifpatrik

(edited)
GameMaker Dev.
I'm finally getting BBMOD to run in HTML5! 🥳 Gotta have them 3D games on every platform 💪

BBMOD_HTML5.gif

EDIT: Got mouselook working too :cool:



EDIT2: Got the whole demo project running too! It actually runs on 60fps with the same graphics settings as on desktop. Seems like the HTML5 export is very good!

BBMOD_Demo_HTML5.jpg
 
Last edited:

poorlocke

Member
I wasn't really involved in the 3d community besides the occasional sprite stacking demo. After Xor brought you to my attention, you have revitalized my interest for 3d in GameMaker! As soon as I'm done with my current project I will get to learn 3d. Thank you for this! Keep up the great work!
 

basementApe

Member
This looks absolutely terrific! Most def gonna give it a spin.

I've been doing a bit of Quake mapping/modding lately. The most popular mapping program (level editor) in that scene by far is called Trenchbroom and it's such a joy to use. Reminds me a bit of painting tiles in GMS2, super-easy and fast to work with. Would you be interested in including .bsp support for BBMOD? If you think it's worthwhile and don't have way too much on your plate already of course.
 

kraifpatrik

(edited)
GameMaker Dev.
BBMOD 3.1.7 was just released!

This release mainly focuses on HTML5 support. It adds means for asynchronnous loading of BBMOD model and animations, as well as regular buffers and sprites, which is required for HTML5. Mouselook was also fixed using a JavaScript extension. Additionally there is now a new resource manager module, which greatly simplifies loading or resources, retrieval of already loaded resources and freeing of all loaded resources from memory. The demo project was also reworked into a minigame to show off these new features.

For the full changelog, please see https://blueburn.cz/bbmod/docs/3/Changelog3.1.7.html.


Would you be interested in including .bsp support for BBMOD?
We are not planning support for .bsp, we are instead working on our own 3D level editor :)
 

TimVN

Member
BBMOD 3.1.7 was just released!

This release mainly focuses on HTML5 support. It adds means for asynchronnous loading of BBMOD model and animations, as well as regular buffers and sprites, which is required for HTML5. Mouselook was also fixed using a JavaScript extension. Additionally there is now a new resource manager module, which greatly simplifies loading or resources, retrieval of already loaded resources and freeing of all loaded resources from memory. The demo project was also reworked into a minigame to show off these new features.

For the full changelog, please see https://blueburn.cz/bbmod/docs/3/Changelog3.1.7.html.



We are not planning support for .bsp, we are instead working on our own 3D level editor :)
That's awesome! Going to try this out for sure!
 
Top