Recently I wrote a summary of the last five years working at Pixelmatic. Now I am going to go through my ambitions for the five coming years.
Like everybody knows at Pixelmatic, we are preparing a very ambitious MMO game called Infinite Fleet, details on https://www.infinitefleet.com. And it pushed us really hard to step up to deliver the quality we aspire to. While a lot has changed already internally, there is still a lot I ambition we will invest in the future.
First, let's start with what I want to keep working with:
- Angular and Typescript This pair has been a winning combination for us, enabling us to develop our entire website fleets pretty quickly, and efficiently reusing a lot of components internally.
- Strapi We fell in love at first sight with the WordPress-killer CMS. We increased our development pace, and we relegated WordPress to be a simple microservice. Their development team is pretty active, and they have constants improvements, so definitely a must-keep for us.
- Go Our previous games had a PHP backend, and we had a pretty good experience working with Python on Vainglory, but we decided to switch to Go. Because we think it is a step forward towards performance and scalability. We are also moving from a purely monolithic architecture to a microservice architecture served by a monolithic codebase. With that, we are taking profit from both worlds, the microservice architecture yet keeping our codebase homogenous and consistent.
- ECS Moving to Unity DOTS is still pretty frustrating from time to time, but that new paradigm that is ECS is a winner and helps to maintain a good codebase.
- Docker and Kubernetes While for our game services, we are using Kubernetes, we are also using Docker here and there. For example, with https://www.magicalcryptofriends.com/, we use Docker containers deployed in an autoscaling group.
- Linux for servers Maybe dumb to reiterate on that but, Windows Servers are awful. Always use Linux :)
- Git and GitLab Last time, I was mentioning GitLab with code review and merging. And I will emphasize again it has been a big winner for us. It improved our code reviews and code quality overall. I shall make an article later to explain how we use it and share tutorials on how to onboard people on Git (which is not easy sometimes).
- Visual Studio and Visual Studio Code For quite some time, I left Visual Studio aside to try other solutions. But I have to say that the latest Visual Studio Community 2017 and 2019 are pretty good and made me return to the IDE. Another thing I started to use regularly is Visual Studio Code with Python, Golang, etc. And it is working great. I am not sure how Microsoft won the war with the super trendy Atom and the more discrete Brackets, but they did win the war of the Electron-based IDE. So I think I will keep using Visual Studio for the next five years.
- vi Sometimes Visual Studio is a no-go, and the solution for me has always been vi/vim. Though I regret it doesn't work great in Windows sometimes. Hell to nano and emacs.
- Bitcoin and Liquid We have been using Liquid for our STO, and the development experience has been smooth so far. We are also going to use Liquid for our in-game currency for Infinite Fleet. I'll give more details on both in future articles.
Second, what I want to invest in:
- Lightning It is a good complement to Liquid that could allow us to do instant transactions with high scalability. Once our business model proved itself and the Liquid network adoption grew up, fees may get more expensive to some point that Lightning may be a good alternative. Also, Lightning RGB is something I will keep an eye on and experiment with as soon as possible.
- ION Although we went with a custom solution for Decentralized Identities based on OpenTimestamps. We will very likely move to ION for the Beta of Infinite Fleet if not before. ION is also backed by Bitcoin like OpenTimestamps but use Decentralized Identifiers standard https://www.w3.org/TR/did-core/ which are decentralized and flexible.
- Golang or Rust While we went with Golang for our platform backend, I feel Rust and Golang will compete in the next five years. Rust is pretty popular among crypto projects nowadays, and we are finding more and more software built with it. So we will keep an eye on that competition and use whatever the best tool is.
- Low/No Code With cloud services, constant high-speed internet connection, AI, tools like Zapier, I do believe a lot of things that previously required coding won't anymore. And the first example is blogging. This blog is no code blog. I am using HashNode, and I invite you to join the community. Create a blog! You can use my link to get started: https://hashnode.com/@sonny-ad/joinme
- Zeplin, Figma, Sketch, ... These tools are already trendy and practical. Most web designers already moved to them for the good sake of the developers who can get precise info from the design mock-ups without harassing the web designers. But I think these tools still have room for improvement to get more and more adoption and streamline web and app design even more.
- AI, Deep Learning, Machine Learning We started experimenting with Utility AI in our game. And I want to combine it with Deep Learning to improve even more the decision-making. We also have been studying AlphaStar documentation as I believe it would make a good Atrox player for Infinite Fleet. The recent news about GPT-3 is also super exciting. Imagine how we could produce much content for Infinite Fleet. We could do NPCs, Missions, and much more on-the-fly by using GPT-3.
- Analytics By that, I think data-driven development, which is IMO very important for us. While we do care about privacy, and we will make sure to not save any private information that could identify players, at any time, players will have options to opt-out. But we are doing an MMO. If we were to gather feedback manually from each of our players, it would be endless. Analytics will help us to review and improve our game in a regular and streamlined fashion. FYI We are looking into building a stack around Redshift, Segment, and Amplitude.
- QA Another important subject for us in the coming years is increasing our QA budget. We just started to build a team and started to define test cases and such. In the short-term future, we will invest in an automated testing stack to deliver better products.
Third, what I would like to give it a(nother) try:
- Ruby Like I mentioned in my previous article, I like Ruby's syntax. I find it elegant. So I am still thinking about switching some of my Python or JS scripting to Ruby. But I did not make the change yet.
- Svelto.ECS For Infinite Fleet, we went with Unity DOTS which includes Entities, their ECS interpretation. But at the time we took that decision, we also evaluated Svelto.ECS. And since, it became even better. While it's too late for Infinite Fleet, for another project, I will likely consider it.
- Unity ML Agents Deep reinforcement learning is something we want to experiment with, and Unity ML Agents seems pretty complete nowadays. So we will likely give it a try.
- Unity Game Tune Another ML framework from Unity, which could be interesting to try for Infinite Fleet.
- NanoVMs We use Kubernetes and Docker, and it has been great, but it doesn't mean this is the end. NanoVMs have, according to them, some serious advantages, like better performance and better security. So I would like to explore it.
- Cloud Gaming Stadia from Google, GeForce Now from NVidia, PS Now from Sony, xCloud from Microsoft, ... all the big actors are coming with their solutions. And I strongly believe cloud gaming will get more and more popular. As the games become bigger and bigger the installation time on consoles gets longer and longer, while with a simple button pressed you can get straight into a game on Stadia.
Fourth, what I want to get rid of:
- PHP I started my programming path with PHP3, all procedural, and I loved it. Starting with procedural made things easier to understand IMO. After that, I had been a long time PHP (4/5/7) programmer. But during these last five years, I have just seen better tools and languages. NodeJS is super easy to use, and npm registries are full of things you can reuse. Golang has good performance, integrates well with new tech like Kubernetes, and is pretty easy too. IMO PHP lost the race. Maybe they'll come back? They recently released PHP8.
- Any non-native mobile app framework At Pixelmatic, we had some side-projects that were mobile applications. Each time we picked a non-native framework like React Native, Xamarin, NativeScript, or others, it didn't end well. Sometimes the framework was too early and too limiting that we could not achieve what we wanted, or the performance was poor.
Thanks for having read until here! You are the best. The next five years are going to be challenging for us at Pixelmatic. There are many technologies we are going to invest in to make Infinite Fleet a great game. Keep an eye on us and follow Infinite Fleet on Twitter.
Did you find this article valuable?
Support Sonny Alves Dias by becoming a sponsor. Any amount is appreciated!