Updates on Hacker Experience & Legacy

Renato Massaro
12 min readAug 27, 2019

--

Hello there. This post contains major updates on Hacker Experience (formerly called Hacker Experience 2) and Legacy. I’ll start with Hacker Experience. If you want to read about Legacy, please proceed to the end of the post.

Late last year I posted a long-awaited update on the state of Hacker Experience development. This is a follow-up. It also includes major changes, and if you are a backer, it also includes refund information, so please take the time to read it in its entirety.

Among the previous updates, I posted a few screenshots of a new design we were trying. This new design was built based on our original trailer and ideas from a designer friend of mine, whom I hired as a freelancer for a couple of months. Even though I personally liked the design (at least for a first/earlier version), some of you mentioned that the original design (shown on trailer) “felt” better.

At the same time, money was tight. As I mentioned on the previous post, the funding we raised on our crowdfunding campaign had ended several months ago. Back then, me, the designer and the part-time developer were being funded by some personal savings I had. As those savings were nearing its end, I was forced to make some deep cuts on the project. From January 2019 onward, I could no longer afford the extra help from the designer (Lucas) and the developer (Max). Since I don’t pay myself a wage, I could keep working on the project.

I must say, even though working alone on a game this size is terrifying, it’s been… fun. I like working by myself, but the downsides are obvious. If the game was late back then, it is even more now.

One extra challenge is the fact that I’m definitely not a designer, and yet the first task I grabbed was a full game redesign. The result actually surprised me. Here are a few screenshots:

This is the main screen, with a few open apps. You can see there’s an intense appeal for the “Matrix” side of things. Quite hacker-y! On the right, we have the so-called Conky, a side-bar filled with relevant and interactive data. It is bloated, but it’s meant to be. Similar to a plane control panel, it gives spectators the feeling of being overwhelmed, but players soon get used to it. It further increases the hacker immersion.
At the bottom of the screenshot, you can see my favorite feature, HEmacs! Fully functional Vim-like keybindings. I hate mouse, and working without mouse on the back-end is easy. On the front-end, though, not so much. So I created this mini-framework which allows me to play the entire game using only the keyboard. It is very modular, and allows each in-game application to have their own set of modes (keybindings).
This is the account registration screen. If you are less than, say, 20 years old, you may not get the reference :)
As long as we are playing with Windows… Here’s what happens when something goes unexpectedly wrong…
… And this is when a fatal error happens!

As you can see, I had a lot of fun designing the game interface, and to be honest I did not expect to get that far. But I did, and I consider this design “GoodEnough” for a first/early release, so yay! Most of this work (both design and implementation) was done from October, 2018 to March, 2019.

During April and May I decided to work on the game infrastructure. I automated the entire deployment of the front-end and back-end using Ansible playbooks and Terraform. With a single click one can build the entire game infrastructure from the ground. And with a single click one can green/blue-deploy the game. We use containers, though not the mainstream one (we use FreeBSD and Jails).

I “wasted” a lot of time making the back-end application horizontally scalable, and one may wonder why such hard work was necessary. Well, it shouldn’t be at this stage BUT… ever since Legacy was first released, we consistently suffered (D)DoS attacks. I suppose the theme behind the game (hacking!) attracts this. The fact is, whenever I say “hey, it’s ready!”, we will get DDoSed. And any Legacy player will tell you how much they hate those 502 pages.

With the front-end starting to look nice, and the infrastructure ready, everything was ready for a first release! This first release, while far from ready, would allow the player to perform some basic operations, including hacking, installing viruses, collecting money etc. Still too basic to be considered a game though (in my opinion).

But then comes June, and many problems arise. My personal savings are gone, and I have no money to even pay rent. If not for some friends, I could’ve been evicted. Financially, I deposit all my hopes on Hacker Experience, which even though is at an Alpha/VeryEarly release state, it is far from being a game for which I can charge money. It could take several months or more until such state is reached. And I cannot afford to keep working solely on the project, without income, for so long.

So, an impasse arises. What do I do now? What would you do?

As I mentioned several times, working on this project is a passion, something I do because I love it. I also work on it because I firmly believe on the result. I believe that the game will bring many people to the field of computer programming, computer science and/or cyber security. I also believe that the game will be the very first open-source contribution for many players. And after 5 years working on the project, I’m not giving up now. That said, I have no idea if the game will be financially successful. In fact, I must assume it will not be financially successful.

