Cave Engine 0.9.6 is out!


Wow! Cave Engine 0.9.6 is out and it's a big deal!

It's Guilherme here, the developer, and I'm glad to write you this release note that was made with so much love! The community that is been emerging around this engine is truly breathtaking and I couldn't thank you more. So let's jump to the dev log!

First of all, it's worth notice that the engine now has an official name: CAVE! The Cave Engine! Here is the full change log:

Interface and Usability

Let's start with the most obvious one: the engine looks completely different now! 


It's almost unfair with the previous version. The colors are all new, rethinked to be more pleasant to the eyes, as well as the spacing between the elements and their composition. A new font family and color was chosen and the editor looks cleaner and more professional now. 

But the visuals are not the only thing new here: The Editor finally have 3D view gizmos such as for the camera and lights and a bunch of usability improvements was made. The viewport camera movements are so smooth now that you'll want to spend the entire day just moving around the map.

Another cool improvement is that now there is a footer in the editor that will show you the last message that appeared in the console. Very useful for debugging and other things. Also, when you save the project, you no longer have to cry because of the annoying window popup notification: the editor will notify you that the project was saved using this new footer. Cheers!

Here is the full remaining log:

  • The engine got renamed to "Cave Engine" and finally have an Icon!
  • 3D View Gizmos!
  • Create new python script from the python component tab
  • When you select an asset, it will bring the Properties tab to front
  • The editor now only reloads the entity when something changed
  • Editor's Camera Tool: Better and smooth WASD movement
  • Editor's Footer with console notifications

Less disk space, more performance!

Did I already mentioned that the engine is more lightweight and faster? Because it is! The final packed engine (editor included) went from ~24MB to almost ~8MB thanks to the removed of a lot of unused code from third party libraries. The final exported game now uses waaay less disk space as well. Talking about performance, the renderer is at least two times faster! I'll talk about this one later.

Python and Scripting

The engines's python module is now called "cave". Previously it was just "engine". When you double click a script in the asset browser, it will bring the Text Editor to front with the script loaded on it. Now there is a native Player Component with basic W,A,S,D movements by default (so you don't have to do it every time). 

Tooling Support

YES, YES, YES! This is one of my personal favorite new feature: Now you can write your own tools using python. And yes, I am also talking about a tool with its own Tab docked in the editor, with a proper interface with buttons, sliders and whatever you want to. Here is a screenshot showing that in action. The code in the left generated the tab highlighted in red:

Here is a simple code that produces a similar result and can be used as a starting point for your own tools:

import cave
import caveui as ui
class Example(ui.DebugTab):
    def __init__(self):
        super().__init__()
        self.counter = 0
    def draw(self):
        ui.text("Hello, world!")
        self.counter = ui.prop("Counter", self.counter)
        if ui.button("Increase counter (+1)"):
            self.counter += 1

If you create a new script in the editor, open it and paste this code, you'll be able to find the "Example" option (the name of the class) in the "Editor Tools... > Register Tab" option.

Expect more in the Tooling support later!

Asset Browser

This one is exciting: the asset browser is completely new! The assets thumbnails got redesigned, the right click and drag and drop is more useful and feature rich and now there is a tree hierarchy in the left exposing all your folders. The last one was requested a lot. Here is a before and after:


Physics:

Physics received some attention too! There is two major things related to it:

  • Character Physics Component

Finally a proper character physics. Use that to create, well, characters!

  • Physics Constraint Component

Always wanted to create chains, bridges and physical stuff that is connected to other parts? Well, now you can. The Physics Constraint Component will provide you what you need to make hinge, sphere or slider constraints. Keep in mind that this component, in order to work, needs a Rigid Body Component and the entity also needs to be parented to another rigid body entity. It's a lot of fun to play with this one! 

Asset importer

A very important part of the game development process is import assets to your game. And now it's way better and versatile: when you drag and drop a simple file format such as a texture (.png, for example), it will import right in into your project. But when you drop and advanced file format, such as a .blend, .fbx or .dae, the engine will show you a popup window exposing everything that's inside that file (meshes, materials, animations, armatures and so on) and will let you pick which ones do you really want to import to your project as well as renaming that if you wish to. You can also group them into a folder with a single click to help you organizing your project files.


Another cool new feature is the Level Descriptor. If you build a scene in Blender, for example, and drop the .blend file to the engine, it will not only import the meshes and materials, but will also create a level descriptor for you that describes how that scene was setup in blender (or any other DCC). If you then double click the descriptor, it will automatically attempt to build the same scene you imported into your active Cave Engine Scene.

Oh, it also now supports multimeshes (a single object with multiple meshes on it). FBX animations are still not working very well, tho. So it's recommended that you use Collada (.DAE) for animations since they work best at the moment.

Renderer:

The renderer got simplified and it's now more than two times faster! There is not a lot of exciting news when it comes to the renderer front end (the part you see and will use), but the backends (the part the engine see) got entirely redone!  Why? A lot of effort was put in to make sure that the renderer is as modular, versatile and lightweight as possible, to fit the future engine needs. In other practical words, it's planned to support multiple renderers (but don't worry, they'll be compatible with each other, that's important) for different types of games (such as realistic, cartoon and so on). 

It's worth mentioning that, as an effort to make the default renderer very lightweight, I had to remove some advanced, non essential and glitchy features such as Screen Space Ray Marching (used for Ambient Occlusion, Global Illumination and so on). It's a lost, but the tradeoff of making the engine more lightweight made is worth it, especially because those features where not functioning as expected anyways. And remember: Since now the backend supports multiple renderers, an advanced one may be introduced in the future re adding that ray marching stuff. :)

When it comes to new features visible in the front end, now you can set a custom resolution for your shadow maps. 

Here is some other logs:

  • New Default Mesh: Grid (256x256) - Not very useful atm, but it will eventually be. :)
  • Started working on the terrain system (not ready, but it's worth mentioning it)
  • Material code simplified

Bugs and Fixes:

The engine is way more stable and usable now. Guess why? Exactly: extensive effort on bug fixing!

  • Removed a bunch of debug logs
  • Added some backend rendering code for computers with no Instancing support
  • Fix: CameraTool was not using deltaTime for the mouselook
  • Fix: Texture Aspect Ratio
  • Fix: HUGE Texture Memory Leak when deleting textures
  • Fix: pausedUpdate() was not being called!
  • Fix: Circular Parenting crash
  • Fix: PhysicsConstraint memory leak
  • Fix: Bad shadow box placement (especially in interior scenes)
  • Fix: Right click in the Scene Graph was not working
  • Fix: Renderer loading Bugging the Meshes
  • Fix: CameraTool mouselook glitch:

When you right click for the mouselook in the editor's viewport, the camera drastically rotates towards the last mouse position. Now fixed.

  • Fix: Meshes disappearing sometimes...
  • Fix: Entity::SetParentLocal bug when attempt to do a circular parenting
  • Fix: It was not possible to drop an asset to a folder
  • Fix: Wrong LookAt rotation when facing straight up
  • Fix: Asset Browser thumb images was not considering the scroll

Let's make Games!

The engine is getting closer and closer to a state where it's safe to say that it is ready to rock and roll! And I'm very happy about that and I'd like to thank you for the amazing support all this time! Don't forget to join our Discord Server to discuss about the future of the engine. I see you there!

Best regards, Guilherme

Files

Cave Engine v0.9.6.zip 8 MB
Jul 06, 2021

Get Cave Engine

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.