Inspiration

This is a game idea that's been in my head for years. I finally felt comfortable enough in the Worlds editor to go all-in on this competition. Space Station Tycoon represents what both dedication and leverage of AI technologies can achieve in a short time period. Having the ability to add an actual generative AI to player's space stations opened up a ton of possibilities that I'm honestly still just exploring.

What it does

Players mine asteroids for resources, build and upgrade stores and modules in their space station wing, serve customers through interactive minigames, and compete to become the richest tycoon in orbit.

When players spawn into the game, they are automatically assigned one of 4 wings of the world's space station and a player hub is spawned in. Players can build out from this hub and create a sprawling business across their wing of the space station. In order to collect resources for building, players will need to navigate Zero-G, using thrusters and their trusty mining laser to mine asteroids and space debris.

The game is playable both on mobile and in VR with 1-4 players (though performance issues pop up with more players). There are random events designed around having players interact socially (with many more planned for the future) that make the station feel alive.

Systems:

  1. Meet your Station AI and UI. There are two provided ship AI that can be changed between at will, more will be available from the random vendors in the future. From your main station display you can also adjust your station's music, turning on headphones mode makes the music follows you. There are also tabs for resources, equipment, and general operations.
  2. Enter Zero Gravity and use your personal thrusters for maneuverability. Upgrading your thrusters improves forward, lateral, and braking speeds.
  3. Equip your personal mining laser and mine resources from nearby asteroids. Upgrading your laser improves its distance and damage to mining nodes.
  4. Per-player persisted builds. All builds are serialized into PPV structures so that we can reload each player's build from any wing of the station.
  5. Visiting ships bring customers to the player's owned stores. Various NPC visitors will come to your space station, make sure to take a break from mining asteroids to serve them.
  6. Access the rear entrances of shops in order to serve customers via unique minigames. Attach the fuel pump to the landed ship and then rush to your Grill and/or Gift Shop to serve customers before they get impatient and leave.
  7. Upgrade your builds and expand your base. Individual builds can be upgraded to different tiers based on resources and other lock requirements. Upgrades can also be purchased from random event vendors, like the upgrade to double grill cooking.
  8. Complete quests and earn new equipment. Get your station fully operational in order to unlock upgraded thrusters and mining laser.
  9. Participate in random events. The random event manager will occasionally send vendors to the main shared hub area who will sell new upgrades, music, and more to help your station stand out.
  10. Become the richest person in the deep void of empty space! Earn credits and raise the rating of your space station until you're ranked #1.

How we built it

With approximately 80 scripts and many, many thousands of lines of TypeScript. I had a basic working landing pad and NPC pathing within a week, but getting the dozens of other systems up and running together has been quite a challenge. There have been many sleepless nights of trying to get features working correctly, but I think they've paid off.

Meta's Generative AI was used extensively:

  • Each player has Station AI that relay information to them and can be changed out for newer models when acquired. We inject context and events into the AI and let it be free... it could use some tweaking.
  • Gift shop and grill props are mostly created via the model generation, as are the signs.
  • Explosion, dings, and a dozen other sfx were created using Meta's AI
  • I also created a texture for the group activity asteroid, occasionally used the Agent, and more.

Challenges we ran into

Performance was the biggest issue. Every single script has been rewritten multiple times in an effort to get better performance, but there is a lot to optimize here and not a lot of time for the jam. Given another week or two I could probably find a way to eek out more performance, but all of my world capacity numbers are around or below 20% even with multiple builds.

UI was a hassle as well. I decided to make the Store minigames via UI and it has been quite a hassle. The minigame UIs are also the only thing missing from full parity in the VR and mobile versions. To process transactions in VR you simply put your hand on the register or grill, no minigame required (yet). I also had an entire minigame where you pour drinks for visitors in a cafe, but it's sitting on the backburner due to performance at the moment.

The build system provided plenty of frustration as well, especially keeping it consistent on different worlds and with more players. I'm quite happy with the current namespacing solution though, and it seems to be pretty solid.

Accomplishments that we're proud of

Most of the systems are pretty solid and extremely extensible. Without performance implications I could quickly introduce a half dozen more builds, multiple levels of the station, more visitors, ships etc. I have written a bunch of my own utilities

What we learned

I have learned a lot about performance in Horizons. I believe that most systems in this are about as performant as you can get, but there are a few that are dragging the rest down. This made me have to kinda balance creativity with optimization, but that's how it works in game dev.

What's next for Space Station Tycoon

  • Hiring AI NPCs. As you are able to build things beyond your Grill and Gift Shop, you will be able to also hire NPCs that each have their own personality. They will work the store counter that you hire them for and complete the orders for you. I wasn't able to get it done in this time frame, but I think it would add a lot.
  • Integrate my Quests with Horizon Quests. I did not have a chance to get a working Quest board yet even though I have my own Quest system built-in. One of the next tasks is to refactor the quests to work side-by-side with the Horizon ones so that rewards are shared, progress is more easily tracked, etc.
  • Hub customization. I would like to either let players color their wings, or else to color them based on the wing that is assigned. I'd also like to allow players to add decorations and stuff to their builds.
  • Spawn builds cleaner. I would like to keep the doors hiding builds up until everything behind it has finished building.
  • Clothing. I have lots of ideas for clothing I could make and add to the game, and especially rewards from some random events and whatnot.
  • Performance profiling. I just keep running into lag on the minigame UIs and with the visiting NPCs in some way, but I need more time to trace down exactly why the systems tend to get laggy with extended play.
  • Improving the VR side. I made this mobile-first for the competition, but I actually have far more fun flying around in Zero-G in VR than on mobile. I already have ideas of how I can turn the minigames physical for VR players.
  • This list could go on forever, it's hard NOT to think about new things to implement or integrate.

Built With

Share this project:

Updates