A deployment is making the necessary files to run a game on a host.
The files are (as of now):
-- The four Luau static libraries.
-- The eight Luau script files.
-- The __images, images and setups folders.
-- The lib folder holding the Qt libraries.
-- The plugins folder for image formats and platforms used by Qt.
-- The engine executable ./main.
The engine can not be downloaded separately from a module. It is always downloaded as an implementation of a specific game (in this case Paths of Glory). Likewise, the Qt libraries and the Luau Virtual Machine are never downloaded seperately. All the files above are bundled together in a single module. That means that every module (an implementation of a game on the engine) will have it's own copy the Qt libraries and Luau VM. The reason for this is maintainability. A module will always work because it is independent.
Whenever bugs are corrected in the executable or script files (or newer versions of Qt or Luau VM are used or platform changes occur), a totally new version of all modules are made. Players can only play a game if they have the same version of the module.
The obvious downside is that modules will have much redundant code, but bandwidth and disk space is not a problem today.
A detailed overview of the files and their sizes (as of now):
The images folder is large because Paths of Glory contain a lot of counters/cards. The lib folder containing the necessary Qt files come in second.
A compressed (archived) version of the module (using tar.bz2) is 47,9 MB, a 41% reduction. This will be the size of a downloadable version of a Linux Paths of Glory.
Running Linux Paths of Glory requires Glibc version 2.38
You find the version of your Glibc with command
ldd --version
Linux Mint 22 runs Glibc 2.39. The Glibc library is always backward compatible, so no problem with Mint 22. Note that Linux Mint 21 uses GLibc 2.35 and can not run the executable.
A lot more testing on various Linux distributions is likely necessary to determine requirements. I am no expert in this matter.
The Qt libraries above are custom-build libraries. They are made from source code with the following configure options (stored in a configuation file called config.opt):
The reason for using custom-build libraries is that such libraries can be tailor-made to be as small as possible. This is important because the libraries are found in every single module, as mentioned above.
The most important command is -no-icu. This command alone cuts down the size with 32 MB. ICU (International Components for Unicode) is the way globalization is implemented, i.e. that an application can come in may different languages and character sets. GameTop will only come in english.
It takes an hour on a virtual machine to compile the libraries with the configuration given above. Features (like sql above) can be dropped. Dropping them does not make the libraries smaller, it just reduces compile time. The libraries themselves can also be made smaller by skipping or excluding components. This is very much a trail and error process, because it is easy to exclude a component that makes the libraries unusable. I am in no way an expert in understanding the dependancies involved. It requires a lot of knowledge on how Qt is build and what is needed from the underlying libraries.
Obviously it would have been an advantage to reduce the total size of 30,5 MB. I am sure it is possible, but would the reduction be significant?
Last edit: Rhett 2026-08-31
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
A deployment is making the necessary files to run a game on a host.
The files are (as of now):
-- The four Luau static libraries.
-- The eight Luau script files.
-- The __images, images and setups folders.
-- The lib folder holding the Qt libraries.
-- The plugins folder for image formats and platforms used by Qt.
-- The engine executable ./main.
The engine can not be downloaded separately from a module. It is always downloaded as an implementation of a specific game (in this case Paths of Glory). Likewise, the Qt libraries and the Luau Virtual Machine are never downloaded seperately. All the files above are bundled together in a single module. That means that every module (an implementation of a game on the engine) will have it's own copy the Qt libraries and Luau VM. The reason for this is maintainability. A module will always work because it is independent.
Whenever bugs are corrected in the executable or script files (or newer versions of Qt or Luau VM are used or platform changes occur), a totally new version of all modules are made. Players can only play a game if they have the same version of the module.
The obvious downside is that modules will have much redundant code, but bandwidth and disk space is not a problem today.
A detailed overview of the files and their sizes (as of now):
Grand total 81,7 MB
The largest files/folders are
alone being about 84% of the grand total.
The images folder is large because Paths of Glory contain a lot of counters/cards. The lib folder containing the necessary Qt files come in second.
A compressed (archived) version of the module (using tar.bz2) is 47,9 MB, a 41% reduction. This will be the size of a downloadable version of a Linux Paths of Glory.
Running Linux Paths of Glory requires Glibc version 2.38
You find the version of your Glibc with command
Linux Mint 22 runs Glibc 2.39. The Glibc library is always backward compatible, so no problem with Mint 22. Note that Linux Mint 21 uses GLibc 2.35 and can not run the executable.
A lot more testing on various Linux distributions is likely necessary to determine requirements. I am no expert in this matter.
The Qt libraries above are custom-build libraries. They are made from source code with the following configure options (stored in a configuation file called config.opt):
The reason for using custom-build libraries is that such libraries can be tailor-made to be as small as possible. This is important because the libraries are found in every single module, as mentioned above.
The most important command is -no-icu. This command alone cuts down the size with 32 MB. ICU (International Components for Unicode) is the way globalization is implemented, i.e. that an application can come in may different languages and character sets. GameTop will only come in english.
It takes an hour on a virtual machine to compile the libraries with the configuration given above. Features (like sql above) can be dropped. Dropping them does not make the libraries smaller, it just reduces compile time. The libraries themselves can also be made smaller by skipping or excluding components. This is very much a trail and error process, because it is easy to exclude a component that makes the libraries unusable. I am in no way an expert in understanding the dependancies involved. It requires a lot of knowledge on how Qt is build and what is needed from the underlying libraries.
Obviously it would have been an advantage to reduce the total size of 30,5 MB. I am sure it is possible, but would the reduction be significant?
Last edit: Rhett 2026-08-31