DEV Community

Cover image for Veltrix Progression Was A Mess Until We Dropped The Default Config Mentality
Lillian Dube
Lillian Dube

Posted on

Veltrix Progression Was A Mess Until We Dropped The Default Config Mentality

The Problem We Were Actually Solving

I still remember the chaos that ensued when we first launched the reputation faction system for Veltrix. The concept was simple: players would earn reputation points by completing quests and missions for different factions, and as their reputation grew, they would unlock new content and rewards. However, the implementation was far from straightforward. We had to balance the rate at which players earned reputation points, the rewards they received, and the overall progression curve. Our initial approach was to use the default configuration provided by the game engine, thinking that it would be a good starting point. But as the player base grew, it became clear that this approach was flawed. Players were progressing too quickly, and the rewards were not meaningful. We were seeing a high drop-off rate, with many players losing interest in the game after just a few weeks.

What We Tried First (And Why It Failed)

Our first attempt to fix the progression system was to tweak the default configuration. We adjusted the reputation point rewards, increased the difficulty of quests, and added more rewards. But no matter how much we tweaked, we couldn't seem to get it right. The system was still unbalanced, and players were either progressing too quickly or not quickly enough. We were using a combination of Apache Kafka for event processing and Apache Cassandra for data storage, but the data was not providing us with the insights we needed to make informed decisions. We were also using a rules engine to manage the progression logic, but it was becoming increasingly complex and difficult to maintain. The error messages we were seeing, such as "Cannot read field 'reputation' because 'null' is not a valid value", were indicative of a deeper issue. It wasn't until we stepped back and looked at the system as a whole that we realized our approach was fundamentally flawed.

The Architecture Decision

We decided to take a step back and re-evaluate our approach to the progression system. We realized that we needed a more structured approach, one that would allow us to balance the progression curve, rewards, and player engagement. We decided to implement a custom progression system, one that would use data analytics and machine learning to inform our decisions. We chose to use Apache Spark for data processing and Apache HBase for data storage, as they provided the scalability and flexibility we needed. We also decided to use a custom rules engine, one that would allow us to define complex rules and logic for the progression system. The decision to use a custom rules engine was not taken lightly, as it would require significant development and maintenance efforts. However, we believed that it was necessary to achieve the level of complexity and nuance we needed in the progression system.

What The Numbers Said After

After implementing the custom progression system, we saw a significant improvement in player engagement and retention. The drop-off rate decreased by 30%, and players were staying engaged for longer periods of time. We were also seeing a more balanced progression curve, with players earning reputation points and rewards at a steady pace. The data analytics and machine learning algorithms were providing us with valuable insights, allowing us to make informed decisions about the progression system. We were using metrics such as player engagement time, drop-off rate, and reputation point earnings to measure the effectiveness of the system. For example, we saw that the average player engagement time increased from 2 hours to 4 hours per session, and the drop-off rate decreased from 50% to 20%. These numbers told us that we had made the right decision in investing in a custom progression system.

What I Would Do Differently

Looking back, I would do several things differently. First, I would have invested in a custom progression system from the start, rather than trying to tweak the default configuration. I would have also spent more time analyzing the data and using machine learning algorithms to inform our decisions. I would have also chosen a more scalable and flexible technology stack, such as Apache Spark and Apache HBase, from the outset. Additionally, I would have involved the development team more in the decision-making process, as they had valuable insights and expertise that could have helped shape the progression system. One specific decision I would make differently is the choice of rules engine. While our custom rules engine was effective, it was also complex and difficult to maintain. In hindsight, I would have chosen a more lightweight and flexible rules engine, such as Drools or Pega, which would have provided the necessary functionality without the added complexity.

Top comments (0)