I spent few weeks thinking regarding New Year resolution and because I promised myself to write more, I thought what to write about in 2018.

My plan was to cover as many technical and non-technical areas in IT (Web Development specifically) as possible, to talk about architecture, about storages, performance etc… There is so much to cover… But what is most important — I wanted to talk about something that has weight. Something realistic. And then I reminded myself how many many years ago I was coding my own browser game. I faced a lot of issues at that time in many different areas, in both back-end and front-end, so I decided that maybe I should make one now and go through every step. These series will be more of “How to”, not DIY, because I will not cover all the details of step by step development, but I will cover all main aspects of it, all issues I faced and how I solved them.

I will go through all areas of building an online browser game, it does not mean I will do it right — this is just my way of doing it, but I will try to explain every choice I made so that it does not look that I am just pointing in the air & of course this will give you ability to criticise me as much as you want :)

Lets start!

[Iteration 0] >> Idea

You can’t start any project without an idea. It does not have to be perfectly shaped, but should give you general vision on how things should look like. Also, you should realistically estimate your abilities, budgets and skillset to actually finish the project.

Because I have no idea about 3D modeling (I did play with Unity3D few times, but to make a 3D game like that I will need to read at least 5 technical books, practice for few months before actually showing anything to you and spend around £1k to buy the minimal assets like 3D models, items etc, probably would need to hire a 3D graphic designer, because otherwise I would stop this very fast).

Therefore I will create an online 2D text-based RPG, but will try to add some really cool functionality to make it different from others. My plan is to make this game more realistic from “functional” perspective (how character will gain experience, train skills etc) and I hope this will add “enjoyment” to the gameplay!

How about the plot? Every game has plot, which should interest people. There were plenty of fantasy RPGs like this, so I decided to make something more realistic. So here’s the plot:

Year 2050, greenhouse effect was not a fairy tale, we used most of the Earth internal resources, so we end up with a big “boom”. After a huge explosion in the core of the planet all mainland has divided into small islands. There was a huge flash, the ones who survived fell into coma, but after few days started to “wake up”. You wake up on one of the islands and now need to survive…

How does that sound? Maybe a bit too “dark”, but lets face it — this plot start can give us a huge amount of abilities to develop the storyline :)

So this is where we are. We have an idea, have the plot, have the enthusiasm. Now the tech. I have build apps in many languages, but feel myself most comfortable with PHP & JS, so my tech stack for the app will be:

PHP 7

NodeJS & Socket.io for Sockets

ReactJS for front-end

Why ReactJS? Because I don’t need full heavy FE framework, I will wrap dynamic components of the game with it + react gets really popular these days, so lets play with it, I will obviously use ES2015 to make things look nicer.

For backend I will use Symfony 3 Framework, just because it will give us a lot of things out of the box + I just love it, so don’t judge me!

Because we will obviously use sockets for real-time interactions — I will use NodeJS for back-end as separate service and Socket.IO on front-end.

We will talk about storage in next post, after we define our data domains & understand what we expect from our database. This will help us understand what is the best match.

Are you excited? I am, let the game begin!

What do we expect as final “product”? Well, because we are not building commercial game — I will write some core articles to cover general aspect of building this game and then will look at your engagement and finish these series as soon as I stop seeing any interest from you guys, so if you find my idea interesting — follow me & put some claps to boost my motivation! More claps I get — faster I build & write :)

Thank you!