At the same time, I can’t afford to work on the game during my weekdays. I need money, so I need a paying job and I got one. Since mid-June I’ve been working as a full-time freelancer developer at a Brazilian company. It pays my rent, my food and some extra at the end of the month. During my free time (nights, weekends and holidays) I keep working on Hacker Experience, and I plan to do so for as long as I’m healthy.

Although far from ideal, that’s the solution I came up with. To be honest, I’m extremely grateful for being able to focus completely on this project for almost 5 years. In the world of open source projects, this is very rare.

Needless to say, this implies that the project will take much, much longer to complete, and that’s my next point.

On being very very very very late

I’ll keep working on Hacker Experience and, unless something terrible happens to me in the mean time, it will eventually be released. But I need to remove an unbearable weight from my back, which is: I’m late. Very late. Extremely late.

When I was developing Legacy (I started 10 years ago; it took me 5 years), I had many similar shortcomings and delays and whatnot. But I never felt bad, anxious or depressed, for I was never late. In order to be late to something, someone must expect it. If you do something just for fun, like I did with Legacy, there is no such thing as being late. It might not even finish, and that’s OK.

However, when I committed to a crowdfunding campaign, things changed. Money got involved. People with expectations (set by me) were now eagerly waiting for a release. This kind of pressure was new to me. At one side, the crowdfunding campaign made the project possible. But on the other side, the pressure put forth by the campaign was the main reason, in my opinion, I got so many burnout episodes throughout the years.

I want to remove this pressure, for I feel it has significantly affected my life, and enough is enough.

So, if you are a backer, I want you to know that:

  1. Your contributions made possible the development of the game for all this time, and I’m forever grateful.
  2. I will keep working on the game on my free time. It may take a lot longer than expected, but it will eventually be released.
  3. Everything I (we) worked on from the past 5 years is publicly available on Github. It has a free license which allows anyone to use what we built, for any purposes, including commercial ones. [1]

Despite all those facts, given that I have no idea when the game will be released, I want to officially consider the crowdfunding campaign a failure.

Failure is a strong word…

It indeed is. Personally, I don’t consider the last 5 years a failure. Far from it: I learned a lot, I grew as a person and as a professional, and I look forward for the next 5 years. I worked with some amazing people during that time, and that’s a fond memory I’ll never forget.

On the other hand I did get indebted and I did put a shame to my name, for I will be forever known as the guy who failed that crowdfunding campaign.

Giving back

I think everyone is well aware of the risks of crowdfunding. During my life, I remember donating to 6 software crowdfunding projects, half of which never saw the light of the day. None of them offered a refund, but it was clear to me that the people behind the project put a reasonable effort on it, so I was okay with it.

I do believe I put a reasonable effort on Hacker Experience. Actually I think I went a lot farther than what can be considered “reasonable”. But then again, that’s expected when we are passionate about what we do. I also believe that every failed software crowdfunded project should release the source code of whatever they worked on. Once again, that holds true for Hacker Experience, including the fact that anyone can freely expand upon what we’ve been working on, without owing me any royalties or financial compensation.

The one thing I definitely failed was with regards to constant, timely updates. From the outside it may seem as something trivial, but it’s definitely a lot harder when you have to face this pressure I’ve been describing. All I can do is apologize for the lack of constant updates.

Despite all that, I plan to fulfill any refund requests made. Maybe you feel I should have done more, or communicated better, or really anything, for any reason. No questions asked. If you want your money back, please fill this form.

If you requested a refund via email and it was not fulfilled, please request it again using the form. I apologize, but there are many email messages I lost or I could not read due to personal reasons.

It will take some time, though. First I’ll make sure all my debt is paid off in full. Then I’ll get a reasonable cut of my monthly surplus and fulfill the refund requests, on a first come first served basis. We raised USD18,000 (before taxes/fees), which is 6 times the minimum yearly salary paid in Brazil. So if everyone requests a refund, do expect a very long time for it to be fulfilled. But you have my word that I’ll make a reasonable effort to fulfill your refund request. I say reasonable because, well, life is unexpected and no one knows what the future holds.

Once again, to be clear: it may take several months until I refund everyone. I expect to take at least 5 months until I fully pay off my debt and start refunding the first backer on the queue. In other words, the first few refunds shall be issued around January, 2020. Regardless of duration, I surely plan on refunding everyone.

What comes next

I want, or better, I need a clean slate. This overwhelming pressure I just described is slowly killing me, one depression/stress/burnout episode at a time. As I mentioned, that is not something that happened when I was working on Legacy, and the reason is clear to me: it’s due to the fact that I owed nothing to anyone. I do now, and that’s killing me from the inside.

