I almost have the publishing done. I now have 10 separate publish steps, each of which can have multiple events, but not guaranteed as to the order. I have assumed the following steps
0 - clear the published/ directory. Shouldn't be used for anything else [complete]
1-4 - prepare game data. For game/plugins to implement
5 - package game data [complete]
6-8 prepare executable and copy, along with plugins etc [complete]
9 - run install scripts. For plugins to implement
I don't think that there should be any reason why this should be set in stone, but it seems like a reasonable guide for what happens when. I will try to work out writing directly to the package file, but that should be fairly simple. Will I be able to do something like Maratis::getInstance()->writeLevelBin() or something?
EDIT: For now I've just copied the contents of meshs/ and levels/ to the published/ directory and renamed the player executable to the projectname(.exe) I have yet to set up scons to split npk up, but I am confident that I can do that pretty quickly now I know how the build system is set up. I also want to test it quickly on Linux. As for OS X, I could, potentially, use one of the work Mac Mini's, if I have time tomorrow. Otherwise, I'll just upload it all again and let other people test it
Three things which I have come across. The first is something I've already mentioned, having the player renamed, the data packaged all makes for a more professional install, but with the .mproj file still in plaintext, and having to pass it as a parameter to the player executable makes it a little irksome. Maybe, as part of a publish step, we can embed the (binarised?) mproj? As the project is a fixed size (2 strings) we could potentially allocate space for it in the player executable and write the data in during the publishing?
Secondly, maybe allow to change icons for the executable, possibly just look if there are icons files in icons/ and again, write them into the player executable?
Finally, I don't think there's much reason why the "engine" can't be distributed with the player (and libraries) for all OSs/devices. Then from the editor (which would have to obviously be OS specific) when you click publish, it would ask you what you want to publish for (tick boxes?) and then run through all relevant publishing steps
None of those 3 are anything major, just something to think about I might even look into the embedded project, if I haven't got any art back to start work with on my project