Replies: 1 comment
-
Hello @sal-4! Thanks for the kind feedback, I really appreciate it. The project was started using a technique that allowed incremental progress. The game was, in theory, in playable state all the time. After finishing the reimplementation of the game engine and similar fundamental parts that were in pure C it turned out that the rest of the game is in C++ and that somewhere deep inside the sophisticated C++ class hierarchies and seemingly endless call graphs objects are getting prematurely destructed and that leads to the rapid random crashes on modern operating systems that at the end makes the port unplayable. Soon after that I realized that the incremental approach cannot be followed anymore as the C++ ABI is not interoperable, nor portable. Sure it would have been possible to develop a wrapper layer or similar that could make original Watcom C++ ABI and modern GCC work together, but the more I learnt about Watcom C++ and modern C++ ABI in assembly I realized that it would introduce a lot more work and due to the massive number of template classes the wrapper would have to be very sophisticated to say the least. I gave up on that. So now the reimplementation is following the big bang approach. For some time the bottom up development method allowed step by step integration of more and more features, but that is over too. The core of the game, the AI, is so intertwined that step by step integration became impossible and without that testing became extremely difficult too. Play testing would be very important as I make a lot of mistakes in the reimplementation and without the ability to test the production code these defects are accumulating and many of them are latent ones that lead to common cause failures that just exponentially increase the difficulty to find root causes. The industry average is 50 defects per 1000 lines of code. The C++ part of the source code is 41000 lines of code without comments or empty lines. There are hundreds of reimplementation defects to be fixed for sure. As of today 1598 functions remain to be reimplemented. Currently the path manager is in focus. The AI player, the AI manager, the task manager and dozens of AI tasks and related topic managers like the buildings manager, most of the unit info class members and the units manager are all waiting to be done. Progress will slow down again as most of these require a lot of research first. These classes utilize dozens of non polymorphic utility or POD classes, many are even allocated only on local stack, and for those there are no RTTI or similar meta data to help decipher them. After finishing up the reimplementation of the remaining C++ classes and managers, there will still be three major topics to be resolved. The first one is the net code as IPX is fundamentally different compared to IP. The second is the sound manager as SDL_mixer does not support audio loop points for SFX. The third is that the MVE player is incomplete from the game engine side still. All this means is that up until the very end there is always a risk that the port will never be finished and accepting donations with such an outlook feels like a scam. When we reach the point that the reimplementation is comparable to M.A.X. I might reconsider this. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the hard work! Every update is extremely exciting, and makes me think of the times we had to work around defects in multiplayer games. Using copies of the last save file of the host, loosing progress every time.
I wish I could donate! Is there a way I missed?
Sal from maxr.org, cheers !
Beta Was this translation helpful? Give feedback.
All reactions