1. Solar Lander
  2. News

Solar Lander News

Game Mechanics Updated

There have been some changes and updates to the some of the game mechanics. Here is a short summary of the changes.

Additions
  • Added a "level failed" mechanic that allows you to stage before landing and continue to the next level, having failed the objective of that level. Failing 3 levels will result in a game over.
  • A framework has been added to allow multiple game modes to be implemented. Unimplemented game modes will have their respective buttons grayed-out.
  • A thrust-to-weight ratio indicator has been added to the upgrades screen to determine if you need to increase engine power. The ascent stage's TWR is the first number while the descent stage's TWR is the second number.
  • A basic subsystem damage system has been implemented, allowing certain parts of the vehicle to be disabled without triggering a crash condition.


Changes
  • New button graphics.
  • Staging before landing no longer results in being stranded.
  • Giving contradictory control inputs will result in them being canceled-out. All button and axis inputs for a specific control are added together with the response that you get being the sum of all of the inputs.
  • All features that are not yet implemented have had their controls grayed-out.


Bug Fixes
  • Fixed a bug where the center of mass is not at the vehicle's local origin. This caused an issue with the orbit script not calculating the vehicle's position correctly.

Time Warp Update Released

Time warp and pause have been added to the game. Both can have their controls configured in the settings screen. The Time Warp will increment and decrement by a factor of 1x. Time warp will start becoming ineffective at around 10x normal speed, but may vary between systems. Just to make sure you don't lose control over the vehicle, all controls except camera zoom are disabled while in time acceleration.

Other Additions
  • Proper Escape screen that pops up a menu allowing you to go to the main menu, start a new game, or resume the current game.
  • Highest and Lowest orbital points on the HUD (marked "AP" and "PE" respectively) to the right of the altimeter.


Changes
  • High Scores screen is synced with the Steam leaderboard and shows the top 10 scores as well as your score and rank.
  • Terrain finder bar replaced with roll indicator that changes between HUD modes.
  • Velocity vector adjusted to accommodate new roll indicator.
  • Saving/loading temporarily removed while I experiment with solutions.
  • Orbit trails shortened to 1,000 seconds.
  • Center landing leg on descent stage removed.
  • Command module texture adjusted.
  • Help screen removed, guides coming soon.


Bug Fixes
  • Orbit trails no longer "jump" to the vehicle's starting position.

Project Status Updates

It's been a while since I posted anything here, so here is an update on the status of the project. I'll start with the bad news first: This game is going to spend a bit longer in Early Access as I don't yet have all of the features that I want implemented. In addition, I am temporarily removing the quicksave feature from the game until I can get it working reliably.

Now for the good news: I'm working on new game modes (eg: free roam and scenario), better integration with the Steam API, and new and improved game mechanics. These enhancements will come in several stages over the next several updates. Here's an overview of where the project is going.

High Scores Screen

The Top 10 players with the highest score will be shown in-game in the High Scores screen. If you are in the Top 10, your name will be highlighted in green. If you are outside the Top 10, your name will be listed in red at the bottom of the score table alongside your actual position and your highest score.

HUD Changes

The surface finder (brown line with an arrow pointed towards the planet) is going to be a proper roll indicator with roll markings. It will have the same color as the rest of the HUD and will change its rotation based on the HUD mode selected.

The velocity vector indicator is also going to be changed to blend seamlessly into the new attitude indicator, showing both the positive and negative directions of the velocity vector.

One more thing: A while ago, I changed the Orbit scripts to be able to generate data about the orbital elements based on the current speed and position of the vehicle. An indicator will be added to the altimeter to show when you're near the highest and lowest point of the orbit.

Stranding Mechanic

The stranding mechanic currently just stops the game if you stage before you land or if the command module crashes. That's going to change starting with the fact that I forgot to anticipate the player running out of fuel. If you stage before you land, you will be allowed to advance to the next level, but you won't get any points, nor will you be allowed to upgrade. Other stranding scenarios will let the game continue to run, with the option of restarting the level. You'll still be told that you're stranded though.

Game Modes

Currently, the only game mode is level-progression. But I am working on adding more game modes such as free roam, a tutorial level, and scenarios. Scenarios will use LUA scripts to define objectives. You will eventually be able to post your own Scenarios in the Steam Workshop.

