Tome of Heroes – Making a Game by Yourself
This guest post was written by Stefan Pulciu, founder, developer and designer of Tome of Heroes.
Tome of Heroes is a real time player versus player game designed for mobile devices. It’s set in a fantasy world in which you build a team of heroes around your strategy and fight in the arena versus other opponents from around the world.
Stefan began working on it in October 2016 and published it as an open beta on both iOS and Android in April 2017. He’s still working on updating and adding new content to the game. Some of the things he’s working towards are dungeons & story lines and an open world system that combines both PvP and PvE.
The Intro
My name is Stefan Pulciu and I’ve been fortunate enough to be born around the time when PC video games first came out. By the time I was 10, I was already hooked on multiplayer games like Diablo and Counter-Strike and competing versus other people at LAN cafes. A few years later I got into graphic design doing fan art and slowly but surely I became a web designer and front-end developer.
All this time, I kept playing all sort of player versus player fantasy games and constantly dreamt to make a game of my own one day. It was that type of dream that you fantasize about during long car rides or during flights while staring out the window. About 15 years later, in October 2016, after working as a web design director for 2 years at a company in San Francisco, I decided it was time for something new and I figured that this was as good of a time as any to finally “bite the bullet” and give game development a try.
My dream was to make a game similar to the ones that I’ve been playing all these years, a fantasy game with awesome heroes, magical abilities and of course player versus player combat. While I have tried out Unity in the past and even completed the “doughnut tutorial” in Blender a long time ago, I didn’t remember much so I had to start over from scratch. I decided to drop everything that I was doing and focused entirely on the magical world of learning the ways of game making. Shortly after I got started, I quickly discovered that anything other than a mobile game would have been too much for one person to handle so I settled on building just that.
The Visuals
There wasn’t much need for 3d modeling or texturing in web design so I didn’t know a lot about it. I didn’t even know which software I should learn, but since I wanted to publish something and maybe even make some money with it, I figured Blender was the perfect choice for me, since it was free. When working by yourself on a project like this, all of your resources are pretty limited and money was no exception. I had just enough funds saved up to keep me going for a few months, maybe a year.
The first thing that I needed to consider when I built the visuals was that I really wanted the game to run smoothly even on devices that were 3 or 4 years older. That required a bit of optimization work on my end. I found two main aspects to be really important and that’s a smaller poly count for my geometry and packing my textures really well into as few texture atlases as possible. It’s “easier said than done” though and at first I really struggled building anything that I was happy with. Eventually though, after a lot of practice and analyzing, trying to figure out how other people built their models I figured it out. The trick was to try and simulate as much of the shadows and 3d details through textures instead of geometry.
‘Halfway There’
At each step of building my project, I constantly heard that I was halfway there. When the visuals were done, I was halfway there because I still needed to code the game mechanics, when those were done I was halfway there because I still needed to build the networking, when that was done I was halfway there because I needed to build the databases, user data and interface for it and when that was done, I was halfway there because marketing is just another domain of its own. That’s not far from the truth though as each of these steps are pretty complicated so I could say I guess that my loading bar has been stuck at 50% for some time now.
The Game Engine
Picking a game engine was the next step that I had to decide on. I had played around with Unity a few years back and all the reviews and forum posts that I read spoke nothing but great things about it as a game engine for mobile games. It also helped that there was a great amount of documentation, free project files, tutorials and so forth on how to do just about anything.
Unity Multiplayer vs. PUN
The next step in my journey was to pick a platform that would help me turn my game into a multiplayer one. For me, this was the most difficult decision in the entire project as I didn’t know anything about how multiplayer worked and what I would need for my game. Even though I was able to find a lot of blog or forum posts that compared all the available solutions, I didn’t know which characteristics would be important for me. I decided to move forward with Unity Multiplayer as that felt like the natural thing to do. They built the game engine so surely their multiplayer platform worked best with it. I can’t say anything negative about my experience with their service, however a few weeks later I decided to switch to Photon and I have to say that I’ve been very happy since.
One of my main concerns was that while the things that were being discussed in blog posts, forums and in Unity’s presentations sounded great, it didn’t feel like things were progressing very fast with Unity Networking. There wasn’t much information on the roadmap page about networking and at the time I found some presentations of “features to come” that were close to a year old and still not implemented.
As a result, I got the feeling that Unity’s Multiplayer platform was more of a secondary service they were providing and not something they were really focusing on. On the other hand, on Unity’s own forums I was constantly seeing updates on Photon’s posts with patches and fixes being released all the time. So my mindset changed from “surely Unity Multiplayer is the way to go, since they also made the game engine” to “maybe I should pick a platform whose main focus is multiplayer since they’ll put all their time into it”.
Pricing
For me pricing felt like a no-brainer and for obvious reasons. It didn’t take a genius to realize that Photon’s price of $0.05-$0.10 per GB of bandwidth (depends on region) was much better than Unity’s $0.49/GB. With Photon I also got 3GB of bandwidth per concurrent user for free so if I managed to do a great job at optimizing my game (which I did), I might not even have to pay for bandwidth at all.
Concurrent users (CCU) was something else that I needed to consider and with Unity I got 20CCU for free just like with Photon which was great for development and testing. If I wanted more though, Unity charged $35/mo for 50CCU or $125/mo for 200CCU. With Photon I was able to get 100CCU for 60 months for a single payment of $95 and I could also add another 500CCU if things went well for $95/mo which amounts to 600CCU in total which is 3 times more than what I could have gotten with Unity and $30 cheaper at the same time.
Even though all of this is from the perspective of a new and indie developer, it’s a bit hard to argue with the numbers. You might even think that maybe there’s a catch or maybe the quality isn’t that great, but from my personal experience at least, everything’s been great so far!
Traffic Optimization
Moving a hero from point A to point B can be done in many different ways. In the games that I’ve played, characters moved depending on which keys were being pressed. If you pressed forward, it would go forward, if you pressed right, it would move to the right. I also found some mobile RPG games that used a joystick in order to output a similar type of character control. The issue with this sort of movement however is that you have to constantly sync up your position with other players so you’re constantly sending data through the cloud server.
What I decided to do is to use an RTS type movement where you simply just tap on the ground to have your hero move to that location. This way, instead of having to constantly send data about the location of my hero, I only needed to send the destination point and the rest is handled on each player’s device.
Better yet, if you don’t have any elevation, you don’t even need to send a Vector3, you can just send the X and Z position as the Y doesn’t change. Even better, you can also convert the X and Z from floats to ints to decrease the size of the data as the position doesn’t need to be that specific. So as a result, players in my game are generally sending 2 ints every 1-2 seconds, depending on how fast and good they are at the game. New players, instead of costing me money for trying out the game, will likely use even less bandwidth than someone who plays regularly because they’re a bit slower at it.
Marketing
Often it’s not important what you’re selling but how you’re selling it. Regardless of how good your game is, you need to be able to promote it well enough so that people are interested in trying it out. This part of the project however is unique for every game and how you reach your potential players is up to you. You can advertise it through common platforms like facebook, twitter or youtube with posts, videos or even static images, you can try to find some streamers to review it and endorse it, join some communities of gamers who are interested in the same genre as your game or just hire someone to do that for you. I don’t think there’s a clear recipe for success and you may find that the options that yield the best results may change depending on where your game is in terms of growth.
From my experience, starting from scratch, I found the best results to come from more “organic” channels. I introduced myself and my game on various forums or community websites and I interacted with the readers that replied to my post. This made my post stay popular for longer and a large percentage of the views converted into app installs as people wanted to try the game out and comment on it. By comparison, I also tried advertising on those same websites or platforms and even though analytics showed a high view number, a very very low percentage of those views converted into installs. So my conclusion is that it’s better if you can advertise and market your game while interacting with your audience directly. I’m sure advertising works well too as it’s a thriving business, but you need to be ready to spend quite a bit of money to get similar results. While you’re just getting started though, I would recommend spending that money on an awesome trailer and other marketing assets and trying a more “organic” route for spreading the word.
Conclusion
For me, the most important part in all of these steps was to keep an optimistic and positive attitude towards the work that I was doing. Each part felt like a mountain impossible to climb at first, but by taking things one step at a time I was able to learn and complete all the tasks that I set out to do.
So if you’re working on a game by yourself, don’t worry, even though it’s a lot of work, keep at it and you’ll get there! After all, you’re already halfway there 😉
You can learn more about my game ‘Tome of Heroes’, watch its awesome trailer and download it at www.tomeofheroes.com.