What do you consider base features for 3D?

I have just been chatting with @jhonny.goransson and I think there is value in a discussion in what people consider as a basis for using 3D in Defold.

Note: Before reading on, please consider this is NOT about changing the editor, or adding specific new rendering API’s or features to Defold, this is about what makes a nice starting point for building a 3D game or app.

Where this has come from:
At the moment Im “fattening up” my sync tool that allows you to dump a scene from blender straight into Defold. It only supports some basic features at the moment, but I think its worth discussing what features people would want once that scene ends up in Defold.

The features Im currently working on (some are complete):

  • Animation (done)
  • Game Objects built from blender node hierrarchy - thus multiple meshes (done)
  • Lights (currently exported but not enabled in Defold)
  • Meta Data (done - custom properties are available in script)
  • Default model shader and a simple pbr shader materal (Id like to extend this)
  • Extra uv stream export (under dev)
  • Camera (done - but can do more!)

The idea is we could provide a set of “rendering” capabilities GTG when you export into the Defold project. Defold already has many facilities to support many modern techniques, but… which ones make sense right now and wont create too much madness in the asset folder system.

Feel free to jump in and make a suggestion. @jhonny.goransson made comment about TAA - that might be a possibility if we provide exported render scripts - which his suggestion has got me thinking about many things and hence, this thread.

Ones I think are important:

  • Custom materials (so people can use their own rendering setup)
  • Lighting scripts/render scripts. A nice default lighting setup would be nice.
  • Render scripts to allow lighting, shadows an AA methods more easily achieved.
| Feature Name | Feature Description | Viability |
--------------------------------------------------
| Collision Shapes    | Import collision shapes placed in Blender (supported types only)     | High |
| Render Methods      | Using render scripts to create support for modern render features    | High |
| Lighting            | Import lights from Blender, and lighting in Defold (No Shadows)      | High |
| Lighting Shadowmap  | Generate Lightmaps to be used in Defold                              | Medium |
| Lighting Shadows    | A Shadow solution for the lighting                                   | Medium - needs research |
| Custom Materials    | Custom panel in Blender to map custom material to a Blender material | High |
| Animation           | Import supported model animation (working)                           | High |
| Node Structure      | Game Objects built from blender node hierarchy (multiple meshes)     | High |
| Custom Properties   | Custom properties on objects are exported to scripts                 | High |
| Materials           | Support default materials and a PBR material for export.             | High |
| Extra UV Channel    | Export an extra uv stream channel for  pbr material.                 | High |
| Camera              | Export the Camera object into Defold (working - but can do more!)    | High |
| Particle Effects    | Complex particles effects like volumetric.                           | Medium |
| Post Render Passes  | A simple way to add Blur, DOF, etc.                                  | High |
| Color Spaces        | Different color space support                                        | Medium |

PS: Is there a better way to show the above? Are tables supported in the forum?

13 Likes

Hello @dlannan,

first of all: congrats for your work and thank you for taking it upon you for the benefit of us all.
I think you and @jhonny.goransson have the most important points covered. Lights, some example materials, anything that makes life easier for people who are overwhelmed by render scripts, shaders and materials, really. People like me :grinning:
There is just one thing that crossed my mind: since it is a bit fiddly to position collision shapes in the editor, would it be possible to add a way to import meshes and convert them into collision shapes and thus have them at the wanted position right after import? This would be very helpful, especially when dealing with complex scenarios.
No idea if this is doable - but it would be super if it were.

5 Likes

Hi @anon95708182, this is exactly the kind of feature I was hoping for! :slight_smile:
Collision shapes should be possible - mainly because Blender has an understanding of collision too. I’ll add it to the list. Thanks!

4 Likes

Hi, thanks for the work and sharing ideas and tools!
I’m not sure how big the list of base 3d features is, but just imagining what I’d like to see eventually as Defold 3D. And it’s something similar to Nintendo’s games on their Switch. Pictures like Mario Odissey or Yoshis Crafted World :slight_smile:

10 Likes

@dlannan do you have any thoughts on how to structure this? Maybe this should be an extension for the rendering functionality completely separate from the asset management side of things (import/sync from blender) that provides a render script ecosystem that contains some form of api or editor ui to configure the pipeline through. So whenever you add the extension and set the render script from the extension you get some sort of baseline PBR rendering with shadows etc by default and then means to configure the feature set somehow.

Now that we have support for complete custom components from the C side we could do quite complex rendering I suppose, but a lot of these features should be doable do to with the current render scipt aswell.

4 Likes

@jhonny.goransson - very good points. I see two general architecture suites.

  1. A simple, Defold asset oriented integrated export/sync so that base level 3D can work with absolutely minimal modifications to the system. I think this is important for people who are “doing their own thing” as well as new people wanting to just dip their toes into 3D.
  2. A more complex custom pipeline that provides similar direct access to exported assets, but includes a ‘nice?’ set of custom render options and material options that allow people to step into the wider rendering feature sets without too much effort, but still needing 3D knowledge/skill sets.

I think what you refer to is possibly a 3rd level of capability, which is a much deeper customization. I think this would be brilliant, but I also know how deep that would go :slight_smile: That is a very big job. Im trying to keep the effort vs time vs output within reasonable constraints. Something like Medium effort, 3-6 months and reasonably good 3D output (good enough for casual gaming on mobile).

I would like to apply your ideas, and I think it would be completely doable, more flexible and certainly allow for a large amount of feature capability. This might be something that can be tackled alongside the other targets - I dont expect them to exclude each other, in fact, I really want to make sure that any paths that are chosen, are able to be flexible enough to change direction as API’s and features change with Defold. I hope that makes some sense :slight_smile:

@Dragosha - most definitely. I think many of the features in those screenshots are quite achievable (even now). Post render effects can very easily be done (Depth of field, Motion blur, AA etc) - but again, probably need to have a nice way to implement them without causing people nightmares in render scripts :slight_smile:

Harder elements in those images are some of the nice GI, shadows, and particle effects (esp volumetric). However, these are, I believe, doable with Defold. So planning for them is a good idea. I think @Dragosha’s brilliant 3D samples shows that Defold is already well on the way:

And kudos for sharing that excellent example btw. Love it! If we collate our ideas, and work towards a common feature set, I dont see why we cant make Nintendo killing graphics :wink:

In fact its probably a good idea to list some of those features so that they are captured in the todo list. I’ll add some - feel free to note specifics so they can be added.

3 Likes

Yeah this makes sense to me, it’s easy to underestimate how much work something like what I had in mind really takes… I’m thinking it’s probably easy to build a plug-and-play asset based on your approaches that could just enable people to “have nice graphics” out of the box, which is what I think most people want when using engines like Unity. But yeah, anything to reduce the gap for people getting into 3D with Defold is most welcome and I’d be happy to contribute with implementing features later if you want to setup some kind of structure for such an extension :slight_smile:

6 Likes

@jhonny.goransson - yes most definitely. I have a number of tasks Id like to get ticked off over the next 6 months, and I think by then I should have delved enough into the SDK that I can make more appropriate or ‘knowledge’ based assessments on ways forwards. Im open to suggestions for any preferred solutions though especially if there is engine development directions that could map in nicely. I feel like this needs a github project space or something like that :slight_smile:

2 Likes