Publishing this very post is my first step towards the “clean slate” goal. I will consider myself free when I finally pay off my last debt and refund the last backer. This may take a while, but I hope to achieve it as soon as possible.

Regardless of when that happens, I’ll keep working on Hacker Experience on my spare time. I honestly don’t care if it takes 2, 3, 5 or 10 years to finish it. I honestly don’t care if no one plays the game once released. I honestly don’t care if the game generates a total of $0 in revenue once finished. I’m doing this out of love.

Life is way too short, and we never know what the next day holds. This is a rather extreme action, but one I need to take if I want to take back control of my life. I hope you, who might even have lost the patience after so many years, can understand my point of view.

This is not a goodbye. Rather, it’s just a start.

E nossa história não estará pelo avesso
Assim, sem final feliz.
Teremos coisas bonitas pra contar.
E até lá, vamos viver
Temos muito ainda por fazer
Não olhe pra trás
Apenas começamos.
O mundo começa agora
Apenas começamos.
Renato Russo, Metal Contra As Nuvens, 1991

Updates on Legacy

I mentioned at the beginning of this post about Legacy. Well, I do have bad news about Legacy.

You see, Legacy was my very first programming project. I learned to code by creating it. Its code is confusing, undocumented, untested and insecure. Anyone can DoS the application with a bunch of page refreshes. On top of that, Legacy is unmaintained. Ever since the first release, on September 2014, I never submitted a patch to the game code.

Data is toxic. Legacy holds ~1 million of user registrations, with hashed passwords and email addresses. I don’t feel it’s safe to hold that data on such unmaintained application.

And then there’s the icing on the cake. With GDPR, I’m supposed to add several features which honestly I just can’t justify the effort.[2]

Financially, Legacy is pretty much a zero-sum game. It costs ~$50/month on operational expenses, and it earns ~$50/month on Google AdSense. If I had no time for Legacy before, when I was focusing solely on HE, I have negative time for it now.

Some time mid-July I had to manually alter the database to comply with a GDPR removal request. That was a manual work I had no intention of ever doing again, and that’s when I realized Legacy became a liability. Because of all this, I decided to officially retire Legacy. I have no plans of changing my mind, sorry.

I must also apologize for not stating this earlier. I wanted to announce this alongside the Hacker Experience update (which was pretty much ready, but it took me over a month to get the courage to publish this post). Again, sorry.

I will release its source code under a permissive license. You’ll be able to host your own game server if you’d like to. But beware: it’s bad, it’s undocumented, it’s untested, it’s buggy, it’s unmaintainable and, once published, it will be very easily exploitable.

If you are a student or junior programmer and read the source code, always keep in mind that the Legacy codebase is a great example on how NOT to write software. [3]

Despite a few dozen death threats sent by a few dozen kids over the years, I had a great time and met some amazing people. I hope you, too, had a good time playing Legacy :)

FAQ

Does that mean Hacker Experience is dead or its development has halted?

No. As I said, I’ll keep working on it on my free time for as long as life allows me.

Why don’t you start a Patreon funding or make a loan in order to quickly finish the remainder of the game?

That’s a risk I’m not willing to take. Also, that is exactly the kind of pressure of which I’m looking to be free.

When will you release the Legacy source code?

Soon. A few years ago I had committed to releasing its source code after HE2 was released, for the exact reason that Legacy would be retired by then. Since Legacy has been retired now, that should happen soon. All I need to do first is remove some hard-coded keys and passwords (!), along with a thorough code review to make sure no key is being accidentally leaked (I told you, things are bad). Once released, Legacy source code will be available here.

Notes

[1] — Anyone can access the HE2 source code (front-end, back-end and infrastructure playbooks) and pick up where I left off, finish the game and sell it as their own. No royalties or obligations to me, as long as they also make their changes public. Since this game was partially funded with the crowdfunding campaign, it just felt right to give this permission away. Read more about the AGPL license.

[2] — For the record: I’m very much in favor of GDPR (although it could be a lot clearer on some technical details). We not only do not sell your data, we don’t even collect it in the first place. There is no Google Analytics or any sort of analytics or tracking on Legacy.

[3] — I do not feel ashamed of the Legacy codebase, and if you have ever been in a similar position, neither should you. It’s okay to write bad code. If you can recognize it’s bad, it means you learned and evolved. We should only feel ashamed if we are stagnated / no longer evolving.

--

--