Battleships – Intro

Battleships – Intro


As it happens, I’m looking for a job again. Things are not great in the developer market at the time of writing. There are fewer and fewer positions for less money than a few years ago and mostly none of them are in PHP. So I have to finally make the transition away from PHP as I have been planning for a few years now.

I do have some experience with C# and the larger .NET ecosystem but a lot (most) of it is from various tutorials I have used and learned from over the years part of my hobby game-dev pursuit (see every other post on this blog). Therefore, that knowledge is not very well structured, and having never seen actual production level C# code I’ve struggled a lot in all of my interviews in that direction.
Also, I have decided to keep the whole C#/game dev part as a hobby instead of turning it into a job. Essentially, I want to have that one thing I do purely for fun and because it’s interesting to me, where I can go and explore without being bound by timelines or deadlines.

So what else is out there? Well, based on a summary search, it seems the most popular alternative is still NodeJS, followed by Go and Rust (I don’t like Java).

The latter two are more interesting to me at the moment and I have used them a few times trying to get the basics done so I am not completely clueless as to what they are. I have had a lot of fun building some simple webcam effects using Rust. At the end of the day, however, they suffer the same issue I have with C# which is that the knowledge is not structured and I have never seen any production code in either.

That being said, I’m going to start transitioning my core skill set from PHP to NodeJS, and depending on how the job search goes, maybe Go. I have had multiple encounters with NodeJS in my decade-long career in web development. I remember when I first encountered it, around the time it first came out, and I had penciled it down to a novelty that would come to pass due to it being based on JavaScript. Over the coming years, I have come across it in different situations and eventually even had to work with it so I have a general understanding of the language and have seen what production code looks like.

Which brings me to the title of this post. To re-familiarize myself with it (and React) I have decided to build a small-ish project (queue scope-creep joke) in NodeJS backend and React front end which is going to be a Battleships online game.

This blog series will track my journey to getting this done. As it stands right now, I have not worked with either for about 2 years so I am sure I will be very rusty. There will be plenty to explore and figure out along the way, I am sure of it. That’s what makes it exciting.

As for the scope, here’s the general bullet point list of features I want this to have:

  • User accounts and profiles (probably integrated with social platforms and such)
  • The actual game with a relatively polished front-end (I’d like to figure out particle effects in CSS)
  • Ranked and non-ranked game modes (Matching algorithm would be interesting to figure out)
  • Friends and groups
  • Match history with a step-by-step replay

Last but not least, I will be making this open-sourced on my GitHub profile so you can have a look through the code and I also hope that this will be a good showcase of my skills.