Chomenor / ioef-cmod

Improved Elite Force multiplayer client and server based on ioEF
http://www.stvef.org/cmod
GNU General Public License v2.0
15 stars 8 forks source link

Enhancement - campaign #9

Open catskull opened 1 month ago

catskull commented 1 month ago

I would love to be able to play through the campaign using this engine! Are there any big technical limitations when it comes to supporting the campaign?

Chomenor commented 1 month ago

I believe it is possible technically. I know some people have worked on a single player port based on Jedi Knight 2 code but as far as I know it hasn't been released at this point due to licensing concerns.

It's possible that a project like this using only Quake 3 licensed code could be in slightly better standing legally (stronger case for fair use exception on GPL/noncommercial conflicts), but I'm not sure. It would still be a lot of work and I'm already responsible for a lot on the multiplayer side of the game, so it would be hard to take on such a project by myself.

It would be nice to have a better single player client. I might explore some options for what could be done in cMod but I don't expect anything soon unfortunately.

catskull commented 1 month ago

Thanks for your answer! I booted up cmod on my Mac and had a few rounds, very fun!

If you don't mind me asking, what exactly needs to be done to support single player? I'm a total q3 noob but had a browser through some of the pk3 files. From the engine's perspective, what is the difference between a campaign level and a multiplayer level? Is it the cutscene/objective scripting?

Chomenor commented 1 month ago

Great, I'm glad it worked for you!

In multiplayer cMod the code is separated into two parts, the engine and the game modules. By default cMod uses the game modules located here but alternative ones can be loaded to support mods. There is a standard interface between the engine and mods, for example the calls that the server game module is allowed to make back to the engine are located here.

The difference with a campaign level is you need to load the single player version of the game modules instead. These were released by Raven as part of the original mod SDK (same as the multiplayer version), and contain most of the scripting and interactivity features to support single player levels. However it's not possible to load this in the multiplayer engine currently, because the interface is different and there are some missing functions that are part of the engine that need to be reimplemented.

I don't know exactly what the challenges will be without actually working on the project, but some areas that likely need work are video cutscene support (needs bink codec), mid-level save support, and certain graphics and effects. Daggo on the EF discord would know a lot more since he's the one who did the original JK2-based port.