sof2plus / sof2plus-engine

An enhanced dedicated server replacement for Soldier of Fortune 2: Double Helix
GNU General Public License v2.0
4 stars 2 forks source link

About this project #1

Open kungfooman opened 6 years ago

kungfooman commented 6 years ago

Hi, very nice to see that some people are working with SoF2.

I work a lot with ioquake/openjk and I wonder how this project actually works. Do you use hacked/reverseengineered original executables (to fix exploits etc.) or custom forks of ioq3/openjk like https://github.com/kneirinck/OpenSoF2MP ?

AJSchat commented 6 years ago

Hello Hermann,

First of all, my apologies for not having included a proper repository README file yet. Thank you for your interest.

SoF2Plus started with the idea to create a dedicated server where people from all game versions can play in simultaneously, to close the gap between the retail version of the game (v1.00) and the patched version (v1.03, also known as "Gold").

To do this, great modifications are not only required on the server, but also in the game module. I realized developers would actually have to make modifications in their game Mod code to be compatible with SoF2Plus. Therefore, I decided to drop all legacy Mod support and continue working on SoF2Plus with the idea to create an enhanced SoF2MP engine (and game module SDK) with more improvements than just the multiple game version compatibility. This is also why there's another repository in this organization named "sof2plus-game".

SoF2Plus is a fork of ioquake3. There are bits of code from lots of repositories, most of it rewritten to be entirely C (like ioq3) and omitting the client stuff (if present). I've used knerinick's OpenSoF2MP for parts of netcode and some syscalls, Jedi Academy and Jedi Outcast source dumps for systems like Ghoul II, GenericParser2 and RMG (WIP). The source code found in JK/JO is not 100% compatible with SoF2MP, so I reverse engineer the SoF2MP v1.03 executable to get the code fully compatible with SoF2MP.

In its current state SoF2Plus is compatible with SoF2MP v1.03 and standard gameplay is already possible. Once this project is fully compatible with SoF2MP v1.03 and all of its features, I will "launch" the project, which also entails creating a proper README (and list all of the contributing projects, of course), and continue working on the multiple game version compatibility.

On a side note, I also plan on continuing OpenSoF2MP. I've reverse engineered quite a bit of the original SoF2MP which would make it a waste to only use in SoF2Plus.

kungfooman commented 6 years ago

Thanks alot for the info, that made it clearer to me.

I just compiled the engine and game repo and it worked perfectly. The first time since years I connected to a SoF2 server and its even running on my cloud server. 😄

For the client side:

1) I downloaded http://www.sofplayers.co.uk/sof2-gold.shtml 2) Copied over the base folder from my old SoF2 installation 3) Downloaded ResPatcher http://www.sof2.org/Downloads_-_op_-_getit_-_lid_-_586.html 4) Applied ResPatcher to have native 1920x1080 resolution (need to select 640x480 ingame)

respatcher

Now this isn't too hard, but for most people this is already "too much work" I guess and the old exe is buggy on new systems, r_mode -1 doesn't work, neither does alt+tab for window switching etc.

So currently the server side seems already good to me, I gonna try a bit to have a proper 2018 client by testing the OpenSoF2MP client/cgame

kungfooman commented 6 years ago

Ok, update on OpenSoFMP: it works best with sof2plus (and original SoF2 servers, I assume, didn't test ^^)

I wrote all the important info into the README: https://github.com/kungfooman/OpenSoF2MP

I also made a YouTube "proof" video, so people can easily see how to get stuff to work: https://www.youtube.com/watch?v=5Ec_ipUoRGs&hd=1

Do you happen to know Ensiform's fork? He also has interest in this project: https://github.com/ensiform/OpenSoF2MP/tree/engine_update

He attempted to run SoF2 on the latest OpenJK engine version. It has rend2, so that could potentially mean SoF2 with PBR rendering and other juicy features: https://github.com/SomaZ/OpenDF2/tree/rend2-sp-pre-pass-dev

Lots of OpenJK coders are on the JKCommunity Discord server, discussing programming issues etc., maybe you want to join too? https://discordapp.com/invite/7hC7Zd

What do you think about adding https://github.com/kungfooman/OpenSoF2MP to https://github.com/sof2plus/ organisation? Then everything needed is nicely in one place with potentially synergistic effect. We could also provide official releases for easy/fast downloading, Windows and Linux

AJSchat commented 6 years ago

Thanks for checking out both SoF2Plus and OpenSoF2MP, the video was especially cool to watch!

As for the custom resolutions, I did a some work on patching this stuff in the executables a while ago. There result is here, in case you're interested: http://1fxmod.org/clpatch/ Providing SoF2 downloads with those executables makes it a little easier for the users to run SoF2MP on modern systems. This, of course, doesn't help for the other issue you mentioned (the alt-tab support, or the lack thereof).

I wasn't familiar with Ensiform's fork of OpenSoF2MP yet. I noticed he forked it earlier, but I never realized he actually did quite a bit of work in another branch.

I think that's one of the main problems with OpenSoF2MP right now. There are about 3/4 people who worked a while on OpenSoF2MP, but all stopped eventually. Code is all over the place.

As for the continuance of OpenSoF2MP, I personally think it is best to base everything off the latest OpenJK commit, much like Ensiform's fork. This entails starting off as a clean fork. There is so much work done across multiple repositories that it doesn't really make sense to pick one and continue it. Might as well merge all (working) changes into one clean repository fully up-to-date with the latest OpenJK code and try to keep it that way.

OpenSoF2MP should definitely belong in a GitHub organization rather than a repository by some user. I, however, don't think SoF2Plus is the one. The goals of OpenSoF2MP and SoF2Plus are anything but similar. I see OpenSoF2MP similar to OpenJK, with legacy Mod support and changes that don't affect core gameplay, i.e. a clean SoF2MP base. And a working client next to just the server. SoF2Plus tries to enhance the core gameplay in a number of ways, most notably the multiple game version compatibility. That's why I think OpenSoF2MP doesn't belong next to SoF2Plus, they are really two separate projects on their own.

Thanks for the Discord link, I will definitely join the channel in the near future!