Help Screen

The help screen is going to go away and be replaced with Guides. Some of these guides I'll write myself while other guides can be written by the community. Users should be able to write their own guides for this game now.

Settings Screen

The settings screen is being overhauled in advance of the upcoming features. This means new layouts and features for assigning controls and, once implemented, changing axis assignments in-game as many times as you want without restarting the game! The start-up dialog is going to be removed once this happens.

Save/Load System

I am setting up a seperate project as an experiment as to how I might implement a save/load feature that works reliably and will not work until I publish the update like the last attempt did. Also, with the current system, you can only save during the levels. With the new system, you will be able to save between the levels.

Collision System

The collision meshes are being overhauled to provide more realistic collisions between the vehicles and exhaust. Hopefully this will fix the problem of the engine exhaust clipping through the descent stage. Also, the center landing leg is being removed. As part of this update, subsystem damage will be introduced, resulting in various systems being disabled when they're hit.

Conclusion

That'll be it for now. Over the next few months, I'll be releasing updates that gradually implement the features I've mentioned above, and then some.

UI and Achievement Update

Updated

The achievement system has been updated so that your progress towards certain achievements are kept track of and displayed on the achievements page. Now, due to a mistake while configuring and testing the achievements to this new system, I had to reset a lot of the achievements. I'm hoping that this doesn't happen again.

The settings screen has been given an overhaul and now separates the settings into tabbed pages. There are also new settings that have been added but are currently non-functional. These are: Axis assignments, sounds in space, graphics settings, and the Workshop tab.

Current Issues
  • I did discover that my attempt to prevent crashes on loading quicksaves did not work. I have not been able to fix that bug yet.
  • I still don't know how to program the command module AI to try to stay in orbit. So be careful not to de-orbit it.
  • For some reason, the Apply button is enabled when you go to the settings screen. Haven't traced that down yet.


Coming Soon
  • Periapsis and Apoapsis indicators on the HUD
  • Time Acceleration
  • Workshop (eg: for user-made scenarios/story lines)

Quicksaves and Performance Optimizations

I'm still trying to figure out how to get the Command Module AI to get back into orbit if you manage to get it out of orbit, but in the meantime, I've implemented some new features and increased the performance of the game.

Quicksaves

You can now save your progress at nearly any point in the game that you want via "Ctrl+S" and reload your game either through the main menu or by using "Ctrl+L" while playing. There are a few things to watch out for though: If the lander is rotating too quickly when you save (edit: or randomly, which testing did not reveal), it may tell you that you've crashed the instant that you reload it. I've tried to eliminate this, but so far I have only been able to reduce this.

Performance Optimizations

I've reduced the number of rigidbodies being simulated down from 18 to just 3, resulting in a huge performance boost and reducing the amount of energy that the orbits lose with each pass. This will come in handy when I implement time acceleration.

Before the optimization, I was using 1 rigidbody for each thruster in addition to the rigidbody of the vehicle. The rigidbody on the thruster would apply the correct torque to cause the vehicle to rotate. This meant that I needed to attach my orbit scripts to each thruster. In total, the scripts would be doing at least 2.5 million operations per second (18 scripts * 1024 ticks per second * >136 operations per script per tick) in addition to the number of operations done by Unity's built-in physics engine on all 18 rigidbodies. Now the orbit scripts do a total of about 0.42 million operations per second. And the physics engine has 15 fewer rigidbodies to simulate.

I also managed to optimize the terrain generation a little bit from two for loops down to a single for loop. The terrain generator has been reconfigured to either generate new terrain, or load pre-existing terrain.

Other Details

The orbit scripts now keep track of the orbital elements of the vehicles. I don't think I could have done this without first implementing the performance optimization. This data will be used by the Command Module AI and by some future HUD elements.

I did find a bug with the Kill Rotation autopilot. It never turned off when it finished killing the rotation until you tried to override it. Because trying to rotate the vehicle would kill the autopilot, it wasn't really be that much of a problem. But it's a bug none the less and it has been fixed.

A similar bug was found for the Command Module AI, so I decided to rework the AI so that it would no longer be a bug.