Insider - What goes into creating/rebuilding a new feature in CrimeBloc

Insider - What goes into creating/rebuilding a new feature in CrimeBloc


Hey everyone,

Quick post today and exploring what goes into building a feature for CrimeBloc, some seem to think it’s an overnight job, so I want to explore what actually goes into creating something new.

Creating the code for a new feature isn’t necessarily “hard”, for a basic feature you’re looking at a few days, however for a feature like new operations it takes several weeks, sometimes even longer depending on complexity. As most of you know the base is quite old, there is some code in here from when CB first began, fixing features it’s debatably harder than creating something new, as an example I’m going to use the tutorial as an example.

The tutorial code has been in here for quite a long time from what I can see, but the steps are stored in the database, we have no backup that contains these steps, so first off I have to figure out how the tutorial starts, apparently there was a dedicated page for it, but that is long gone, next I need to figure out the logic for how steps advance and how each page handles the tutorial step. This along with reconstructing an actualy working table in the database. So there is a little bit of reverse engineering going on here. So now I’ve figured out how the steps work, we have the table in the database, and we have a bunch of old code that basically calls these steps with very few pointers on what each step is, for example see below as to what the robbery tutorial code is like.

You may notice that there are many mentions of addTutorialHtml() with some numbers. So each of those corrolate to an entry into the database, the 5 signifies tutorial 5, and the second number after the comma is the step. Robbery contains 17 steps explaining different things about the page. And we need to fill in the content for each one and make sure it works, that the buttons work and the text is accurate etc.

Luckily we have someone that has volunteered to help out with the content which most definitly is helping move things along.

In Autotheft, you are guarenteed an Audi during the tutorial, so we need to check that code works on autotheft, and in some cases the code that handles that specific step is gone, so we also need to write that again.

Now we’ve gone through a tiny bit of Robbery, we now have to do this for another 16 seperate features. So as you can see, rebuilding an existing feature - Stock Market, Tutorial, Russian Roulette, Special Robbery is quite time consuming and can be difficult.

OK so now we have the feature ready and done, next step if it gains money or xp we need to balance it so it’s not super OP or redundant. Which in itself takes time, mainly thinking and discussion rather than code on this step. Then we release, and tweak it as needed.

I hope this gives you a little insight into rebuilding and the creation of new features. They certainly don’t happen overnight as much as I would want them to.

Take care, happy gaming


Great insight, thanks for posting!

This is the biggest point that I think players might not realize. I have the same exact problem with Imperial Conflict, which also has an ancient codebase that I constantly wrestle with.

One of our players recently made the point about a calculation:

On the surface, that’s totally understandable. However, the ugly mess under the hood is sometimes so bad that a mere calculation can be a huge risk to address because of everything that it touches. It’s a great example of an action at a distance bug and an even better example of what happens when code bases suffer anti-patterns and prolonged technical debt. It’s also a good example of why not having automated testing is such a pain.

Of course, players don’t care about any of this nor should they. All they know is that something doesn’t work or that a seemingly simple feature is taking a long time to build.

I don’t mind that criticism either. It’s fair.

What gets me though is the assumptions and arrogance that can come along with it; instead of asking questions, some of the angrier players will tell you how much they know about how your own code, despite not having seen it and some not even being programmers. It’s absurd!

I’ve found though that being communicative goes quite a long way and for every 1 disgruntled player who thinks they know more than you do, there are 10 understanding players who are more patient and appreciative of your effort.

Your post itself here is a great way of bridging the knowledge gap between players and developers. Have you posted this in the CB forums too?


Yup, definitely have some of those players

I have.

Thanks for also posting on Reddit


Interesting post! Thanks for sharing :smiley: