site banner

The Motte Moddes: HighSpace (August 2023)

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

What we have

  • Concept art for a long range missle cruiser, curtesy of @FCfromSSC

  • 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 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.

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

Updates

  • The System Map and the Tactical View got minor pimp-ups. The System Map now shows the ship names, and the Tactical View has a grid to help with orientation, draws ship icons if the ships are too far away to see, and draws waypoint, and target icons to give some indications of the ship's current goals.

  • The System Map now supports Battle Groups, and the player is now in charge of one - the original GTC Trinity cruiser, and a wing of fighters.

  • We now have “just in time” mission generation. Like I mentioned in the previous thread, the scripting API gives you access to the file system, so it was pretty easy to generate a mission file on the fly. This has some advantages over using a “blank” mission file and setting up the mission via the API, because not all mission features are exposed to the API. The most obvious example here will be how there's no longer an “extra” player ship, just the ones explicitly declared for the System Map (in the previous versions you'd be flying a fighter, even though in theory there were no fighters in the System Map).

  • Thanks to the fighters and their current load-out it's actually not that hard to win the game at the moment. Your cruiser will easily dispatch the Shivan one, and as to the corvette, you can order your ships to run away, and take out the turrets yourself, then order your ships to attack. It will take a while, but with a defenseless enemy it's only a question of time.

What's next

  • The System Map didn't get a lot of attention so far, so I'd like expand it. It would be nice to move around an actual star system, add camera movement, and split/merge mechanics for fleets.

  • The Tactical View is somewhat functional, but still needs to give a player handle on what's going on, and better control over their ships. I wanted to add subsystem status, beam cannon charge status, and a handier way to give advanced commands.

8
Jump in the discussion.

No email address required.

I've created a branch to try and make the system map real-time-with-pause. Rather than blink fleets to their destination, the route will remain highlighted, and a separate hotkey will toggle playing and pausing. When unpaused, your fleet will advance along the line until it's close enough to trigger a battle. Sound good?

I did have some trouble testing, because once I died in a mission, I couldn't get back to the System Map. Not exiting the mission, not "restarting" the campaign. Clicking the mission doors would still put me in a default fighter--subach, prometheus, and harpoon. To test again, I had to restart the game.

Also, I'm a garbage pilot, and GTVA has already begun court-martial proceedings.

I've created a branch to try and make the system map real-time-with-pause. Rather than blink fleets to their destination, the route will remain highlighted, and a separate hotkey will toggle playing and pausing. When unpaused, your fleet will advance along the line until it's close enough to trigger a battle. Sound good?

Yes, very nice!

I forgot to mention it, but around the time FC was setting up the wiki, I thought we should have a proper github org for the repo, so I set one up. Send me your handle, and I'll add you ( @FCfromSSC, you should already have an invite).

I did have some trouble testing, because once I died in a mission, I couldn't get back to the System Map.

Yeah, right now only subspace-jumping out of the mission sort of works. I wanted to have the current player ship be switched on death, but that will require a custom build of the game. I think the best I can do with just scripting, is a switch the to Tactical View, but obviously it's not ready yet.

Clicking the mission doors would still put me in a default fighter--subach, prometheus, and harpoon. To test again, I had to restart the game.

I'll take care of it. Right now the only way out post-death is to "quick restart" the mission, and not die the next time :)

Also, I'm a garbage pilot, and GTVA has already begun court-martial proceedings.

If it's the Alhazred you're having trouble with, it's your tactical skills that are in question, not your piloting. That ship is equipped with extremely powerful anti-fighter beams, so there's no way to personally get close to it without having your day ruined. Your cruiser should be able to deal with it easily, though.

EDIT:

It was easy enough to fix restarting the campaign from the main hall. I just pushed the fix. I was also working on the system map (I added camera movement), so if you don't want to bother with resolving potential conflicts, the fix is literally a single line of code.

Thanks!

Conflicts won’t be an issue. Last night rapidly turned into a crash course in lua rather than any written code. I still haven’t been able to figure out where ba is defined, but I learned a lot about metatables.

ba, as well as all the other two-letter globals are the Freespace LUA API, they're injected from the game's source code. There's some documentation for the API here (see: libraries) though I think it's somewhat out of date, and not everything is there. I've made a habit of keeping the corresponding source files opened in another window. Other mysterious globals and undefined methods might come from libRocket

Feel free to ping me if you bump into anything else that doesn't make sense.