Replies: 1 comment 1 reply
-
One of the downsides of the current Python-based system is that we require both the Python development files (for the target platform of the engine) and the Python interpreter executable (for the host platform where the build is running). CMake isn't particularly adept at managing that distinction, which has caused issues for cross-compile builds for things like Apple Silicon and Arm Linux. I believe the need for the Python interpreter is also what forces us to use dynamic linking of python.dll on Windows, rather than making it a static library (which IIRC is what we want to do for macOS because it makes codesigning a lot easier). Those problems aside, there are clear upsides to having the resource generation happen as part of the build.
I think for the moment, my vote goes to option 1 (moving to moul-assets) based on being the lowest effort option, but I'm not opposed to option 2. |
Beta Was this translation helpful? Give feedback.
-
It seems that we keep running into issues with the code to render and package the
resource.dat
(used by the client to contain pre-ResMgr assets such as cursors and loading-screen images), due to it depending on fragile, ill-supported libraries that are being used solely for this one tool. The issues caused by the module dependencies have been infrequent enough to avoid needing immediate attention, but frequent enough to feel like an issue that will keep arising. A few notions have been raised over the years about fixing this, but nothing concrete has emerged.Is this enough of a problem that it needs to be addressed, or is it a low enough priority that it should continue as-is?
I see a few different ways to address the problem:
resource.dat
rendering and packaging code was added, we didn't have any other repositories for game assets. We could move the source image SVG assets and the scripts to render them to moul-assets. This would move the problem away from building the client code, but still require maintaining the tools. Since we don't update/change the assets frequently, the need to build them with each client build does feel superfluous at times.I think it's a valuable part of the process that these assets can be built reliably and deterministically every time, and I'd rather not lose that aspect. The current Python script itself is relatively easy to maintain and flexible due to the inherent benefits of being written in Python (as shown by the modifications made to support our Gehn resources). At the same time, it's frustrating to have our build system depend on several libraries solely for such a small part of the client, especially when those libraries are prone to breakage due to lack of upstream maintenance and support.
Thoughts on whether this should change, and if so, how?
Beta Was this translation helpful? Give feedback.
All reactions