Developer

Developer's Side

First encounter with code

The first time I saw a line of code was when I created my first Open Tibia Server (OTServer). It was a quite straight forward task: google "OTServer download" and after clicking on several links redirected to viruses, one of them finally got you to the download button. Each server came with its own installation guide, where you had to enable a local server with the game and the web page, both connected to a MySQL database (which already had all the basic structure of accounts and player's data). The web server and database were based on a XAMPP instance, and the game server had its own executable that would fetch the code hosted on your machine.

XAMPP

Photo

Then you had to do some marketing by publishing the IP address in any OTServer's web page (obviously using a DNS so it wasn't just meaningless numbers and also to give the game an identity). The players connected using the official client of the original game, installing an IP address changer to redirect it to the new OTServer.

So far everything was explained to the letter by the creators of these OTservers, but at some point you had to decide how the gameplay was going to be for the players: PvE or PvP focus, how easy was obtaining experience and loot from enemies, creation of new quests and places to hunt, or even the invention of new monsters to kill. For that you had to go into the game, first opening the LUA file that controlled the main stats of the game, and also the XML files that had the lines of code for characters, NPCs, monsters, items, magics, and thousands of other variables. You could also modify the sprites from the photo files and the maps using the map Editor embedded in the downloadable files. It was a world to experiment with.

Config.lua

Photo

File.xml

Photo

Second (failed) encounter

In college, Introduction to Programming was a mandatory course for freshmen, where we were taught the basics of coding through Java. I remember that it was not very well structured, and it had a reputation for being a course with boring projects, so I failed to connect with the code, and decided not to follow the computer science major. I regret it to this day, if I could make the decision again I would surely be a computer scientist by degree (in practice I'm trying to be one).

Third and definitive

Since then I lost connection with the coder world, and started to focus on my career. 8 years later (wow, that's an eternity), and with some back and forth with programming my own OTServers, I got back on the coding track. I remember my brother was looking for a job, and in the meantime he signed up for online programming courses. He showed me some stuff he had done, and I said: sh*t! I've wasted a lot of time these last years, this is what I like. So I joined his crusade for self-educating us in programming. I started with a Django course with Code with Mosh (it was what was cool at the time, obviously I was stubborn and didn't learn Python first). I was struck by the capabilities of the resources available to make web sites.

Code with Mosh

Photo

I also did another Django course with Jose Portilla to get better in the use of the framework and combine it with front end knowledge.

Jose Portilla

Photo

Missed the basics

But I realized that I didn't understand how Django worked, I was missing the basis of the language. So I bought the 100 days Python course from Dr. Angela Yu to get a good handle on the language and understand the concepts and different types of variables (I ended up doing it in less than 30 days). At the same time, I took more in-depth online courses in computer science and read Computer Systems: A Programmer's Perspective to understand how computers operate at the hardware level.

Angela Yu

Photo

Went deeper

To continue my learning odyssey, I researched which was the most common language for game development. It was hard to decide, but finally I opted for C++ because of its wider application in other types of projects such as OS and embedded systems. Also, if I had to learn to use an engine in the future, Unreal Engine sounded much more familiar than Unity (which is why I discarded C#). I took basic online courses in C and C++ to understand the basics (so far the use of pointers and garbage collection gives me a little headache).

Even deeper

After many courses where I was guided through "personal projects" (not so personal when you are following someone's instructions), I ended up getting bored of listening to a teacher. It was time to get down to work and learn how to do something that really motivated me: a video game. I analyzed the best way to approach this: potentially make a web game (I had to learn JavaScript, which I finally ended up learning to make my last web server), use an existing engine or create something from scratch. I concluded that the best way to start was with an existing engine, the other options could be done later, after learning how the most used systems in the industry worked. As I already had experience in C++, the obvious engine choice was Unreal Engine.

Here the real journey began. I bought a course from GameDev.tv that taught me the basics of the software: use of the PlayerController, GameMode, and other classes through C++ and Blueprints; and the use of the map editors, materials, animations, and more; to create a complete game experience.

GameDev.tv

Photo

Focus

Once I gained the basic knowledge, I set out to make my own game. But how should I start? I'm a fan of MMORPG games. They've marked my life: I have made friends and learned a lot (I owe my fluency in English to these kinds of games). I prefer to tell this experience on its merit, giving as much detail as possible, please go ahead if you want to appreciate this project.

In the meantime, I started to notice that Unreal Engine is a luxury car with thousands of functionalities that at this moment in my learning path I don't need. That's why I decided to start my own game engine development, this time in 2.5D, for which I'm following a Pikuma course. In the long run, I want to create my MMORPG. I will continue sharing with you once I have progress!