Rust conversion done, performance, bug fixes, balancing


Dear all,

The conversion from C++ to Rust is finally done! It "only" took close to 11 months. My own estimate before I started the conversion was 4-5 months but things always tend to take longer than expected. The new version of the game has been uploaded today.

Since I use safe Rust, a whole range of potential memory-related bugs have been eliminated. This should hopefully make the game less likely to crash. However, other types of bugs may have crept in during the conversion. I did my best to avoid them by testing the new version quite extensively. I will do further testing in the coming days and weeks.

Since I coded the game from scratch in Rust, I decided to rethink the design of the code in order to improve performance. One of the main changes is that I no longer use smart pointers but instead something similar to ECS (Entity-Component-System). This has lead to substantially lower CPU and memory usage which should be noticeable when you play the game.

Due to this improvement, I decided to introduce a "Huge" map size in the "Customize World" settings which is 4 times larger than the previously largest map size. If you have an older computer, you probably want to stick to smaller map sizes though.

In addition to improving performance, I fixed a few bugs and some balancing issues that I encountered during the conversion. Here are some of the main changes and improvements:

  • Heating from lit fireplaces is now working (very useful when having hypothermia).
  • Less calories are spent per unit of time. The rate of weight loss is now more realistic (based on information I have gathered from various sources) and will give your character a better chance of long-term survival.
  • An up/down arrow next to the BMI shows if your body weight is currently increasing/decreasing. If your character eats something that will increase BMI, the arrow will not reflect this right away as it takes time for the body to absorb the nutrients.
  • Getting ill from consuming old food and drinks is slightly less likely than before.
  • Fewer wounds when slipping and falling (to decrease the risk, wield a walking stick when moving around and a torch in darkness).
  • Faster loading/saving of games and a smaller save game file size.

The new Rust noise generator that I use for map generation is slightly different from the earlier C++ version. I actually think it gives more interesting islands so I will keep using it.

Please note that the game is now run from the main XSurvivor folder, not a sub-folder (run xsurvivor.sh in Linux and xsurvivor.bat in Windows).

Expect more regular updates to the game from now on.

As always, let me know by e-mail (cwulnil@gmail.com) or in a thread in here if you encounter issues with the game.

Best regards,

Christian

P.S. To Mac users: unfortunately, I am currently only able to build the game for Linux and Windows. This is due to a package that I rely on which won't compile for the Mac version. You can always play the latest version of the game via Windows emulation using Wine as well as the last uploaded Mac version from a few weeks ago. If there is sufficient interest, I will see if I can get the Mac version to build.

Files

x-survivor-linux.zip 36 MB
Version 39 17 hours ago
x-survivor-windows.zip 23 MB
Version 39 17 hours ago
x-survivor-mac.zip 26 MB
Version 38 61 days ago

Get X-Survivor

Leave a comment

Log in with itch.io to leave a comment.