Confederation [Work in Progress]

On-off-lurker finally registering to voice my appreciation for both this project and the Wing Leader tech demo, since both creators seem to be active in the thread! As someone who grew up with the first two Wing Commanders, Privateer, and Armada, this is like a dream come true. 👍

Speaking of dreams, I think my ideal Wing Commander game would have an Armada-like strategic layer, but with a dynamic generator that spits out pilotable/autoresolvable missions similar to WC1/WC2 for when two opposing fleets are present in the same system. Would this kind of thing be within the scope of Confederation, or are you strictly focussing on recreating the 'classic' story-driven experience of the originals?
 
Speaking of dreams, I think my ideal Wing Commander game would have an Armada-like strategic layer, but with a dynamic generator that spits out pilotable/autoresolvable missions similar to WC1/WC2 for when two opposing fleets are present in the same system. Would this kind of thing be within the scope of Confederation, or are you strictly focussing on recreating the 'classic' story-driven experience of the originals?
It's something which I plan to implement gradually in layers, but yes - ultimately some kind of dynamic/strategic campaign system is exactly the sort of thing I'd like to implement. :) The current plan is that the first layers of that will actually be released prior to the WC1 campaign being fully playable; i.e. simple preset or dynamic scenarios to test things out.

Having the WC1 campaign fully playable is the primary goal until it's achieved, but the way we'll get there will be a little bit roundabout because of the nature of the project - e.g. I want to look beyond WC1 and make sure the core systems will scale up into the open world of Privateer.

Right now I'm churning through lots of dull-but-necessary stuff, e.g. polishing up the addon system (essentially a mod manager) which lets you add/overlay content; change the load order etc... Lots of stuff to get through, but good progress is being made!

I'll be releasing two optional addons to begin with, both for WC1 - my widescreen art package which is very nearly complete, and another which fixes the minor errors I've spotted in the WC1 art. Adding Halcyon's missing pips during the first medal presentation frame, removing a rogue pixel in Iceman and Angel's portraits, and changing "Dart" to Hunter, "Joker" to Maniac on their helmets:

hunter-fixed.png
.
maniac-fixed.png


If anyone's aware of any other art hiccups, let me know and I'll try to add fixes for them. :)

Just on the addon system, I've decided to go with a Quake 3 approach, where they're just renamed ZIP files. That should make life as easy as possible for people creating their own addons.
 
That all sounds wonderful and well-organized! I'm still somewhat in disbelief at how this whole project just appeared out of nowhere for me.

One more thought that came up when you mentioned setting up the core systems for easier expansion later on: If you're going to support a strategic layer, it might be a good idea to allow each star on the hyperspace map potentially contain more than just one planet, unlike Armada. Even if that's not how it'll actually be implemented in the beginning, having the code in place to eventually allow some back-and-forth fighting within vital and heavily populated systems seems like it could lead to some really fun gameplay.
 
I'm still somewhat in disbelief at how this whole project just appeared out of nowhere for me.
I've been working on it on-and-off since 2016 or thereabouts, but posting about it (or more the community response) has been a big motivation boost. :)

One more thought that came up when you mentioned setting up the core systems for easier expansion later on: If you're going to support a strategic layer, it might be a good idea to allow each star on the hyperspace map potentially contain more than just one planet, unlike Armada. Even if that's not how it'll actually be implemented in the beginning, having the code in place to eventually allow some back-and-forth fighting within vital and heavily populated systems seems like it could lead to some really fun gameplay.
New game modes, missions, campaigns, art, translations and so on wouldn't have to obey the limits of the original engine, since Confederation isn't based on the original game engine(s) at all; new content isn't stored in the old formats.

Virtually all of Confederation's high-level gameplay and game interface logic is written in AngelScript. All of the scripting is accessible in plain text and moddable via addons. So while I fully intend to work up an expanded gameplay addon (sounds like) more or less in the direction you're describing, it's by design that others can create their own addons to give a totally different experience; or just make minor tweaks to ship stats, whatever!
 
Just thought I'd post a quick progress update, mostly probably-dull semi-technical stuff - sadly some contract work is kicking my butt at the moment, so the 26th is looking kind of dubious... But things are still progressing steadily!

I'm currently knee-deep in the revised audio system, which (amongst other things) I'm hoping will be able to render the OPL2 (Adlib) sound effects and music purely from the original data. Things seem positive, but I'm not finished with it yet. My previous effort involved using some external data to send to the OPL chip emulation code, but it was a little janky and not ideal. MT-32/CM-32L emulation is already re-integrated and working (bring your own ROMs as usual :p).

Another thing I've been working on improving is the texture atlassing, which I'm using to support quite a broad set of GPUs (e.g. most from around 2006 onwards should work, plus weaker embedded/Intel ones). This is quite basic stuff, where you pack multiple textures into a single larger one, so the renderer doesn't have to swap between them while drawing - since as a rule of thumb the more things you can draw in one go (in one "draw call"), the better the performance. Even the most retro graphics can easily bottleneck on a top-of-the-line GPU without taking this sort of thing into account.

Creating atlasses is more often done using dedicated tools and then shipped with the game, but since Confederation loads directly from the original game data I decided to pack the atlasses on the fly. For instance this is the atlas in video RAM while running the OriginFX logo scene:

atlas.png

