Coder Social home page Coder Social logo

Comments (4)

klei1984 avatar klei1984 commented on September 27, 2024 1

Hello @gab , I totally agree with you. Alliances was a highly requested feature also for M.A.X. 2 which was delivered several months after the initial release of the 2nd game in the last v1.4 patch by the developers but at that time the dedicated servers were already empty and not much later the game was abandoned by Interplay. Playing against the AI, a much more sophisticated AI, with a team would be incredibly fun. I also want to see it happen.

Changing the architecture will become possible only after most of the game modules got reengineered. Architecturally the network code of M.A.X. 1 is not fit for Internet play and alliances are also not supported by the AI, but none of that matters, these changes could be made as soon as we have a working baseline. Adding more players will also not be difficult with a more flexible GUI that can visualize more players than four.

The only bad news is that all this is years away considering the amount of research that is required to rewrite the complex C++ class hierarchies of the game. By the way it is quite interesting that the AI modules of M.A.X. 2 and the platform library used by M.A.X. 2 is basically the same one that M.A.X. 1 had. It is already confirmed by Interplay that the M.A.X. 1 source code is lost, but there is no information about M.A.X. 2. Who knows, maybe we will get lucky and the research could be done faster.

from max.

gab avatar gab commented on September 27, 2024

Sounds good! "Years away" is a bit disheartening, but we've waited up to now, what's a few more years :P .
Don't forget to get help from other active M.A.X. projects like MAX Reloaded and MAX Touch for peripheral stuff like decoding the game's video format (I believe maxr in particular got that specific part down) - I guess you like the reverse engineering challenge, but on the other hand it could save you months of work.

from max.

klei1984 avatar klei1984 commented on September 27, 2024

I look into existing sources of design and solutions of course. But now that most if not all game specific formats and format parsers are known, even though color animations is a gray zone still, the true challenge is to understand the game logic itself which is very specific to the way the game organizes data which goes along with the original software architecture. E.g. to understand the AI we have to understand first what data the AI processes. The other still running projects took the liberty to create their own architectures and try to mimic the game aspects that are observable and whenever they see fit they even change aspects of the game design and the way they use game data. The AI is something they cannot easily observe even if the game has disabled, but built in logging services for the AI task manager component.

Any ways coming back to the format parsing, MAX:R in particular uses an MVE decoder that has a copy left GNU GPL 3 license which is not compatible with this project's MIT license and the original decoder differs architecturally from all the copycats. I know about five different decoders, all of them have copy left licenses. But the video decoding algorithms are well documented in articles as well, I am not afraid of this topic and videos already render well for x86 targets any ways except for audio for which I also found integration examples, although quite sloppy ones. Another interesting aspect is that none of the existing decoders support the original solution's frame dropping, audio synchronization or closed caption rendering features which is sad. I want these useful features in. Captions would be especially useful for languages that were not supported by the original game.

When I forecast years of work to come I refer to the C++ part of the game actually which is simply time consuming to understand and replicate. M.A.X. has 5704 functions. Out of that about 1700 functions are system and platform libraries that are already sufficiently understood or even fully replicated. The rest of the functions, the majority of them, are polymorphic C++ class hierarchies and those implement most of the actual game specific features. From the ~4000 C++ functions only about 1500 are partly or fully understood and way less is reimplemented as on this architectural level everything is tightly coupled to the rest of the subsystems. The sound manager was the last C++ class which was somewhat independent from all the rest.

I am in constant search for resources that might aid the engineering work, but even if I can find relevant people most of them ignore my pleas. Some even promise to help, but then again most of them just forget their promises a moment later. I can understand them though, life goes on... M.A.X. is just history and M.A.X. 2 is probably a very bad memory nobody likes to remember. Even though M.A.X. 2 has now the biggest potential. Did you know that M.A.X. 2 had a closed beta test? There were 831 beta testers. The early beta builds had top to down rendered units in 16-bit color and probably those builds had debug services that later builds did not have. I want to get my hands on such an early beta build.

from max.

gab avatar gab commented on September 27, 2024

Thanks for all the details, great writeup.

I have to revisit MAX 2 at some point to see if it was that bad (besides the bugs of course).

from max.

Related Issues (12)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.