site banner

The Motte Moddes: HighSpace (February 2024)


							
							

Aaaand we're back!

The goal of this thread is to coordinate development on our project codenamed HighSpace - a mod for Freespace 2 that will be a mashup between it and High Fleet. A description of how the mechanics of the two games could be combined is available in the first thread.

Who we have

Who we need

The more the merrier, you are free to join in any capacity you wish! I can already identify a few distinct tasks for each position that we could split the work into

  • developers: “mission” code, “strategic” system map code

  • artists: 2D (user interface), 3D (space ships, weapons explosions)

  • writers: worldbuilding/lore, quests, characters

  • testers: the way the any program works always makes sense to the developer, so feedback from people who aren't me is always appreciated. This is a pretty easy way to get involved, though it does require an initial investment of buying Freespace2, at least until we manage to turn it into a proper total conversion, and use only our content.

A small note if you want to contribute:

Don't be afraid to ask questions however small, or silly you might find them. This is literally one of the primary functions this thread has. The Hard Light documentation is... there... but it's not great, and between that, the peculiarities of LUA, the FS2 scripting API, RocketLib, and other parts of FS2 modding, it really might not be obvious how to resolve issues you run into. I might not be able to answer all questions, but I've dabbled in all these things, so there's good chances I might be able to help.

What we have

  1. Capital ships

  2. Fighters

  3. A cruiser, loaded in-game

  4. Turntable render for a cruiser

  5. Turntable render for a destroyer

  • Some of the ships concepts are now imported into the game

  • A proof of concenpt for “strategic” system map we jump into on start of the campaign. It contains a friendly ship and 2 enemy ships, you can chose where to move / which enemy ship to attack.

  • A “tactical” RTS-like in-mission view where you can give commands to your ships.

  • A somewhat actual-game-like workflow. Attacking a ship launches a mission where the two ships are pitted against each other. If you win, the current health of your ship is saved, and you can launch the second attack. If you clean up the map you are greeted with a “You Win” message, or “You Lose” if you lose your ship.

Updates

November was a mess for me IRL, December was Christmas time, and even though January was busier than I would like, I managed to get some work in. The biggest change is the Battle Group split / merge feature. Also did some refactoring because there were way too many ship lists to keep track of whenever any ship is was added / removed, but of course that's not the kind of thing that lends itself to flashy gifs. Another change that I managed to get in back in November is setting up debugging with EmmyLua which helps in development a lot.

Bugs found

  • Cannot jump into mission without “Alpha 1” being present in group
  • Crash on win/lose of the game
  • System map targetting is off - sometimes the target ship moves on before you reach it

What's next

  • Improve the simplified orbital mechanics

  • Fixing the bugs

  • AI code for System View ships, first for plotting the course, and if time permits for some basic enemy movement as well.

8
Jump in the discussion.

No email address required.

Playing around with split / merge gave me a glimpse of future mechanics that might be coming down the pipe. Given that Freespace is a fighter sim, I'm of the opinion that the mod should be similarly fighter-centric on the mission-level. Freespace, and many of it's mods, had you flying patrol missions, which I couldn't quite reconcile with a solar-system level strategic view I had in mind. What's the point of flying a patrol mission? Wouldn't capital ships have better scanners, and therefore woudln't it make more sense just to scan the area with them? Consider the following rules from the demo scenario I proposed a while back:

  • Subspace jumps give away the ship's location at long range, unless line of site is broken by a large body like a planet/moon.
  • Depending on the distance between the detecting and jumping ship, and/or the quality of it's sensors, the destination of the jump can be estimated.
  • Infra-red sensors can pick up moving ships at short distances without giving away their own location
  • Radar can pick up static ships at short distances, but gives away it's own location

Let's say you pinned the enemy to a specific planet, but you can't warp to their precise location without getting a lock on your target. The High Fleet-esque active/passive scanning mechanics combined with different footprints for ships of different sizes, would automatically dictate the following tactics:

  • Warp in with your fleet to the planets neighborhood - but ideally outside the range of the enemy's subspace scanners / where you expect the line of sight to be broken
  • Detach smaller ships and fighters which have greater maneuverability, and smaller chance of being detected
  • Call in the rest of the fleet upon contact with your primary target.

Suddenly fighter patrols make some kind of sense. Small footprint, high maneuverability, relatively cheap so you can spread them out over a greater area, etc. Running into enemy wings would give you a similar effect of vanilla Freespace campaigns, until you find your primary target and can deploy your fleet for a “boss fight” / decisive battle.

The “system map targetting is off” bug is a good opportunity to revisit the calculating collisions with plotted course feature. With a lock on your target you could have the game automatically plot a course to where the target will be rather than where it is. Without a lock... well you probably won't get close enough to initiate a mission, which means you need to send faster but weaker ships first.

The simplified orbital mechanics are giving me some grief, but I'm still convinced they can work. So right now I opted to make ships be unaffected by their orbits, when they're flying somewhere. This has the unfortunate effect of some orbits giving you a higher velocity than your engines. Doing the opposite, where the two would sum up, would mean in these orbits you could only go “forward”, but I think that makes sense - if you want to catch a ship that's on your tail, stopping, or relatively slowing down is exactly what you should do. Being unaffected by orbits still makes sense in subspace, I think.

Re: fighters patrols, could there be a resource advantage? Redirecting a carrier group frigate to get line of sight on a region is surely more expensive in fuel and manpower than sweeping its entire neighborhood with one or two fighters. Individual patrols might be hell from a micromanagement standpoint, especially if the default behavior allows each lone fighter to trigger a hopeless fight. On the other hand, it’d be sick to launch a patrol mission, then watch your whole fleet jump in once you’ve confirmed the target.

Re: additive orbits. The thing about flying faster than gravity can pull you down is that you really only can go “forward.” Actually reversing the direction of your orbit is very expensive because the “zero” point isn’t idling, but falling into the nearest well.

Practically speaking, this causes a bunch of unintuitive stuff when connecting two points. To the point where games like Interplanetary kind of have to build around it from the ground up. So handwaving to allow free transfers between orbits is…it’s probably a good idea.

Re: fighters patrols, could there be a resource advantage? Redirecting a carrier group frigate to get line of sight on a region is surely more expensive in fuel and manpower than sweeping its entire neighborhood with one or two fighters.

Hm... the only resource that comes to mind is fuel, and time (with bigger ships being slower). Or do you mean having the crew be completely fungible, and telling everyone on a frigate to jump into fighters?

Individual patrols might be hell from a micromanagement standpoint

Right, I'm hoping some typical patrol patterns involving multiple ships can be automated. You'd select the ships / fighter wings you want to deploy tweek some parameters via the mouse-wheel and / or a few buttons, and they'd do the rest for you. You'd only get notified on contact.

The details are still a bit hazy and will probably remain so until I cross that bridge, but one pattern that feels like it should work would be to send the slower ships inward, where the orbital period is lower, and the faster ship outwards. With conventional drivers they could stay in sync while giving off only short-range IR signatures, and they'd periodically sweep the orbit like a radar. Or you could sacrifice staying synced for maximum stealth.

The sync will fall apart the more outward you go, so you'll need more and more assets to cover the area, or to start using active scanners that will give your position away.

especially if the default behavior allows each lone fighter to trigger a hopeless fight.

Yeah, I suspect auto-resolve will become necessary.

Re: additive orbits. The thing about flying faster than gravity can pull you down is that you really only can go “forward.” Actually reversing the direction of your orbit is very expensive because the “zero” point isn’t idling, but falling into the nearest well.

Yeah, the current model is a result of me wanting something realistic-ish, but also deciding that I'm definitely not going to write Kerbal Space Program here. The results are goofy if you know anything about physics, but I hope they can result in something fun mechanically.

Practically speaking, this causes a bunch of unintuitive stuff when connecting two points. To the point where games like Interplanetary kind of have to build around it from the ground up. So handwaving to allow free transfers between orbits is…it’s probably a good idea.

Right, that's how "gravity stops working when enignes are on" started. The problem here is that slower ships can get away from faster ships just by killing their engines, which makes no sense, hence the hopefully better approach of summing velocities while magically maintaining the same orbit. You should still have free transfers by going inward/outward, but you might not be able to backtrack depending on where you are.

It's possible the whole thing will become a dead end, and I'll just make the solar system stationary.

Whoops, I meant in terms of in-fiction resources, not necessarily in-game. It’s not enough for the frigate to have better sensors than a fighter; it has has to have better sensors than however many fighters you could buy/staff/fuel instead of a second frigate.

I’m envisioning something where you can set up zones on the map to run your fighter patrols. Region on the map, region around your fleet, or cone around your direction of travel. Abstract your fighters patrolling in that region. The size of the region (and distance from your nearest base) would determine your chance of encountering enemies who are within, and succeeding at that random chance would give a popup letting you start a fleet battle. Obviously if the enemy reached your permanent sensor bubble, you’d see them either way.

Abstract your fighters patrolling in that region.

Love your feedback, man. Yeah, that's obviously a batter solution (orders of magnitude easier to code, if nothing else). I swear my 'tism wanting to model everything will be the end of me.

Shit, wanting to model everything is literally my job title.

Maybe this weekend I can get the debug version installed properly. I do want to contribute instead of play peanut-gallery.

That sounds like a sweet job, though maybe I'd change my mind if I had to do it every day. OTOH, maybe that's just the cure I need.

Maybe this weekend I can get the debug version installed properly. I do want to contribute instead of play peanut-gallery.

As usual let me know if you need any help.

Compiling from source could be a good idea, it's pretty straightforward, and you'll need it anyway if you want to attach a LUA debugger (though so far I was only able to figure that out on Linux)