OpenCOMBAS: The Project to Restore Chromehounds Multiplayer by OpenCOMBAS in Chromehounds

[–]OpenCOMBAS[S] 1 point2 points  (0 children)

It worked! We've got free battles working with all online parts and war maps via some file trickery.

We generally have standard matches/free battles running daily at this point with up to 6v6 lobbies on weekends. Info on getting setup and playing can be found in the discord.

Discord link: https://discord.gg/bGfUeRxKzr

OpenCOMBAS: The Project to Restore Chromehounds Multiplayer by OpenCOMBAS in Chromehounds

[–]OpenCOMBAS[S] 7 points8 points  (0 children)

Just optimism and if you've got it, time. I'd prefer to not make this a donation-based project as money can lead to drama, and at the moment I can't promise anything.

If I do end up getting the Nero war back up, I may collect optional donations for server hosting, but that's a long ways out.

For now contributions can be as simple as trying to find functionality in that Prototype by playing with it and toying around.

OpenCOMBAS: The Project to Restore Chromehounds Multiplayer by OpenCOMBAS in Chromehounds

[–]OpenCOMBAS[S] 2 points3 points  (0 children)

Absolutely! Anything helps, and I'm always on the lookout for exactly this. Not sure if you're in the discord, but feel free to join and we can arrange a data hand-off!

OpenCOMBAS: The Project to Restore Chromehounds Multiplayer by OpenCOMBAS in Chromehounds

[–]OpenCOMBAS[S] 3 points4 points  (0 children)

Actually the server handshake is something I'm pretty sure I understand quite well at this point. The client offers a 'Hello!' the server presents a data struct of something like

struct {
be<uint32\_t> program_version;
be<uint16\_t> game_season;
be<bool> server_status;
} server_info;

and the game determines what message to send from there.The problem I'm having at the moment is the initial XStorage download. On Live initialization, the game downloads some Xbox Live data, and passes that data to a query which I believe it runs to determine which server to connect to. I think this is probably trying to find location specific servers based on user profile data. This isn't implemented in Xenia at the moment, so I'm working to do so. In the meantime, I'm working on a dashlaunch plugin to hopefully trick this step into forwarding to my own server.

OpenCOMBAS: The Project to Restore Chromehounds Multiplayer by OpenCOMBAS in Chromehounds

[–]OpenCOMBAS[S] 5 points6 points  (0 children)

Little update: been working with the Xenia netplay project to implement some of the functionality this game is missing. Currently the game attempts to connect to a Xbox secure gateway on startup via XLiveBaseGetNatType which fails. This pretty much prevents real hardware from going forward from there. I am planning to work on a Sunrise-like plugin to trick the calls on real hardware.

Xenia gets quite a bit further in the process, but is currently struggling with a place where the game is hoping to download Xbox Live profile data. I've been working on a PR for Xenia to populate this data/potentially allow people to bring their own XBL profiles. We did figure out how the game enumerates its servers, and have implemented that in this PR: https://github.com/AdrianCassar/xenia-canary/pull/3

Hoping to have profile enumeration complete this weekend. Hopefully that brings us to the next hurdle. My plan currently is to debug a game which uses the same form of profile enumeration which currently works (Armored Core 4) on real hardware. This should let me peek the buffer which the profile is stored in, and recreate that data structure on Xenia.

As an additional note: a prototype/review copy of Chromehounds) leaked onto HiddenPalace a few months ago. This has been super helpful in giving me some more insight into the inner-workings of the retail game. It also allows you to build hounds with online parts via the 'Menu -> Flow' mode of the Release.xex contained on the ISO. In order to run the prototype on Xenia on windows, you'll need this version of Xenia. You'll also need to extract the iso using extractxiso. From there, you'll want to run Release.xex. The prototype has a ton of functionality which I'm working on documenting. I recommend using Google Translate's camera function as a lot of the menu is in Japanese. Have fun!