Freedom Code – work continues

If you came here, but you have no idea what a Freedom Code is, see this, it should give you some basic information about the game.

It’s been a while since we (me and Dawid Niemiec) came up with idea for Freedom Code, but we had to temporary put the project aside. That’s the reason why the project was dead for couple of months. Fortunately some time ago we started to working on it again.

Since then, there’s lots of changes and I’d want to shed some light on at least few of them.

Code has been refactored

Since the prototype we showed on game jam had to be made quickly we decided to make it entirely in blueprints. In more serious productions this is a no go thus we had to refactor whole ‘code’ and move it to c++. It not only allowed us to optimize the game, but also to keep it clean, flexible and ready for new possible improvements and additions. Don’t worry, there are also other changes that may be a bit more visible to you. One of those additions was networking.

Networking – multiplayer

Even tho it’s totally possible to make multiplayer game in UE4 using blueprints only, I personally prefer to use C++ for this. Thanks to refactoring we were also able to add networking to the game so multiplayer will be 100% possible now. However, for now we’re not sure yet how exactly this part of the game will look like. The networking is utilizing steam which means that it’ll have to be running to be able to play in multiplayer mode. But since we were planning on releasing this game via steam it won’t be a big deal I guess. Since steam offers way more stuff than this, we have couple other plans related with it. ;)

Level editor – steam workshop?

We decided, that this kind of game could really use the creativity of the community, thus we also want to release level editor inside of the game, so other players could create their own levels and publish them using steam’s workshop. The editor is being developed, but it’s far from being finished unfortunately.

Strafe jumping, bunny hopping and level design

The game in its previous stage was nice, but at same point it could get boring for advanced players who could beat every level easily. We needed a mechanic, that would keep them interested in playing our game even after beating every level. Because of this, we came up with idea to implement strafe jumping (strafing) and bunny hopping (b-hopping) known from quake engine based games. Dawid did great job porting the code to UE4, and now we have it! This huge change lead us to redesign all levels so those could be finished in multiple different ways. We don’t even know exactly how many possibilities there are! But what we know for sure, and what we can tell you is, that each level has a ‘casual’ way of finishing it, so strafing nor b-hopping isn’t required. See this vid for (hopefully) better explanation.

Although finishing level using strafing and b-hopping is fun and allows you to finish level quicker, it could be not that worth for others to try it out. Because of that, we also added score system.

Score system

To spice up a game a bit, we’ve added a system that evaluates every run you make on a level. I’m still working on it and trying to find the best way of calculating the score so I can’t tell much. But I can tell that the things that will be taken into an account while eveluating score will be:

  • Completion time – the time it took you to finish a level – the shorter the better
  • Death count – how many times you got destroyed (self destructions are counted too) – the lower the better
  • Jump count – amount of jumps you performed while beating a level (jump pads aren’t counted) – the lower the better
  • Skipped checkpoints – how many checkpoints you did NOT visit – the lower the better
  • Skipped pickups – amount of abbility pickups you skipped – the lower the better
  • Skill uses – the number of uses of all kind of skills – the lower the better
  • Shots – it’s almost the same as above, but it includes only uses of gun-like abbilities – the lower the better
  • Correct shots – amount of gun-like skills used correctly (on proper type of object that was within a range) – the higher the better
  • Accuracy – a ratio of shots to correct shots – the higher the better

Score system in its current shape favors ‘clean’ runs that are oriented around strafing and b-hopping only (it’s called ‘pro’ run on vid showed above). However I don’t really like it since the most enjoyable playthrough for me, was the intermediete (advanced in vid) one that was mixing up abilities and strafing/b-hopping. It’s possible that this way of finishing levels will be the one with highest score than the ‘clean’ one in the future.

Being evaluated after finishing level would make no sense if the game wouldn’t save this data anywhere. Also, beating last levels would be (and actually was in previous stage of the game) quite painful. Fortunately we fixed that.

Storing game progress and statistics

Finally, the game is able to store your progress locally on your computer, so you don’t have to replay levels all over again to try and beat the last one. Thanks to this, we also added storing statistics from your previous playthroughs, so now you’ll be able to easily find out whether you did better than before or not.


Speaking of game feel, we also noticed that couple of players had problems with distinguishing what objects in the world actually response to usage of abilities that are available in game. Because of that, we also decided to add minor change that altered crosshair a bit. Now, the crosshair has 2 states:

  1. Three dots – means that you can’t use your current ability because one of these things:
    • You have no ability pickup up at all
    • Ability you did pick up has active cooldown
    • There is no object in ability’s range (gun-like abilities only)
    • The object at which you’re aiming at isn’t proper object for your current ability (gun-like abilities only)
  2. One dot – means that you did meet all requirements mentioned above and you can use current skill properly.


I was responsible for:

  • gameplay programming
  • code refactoring
  • network programming
  • UI programming
  • level design (all redesigned levels)
  • score system

Dawid was working on level editor, strafe jumping and gameplay programming. We’re still using his 3d models, tho we also have one new member in our crew – Wojciech Czub who’s also working on 3d models. You can see his recreated arcade machine and guns in the game already.

Additionally, we’ve used:
– Universal Sound FX (UE4 marketplace)
– AIRGLOW’s music from Memory Bank album

In short (tl;dr):

Arcade FPP + puzzle elements | 80’s | UE4 | C++
Vids: vid #1vid #2 | game build x32: download [226.7 MiB], x64: download [250.2 MiB]


Leave a Reply