Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411281 Posts in 69324 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 11:18:07 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)New LibGDX-based Blender Integrated Game Engine BDX
Pages: [1]
Print
Author Topic: New LibGDX-based Blender Integrated Game Engine BDX  (Read 5787 times)
SolarLune
Level 10
*****


It's been eons


View Profile WWW
« on: March 10, 2015, 06:53:55 AM »

Yo!

The Introduction

I wanted to tell you guys about an engine that I'm using that has just recently come into Beta-status. It's name is BDX, and it's a cross-platform, open-source 3D LibGDX / Java-based game engine. It's actually kind of hard to classify as a pure engine as it actually is kind of a bridge between Blender and LibGDX. The engine is licensed under the Apache 2 license. It's runs on LibGDX, so it should support all platforms that LibGDX supports for distribution, like Windows, Mac, Linux, HTML5, Android, and iOS.

The Engine

Basically, BDX isn't a separate engine in a program, but rather an add-on and API. The add-on plugs into Blender and exports data for you, and then runs the game. Just press P to export and run LibGDX with your stuff - there's no import/export process involved, basically. The API allows you to more easily program your game rather than having to do everything with LibGDX yourself (i.e. it allows you to check for collisions, to move objects, to color them, to animate them, to add components to them, etc).

The bottom line is, basically you don't have a dedicated "engine" program open when you use BDX. Blender becomes your game engine. The add-on runs in Blender, so the "development side" of the engine should work fine on all platforms that Blender runs on (Windows, Mac, and Linux).

The Documentation

BDX is fairly well-documented already, with both video tutorials as well as simple written ones explaining some aspects of using the engine. [There's also a collection of fairly clearly-written class-arranged API pages](https://github.com/GoranM/bdx/wiki/API).

The Future

Now, the engine's not finished; there's still a lot of things that would be nice to have implemented like shadows and armature animation, but it's rather well-done nonetheless and can already be used to create and ship simple games even now (and already has been!). Since these things are available in LibGDX, I hope they'll be easy to implement as well. Some of the things it supports already can be read on the overview page on the GitHub wiki.

BDX now supports gamepads, lighting, and shaders.

The roadmap can be seen here.

The Point

Check the engine and docs out here! A sub-reddit is also available at /r/bdx for those who have questions. It might seem odd that the sub-reddit's basically empty, but we've been asking questions and talking about it on a thread on the Blender Game Engine community forums since it was available in alpha.

The End

Welp, that's basically it. Thanks for reading!

Couple of screenshots for posterity; two of the engine, with the second being of the same map shown in the third screenshot. The game is one that I made with BDX, Kyro.





« Last Edit: February 07, 2016, 08:24:06 AM by SolarLune » Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #1 on: March 27, 2015, 09:24:51 AM »

Yo, I forgot to update this thread!

So in the time between then and now, some more stuff has happened to the engine.

Convex hull and compound physics have been committed and are working. Parenting and unparenting in-game updates the physics meshes as you'd expect.





2D GLSL Filters have been created and committed, and each scene has its own Filter stack (so you can just add new filters to the stack to do multiple passes).

Code:
// Get the vertex and fragment shaders located in the "android/assets/" directory as strings...

String vert = Gdx.files.internal("filter.vert").readString();  
String frag = Gdx.files.internal("filter.frag").readString();

// ... Create a new Filter with them, and add it to the current scene's Filter stack.

scene.filters.add(new Filter(vert, frag));  

// Create another Filter with a bloom fragment shader and the first vertex shader, and apply it over
// the previous shader's result.

String bloom = Gdx.files.internal("bloom.frag").readString();
scene.filters.add(new Filter(vert, bloom));
« Last Edit: April 24, 2015, 08:14:32 AM by SolarLune » Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #2 on: April 24, 2015, 08:13:29 AM »

Forgot to update this thread again! Oh, well. Anyway:

Wilin' and Profiling

Progress continues to be made as the Profiler has been improved, allowing you to see where your CPU and GPU power's going as you play the game. You can enable it to output the profiling information on-screen in the top-left corner simply by enabling "Show Profile and Framerate" in the Game menu in Blender.



You can even add categories to the profiler yourself. The display will automatically update to show you how much time is being spent on your added code.

Brighting and Lighting

Basic LibGDX lighting (ambient, sun, and point) has been implemented, allowing for a bit more depth in scenes, and along with this, the Shadeless material property is functional. Currently, it doesn't actually make objects completely shadeless, but rather ups the ambient lighting level on the material. This means that while they will appear unshaded in a scene without lighting, they actually can still become brighter from a point light, for example.

Component...ing... and... Forget it.

Components are a bit more manageable and now can act a bit more effectively as a finite state machine. This allows one to trigger functionality on entering and exiting states (credit to GDX-AI's state machines for the ideas). You can also get a component from a GameObject using the GameObject.components.get() function, which takes a string - the name of the class of the component.

Some other stuff was added / changed, too, behind the hood, like a simplified template blend file.

Oh, and 2D filters have additional uniforms - time, which increases over time, and lastFrame, a sampler2D holding the last rendered texture for that scene.

Anyway, grab the latest build from the GitHub page and play around with it!
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #3 on: November 05, 2015, 06:43:12 AM »

Hey! It's been awhile since the last release, hasn't it? BDX just got a new release recently (v0.2.0)! I figured I should update this post here as well in case people might be interested in participating in the LibGDX jam and didn't want to start from absolute scratch.

Here's a quick run-down of the new features that we added between the previous release (0.1.Cool and this one (0.2.0):

    Improvements to the profiler
    Mesh replacement
    Mouse positioning
    Built-in 2D GLSL shaders (bloom, blur, wave, etc)
    Down-sampling for 2D GLSL shaders
    Support for 3D GLSL shaders
    Improved 3D GLSL Shader to use Blender's emit slider and color tinting
    Frustum culling
    An object panel in Blender that allows you to customize game object classes, properties, and execution priority
    Collision checking and children identification via component or property
    Mouse wheel support
    Support for Blender's user camera
    Altering collision bounds types dynamically
    Joining objects together to reduce draw calls
    Input-based replays
    Simple custom joystick profile support
    And a ton of other bug-fixes and smaller feature additions

Please feel free to check it out on GitHub!
Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #4 on: February 07, 2016, 08:19:06 AM »

Yo! It's been awhile, again!

Lotsa changes since this previous post. Here's a short change-log.

  • Support for multiple gamepads, including in input maps.
  • A mesh animation component, which uses mesh swapping to animate objects.
  • Per-pixel lighting for sun, point, and spot lights.
  • A function to turn off per-pixel lighting for lower-spec devices.
  • Profiler improvements.
  • The ability to change materials in-game.
  • Various smaller bug-fixes, features, and quality-of-life improvements.
Logged

Oats
Level 1
*


High starch content.


View Profile
« Reply #5 on: February 10, 2016, 12:24:36 AM »

This sounds like exactly what libGDX needed, my last project was in libGDX and I thought a lot of it's features where cool but in the end I didn't find it significantly easier then just using LWJGL alone, it seemed to be very high friction. I think a major problem was having to mess around with fbx-conv for every asset change, it made the graphic pipeline feel too repetitive and needlessly complex, so having a tool that fixes this is pretty huge.
Unfortunately right now the only feature that pulled me to libGDX was skinned animations, and since BDX doesn't have that yet I'll wait a while before trying it out. Still seems a pretty sweet tool, and I've always found blender quite pleasant to work with, so bonus points for that. Do you write java code in blender or still use eclipse?
Logged

eh
dancing_dead
Level 2
**


View Profile
« Reply #6 on: February 10, 2016, 09:50:57 AM »

still use eclipse?

offtopic, but nobody should be using eclipse in this day and age for anything. grab yourself the intellij idea community edition, and never look back.
Logged
SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #7 on: February 10, 2016, 10:10:51 AM »

I personally use IntelliJ Community Edition, yeah. I've tried Eclipse as well, but IntelliJ's pretty nice.

And yeah, you can program entirely in the IDE. That's how I use it, too. Armature support is on the Issue tracker right now, so it's something that hopefully will be implemented soon. We'll see, haha.
Logged

moomat
Level 0
***



View Profile WWW
« Reply #8 on: February 12, 2016, 05:14:32 PM »

I use Eclipse Smiley Old habits die hard.

This engine is looking great though. We use LibGDX in our game; might have to try to give this bad boy a try someday. Great idea to combine Eclipse and Blender.
Logged

Check out Junk E.T. at junketgame.com

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #9 on: March 12, 2016, 09:40:07 PM »

Thanks!

Here's another release!

In this one:

- Massive optimization when saving meshes from Blender, which can make the starting process a ton faster.
- Depth texture for depth-based GLSL 2D screen shaders.
- Additional built-in screen shaders include: Outline, Color-inversion, and Depth-Of-Field filters.
- Ability to replace and alter individual materials, which are automatically exported from Blender.
- Camera functions to allow for view changes.
- Various bug-fixes.
« Last Edit: March 12, 2016, 10:06:53 PM by SolarLune » Logged

jubjubmane
Level 0
*


View Profile
« Reply #10 on: March 16, 2016, 07:28:24 PM »

offtopic, but nobody should be using eclipse in this day and age for anything. grab yourself the intellij idea community edition, and never look back.
Logged
SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #11 on: December 07, 2016, 09:45:54 AM »

Woah, I haven't updated this in awhile. Whoops! Who, Me?

Since my previous post, BDX got updated twice.

_______

v0.2.5

This was mostly a bug-fix release, though there were a few good additions, as well. Here's a quick break-down:

- Render-to-texture is now supported.

- GameObjects can now be invisible on select cameras, simply by adding a reference to the GameObject to the camera's "ignoreObjects" list. This, when combined with render-to-texture support, allows for some nice shader effects.

- Texture loading and texture switching on Materials is now supported.

- A new Mesh class has been added, allowing you to easily alter vertex information for GameObjects' meshes.

- Fog / mist is now fully supported.

- Support for a Viewport has been added to allow you to tweak how your game scales onscreen.

- Many bug-fixes, and other tiny added features.

_______

v0.2.6

- Meshes have been refactored a bit more to have Materials be a part of them.

- A new function was added to allow you to update the physics body of a GameObject.

- Text support has been pretty drastically improved, with text objects now supporting outlines, shadowing, alignment, and newlines.

- Again, a lot of bug-fixes and QOL conveniences.

_______

Feel free to check it out by grabbing it over on the releases page! As usual, the documentation is available to peruse at your leisure on the Wiki, and continues to be very up-to-date. An overview of BDX's API and general usage is available in the, well, General Overview.

If anyone's wondering about the viability of actually using it in production, feel free to check out my current project, Gearend, which uses BDX. :>
« Last Edit: December 07, 2016, 09:57:46 AM by SolarLune » Logged

SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #12 on: May 08, 2017, 12:36:24 PM »

Yo, 'sup!

So, here's another release of BDX, the Java, LibGDX-based, open-source, cross-platform, Blender-integrated 3D game engine. This release marks v0.2.7. It's been awhile since the last release, but development has been slowly and steadily rollin' along. You can download the new release here!

Here's a quick-and-dirty change-log showing what's available in this release:

- Physics and time speed can now be slowed down or sped up.
- A new crepescular ray screen shader was added (might need to be tweaked to work across all OSes and graphics cards, though - feel free to report any bugs!).
- An audio device class was added for easy global audio property adjustments.
- The workflow has been improved drastically to support multiple blend project files, exporting from blend files only when they are altered, and a threaded run process (so running your game doesn't halt Blender).
- The default XBOX 360 controller layout has been improved to be more consistent across platforms (though I hadn't had the chance to fix it up on OSX, in case there are issues, which I envision).
- The profiler has been improved to show more information and to be toggleable mid-game.
- You can now retrieve a Bullet manifold when a collision happens (so you can, for example, get the position of a collision, or the normal that the collision happened on, etc).
- Various minor bugfixes and QOL stuff.

For a more detailed change-log, you can see the commits to master since the previous release here.

For the previous release post on Reddit, you can find it here.

For more information on the API, general usage, etc., check the Wiki. The General Overview in particular acts as kind of a starting point, and covers the basics. You can also subscribe to /r/bdx for a community to ask questions and stuff.

Thanks!
Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic