Porting a PySide based level editor to Godot?

Hi All,

I am new to Godot Engine - just messed around with it a couple of years ago (v3.1) and loved pretty much everything about it. However as I’ve been busy with another project, I could not dedicate my time to learn Godot so far.
However now I consider moving my project from PySide6 and Qt3D to Godot. The thing I’ve been working on with another friend is a modern level editor for some old game series. It’s a pretty old stuff - late 90’s, Quake-like technology - BSP level geometry, light maps, vertex shading for objects, some sort of portal based visibility culling etc… Mind you - we plan to create editor primarily - not re-create the game engine itself with all the gameplay mechanics. The level build and gameplay will be still performed by using the original editor.

Since scrapping a few years of work and starting from scratch (or almost from scratch) is never an easy idea, I’d like to get some feedback on what’s possible with Godot and where we would potentially experience challenges. Here are some most important areas we need to cover:

1. Python support.
Our project has been written with Python - it has a back-end library for reading and writing the proprietary file formats and a front-end, which uses PySide6 with Qt3d. We would like to keep the former, so we don’t have to re-write the core business logic. I know there is a Python plugin for Godot 3.5, but it has not been ported to Godot 4 and may not be for another while. There may be alternatives. How difficult would it be to integrate Python into Godot, so I can use my libraries? And would it possible to mix and match Python with GDScript and/or C#? How difficult would it be to have a custom Script Editor running Python scripts, inside Godot runtime? (We’d like to give ability to script stuff, like it is in other 3D applications, like Blender or Maya).

2. Lightmaps
We will be reading lightmaps from the original files and generally we can use the original editor (as a sub-process) to build the mission and re-calculate all the lighting. But I would also like at some point use the Godot’s lightmap baker, as it offers superior quality. Is it possible to bake lightmaps at runtime? I don’t mind it taking a long time - after all, we’re making an editor - not the game itself, so waiting is expected.

3. File system access
From what I have seen so far, there should not be a problem to access any arbitrary files on a local file system, but please let me know if there are any restrictions for the Godot apps to access the files on the disk. (similarly to the way browsers have restrictions).

4. OS interactions
Can I spawn processes with Godot? We’d need to do that to launch original editor for map processing and game testing.

5. UI
Coming from Qt/PySide - how does Godot’s UI compares to it? I’ve read extremely mixed opinions. Godot Editor running on Godot Engine itself proves it’s well capable, but is everything that the Editor can do possible to do at runtime as well?

I might have more questions down the line, but that should do for a start.

I’d really appreciate answers, so we can make some informed decisions and maybe do this leap. I think using Godot would open up many possibilities for us, that are rather difficult to achieve with Qt3d.

Hi,

  1. There is a (new) Python binding for Godot 4.2+, that you should try out: GitHub - maiself/godot-python-extension: Python language bindings for the Godot game engine

  2. It is possible to mix different languages in a project, e.g. you can use Godot nodes implemented in Python use from C# or GDScript and vice versa.

  3. I personally try to move away from Qt to Godot wherever possible. When you do a feature by feature comparison, you will probably find features in Qt that are not in Godot (yet), but in general my experience with Godot has been great in the past 6+ years including crazy things like integrating QML scenes into Godot, using Godot for Automotive AR … etc. In general: Godot is very flexible and easy to customize if you are willing to dig into it. It is also very well documented. It also has a much more business-friendly license.

  4. If you are building a level editor, my recommendation would be to extend the Godot Editor itself instead of starting an editor project from scratch. It already has a lot of the features that you would need in place, and you can just throw out what you don’t need + add what you need.

  5. OS interactions / File system access should work out of the box, as you would expect.

Kind regards,
Gergely

2 Likes

Hi Gergely,

Thanks a lot for your responses. It’s good to hear it from a person experienced with Qt as well.

Re. 1. Wow - thanks for the link to that plugin - I didn’t realize there was another one. I’ll definitely give it a try.

Re. 3. Yeah, the documentation of Godot is where it shines indeed. Qt3d on the other hand has a terrible documentation, especially for Python. And the best examples one can get is how to create a sphere rotating around torus… Even though the 3d guy in our team achieved more than we’ve seen in any examples, there is still a lot of features lacking in Qt3d.

Re. 4. I see what you’re saying, but the editor is for some old game, which has its own folder structure, resources system, some different concepts and generally is not 1 to 1 compatible with Godot. There is an old and very out-dated editor available, which we want to replace, but also provide similar experience to make the transition easier. Adapting existing editor would create a confusing experience for and end user. That’s why I’d like to make the editor as a dedicated app, rather than the Godot Engine extension.