Crumbling World - dani marti
Hello everyone! Over the last week, I have been working on an often requested feature. Specifically, I have been creating the save and load system, which will allow users to save their progress and continue the game where they left off after stepping away.




Goals

The main goal of this update was to create a simple system that would allow players to save their progress. With the addition of this feature, if a player’s character is slain or if a player just wanted to take a break from gameplay they can return and resume their game from where they previously left off. While this seemed to be a pretty easy feature to implement in my mind, I underestimated the issues that I was going to face when I took a deeper dive into the system.




Challenges

After I began work on the save and load system it became apparent that there were going to be some difficulties along the way. In particular, I had two main challenges that I had to work around.

https://www.youtube.com/watch?v=sqt7OexRD9Q

The first challenge I faced was how to handle the procedural generation of the world. As Crumbling World procedurally generates levels, I wasn’t able to implement a system that would allow players to save their game at any given moment. Instead, I created checkpoints at which players would be able to save their progress. Thankfully, I was able to implement this solution much faster than I anticipated. The most significant disadvantage associated with this approach is that there are only a few checkpoints available per level, placed at the base and hubs associated with each level. This means that if players miss one of these checkpoints, they could quickly lose all of their progress. On the other hand, this checkpoint system provided the benefit of greater control, which allows me to instantiate players at these checkpoints regardless of how a given level is generated.



The second challenge with implementing this system involved the Quests. I had to figure out some method of tracking which challenges have been accepted by players and which ones have been completed. This is an especially important feature, as some levels remain closed until players complete certain quests, which means that there could potentially be an issue that would ruin gameplay by either breaking the game or allowing players to reach inaccessible levels without a fix. I solved this challenge by modifying the Quest System. Specifically, I moved the Quests list from the player to the Level Manager, which allowed me to retrieve and directly assign Quests to the player through a Quest ID.




With this being said, one of the limitations of the save and load system is that it can only store certain types of data, such as integers, floats, strings, and boolean operators since binary encryption is used to protect the save files. The ability to save an ID, which is considered an integer, greatly simplified the save and load system. Now, I could check the Level Manager to see which Quests were accepted and completed, which helps the game to better track the progress of the player by merely matching IDs, instead of having to save and load all of the data associated with a Quest. By far, the current system is far more efficient, quick, and straightforward. Now, Crumbling World supports the ability for players to save their progress and enjoy the game even more.

I’m working hard on more exciting and enjoyable features that are sure to improve the playability of Crumbling World. If you’d like to keep updated on upcoming news and updates, please consider signing up in the form below. Alternatively, consider checking out Steam, where you can wishlist Crumbling World. Thanks for reading, and I look forward to sharing more exciting updates with everyone soon!

https://store.steampowered.com/app/1003560/Crumbling_World/
Crumbling World - dani marti


Hello everyone! I was working on a promising improvement that has the potential to optimize the performance of Crumbling World, especially when it comes to running the game on low-end computers and mobile devices. The primary challenge in implementing this change was figuring out a way to modify the main feature of the game without undermining the unique performance provided by Crumbling World. In other words, to accomplish this task, I had to alter the procedural world generation carefully.



The Challenge

The feature that truly makes Crumbling World unique is how each level is generated before the player’s eyes. Before modification, this world generation occurred on the fly, which led to pretty high-performance needs, as the Navmesh had to be continuously updated. This caused some issues with the game’s AI, both for NPCs and enemies.

It turns out that allowing the geometry of 3D models to be visible when generating was the primary cause of these performance issues, due in large part to the fact that the rending engine suddenly had to create things on demand. Thanks to the optimization work that I have been doing, these pesky issues are now fixed.



The Solution

To solve both the performance and Navmesh issues, I opted to create each level in advance while the game was loading. This change wasn’t easy, as it involved some significant modifications to the core game functionality, which in turn unintentionally broke some secondary features that took a lot of time to figure out. By creating levels in advance, I only had to create the Navmesh once, which certainly helped the overall performance of the Navmesh agents for NPCs and enemies. At the same time, this improved the overall performance of Crumbling World, as the Navmesh now does not have to be consistently updated throughout gameplay.



Additionally, I lowered the ground cells below the fog level, so they are now not visible until the player steps on the previous ground cell. This preserves the visual effect of level generation without having to dedicate extra computing power to the game’s performance. Another advantage that I found was that when levels were built in advance, all of the associated geometry was already rendered when the level was loaded. This means that the render engine wasn’t negatively affecting performance when the level was rising in front of the player, as the geometry already existed, which was especially useful for levels where the ground cells have more elements and graphical complexity.



Pros and Cons

While generating levels in advance certainly helps to improve overall performance, there are some disadvantages associated with this approach. The main downside is that paths and roads can no longer have forks, as levels would be too large and complex. This removed the illusion that players are able to choose different paths, which was a nice effect even though the outcome was always the game regardless of the route selected. Now, when the level is created roads and paths are randomly generated in a way that chooses the fork for players. Luckily, this adds a bit more variety to levels when they are generated, which will likely allow for greater replayability when combined with secret sections for missions and quests. As a result, this means that it will be almost impossible to play through the exact same level layout twice.

I’m working hard on more exciting and enjoyable features that are sure to improve the playability of Crumbling World. Thanks for reading, and I look forward to sharing more exciting updates with everyone soon!

You can Wishlist Crumbling World now!
...

Search news
Archive
2019
Dec   Nov   Oct   Sep   Aug   Jul  
Jun   May   Apr   Mar   Feb   Jan  
Archives By Year
2019   2018   2017   2016   2015  
2014   2013   2012   2011   2010  
2009   2008   2007   2006   2005  
2004   2003   2002