Well, hi there, guys! I’m sitting here now looking at the endless sheet of code and conducting a code review with a Red Bull can in my hand. A year has passed. A year, damn, just a year - that’s so much and so little at the same time. We had crazy plans for this year, and now it seems that only a part of them came true. On the other hand, we managed to do something really awesome - we are in the history of IT now, even if with the note “Craziness and courage”. In fact, I’d call this story "How to create your engine with tools and render from scratch in just a year". This book would be published in several volumes, but ok, whatever, I need to start somewhere. Let’s go!
A year ago we started a project that I now want to describe in details. Considering the experience we gained, I can safely say: this is one of the most risky and ambitious things that have we ever done. I think the experience of our team would be useful to other game developers. Well, at least this story will amuse the players.
Now I have to introduce myself: my name is Ivan, I am the technical director of a young but ambitious company. The last 5 years I am engaged in the development of commercial game engines. I’ve worked for 7 years in a large gaming company, where I created the engine for a session-based multiplayer cross-platform game. Before that, at all previous workplaces, I created either game engines or games entirely. And an important note: almost all of my experience in developing engines was related to mobile platforms.
The first project that I worked on was the development of an OpenGL compatible 3D engine for mobile devices for Motorola. Then I developed an engine for casual games, and the customers of my company were Electronic Arts, Chillingo, Big Fish Games and other famous and not so famous companies. The engine that I’ve been developing eventually was used at another quite large game project. In general, the engine I had been working on has evolved over the years. It was an open source technology, and we began to develop it when the company, under the auspices of which we had made games for our customers, was still quite small. We continued to work on it, then we released one of the first shooter MMOs on iOS / Android. We made kind of a breakthrough in the mobile shooters market which is still emerging by now.
About a year ago I gathered my strength and left the company, left the project that was loved and dear to my heart in order to set sail for free swimming. It wasn’t easy, I had my doubts for a long time, but all my accumulated experience and knowledges that I gained over the years of work suggested that my “luggage” could be packed into something no less, and maybe even more cool. I even imagined how this can be done, but I wasn’t sure that our small team would cope it. I wondered if we could make a high-quality technology that would be in demand on the market in a short time. But, as you know, fortune favors the brave, and we did it. Pretty quickly, we put together a team of professionals, driven by a common aspiration - to make a new, completely unique technology that will show the market how to get the most out of the hardware of modern mobile devices. Aaaand that’s where it all started.
After a month of the existence of our gaming startup, a plan was formed. Something completely new and completely unique, superior to all existing solutions. It sounds very ambitious and cool, right? And it is! But, of course, there were risks. We set ourselves a goal - to embody our immodest idea in just a year, and within a year and a half to launch our first game.
I know, I know, at this moment it starts to sound absurd. But - unexpectedly - this crazy idea had found many supporters in our team. And it proved how important it is to enlist the support of the people who are as adventurous as you when you are trying to accomplish something incredible. I won’t lie, the idea of launching your own engine motivates programmers to great deeds. Many recalled the successful history of 4A Games, where developers, having left GSC, created from scratch the engine for the sensational Metro. It seems to me that the success of the guys from 4A will motivate many developers around the world the same way they inspired us.
So, we made a decision. And in this blog, together with my colleagues, I will tell you in which agony our technology was born, through what thorns we made our way to the stars, and why we made those exact decisions that we finally made. I will tell you everything about the creation of Blitz Engine from the very first day of development to the final release. No any embellishment of the inner kitchen, only 100% true truth.
The first question you will probably ask should be: “why won’t you use Unity or Unreal?”. Well, the question is quite logical and correct.
In general, choosing the dream engine - the one on which that million-dollar-worthy-game would be made, - makes all the indie-developers to face a choice: Unity or Unreal. Actually, both of them have their pros and cons, but why didn’t they suit us?
Let's start with Unity. There’s no any questions about it, except for one thing: it is C#, and we used to write in C++. In short, Unity is not an option. If you want to advise us Unity because it is an excellent technology that allows everyone to write in C++ (if there’s a great desire, lol), then let's be honest: it is not a full-fledged C++. And we are not C# developers, and we don’t even wanna become them yet. Moreover, despite all the efforts of Unity developers, this is not the most efficient and the fastest technology. All the decisions made using Unity lead to restrictions and limitations.
Unreal is in C++. And this engine was written by smart guys. But the creation of this engine has started about 10 years ago. The architectural solutions that have been used there were state of the art solutions of that period. But the world has changed, and in 10 years many new and progressive ideas have appeared. Perhaps, not so original as to write UE5, but enough to make a decent breakthrough. We decided to bet on these new architectural solutions and approaches.
“Unreal is awesome, it's written in C++ by professionals”, the attentive reader will say. And yes, of course, it is. But let me remind you: our goal was to move the industry forward by creating something incredible. Unreal is a general purpose engine. And this is not bad, it helps universality. Such technologies are designed for games of different genres, but this advantage also means architectural limitations for engine developers. And at the start, we planned to tear down borders and stereotypes, not fit into them.
As a result: to choose Unity means to choose an environment that is alien to us, and to choose Unreal means to make an average project. Both options didn’t suit us.
Everyone knows that the top modern shooters on PC are made by studios on their own engines. EA has DICE and the Frostbite engine, Activision and Ubisoft have their own technological solutions, 4A Games also built their own engine, id Software has id Tech. Developers of top shooters for consoles also create their own engines. Yes, of course: it takes more work, time, money, and everything else. But then you get full control over the technology, it’s all yours. You can choose solutions that will be faster and more efficient for your purposes than ready-made solutions “for everyone”. The whole trick, in fact, is in customization: you decide what is important to you, and you put emphasis on it. Exclusives for consoles are designed to squeeze the maximum from super-powerful console hardware. And this is what we need, but not on consoles - on mobile phones!
But we decided to go from the opposite: we didn’t try to create a solution for top-end hardware, but at first, we looked at the weakest devices that we definitely need to support. We took into account their characteristics and started to look for technologies that would allow us to run on these devices in high quality. So we could squeeze the maximum fabulous visual from the minimum characteristics. And yes, of course, the solutions had to be such that later we could easily improve them for high-end mobile devices, up to the level of quality of consoles and PCs.
Almost all modern mobile shooters are based on Unity or Unreal. You have already understood everything about our ambitious plans to turn the industry around, so the fact that we decided to introduce innovations at this stage won't come as a surprise to you. We ignored the traditional dilemma of Unity vs Unreal and began to create our engine.
First of all, I’ll show you the video. The proof of our achievements. It shows everything that we have worked on for the whole year. We tried to make the most of mobile devices and create a product that can, if not compete with computer games, then at least come close to them in quality. Actually, as I already said, our main goal, no matter how crazy it may sound, was to make mobile games much better and move the industry forward.
There is such a rule “know your hardware”. Its importance is difficult to overestimate. We have repeatedly seen how top teams did something impossible for consoles. Mostly because they knew what to push off from. They decided in advance what did they want to outdo. We always wanted to make shooters, but we soberly assessed our strength: today the market for shooters on consoles and PCs is huge and full of high-quality products. At the same time, the mobile market is unfairly deprived of attention, although much can be done here. In general, everything came together: we decided to correct the situation.
Summarizing, we formed the following general direction of our project:
Console-like quality of graphics on mobile platforms
The main focus on shooters
Network engine for session games
Infrastructure for operating the game
And, actually, a cool game
We planned to implement all this in 1.5 years.
Of course, we constantly heard from colleagues: to make your own engine, when there’re Unity and Unreal, is craziness (and there’s no even courage in it). We were offered a huge number of ready-made solutions, on which someone already did something nice. But we had a completely different opinion.
We decided to create our own engine. And now I can proudly say - we did it, and we did it great. The engine is already done, and it is very promising. Exactly the way we wanted, exactly the way we expected. We are actively working on our new game now, so we hope to launch it already this year.
I won’t hide, people are still skeptical when it comes to our idea. When we meet someone new and we share our plans, they are always in doubts. But everything changes when we take out the iPad and show our trailers - the proof of our achievements. Then people understand why did we start all this. We show the graphics of our new game to our new employees during interviews, and they don’t believe that we made this spectacular thing for mobile phones. Sometimes they ask three or four times if we are joking or not. A revolutionary product requires non-standard solutions.
Yes, this year was tough, and we had to work very hard. But now we have a revolutionary engine, a great game Battle Prime and a funny story that would be interesting for many developers.
Usually after watching this video people tell us that they don’t believe. Almost everyone tells us that everything would probably be different in the final release. Well, nobody trust trailers... But you should really believe it cause it’s true. And also you should let me know how do you like it in the comments below!
Now we want to tell everyone how the Blitz Engine game was developed. So, I will release the whole series of articles on how the year of our development has gone.