After @urquan's recent post about participation on TheMotte not being as enjoyable anymore, I dropped a comment suggesting a group creative activity, to take our mind off the Culture War, and give people other reasons to come here. The idea to make a mod for Freespace 2 got fairly good feedback, so I'm making this post to give you my pitch, and to coordinate development.
High Fleet (in Spaaace)
Freespace is a space fighter sim that sends you to fight alongside massive capital ships duking it out with each other with giant beams, shells, and missiles. It does a very good job making you feel like you're a part of a bigger war machine, doing your part to fulfill a grander strategy... the problem is most of that is accomplished through good mission design, scripting, and storytelling. You might sometimes wonder if you could have turned the tide by knocking out a beam cannon, or disabling a ship's engines before it gets away... why yes, you could, and this is why these subsystems have been made indestructible during that particular mission. Such are the joys of story-driven games, so I'm not even mad, but this made me feel there's something missing in the game.
By contrast High Fleet is a part-strategy part-action-arcade roguelike, where you take your fleet behind enemy lines to strike at their heart. The combat mechanics are the least interesting part of the game in my opinion, but the strategic view in which you spend most of your time feels very compelling. You can split your fleet, and have your detachment clear up the area to prepare for the arrival of your flagship, gather intelligence, or look for allies. You do all of this while dodging patrolling enemy strike groups.
So why not combine them? FS2 had been open sourced, and now features an extensive Lua scripting API, and an optional libRocket based interface. It is possible to implement a High Fleet-like strategy game in libRocket, and dynamically generate a combat mission upon encounter. The lore of Freespace has a few things that lend themselves to this sort of strategy game:
-
FTL is done through subspace jumps. Throughout the vanilla campaign there are references to ships needing to power up their drive before they can make a jump, and while to my knowledge rules governing subspace drives have never been hashed out (and may in fact be contradictory, in service of the storyline), setting up something simple like “bigger ships need more time to charge their drives” will already create quite a bit of strategic depth. Maybe you have a destroyer that's more than enough to deal with a threat you detected, but if you use it, it'll be comitted to that battlefield for an extended period of time, what if they're just luring you away from their true objective? Do you scramble a few fighter wings, and send them instead, since they'll be easier to recall if necessary?
-
Inter-system jumps rely on “jump nodes”. This limits where you can travel to from the current system, and allows for blockades which you might need to break through (or set up yourself if you want to make sure your enemies won't escape).
-
Subsystem mechanics. Each ship has a bunch of subsystems, typically: weapons, engines, sensors, and navigation. You might not have enough firepower to destroy an enemy ship, but maybe it's worth it to sacrifice a few fighters to knock out a subsystem? Maybe you're want to raid a freighter convoy, but there's a patrolling anti-fighter cruiser nearby that will make mince meat out of you. If you knock out it's engines it will give you enough time to deal with the freighters. Maybe you're trying to lose a pursuit, and there's no way you can jump out of their sensor range - why not knock out their sensors then?
-
Ship specialization. It's hard to give justice how much room to play there is here, even with just the vanilla assets. Some capital ships are very good at taking out fighters, some are very good at taking out other capital ships. Bombers are a threat to even the biggest capital ships, but are vulnurable to fighters and interceptors, and need to get into point-blank range or there's a high chance their payload is intercepted. Reconessaince will be very important, and the player will need to adapt their strategy to what they have vs. what they're up against.
Hopefully, the result will be the best of both worlds - dynamic strategic gameplay, with a fun combat system.
What we have, and who/what do we need?
-
I'm a developer, and I'm happy to handle to coding side of things, although the more, the merrier
-
@FCfromSSC has offered to handle the 2D/3D art. I don't know if you can/wan't to handle this side in particular FC, but we'll need someone who can design a nice interface.
-
@netstack has provisionally offered to join in unknown capacity.
-
a writer would be nice to have. A strategy game could still be fun with no/minimal story, but if we're cloning High Fleet I think it would be nice to have a storyline. If nothing else, can someone please come up with a title for this project!
What's the plan?
-
I'd say step one would be the UI, and the intra-system strategic gameplay, and dynamic mission generation.
-
After that we have to decide about the inter-system/"high level" strategic gameplay. Do we indeed just copy High Fleet, or are we adding/changing something?
-
Do we use the Freespace universe or make our own? The former is easier, and we can reuse existing assets, but maybe our artists want to run wild?
Jump in the discussion.
No email address required.
Notes -
Coding Update 001 - Initial Commit
Ok, I cleaned up the code to a somewhat presentable state. I created a github repository for the project. I think Knossos offers hidden releases, but I don't want to pollute the FS2 community's hub until we have something we can show off.
The mod is based off the SCPUI Test Mod, so I included 2 branches with that in the repository for reference - one with version 0.6.0, that seems to work without issues and off which I've actually been working, and one with the current 0.9.0 version where a bunch of stuff seems to have been refactored, but it doesn't work for me when I try to run it.
Install instructions are in the README, you basically just need to clone it into the FS2 data directory (i.e. where all the mods are).
Right now all we is the implementation of the points @netstack's proof of concept comment:
This is what it looks like. Left click to select, right click to move (only works on friendly ships). If the ships end up close enough to each other, it triggers a mission where they are spawned and start fighting each other. As the player you are still in a fighter, since having a player ship is the minimum requirement for an FS2 mission to work. Later on I'll figure something out for putting the player in the ship that's actually present on the scene.
Next up... I'm not sure, there's a bunch of things to tackle:
Reading / writing the world state from/to files instead having it hardcoded in scripts
Fleet management. It's would probably be hell to micromanage every unit on the strategic map, so they should be merged into fleets. Part of the management could be to set up their initial deployment formation on mission start
Tactical mission view - a handier way to give orders during a mission than the vanilla comm menu.
@FCfromSSC, for the moment I'll be using the SCPUI mod's graphics as placeholders, until we design something that's going to fit our universe better.
Great work!
I was able to download the mod and run it. No issues loading, opening the campaign UI, or completing a single mission. (I haven't figured out how to run it at the same time as other mods, like MediaVPs, but that's probably for the best.)
Was it intended to "end" the campaign after one fight? I expected to have one battle for each enemy icon.
Your script for managing the UI was clear and easy to understand. I feel like I could take a swing at adding strategic travel time this weekend, if you want:
Add a play/pause button and hotkey
Right-clicking chooses a destination
While unpaused, the player fleet moves towards that destination
Getting close enough (possibly indicated by a circle around the target?) triggers the battle
In theory, enemy fleets could move, too
My only other note is that I would prefer HighSpace to SpaceFleet.
It's a small update not worthy of a top level comment, but I just added a MVPS compatibility package to the mod
More options
Context Copy link
The mod.json I uploaded is set up to run standalone, but I think this can be changed by adding other mods as dependencies. Another option is to use the
-mod
switch as per the readme. It accepts a comma-separated list of mods (i.e. the names of directories their data is in).But yeah, you will run into issues with this. MediaVPs is not compatible with SCPUI that our mod is based on (the font sizes will get all out of whack for some reason). I'm planning to get to the bottom of it at some point, but for the time being, it is what it is.
Yeah, it was intended, in the sense I just wanted to test jumping into procedurally generated missions from the strategic view, but I can't believe I didn't think of the latter. "Cleaning up the map" is already a basic functional game, so I'll try to add that over the weekend.
Please do, the only thing I'm wondering about is this:
FS2, as well as all the mods I've seen use subspace jumps for FTL, which would imply more of a turn based strategy mechanic. I was also thinking of something more real time, in the vein you describe. The other day saw a reference to other "Warp Types" in the FS2 source code, so maybe they have other warp effects that will lend themselves to more linear, and we could use those for in-system travel. That said, I don't know what would be more fun from a gameplay perspective. I had some ideas bouncing around my head about part of the game being trying to triangulate the location of the enemy fleet based on the jumps that happen within sensor range. Then again, the idea is still very vague in my head, and I don't know anything will come out of it.
So all this to say - go ahead, just keep in mind we might rework it all later.
Another thing I can't believe I didn't think of. I already changed the name of the repository (which means you need to update your git remote - sorry), I'll update the readme now.
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link