TheAssemblyArmada / Thyme

An open source re-implementation of Generals : Zero Hour written in C++.
GNU General Public License v2.0
586 stars 59 forks source link

Game and Mod Define and Identification System #88

Open tomsons26 opened 5 years ago

tomsons26 commented 5 years ago

Investigate how to implement a system that could be used to define various elements of games and mods. For example :
Allowing to for example load a mod into a specific lobby in multiplayer, thus not having a situation where all game and mod players are clumped together. Have savegames and replays contain a id and version number where a major number dictates if the replay/save is compatible with version X.

xezon commented 3 years ago

This is needed yes. For starters, we could build a client hash off of Game Code Hash, INI hash and W3D data hash. This can uniquely identify a Mod and be reflected in Game Room description. Clients should then be compatible to other clients that match their hash. To make hash more user friendly and presentable in game, it can be translated into text by looking up file in game install, for example modid\my_cool_mod.id. So game client can understand hash by reading *.id files that Mod Creator can supply.

Another note: There already is a "native" way to filter Network Lobby: Advanced user can change IP Port of Network Lobby by changing it in executable binary. Only Clients with matching IP Port can see each other.

tomsons26 commented 3 years ago

Firstly at any case #18 or something similar is needed. The existing mod loading feature is unfinished and very iffy.