Bug Fixes
- Disabling both Command Module RCS blocks now gives a game over screen.
Changes/Bug Fixes
- Removed the old restriction preventing portrait layout from being used in-game.
- Audio and chunk size settings are now properly saved and loaded. You will need to re-adjust these settings for them to take effect.
- Changed the minimum selectable screen resolution to 1024 x 768.
Demo Changes
- Adjusted the planets featured in the demo to force the use of the upgrade system.
Remember back to the previous Devlog where I said I wanted to do a number of things over several, small, incremental updates? Well, that didn't quite go as planned. First off, I started working on the updates about 2-3 weeks late. And of course there was a lot of time debugging when things didn't work as intended. But here's what I originally intended to do as individual updates.
- Update base screen resolution to 1024 x 768.
- Migrate settings storage out of PlayerPrefs and into a Settings.INI file.
- Separate button and axis assignments and give another visual guide on axis interpretation.
- Improve how the game handles Unity's axis reporting.
- Add version and edition labels to the main menu.
Future Plans
Once I've finally finished all of the incremental updates to the Physics Update (hopefully, will be just one more update), I will be able to proceed with working on my game engine so that (at least for the Windows version at first) Solar Lander will no longer be on the Unity engine. Currently, it's the GUI library I'm writing that is the limiting factor, as it does not yet contain support for buttons, toggles, sliders, or other interactive GUI elements. The GUI system should be simple enough to complete. Currently, the non-Unity version of the game shows the splash screens (unless you skip them), then gets stuck on the loading screen. By the way, Solar Lander might be getting some loading screens for the Modding Update depending on how long those screens appear during testing. Also, for the Modding Update, I've typed-out an ASCII flow chart of game states to make it easier to keep track of the game's target architecture. That should make it simpler for me to implement all of the game states. Speaking of which, there will be changes to the in-game state machines so that if you or the command module crashes, you will hear the sound of the crash every time before you are taken to the game over screen. Also, I'm thinking of adding some floating text for when you land and redock telling you how many points you earned from those events. And even color-coding it to indicate if you beat your previous record. Also, I intend on implementing the self-destruct system for the modding update. Using it will trigger an instant game over, so don't actually use it.
Other Projects
By the way: The main reason why it took me about 2-3 weeks to get started on the first of the incremental updates is because I have many other projects to work on, and I've been rotating them. So I would work on one project for a bit, then another project, then another project. I will be continuing this pattern until all of my projects are complete. Since Solar Lander's Physics Update is still the current project in the rotation, the next of the incremental updates should happen soon(ish). But I believe after that, most of the v0.2.x updates will be taking place outside of the game, followed by a final v0.2.x update before I resume work on the Modding Update.
This is going to be among the last of the v0.2.x updates to help smooth things over for the upcoming Modding (v0.3.x) Update. This first one is sort of designed as a preview of the control system that it coming to Solar Lander in the Modding Update. The control assignment table and how controls assignments are handled have been heavily modified. Here's what the new assignment system looks like, which includes a ton of changes behind the scenes as well.
Changes to the Demo
- The changes made to the game warrant an update to the free demo version.
- The demo version now uses the same Progression system as the full version, but with only 3 levels.
- As a result of using the full version's Progression system, you may now play with it's upgrade systems.
Changes in v0.2.11
- The base resolution of the UI has been increased from 800 x 600 to 1024 x 768.
- In-game settings have been moved away from Unity's PlayerPrefs and into an INI file.
- The game will convert your PlayerPref settings to the new system, preserving all of your settings.
- The game will now save the resolution that you have selected in addition to the resolution index.
- The game will change the resolution to the one that is (theoretically) the closest to the specified resolution.
- Button and axis controls have been separated.
- The game now better handles differences in how Unity reports analog control positions.
- Assigning a key, button, or axis to a control will erase all duplicate assignments.
- In-game axis assignment instructions have been clarified.
Additions in v0.2.11
- The Increase FoV and Decrease FoV controls are now fully-functional, changing the FoV of the skybox camera in 1 increments.
- There is now an axis assignment table below the key/button assignment table.
- The axis assignment table has a button for primary and secondary axis assignments.
- The axis assignment table has a feedback area showing the raw value of the control (increasing values always go from left to right, not to be confused with how the craft will respond to your inputs).
- There is now a camera zoom axis to replace the old zoom behavior. You can now, for example, have the zoom accelerate and decelerate.
Bug Fixes in v0.2.11
- The Field of View setting can now be changed through the settings screen.
- The maximum camera zoom is now able to zoom out to show the entire planet on less than half the screen.
- The maximum camera zoom calculation now properly takes into account whether the screen is in portrait mode.
- The player control system now gets initialized with the correct time acceleration value.
New Devlog Series?
I figure I may try something new: A devlog on the first of every month (assuming I remember to do it) to keep players informed about the development progress I'm making for this game. Now, if the first falls on a Saturday, then the devlog will be posted on the second or the third of that month. Again, if I remember to do so. No promises. Also, I simply can't do once a week. Also, assuming that I continue this series, what should I name it?
General Progress Report
So, you may have noticed in a previous announcement that I intend to dump the Unity Engine for the v0.3.x Modding Update. So here's what I have done since making that announcement:
- Create a graphics library for use in my own game engine.
- Create a GUI library for use in my own game engine.
- Update my input library for use in my own game engine.
- Create the game engine core.
- Create a "simple" test app to make sure that the engine works properly.
- Create some splash screen logic.
Physics Update Plans
I've recently been considering making some small (or big depending on how you count it) updates to the v0.2.x Physics Update. These updates would include an updated base resolution (from 800 x 600 to 1024 x 768), and incrementally changing the settings control assignment system to be more in line with how the Modding Update's settings and control assignment system will behave. This of course will still be on the Unity Engine since I don't plan to remove the Physics Update from the Unity Engine. Here's what the new main menu screen will look like.
And for the settings screen, you will get something along the lines of this. Although you will probably find some options outright disabled.
For the control schemes, I originally took inspiration from the gMotor games (such as rFactor 1). And while I am still taking inspiration from such games, the current implementation is simply not good enough for what I want to do for the modding update. So, here's the new controls page:
I've taken inspiration from FSX for this new control assignment layout. The response tab is largely unchanged. But now I can more easily implement new axis assignments, like so:
Every axis will now tell you exactly how it's interpreting your inputs. Note that this is the raw value that the game is getting from the input device. The feedback area tells you how the spacecraft will respond to your inputs. These updates will also move the location where your settings are stored from out of Unity's PlayerPrefs and into "Users\
Modding Update Plans
Although I intend for the v0.3.x Modding Update to use my own game engine, none of my libraries are yet made for any platform other than Windows. So I will have to maintain a Unity and non-Unity editions of my game until I can get my libraries working on macOS (currently not supported) and Linux. That's already proven to be "fun". Each edition will be updated individually as I am able to get my libraries working on other platforms. The modding update will include control profiles. So you can load whatever profile you want based on what controllers you have plugged into the system. Profiles will be saved separately from the rest of the settings. Keyboard assignments will be saved as part of the game settings. Button and axis assignments, along with the sensitivity and null zone adjustments, will be saved with the profile along with the joysticks used in the profile.
Another thing that the modding update will bring are stuff like replays and changing the auto save and auto delete behavior. What you see checked in the image below is what the game currently does (except for auto save).
By the way, the Unity Engine uses single precision physics, but my game engine is going to use double precision physics. So until I can get my game engine working on all platforms that my game is available for, you may notice a few things related to the limitations of single precision in the Unity edition of my game that shouldn't be there in the non-Unity edition.
Game Engine Development
In order to take the game off of the Unity Engine, I either have to move to a different game engine (eg: Godot, Unreal) or make my own. I chose the route of making my own. This way, I don't have to worry about any of the bloat from the other game engines (eg: Solar Lander currently runs the 3D physics engine every tick even though it never uses any 3D physics objects) or suspicious firmware that'll bankrupt me. And Solar Lander isn't the only game that I will make with this new game engine. One thing that I started doing is, for each game that I'm working on that'll use my game engine, I've been duplicating a lot of the logic. Bad move. So over the past couple of weeks, I've been moving the logic that I've been needlessly duplicating into the engine core. And I've been refining the logic along the way. Though I still haven't decided if I'm going to implement Lua into the engine core yet.
Unity recently changed their pricing model so that any developer that makes $200,000/year or more, AND has 200,000 or more total app installs that use the Unity runtime will have to pay $0.20 per install. This means that once I meet the new criteria, I have to pay Unity $40,000 for my work. This includes game demos, re-installs, installs on multiple devices, and pirated installs. Fortunately, I don't make that much money per year so I don't have to worry about this extra payment yet. But it does mean that I'm taking Solar Lander off of the Unity engine before I qualify for those fees. Plus, it also means that Unity is essentially forcing their own, proprietary, tracking software into a game that I have decided long ago will NOT have any such software in it. And I wouldn't trust their tracking software anyways. Here are a list of things I've been working on to put the Modding Update in the beta branch on Steam.
- New base UI resolution of 1024 x 768 (old base resolution was 800 x 600).
- The addition of retro throttle controls (not available in the default game modes).
- Additional controls for using the keyboard to provide a constant throttle output at levels other than 0% and 100%.
- Zoom controls to allow for smoothing-out the transitions between zooming and not zooming.
- New UI elements on the High Scores screen to allow users to select between different leaderboards and refresh the current leaderboard.
- A check to make sure you cannot accidentally assign a button, key, or axis to two or more controls at the same time.
- Use a stack for navigating between different game menus, among other UI performance enhancements.
- Migrate joystick button and axis assignments, and response values into controller profiles rather than as part of the game settings.
I accidentally published the Demo Version of Solar Lander rather than the Full Version. This update fixes that error. Sorry about the inconvenience. I do have some ideas on how to prevent such mistakes from happening in the future, so this should (in theory) be the last time this happens.
The cursor size should now be the same across all platforms that Solar Lander is available on.
This game does have builds for Linux, but they couldn't be accessed until now. Sorry to all the Linux users who tried to play Solar Lander. I had known about the problem for a couple of months and tried unsuccessfully to search for a solution (couldn't find the right page in Steamworks). Finally, I contacted Steam support which pointed me to the correct page and I was able to implement the fixes in about 1 minute. Sorry it took me so long to fix the issue.
It has been brought to my attention via the forums that there are some issues when saving files. This build fixes these issues. Here's the full change log.
- Fixed a bug where progression wouldn't save if there was a save file already present.
- Fixed a bug where the save button wasn't greyed-out after landing.
- Save files are no longer auto-deleted upon loading the game.
Change Log:
- Patched-in a workaround for the input handler not fetching the planet's radius at the beginning of a level, which caused the new zoom-out feature to not work properly.
Change Log:
- Updated Steamworks.NET version.
- Fixed potential issue initializing the SteamAPI.
- Fixed potential issue of running SteamAPI callbacks twice per frame (only supposed to be once per frame).
I made a couple of mistakes when implementing the suggestions in v0.2.5. Mistakes Fixed:
- The maximum possible zoom is now based on the planet's diameter instead of the planet's radius.
- Adjusted the queue boxes to guarantee that they are rendered on top of everything *except* UI elements.
Recently, I have received some suggestions from a player on how to improve this game. While I can't implement all of them in a Physics Update patch, I can implement some of them. In this case, there are three that I could put in a patch to the Physics Update. Most (if not all) of the rest will be implemented in future updates, such as the Modding Update. Also, this game has it's own YouTube channel and Discord server. See the Links section below.
Game Updates
[olist]
Links
Here are the links to Solar Lander's Discord server and YouTube channel.
Solar Lander's home page has moved to a new location on the TChapman500 Gaming Website. It is no longer in "/Projects/Software/Solar Lander". It is now in "/Solar Lander". The website's main page now directly links to Solar Lander's home page under "My Games". This new home page for Solar Lander has all of the information you need about the game and its updates all in one place. There's also a section for in-game screenshots. More information will be placed there in the near future (eg: what my plans are for the upcoming v0.3 Modding Update).
This is perhaps the last update for the v0.2 Physics Update as I want to now focus on the v0.3 Modding Update. In v0.2.4 (which also updates the demo), the following items have been changed.
- Added Solar Lander logo to splash sequence
- Added Solar Lander logo to main menu header
- Added exhaust particle texture from pre-0.2 builds
- Added old sprite exhaust texture to game (not usable right now, but needed for the next major update).
Saving/Loading your progress in Progression has been added to the game, but is quite limited at the moment. After you complete the first level, you will be able to go into the escape menu and click "Save". The game will then save what level you are on, your score, the number of attempts you have left, and how many times you have upgraded each item. You can then quit the game and reload at a later time. When you want to reload, start a new progression game, go into the escape menu and click "Load". You will then start at the level you left off as if you had clicked "Start Level" on the upgrades screen. Limitations:
- Once you load a saved game, the save file is deleted. You can work around this by simply saving again.
- Once you score points from landing, you will be unable to save until you start the next level.
- Terrain generation data is not saved.
- Progress within a level is not saved.
- If save file corruption is detected, the game will immediately end and the save file will be deleted.
The 0.2.1 update introduced a bug that caused the axis controls to be unresponsive (sorry about that). This update, which was supposed to introduce progression saving and loading, fixes this bug. Time acceleration now disables the axis controls, but allows for control when no time acceleration is applied.
A small update to the Physics Update is now available which should now make the game winnable.
Change Log
- Added game version number to main menu (0.2.x is the Physics Update).
- Undocking will now fire retrograde thrusters for just two seconds instead of indefinitely.
- Adjusted fuel and thrust upgrades to be roughly linear in terms of how much extra fuel and thrust you get with each upgrade. Cost increase is unchanged.
- Adjusted min throttle and ISP upgrades to "max-out" relatively quickly.
Solar Lander's Physics Update is now available on the main branch. There are many changes, improvements, and bug fixes with this update, with the main highlight being the physics updates.
Changes
- Superstructures are now treated as a single body, greatly improving the physics (and controllability) of the lander, especially around large planets.
- Axis assignments are now done in-game instead of in a dialog box that comes up before the game starts.
- Staging before landing in Progression now resets the current level instead of skipping to the next level.
- Free Roam now gives you a lot more freedom to play around with.
- Upgrades Screen gives you more information about your ships capabilities vs what is needed to complete the level (and how much each individual upgrade will contribute).
- Terrain generation is now based off of this YouTube video, making it look more natural.
- Fuel indicators have been made to look more like the rest of the HUD.
- The trail renderer has been replaced with a display of what your orbit looks like (disappears when on ejection orbit).
- Terrain colliders are generated in chunks to improve performance (adjustable in settings).
- Made some adjustments to the game over, pause, credits, and help screens.
Additions
- Added the ability to adjust input response in the settings screen.
- Buttons on some controls can be made to gradually go from full-off to full-on.
- Added leaderboards for highest landing score and highest docking score.
Bug Fixes
- (Hopefully) Fixed a bug that would sometimes cause steam stats to not get saved properly.
- Fixed a bug where the engines and RCS thrusters would produce more thrust than they should be capable of.
This took me a lot longer to implement than I would have liked, but the Physics Update preview is no longer a demo version of the game. This means that you now have stuff like achievements, stats, and leaderboards among other things. Keep in mind that there's a reason that this is on the "beta-build" branch, though. Not everything is implemented. For example, we don't yet have free roam or all 21 planets implemented. But we do have a new upgrade screen, and a reworked upgrade system backend.
Change Highlights
- Upgrade Screen gives you a ratio for the amount of Delta-V needed to go from orbit to the surface and back (1.0 requires perfect burns).
- Upgrade Screen shows you how much your Delta-V Ratio and Thrust to Weight Ratio (TWR) will change with any given upgrade.
- Upgrade Screen now comes in pages.
- The record for largest amount of points awarded for landing and redocking are now tracked on their respective leaderboards.
- The "I Won!" achievement progress is now tracked by Steam (currently unobtainable because not all levels are accessible).
- Re-added 2 more planets in the game to use the new terrain generation feature.
After a much longer wait than what I wanted, a preview of the Physics Update is now available on a new branch called "beta-build". Technically, this is preview is the same as the new demo version (which has also been updated). I published the demo to the beta branch just in case those who have bought the game are unable to run the Demo. Over the next few weeks, I intend to update the beta branch to the full version as I reimplement the features for the full version. There will be another announcement once the Physics Update goes onto the main branch. Change Highlights:
- New Terrain Generation for more natural-looking Terrain.
- Superstructure Assembly no longer uses Unity's joint system, which should allow for smoother rotation around larger distances.
- Gravity simulation below planet's radius reduces gravity linearly with ratio towards center. Gravity above planet's radius is unchanged.
- Hopefully a bunch of performance enhancements.
- In-game axis assignments!
- Input response viewer.
- More control assignments (eg: custom zoom controls).
- Can disable joysticks in-game.
- Reduced number of planets for progression to just one.
- Visual orbit indicator now draws the entire orbit (unless the orbit is an ejection orbit).
- Docking port on command module modified for easier docking.
[previewyoutube=74_UHVxbsX8;full][/previewyoutube]
Terrain Generation
Hopeful Performance Improvements
The terrain is now generated in "chunks" in an attempt to optimize the performance of the simulation when you get near the terrain. Currently, there may be a significant frame-rate drop on some planets when you get near the planet, especially if the engines are firing. You will be able to change how many of these "chunks" are generated indirectly by setting a limit to the number of elevation points in each chunk. On top of that, the collision mesh will no longer generate through the center of the planet, but will stop about 5% of the way down to the center. Again, this is to help with the performance of the simulation. I'm hoping that Unity's built-in simulation engine will not do very detailed collision checks for chunks that are very far away from the space craft. So far, the results are looking very promising.
Terrain Coherency
Using a programming tutorial that I found on YouTube, I adjusted the terrain generation to give a more perlin-style noise generation to make the terrain look more natural. The terrain resolution is now much higher than it was before, but with very little performance impact because of the new chunk generation system. The terrain can also now generate with an elevation that is lower than the radius of the planet.
Orbital Mechanics Adjustment
I've tweaked the physics system governing the orbital mechanics so that if you were to somehow phase into the planet, then the gravity would decrease linearly with decreasing distance. This effect would only happen if your distance from the center of the planet is less than the radius of the planet. When the distance is greater then the radius, then the gravity still increases by the square of decreasing distance. Under the old (and current) system, the planet was treated as a point mass. So if you were somehow able to phase into the planet and get near the center, floating point errors would build-up to the point where you would be ejected from the planet's sphere of influence. Under the new system, there will be almost no gravity near the center of the planet, which is how gravity works in real life.
In-Game Axis Assignments
I have thought of a way of allowing you to assign axis from within the game in spite of Unity's terrible input system. It will even include the ability for you to set the null zones for each individual axis as well as inverting said axis. So when the update comes out, the dialog box that appears when you launch Solar Lander will be removed completely as it was only there for you to be able to assign axis before the game started. As for the other things that you could do in that dialog, you can already do those within-game for the most part.
From this day forward, Solar Lander is no longer available for macOS and I will no longer develop anything for Apple-brand products. Solar Lander will continue to be updated for Windows and Linux though.
I am currently working on a massive overhaul of Solar Lander's systems to fix a few issues that the game has and to make it easier to develop the game in the future. Here's a video about what I'm doing with the game. https://www.youtube.com/watch?v=JDJ8Ql3kjNk
Engine and crash sounds have been added to the game. You may have to go into the game settings and check the "Sounds in Space" checkbox for them to work. A skybox has also been added which you can turn off if you desire. Along with these things, a credits page has been added to the game which you can view from the main menu. Here is a video preview of the new updates for you to enjoy.
The freeroam game mode has been successfully implemented. This will allow you to start a new game where you visit planets in any order that you want, provided you have at least reached that level in the Progression mode. The same framework will be used to create tutorials and scenarios.
On top of that, there have been a few performance tweaks and bug fixes. One of the bugs that have been fixed is the one that reverses a few of the controls. I don't know when this bug was introduced, but when I discovered it, it was top priority and I thought I had fixed it in the previous update but I was wrong. There have been a few other bugs that have been fixed along the way.
For the next update, I intend to focus on adding some more sounds, some dialog, and maybe some background music to the game.
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 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.
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.
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)
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.
Solar Lander has just been updated with working sound settings and a bug fix. I also noticed that the previous build didn't quite make it to the live state as I had intended. Don't know what happened there, but that issue is now fixed. And I double-checked this build just to make sure!
Sound System
The sound system now saves your settings for whether sound is enabled, and the volume that the sound plays at. And it respects those settings in-game. Currently, there are only two sounds: One to warn you that you are about to crash into the terrain, and the other for when you switch the HUD mode. More sounds are going to be coming soon. You may notice that the developer commentary settings can now be adjusted. I added that feature in advance so I won't have to worry about it when I start making the commentaries.
Bug Fix
I traced a bug that would shut off the kill rotation autopilot to a block of code that was supposed to check your input to see if you were trying to rotate the vehicle while kill rotation was active. There was only one problem: There was no code available to help it perform that check. When the player hits the kill rotation button, it's supposed to save your controller's current rotation input. But that didn't happen because I forgot to put in a single line of code. That oversight has been fixed. Now, the kill rotation autopilot will check to see if you are trying to override it and will deactivate if you are. One slight issue you might come across is that you must hold your rotation axis on the controller perfectly still or the autopilot may inadvertently shut off. I may add an adjustable null zone in future builds to prevent that if it becomes too much of a problem.
There is now a Linux version of this game available (x64 only) for testing with the demo coming soon. The Linux version has not yet been tested on any Linux distribution. Steam will now store the best score that you have achieved on Solar Lander and display it on the "High Score" leaderboard. The game still stores your high scores in a local file, but that will not count towards the High Score Leaderboard. The old system is likely to be removed. Other Update Notes:
- Kill rotation toggling timer increased slightly.
- Achievement for Landing upside down Implemented.
- Achievement for first successful redock no longer requires you to land before hand.
There is now a Linux version of this game available (x64 only) for testing with the demo coming soon. The Linux version has not yet been tested on any Linux distribution. Steam will now store the best score that you have achieved on Solar Lander and display it on the "High Score" leaderboard. The game still stores your high scores in a local file, but that will not count towards the High Score Leaderboard. The old system is likely to be removed. Other Update Notes:
- Kill rotation toggling timer increased slightly.
- Achievement for Landing upside down Implemented.
- Achievement for first successful redock no longer requires you to land before hand.
I'm publishing an experimental build of the update early to begin working on achievements and stats. As a result, you will see "Developmental Build" in the lower right hand corner of the screen. This build is a small portion of what I want the next update to be because I am trying to implement and test achievements and stats. Stats added (but not necessarily implemented) include things like the number of times you've crashed, the highest score you've obtained during the game, and a few other surprises. Most of the achievements are (theoretically) implemented already and I'll be working on implementing the rest of them quickly. Please provide feedback on how the achievements are working (or not working). A few closing notes: The command module now has an AI that will kill its rotation, there's a click sound for changing the HUD mode (mostly as a sound test right now), and the new undock, staging, and kill rotation mechanics have been implemented. As a bonus, I changed the command module and ascent stage textures to show where the docking ports are. Just line up the pixels almost exactly and you'll be redocked. Also, I would like feedback on how to improve the achievement thumbnails. Particularly the one modeled after NASCAR's disqualification flag. If anyone sends me a 64x64 image for any achievement, and I use it for that achievement, they will be listed in the game's credits.
I'm publishing an experimental build of the update early to begin working on achievements and stats. As a result, you will see "Developmental Build" in the lower right hand corner of the screen. This build is a small portion of what I want the next update to be because I am trying to implement and test achievements and stats. Stats added (but not necessarily implemented) include things like the number of times you've crashed, the highest score you've obtained during the game, and a few other surprises. Most of the achievements are (theoretically) implemented already and I'll be working on implementing the rest of them quickly. Please provide feedback on how the achievements are working (or not working). A few closing notes: The command module now has an AI that will kill its rotation, there's a click sound for changing the HUD mode (mostly as a sound test right now), and the new undock, staging, and kill rotation mechanics have been implemented. As a bonus, I changed the command module and ascent stage textures to show where the docking ports are. Just line up the pixels almost exactly and you'll be redocked. Also, I would like feedback on how to improve the achievement thumbnails. Particularly the one modeled after NASCAR's disqualification flag. If anyone sends me a 64x64 image for any achievement, and I use it for that achievement, they will be listed in the game's credits.
Over the past couple of months, I've been working on some more aesthetics as well as gameplay and physics updates.
Here are some screenshots of what's in store for the new updates (starting with the physics):
The unity engine has a collision buffer on 2D collisions that prevent the objects from actually touching each other. Since I couldn't reduce the buffer or scale-up the game, I simply adjusted all of the collision meshes.
Here's a screenshot of the command module being nudged by the lunar module (I advise against that). Most of the command-lunar collisions should look a lot more convincing now. A product of this is that you no longer have that "jerk" that is associated with undocking and staging.
Now for some aesthetics:
The engines now look like their doing something when their fired. I added a particle system to the engine so that you get different amounts of particles at different thrust levels. The best part is that the engine exhaust can collide with other objects. Careful not to fire your engines too close to the command module. Otherwise, you can crash the command module without even touching it!
On the topic of gameplay, I've added upgrades that will give you a variety of items to choose from. I'm still working on balancing the upgrades, but since this game is in early access, I'll let the community help me decide what needs to be tweaked in that department. Here's the upgrades screen (I may make some changes though):
For our final screenshot, we have an updated settings screen. Be aware that this is still a work-in-progress, so what you see here is going to be different than what you see when the update is launched.
As the screenshot suggests, you will be able to change stuff like the screen resolution fully within the game itself. The update screen's width matches that of the help screen, so it's more consistent with the rest of the UI. I still haven't figured out how to change joystick input settings from within the game, but there will be sound, contrary to what the screenshot would suggest.
Among what's not shown in the above screenshot is going to be an update to how controls are assigned. One button per possible assignment.
Here are some other things to be updated that are not shown in the screenshot:
- Reaction Wheel Removed I just couldn't get a realistic reaction wheel and one that made the vehicle maneuverable. That said, vehicle control is now done exclusively with the RCS thrusters, just like the real live counterpart. And that's going to make the game a little bit harder.
- Kill Rotation Updated The flight computer is now aware of the minimum throttle setting that'll cut-off the RCS thrusters if the throttle is below that setting. The result is a more accurate kill-rotation mechanism.
- Persistent Stage, Undock, and Kill Rotation You will no longer have to hold down the key to undock, stage, or kill rotation to ensure the safe completion of said tasks.
- Steam Achievements and Stats This will be the first update that will contain stats and achievement tracking. You'll get achievements for progressing through the game, being very skillful, and being very stupid.
- Mission/Story Framework I've put in place the foundation for a story-mode and mission framework, but there are some other things I really need to get out of the way before I start flushing-out a mission set or story mode.
Over the past couple of months, I've been working on some more aesthetics as well as gameplay and physics updates.
Here are some screenshots of what's in store for the new updates (starting with the physics):
The unity engine has a collision buffer on 2D collisions that prevent the objects from actually touching each other. Since I couldn't reduce the buffer or scale-up the game, I simply adjusted all of the collision meshes.
Here's a screenshot of the command module being nudged by the lunar module (I advise against that). Most of the command-lunar collisions should look a lot more convincing now. A product of this is that you no longer have that "jerk" that is associated with undocking and staging.
Now for some aesthetics:
The engines now look like their doing something when their fired. I added a particle system to the engine so that you get different amounts of particles at different thrust levels. The best part is that the engine exhaust can collide with other objects. Careful not to fire your engines too close to the command module. Otherwise, you can crash the command module without even touching it!
On the topic of gameplay, I've added upgrades that will give you a variety of items to choose from. I'm still working on balancing the upgrades, but since this game is in early access, I'll let the community help me decide what needs to be tweaked in that department. Here's the upgrades screen (I may make some changes though):
For our final screenshot, we have an updated settings screen. Be aware that this is still a work-in-progress, so what you see here is going to be different than what you see when the update is launched.
As the screenshot suggests, you will be able to change stuff like the screen resolution fully within the game itself. The update screen's width matches that of the help screen, so it's more consistent with the rest of the UI. I still haven't figured out how to change joystick input settings from within the game, but there will be sound, contrary to what the screenshot would suggest.
Among what's not shown in the above screenshot is going to be an update to how controls are assigned. One button per possible assignment.
Here are some other things to be updated that are not shown in the screenshot:
- Reaction Wheel Removed I just couldn't get a realistic reaction wheel and one that made the vehicle maneuverable. That said, vehicle control is now done exclusively with the RCS thrusters, just like the real live counterpart. And that's going to make the game a little bit harder.
- Kill Rotation Updated The flight computer is now aware of the minimum throttle setting that'll cut-off the RCS thrusters if the throttle is below that setting. The result is a more accurate kill-rotation mechanism.
- Persistent Stage, Undock, and Kill Rotation You will no longer have to hold down the key to undock, stage, or kill rotation to ensure the safe completion of said tasks.
- Steam Achievements and Stats This will be the first update that will contain stats and achievement tracking. You'll get achievements for progressing through the game, being very skillful, and being very stupid.
- Mission/Story Framework I've put in place the foundation for a story-mode and mission framework, but there are some other things I really need to get out of the way before I start flushing-out a mission set or story mode.
The first major update to this game is out. This update mostly provides visual enhancements to the UI, starting with the main menu. Everything is now big and centered on the screen. There is a new Help screen to replace the old help information on the main screen and gives a bit more detail about the various parts of the UI. The Help screen will be updated as needed based mostly on player feedback. There is a new settings screen that allows you to assign keyboard and joystick button inputs. These settings are saved so that you don't have to reassign your buttons every time you start the game. There's also an option to reset to the default settings. Due to some limitations in the Unity engine, axis assignments are done via a dialog box that now comes up before the splash screen. The axis assignments are "X Translation", "Y Translation", "Rotation", and "Throttle." The graphics settings are currently set using the same dialog box to set the axis until I get a better system in place. Cockpit sounds and developer commentary are coming soon. The in-game UI has also been greatly improved. There is now a HUD that gives you all the information that you need to land and redock. A button on the top center of the HUD allows you to change the HUD mode between surface-relative and command module-relative information. At the request of one of the players, the HUD now has a horizontal speed indicator. The default controls have been adjusted slightly to allow you to separate the main engine from the vertical translation thrusters (there's an option in the settings panel to change this back if you want). You can now use your thrusters to assist your main engine or cancel-out some of its thrust. The major control differences is that you must now hold the stage/undock buttons in order to maintain thrust, and that the keyboard/button inputs now instantly go from 0 to 100% and back when you use them. This is a consequence of me overriding the Unity's default input system. The screens to view and submit your high scores have also been given a visual update. And a screen has been added for those who complete all the levels of the game without crashing.
The first major update to this game is out. This update mostly provides visual enhancements to the UI, starting with the main menu. Everything is now big and centered on the screen. There is a new Help screen to replace the old help information on the main screen and gives a bit more detail about the various parts of the UI. The Help screen will be updated as needed based mostly on player feedback. There is a new settings screen that allows you to assign keyboard and joystick button inputs. These settings are saved so that you don't have to reassign your buttons every time you start the game. There's also an option to reset to the default settings. Due to some limitations in the Unity engine, axis assignments are done via a dialog box that now comes up before the splash screen. The axis assignments are "X Translation", "Y Translation", "Rotation", and "Throttle." The graphics settings are currently set using the same dialog box to set the axis until I get a better system in place. Cockpit sounds and developer commentary are coming soon. The in-game UI has also been greatly improved. There is now a HUD that gives you all the information that you need to land and redock. A button on the top center of the HUD allows you to change the HUD mode between surface-relative and command module-relative information. At the request of one of the players, the HUD now has a horizontal speed indicator. The default controls have been adjusted slightly to allow you to separate the main engine from the vertical translation thrusters (there's an option in the settings panel to change this back if you want). You can now use your thrusters to assist your main engine or cancel-out some of its thrust. The major control differences is that you must now hold the stage/undock buttons in order to maintain thrust, and that the keyboard/button inputs now instantly go from 0 to 100% and back when you use them. This is a consequence of me overriding the Unity's default input system. The screens to view and submit your high scores have also been given a visual update. And a screen has been added for those who complete all the levels of the game without crashing.
Over the past week, I've been working on improving the aesthetics of the game. Here is a list of changes that I've made so far:
I've added a HUD-type display for orbital speed, altitude above ground, and vertical speed. The HUD also shows where the vehicle is going and which direction is straight down and level with the horizon. The velocity direction indicator is even color-coded to let you know if you're going to make a safe landing.
When the update is released, you'll be able to toggle between surface-relative and command module-relative speed and distance displays.
In the top-right corner, the text display of the fuel and speed has been replaced with a visual representation of how full your tanks are.
Demo of the HUD.
Speed direction indicator is blue to indicate a landing score of 1,000+ points.
Speed direction indicator changes color as you accelerate. Red is bad!
What is shown here is subject to change by the time the update is published. I'm also working on improvements to the in-game menus and the various screens that the menu items take you too. There will be a dedicated help screen and a new settings screen.
I fixed an issue with the torque physics that would cause excess jittering with the vehicle. This would most likely be noticeable when trying to redock with the command module. The amount of jittering due to trying to control the vehicle is almost non-existent now. As a side effect of this bug fix, the retro RCS thrusters (and possibly the main engine) are now far more effective than they were before. This issue is not related to any jittering that you may experience in the later levels of the game. That is caused by the Unity engine using 32-bit physics and the planets late in the game being so much larger than the early planets. The 32-bit physics is also why I scaled the planets and vehicles the way I did.
Solar Lander
TChapman500
TChapman500
2017-10-16
Indie Simulation Singleplayer EA
Game News Posts 43
🎹🖱️Keyboard + Mouse
🕹️ Partial Controller Support
4 user reviews
(4 reviews)
https://gaming.tchapman500.com/solar-lander
https://store.steampowered.com/app/724170 
The Game includes VR Support
Solar Lander Linux [106.23 M]
- OS: Not Tested
- Processor: Not TestedMemory: 256 MB RAM
- Memory: 256 MB RAM
- Graphics: Not Tested
- Storage: 120 MB available space
- OS: Not Tested
- Processor: Not TestedMemory: 512 MB RAM
- Memory: 512 MB RAM
- Graphics: Not Tested
- Storage: 150 MB available space
[ 5951 ]
[ 3198 ]