Unnamed Space Game

This unnamed space game is my current side project and this page should be receiving updates as I make progress.


9/3/24 - 9/27/24

More Multiplayer Debug and Optimization

The multiplayer system has received a substantial internal reworking of how data about the players and lobby is handled, as well as a shifting of all direct references to the Steamworks API out of the main multiplayer code. These changes allow me to keep the platform-specific code out of my generalized management code. Along with these changes, I added a new custom editor window to view current multiplayer information.

Player Weapon and Tool Systems Started

I have started working on the internal systems required for player weapons. Player weapons will support a full customization where the player can add modules to their weapons, changing the stats and behavior of the weapon.

Persistent Data Management

I created a simple generic system that will allow me to save any data I want to a file with ease. Many future systems will be dependent on this system. For debug/development purposes I added a feature to either combine all data into one file or separate each key into its own separate file for easier save manipulation when testing.


8/7/24 - 9/2/24

Level Generation System Tweaks

The level generation system now allows for the settings used by the gen steps to be changed per mission template. This allows for certain mission types to use the same generator with different settings.

Some Simple Test Models

I’ve added some simple models for bootable objects and a set of modular tubes for simple station environment layout testing.

Simple Objectives and UI

I created a simple system to allow for objectives to be created and added to a UI element. The UI element currently allows for a simple text display for the current goal progress for each objective and sub objective. As part of the current test objectives (Time trial and Scavenge), I added a basic inventory to the player ship that will remain until the ship module system is completed.

Waypoint Markers

For objectives that may not be fully clear on where to go, I’ve added a system to easily create on-screen objective markers. This allows me to easily create markers of any color on any object or position I want.

Multiplayer Debug Tools

My multiplayer system creates unique IDs for every synced object, for debug purposes I added an option in the editor to display the ids of the objects I’m looking at on screen.


7/13/24

Missions Framework

A core element of the game is the missions. I finally created an early version of the mission framework. Currently, it allows me to assign level-generation steps and some other currently unused data. I also have a menu that for testing purposes will load up all of the level templates (in the future not all templates will be loaded at once) so I can easily pick which template I want to test in game.

Pre-built Level System

One of the requirements I set for myself, to prevent a ton of scenes from cluttering up the project files and build settings, is that all the levels are loaded/generated at runtime into the main gameplay scene. Since all the world objects are already set up to be loaded via the Addressables system for fully generated levels, I set up an editor tool that would write all the world object paths into a scriptable object which can be loaded at runtime looped through to place all the level assets.

Remembering Blender

This game is in 3D so it needs 3D models. I am by no means an artist by trade but I have used Blender a little in the past. I decided to make a few assets for some of the core objects in the game, like the ship. It took me a while to really remember how to use Blender and get into the flow of making models, but after a day or two I was finally starting to get some models that I liked. These are by no means the final versions of course but they do get the general idea across for different elements of the ship and some future planned systems.

 
 

7/2/24

Multiplayer Upgrades

After a break and some proper design work, I finally have an update again… To start with I made some additions to the multiplayer system to allow for player slots, so now if a player joins as player 3 they will always be treated as player 3 even if player 2 leaves. I also fixed a few bugs that caused certain objects to not be mirrored to client players correctly and optimized how often sync packets are sent for objects. I also created a loading screen that syncs all the clients together during any scene-loading process.

Level Generation

I also created a modular generation system. This system allows me to select which level generation elements I want a certain mission type to utilize and in what order to process them.
Some example modules I plan on using in no particular order:

  • Asteroids: This module generates the basic asteroid group that most levels will include

  • Player Ship: This module loads in the player ship and eventually the start/exit point.

  • Random Scrap: This module will generate scrap around the level that can be collected to boost the rewards at the end of the mission.

  • Respective Mission Objectives: These modules will be responsible for generating the objective of the mission e.g., a bounty or mining target.

 
 

6/19/24

Early Multiplayer Testing

The idea of this game lends itself heavily to co-op, and as such I knew that if I wanted co-op to work I would need to get it in early. Partially as an excuse to learn more about the internal workings of multiplayer networking solutions and because I couldn’t find an existing solution that had a clear example of being able to handle nested physics objects, I decided to try my hand at making a custom solution utilizing Steamworks. As of now, I have gotten some basic functions working. As seen in the video below the user can join friends who are hosting a lobby, and I have a few synced interactables for the players to pick up and throw around. Also shown is a simple test for the ability to send events to for example increment a floating number via a button all the players can press.

 
 

6/16/24

Basic Quick Access Hud

While the inventory works well the player can’t see what quick access tool they’re holding or the name of the item in their hand. Time to add a basic hot-bar type UI and also a simple text near the center of the screen to give the player more information. But I don’t want the screen to be too cluttered so I made the UI self hiding after inactivity. I also utilized Unity Runtime Preview Generator to enable accurate item icons.


6/15/24

Player Inventory

Well, the goal is a looter-shooter, in order to loot we need an inventory system for the player to pick up and in some cases place items. While building my inventory system I decided to make the limits for storage based on mass and volume. Every inventory will have a mass and volume limit and if an item would put either of them over the limit the inventory rejects it. The ItemData object type can also store other non-predefined values, allowing for items to be easily expandable for other uses.


6/13/24

Early test for ship physics

This gif shows a full test of player(and other rigid-body) movement both in space and onboard moving ships. The route I tried to take while building these systems is to make them as expandable as possible so behind the gameplay are multiple systems handling things in the most generic way as I realistically could. For one example, I built a system that could allow me to easily change what object group had the rights to the player input.

10/10 would programmer art again.


6/9/24

Initial Idea

The core idea behind this game is a looter-shooter-type gameplay loop set in space. For every mission, you will equip yourself and ship how you deem appropriate and set off. Missions should carry anywhere from simple collection from a derelict ship or station. To having to disable an enemy ship, board, and take out the enemy crew. But before we get to all of that we need to be able to move throughout both space and on ships so off we go.

Next
Next

3D Paddles in OpenGL