The generated atlas is different every time a scene starts, since it's assembled with some randomisation involved. On the technical side there's actually a fair bit going on to make this happen efficiently; it uses k-d trees and a genetic algorithm to hone in on an optimal solution, using all CPU cores to do so. It also crops out empty border pixels for each sprite, and pads out the colours to make sure there are no artifacts when rendering; here's the same atlas without the alpha channel:

atlas-noalpha.png

Anyway that's it for now - maybe some of that was interesting to someone out there :D; next update should have some gameplay video(s), if not the first test release.
 
Last edited:
Don't undersell yourself, even this 'technical' stuff is REALLY interesting, especially considering that none of the source material was designed to be picked apart and analyzed on the consumer end like you have been doing!
 
Just thought I'd post a quick progress update, mostly probably-dull semi-technical stuff - sadly some contract work is kicking my butt at the moment, so the 26th is looking kind of dubious... But things are still progressing steadily!

I'm currently knee-deep in the revised audio system, which (amongst other things) I'm hoping will be able to render the OPL2 (Adlib) sound effects and music purely from the original data. Things seem positive, but I'm not finished with it yet. My previous effort involved using some external data to send to the OPL chip emulation code, but it was a little janky and not ideal. MT-32/CM-32L emulation is already re-integrated and working (bring your own ROMs as usual :p).

Another thing I've been working on improving is the texture atlassing, which I'm using to support quite a broad set of GPUs (e.g. most from around 2006 onwards should work, plus weaker embedded/Intel ones). This is quite basic stuff, where you pack multiple textures into a single larger one, so the renderer doesn't have to swap between them while drawing - since as a rule of thumb the more things you can draw in one go (in one "draw call"), the better the performance. Even the most retro graphics can easily bottleneck on a top-of-the-line GPU without taking this sort of thing into account.

Creating atlasses is more often done using dedicated tools and then shipped with the game, but since Confederation loads directly from the original game data I decided to pack the atlasses on the fly. For instance this is the atlas in video RAM while running the OriginFX logo scene:

View attachment 13343

The generated atlas is different every time a scene starts, since it's assembled with some randomisation involved. On the technical side there's actually a fair bit going on to make this happen efficiently; it uses k-d trees and a genetic algorithm to hone in on an optimal solution, using all CPU cores to do so. It also crops out empty border pixels for each sprite, and pads out the colours to make sure there are no artifacts when rendering; here's the same atlas without the alpha channel:

View attachment 13344

Anyway that's it for now - maybe some of that was interesting to someone out there :D; next update should have some gameplay video(s), if not the first test release.
Thank you so much for this write up. Repacking sprite sheets from 1991with GPU driven genetic algoritms to save memory calls is a wonderful encapsulation of so many programatic and hardware trends. I teach CS and it's going to be very hard not to talk about this in class tomorrow.

Thanks for sharing out!
--andrew
 
Hey there :) I'm working on Originator at the moment; there's a few things I want to finish there, but after that I'll be back to Confederation. Most of my work on Originator so far is directly helping this project (and hopefully other community projects). Long-term goals like supporting Privateer seem a lot more realistically achievable now than they did before.

Art-wise for WC1 I still need to finish the wraparound cockpits for the Raptor and Dralthi (perhaps 50% done each). Here's the current versions of the Hornet, Scimitar and Rapier:

hornet.jpg
scimitar.jpg
rapier.jpg

I've also done the little extensions at the top for the ejection sequence, but they probably aren't worth showing.

The biggest thing left is the remaining midgame cutscenes. There's three more for the base game, and four over the two expansions. There's also the side views of the flyable ships for the takeoff and landing sequences... I'm contemplating cheating there if I can, but there may be no way around it; I'm not entirely sure yet.

Apart from those, I'm finished doing my first pass on everything else; I don't think many of them are that interesting though. Here's another one for the sake of it (the green shows what I've added to it):

clap-v2.gif


EDIT: Slightly improved version.

Anyway, progress continues; Originator has just turned into a bigger thing than I thought it would. Pretty soon Confederation will be back at the top of my hobby project priority list. :D
 
Last edited:
Another midgame scene down. Six more to go...

midgame02-fail-v2.gif


Original frame for reference:

midgame02-320.png


EDIT: I noticed some mistakes so I've updated it slightly. Here's the background without the letterboxing:

midgame02-bg.jpg


All of the original layers are extended so it can parallax downwards as in the original cutscene. :)
 
Last edited:
This is coming along great. Excuse me if this has been asked before, but do you plan to replace any of the ingame sprite assets as part of this? i.e. the fighters and ships, maybe making them higher res and more detailed, similar to H-Days seemingly abandoned Wing Leader project.
 
In order to do a high-res update, I would need to collaborate with folks who have 3D modelling skills. Mine are rudimentary at best! Painting high-res characters is something I could have a go at, given enough time, but I'd rather leave it to someone who can do a better job of it - which isn't hard; finding someone willing to do it is the real problem...

I feel a bit awkward and reluctant about specifically requesting collaboration/help from others, especially while this is still vapourware. Still, if (for instance) at some point there's a chance to bring Wing Leader out of hibernation then I'm very keen to make that happen! :D

In the meantime I've done some experiments with voxel ships/objects; it's still a lot of work but is at least feasible for me to do myself... Eventually. I'm looking at doubling the resolution of capital ships, and Defiance Industries has made a handful of blueprint-accurate reference models which helps a lot, but it's still a longer-term experiment. Nicely done 3D models would undoubtedly be better, but I don't have the skill myself to do them in the way I'd like to see them done...
 
Back
Top