Ellas War is a free online game that allows you to build your city during the Ancient Greece. I have started this project in 2007, when I was in high school. Thanks to this project, I have discovered a lot of different technologies and problematic. I’m starting a series of articles about this wonderful laboratory.
Development languages used
The project has started in PHP, using a MySQL database and no framework. The project hasn’t evolved much during 10 years. I have added new technologies like a cache (APC) and a Database abstraction layer (PDO) to improve the security. I have also made a small mobile website, compatible with 2G phones.
In 2017, I have started to rewrite the game from scratch, using NodeJS, Socket.io and AngularJS. Unfortunately Angular 2 was not ready yet, and not using it instead of the deprecated AngularJS has been one of my biggest mistakes. This migration has allowed me to use Cordova for the mobile version and I have published the game on the Amazon App Store.
In 2020, I have decided to rewrite the whole project from scratch, again. This time, I have continued with NodeJS but I have migrated to a recent version of Angular and later I have added Redis as Cache/Queue. I have also used only free images and published on more App Stores (Google Play Store, Microsoft Store and Snapcraft).
I have started the project on a free hosting (provided by Free) but quickly I have migrated to a dedicated server. This migration has forced me to learn how to use GNU/Linux. Except few the months with O2Switch, I have always used a dedicated servers.
On these servers, I have had various Operating systems (Centos, Debian and Ubuntu), and different setups (Native, Docker, Kubernetes). My latest setup is using Docker, the best compromise between overhead, flexibility and security in my opinion. Kubernetes was using too much resources for my small servers and using containers has also flexibility and security benefits.
During these more than 15 years I have managed a team, until 10 persons. I have sliced the responsibilities and defined many different positions. It’s very hard to work with a team of voluntaries, with different goals and availability. Unfortunately, the size of the team is now very reduced.
This project has thought me a lot, technically and not technically. If I had to do everything again, I would maybe do the thing differently but it has give to me a lot of experience.
My biggest mistake has been to don’t used directly a framework, to ease the development. Picking directly Angular 2 would have also saved me a lot of time.