Non-Trivial progress update

Posted On 16 Jan, 2013

I have been very quiet on updating this blog for a while because I have been very busy with the game and I have lots of new updates. The most important piece of news is that I am getting to the point where the game is actually becoming a game, as in there is something that can actually be played, there are real (if trivial) in game objectives and some minimal character progression. Also almost all of the listed alpha features are working at least minimally. What that means is that very soon I will be looking for some help with testing, and then shortly afterwords I will be posting an alpha client for the general public to play around with. Yay.

 

So what’s new:

 

Sound

I found a sound contractor, Bombadeer Studios and worked with them to make an initial set of sound assets for the game so it’s not silent anymore. It was great working with them and I think the game is sounding great right now, I’ll try to post a video some time in the next few days that shows off the new effects.

Ship designer improvements

The ship designer got a bunch of little additions like the ability to see which module is selected and the ability to see which modules are available to place. Also added were the ability to save a ship design you can’t afford yet which was a highly desired feature among those who designed the worlds greatest battleship and then learned they couldn’t save it to their disk and had to delete it. Also added is the ability for the editor to detect edge-placement requirements, so now the editor will force you to put things like engines on the back of the ship where they will actually work.

Ship modules

  • Heat is now in for reactor cores. That means placing radiators somewhere on your ship in order to cool your reactor or it will overheat and stop working. It also means ships are a little easier to disable because you can now damage the radiators which are typically on the outside of the ship.
  • Engines work. You have to give them power to function and they provide thrust. Acceleration and top speed is calculated based on how much thrust your (currently working) engines produce versus the overall mass of your ship. There is also a nice animation and sound to indicate when your thrusters are firing that also serves as an indication of why your ship isn’t moving when your engines are not firing.
  • Capacitors, which end up taking a lot of space in my designs have been given a neat effect to help aid in overall ship mortality: when they are destroyed, sometimes they start fires.
  • Life support was mentioned in an earlier update, but it didn’t get much explanation. Life support modules use a little power in order to put a little bit of air into the ship. Your crew members breathe air, and when your hull is breached the air gets sucked out of the breached compartment. Suddenly having interior walls and compartments is a good idea! Also a ship that’s completely without working life support will run out of air as fast as your crew can breathe it.
  • Thrusters are not functionally and different than they were before, but they have an animation and a sound associated with them now which makes them look really neat. Also it does a pretty good job of showing off the complexity of the PID loop controlling ship movement which I was very proud of.

Fire

When a capacitor is destroyed it has a chance of overloading attached conduits. This sends a pulse down the conduit and starts a fire somewhere on your ship. Fire consumes the air in the ship in order to grow and spread from tile to tile, it also causes damage to burning tiles so if you don’t send someone to put it out it will become a very large problem very quickly. Currently there is no way to manually vent the air from rooms by opening airlocks, but it’s planned.

AI improvements

The ship AI can now lead it’s targets, and they no longer have 100% accuracy. This makes them both better and worse at the same time, and overall more fun to fight against. I also feel a little more confident ordering them to pilot my ship from time to time, but they still are no match for a human pilot.

Networking Redesign

You would think that the big update had already been listed, but this one was easily the biggest, and also the most difficult. I completely re-wrote most of the networking code in order to build a framework that would support my future design goals. The future implications are huge, but the immediate implications are still worth noting.

  • The online sessions are now host-less everyone-to-everyone topology which means that if the original host of a multiplayer session leaves the game, everyone else can continue playing as if nothing happened.
  • The peers have the framework for primitive NAT hole punching built into them, which means that in some cases you will be able to join and host multiplayer games without forwarding any ports on your router. Don’t count on it working 100% yet because I have still not gone through all the use-cases, but the principle is sound.
  • Since sessions are host-less, you can join the battle that your friend is in by connecting directly to your friend.
  • Singleplayer is now multiplayer without networking turned on. The only difference is that singleplayer allows pausing, and multiplayer allows your friends to join any time. This means that survival mode can now be Co-op survival mode.
  • This framework enables the next step which is multiple people in a single ship, and ships docking so that players can walk from ship to ship. Initially if you want to fly a ship with your friend you will join a game with them, dock with them, and walk to their ship. Then when they connect to a different server, the code should bring your client along for the ride. That’s the theory at least.
  • This framework allows the game to communicate with an as-of-yet unwritten dedicated server program that will allow for persistent online multiplayer characters and game worlds.

Game mode selection:

Since the networking was redone it made sense to change how game modes were selected and I created a way for choosing what type of server(or local singleplayer session) you wanted to create. Right now the only choices are hosting an empty section of space which is good for testing a ship design or shooting at your friends over the network, or hosting the survival mode in order to battle the AI. In the future I will aim to expand these choices. I want to add in at least 1 free-roaming sector of space with some static entities to interact with so you can try being a pirate or raiding a space station or exploring a hidden asteroid base or whatever.

Launcher

The game launcher received a minor facelift and feature update. When I added sounds to the project it got big enough that the download wasn’t instant anymore, so I had to make the download a little smarter. Now if you interrupt the installation half way it won’t forget what it was doing, and it can pick up where it left off without crashing as much.