Jump to content

Editor Development Continues




I wanted to take some time to investigate geospatial features and see if it was possible to use GIS systems with Ultra Engine. My investigations were a success and resulted in some beautiful lunar landscapes in a relatively short period of time in the new game engine.


I have plans for this, but nothing I can say anything specific about right now, so now I am working on the editor again.

Leadwerks had a very well-defined workflow, which made it simple to use but also somewhat limited. Ultra goes in the opposite direction, with extremely flexible support for plugins and extensions. It's a challenge to keep things together because if you make things to flexible it just turns into indecisiveness, and nothing will ever get finished that way. I think I am finding a good balance or things that should be hard-coded and things that should be configurable.

Instead of separate windows for viewing models, textures, and materials, we just have one asset editor window, with tabs for separate items. The texture interface is the simplest and just shows some information about the asset on the left-side panel.


When you select the Save as menu item, the save file dialog is automatically populated with information loaded from all the plugins the engine has loaded. You can add support for new image formats at any time just by dropping a plugin in the right folder. In fact, the only hard-coded format in the list is DDS.


You can save to an image format, or to the more advanced DDS and KTX2 formats, which include mipmaps and other features. Even more impressive is the ability to load Leadwerks texture files (TEX) and save them directly into DDS format in their original pixel format, with no loss of image quality. Here we have a Leadwerks texture that uses DXT1 compression, converted to DDS without recompressing the pixels:


There are several tricks to make the new editor start up as fast as possible. One of these is that the various windows the editor uses don't actually get created until the first time they are used. This saves a little bit of time to give the application a snappier feel at startup.

I hope the end result will provide a very intuitive workflow like the Leadwerks editor has, with enough power and flexibility to make the editor into a living growing platform with many people adding new capabilities for you to use. I think this is actually my favorite stuff to work on because this is where all the technology is exposed to you, the end user, and I get to carefully hand-craft an interface that makes you feel happy when you use it.

  • Like 7


Recommended Comments

My vision is to have Ultra Engine work like Visual Studio.
Create a new project and it's already a running executable.
Write a Story and let the game shape up.
Fire up the Editor and drag & drop stuff into your world.
Watch in real-time how your game lives.
Publish the game with the click of a button.

Link to comment

This is looking really good.  I used the Leadwerks editor the other day and realised how much I missed it.  Ultra is going to be great!

  • Like 2
Link to comment

Animation is done with a 3D texture. When more than one texture layer exists, as in 3D textures and cube maps, a layer selector appears that lets you select the layer to view.

  • Like 1
Link to comment
5 minutes ago, Genebris said:

Unrelated, but do you plan to add mip maps streaming from disk depending on distance?

What would that be used for?

Link to comment

Saving up RAM. It clears 5GB for me in Unity. I have 9 GB of textures in a scene and with a checkbox tick I get just 4 GB, no visual impact.

Link to comment

Well, I have 3GB of VRAM so 4 or 9 GB can only fit if RAM is used alongside. I'm pretty sure that system works for both. They call it "GPU memory" and to my layman understanding it's not only VRAM. Either way, the total size of textures in memory profiler becomes exactly what I type in the system. That project only runs due to that system.

Link to comment

I believe most graphics drivers will automatically move textures that haven't been used in a while into "virtual memory", i.e. they write it to a file to unload it from VRAM. There is no good reason to keep texture data in system memory, and Ultra doesn't ever do that.

I'll keep this in mind and we can revisit it if it will make an improvement.

Link to comment

I've got embedded assets displaying now. You can open a material or texture that is packed into a model file, view, and modify it. glTF and OBJ supports embedded materials, glTF supports embedded textures, and there are some other obscure formats like Quake MDL that do this as well.

Embedded files show their name in square brackets and link back to the file they are embedded in. You can use this to modify materials embedded in a glTF, or use it to extract materials and textures from a model and save them as a standalone file.



  • Like 6
Link to comment

No sliders for intensity, roughness and metalness? Also interested to see how the tab system can be updated to support closing and reorganizing.

Everything looks good, it's going to get really exciting once the map tools start to be made.


  • Like 1
  • Upvote 1
Link to comment

I will add sliders. Right now I am trying to get the basic structure down. Now using a property grid in the side panel. This lets me fit more stuff into the interface, and it also will make it easy to add new functionality with an extension. For example, you could add a "Quake Texture" group for files loaded from a Quake WAD package, and add special Quake-specific properties to be edited there.


  • Like 2
Link to comment

Lots of model stats. Some of this is good for quickly spotting problems. For example, if you see a model that uses 100 meshes you probably want to optimize that.


Link to comment

This shows how an extension can be written that adds custom data to models and other asset files.


Link to comment

If I break off the asset browser and asset manager, that might be a decent standalone app that can be released first, before the full editor. That would allow me to get a visual tool out to the people faster, and get started testing it sooner.

  • Upvote 2
Link to comment

The last major stepping stone to work out will be to figure out how file saving in packages is supposed to work. I think having that will be extremely useful though, especially for people making mods for other games.

  • Like 2
Link to comment

I'm using zlib / minizip. There's a lot of details. Zip files aren't actually designed to allow deletion of a single file. You can only create a new archive, and copy every existing file into the new archive, minus the one you wanted to delete.

Link to comment
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...