Master of Orion II: Positronic Boogaloo

I am a software engineer from Murcia, Spain currently living in Utah.
I love software development, programming languages, writing, drawing, Star Wars and my family (in no particular order).
Search for a command to run...

I am a software engineer from Murcia, Spain currently living in Utah.
I love software development, programming languages, writing, drawing, Star Wars and my family (in no particular order).
No comments yet. Be the first to comment.
In this series, I will discuss the creation of the classic MoO2 game using new web technologies. My intention is both learn new things and enjoy working on one of my favorite games of all time.
First class for Jazmin, 7 and Natan, 6. We went over the very basics of math using Node. How to add and substract numbers mainly. They were excited to see that the computer is able to process 123791237+1238933 just as fast as 3+2. The result didn't m...

For this session I will go a bit deeper on data types. We are mixing numbers and strings and seeing the result. I decided to stay with Node for the time being. We'll see how this goes. We also jump to a text editor. I decided to go with nano so that ...

First time with a computer. This is getting serious! Elisa is using a MacBook Pro and Leandro is using a Lenovo T440 with Fedora. Both are on the terminal, ready to learn and with a weird look on their faces that says "what the heck is this boring sc...

Today was the first lesson. We did not even touch the computer today. With a white board I explained the basic parts of a computer, with special emphasis on storage. What is memory? What types of memory are there? What is an SSD? What is RAM? What do...

One of my favorite games of all time is Master of Orion II. It is a game that I find myself playing throughout the years. The game is very replayable and especially after a few mods fixed some of the issues in gameplay and some bugs, the game is better than ever.
One recurrent thought that I have as I play MOO2 is could I do this better? Or I wonder how they did do this.
So I took this MOO2 itch and mixed it with my itch to program new stuff and I went at it: I am remaking MOO2 using new technologies, with a good mix of what I already know how to do and things that I am learning.
How far I will go I don't know. In a way it does not matter at all. It's the journey that matters, it's the steps taken that are fun, not so much the end result. Although the end result here could potentially be as much fun as the original. Wishful thinking, I know, but a goal worth pursuing.
For the frontend I went back and forth with a couple of options. I considered using PhaserJS but I wanted to focus my attention on an interesting backend first, which meant that the frontend would need to be a boring one.
Of course, this is going to be a web game.
I went with Angular for the UI, and simple SVGs for the graphics. That way I can have my fun playing with Inkscape and not worry too much about the programming itself.
The web UI will have the ability to connect to a particular game server, browse created games, create new games, and even switch between games in the same session. Ambitious, but I have a clear path in my mind.
Another thing I may try is NgRx, because I need to manage a huge state and I've never used it in a bigger project.
I considered Elixir, Go and Node. I still don't feel that comfortable with Elixir and balancing the know-how/learn-how tipped the scale in favor of Go this time.
It will offer an API to host a variety of multiplayer games, including a websocket to push game updates. Since the game is turn-based I expect the network usage to be manageable.
In the future I will probably have to include some kind of logic to make sure I only send that which has changed. Or maybe even try Elixir's LiveView!
To begin with I will keep it simple. Everyone will be able to see everyone else's state in the updates. No security by default. I'm sure this will not be a huge problem down the line.