My beginnings!

I started studying software engineering in 2008, having grown up playing some really awesome NES and PC titles. I'm from a small city in Uruguay and it was very hard and expensive to get a SNES or N64, so I just dreamt with those. Super Mario, Commandos, Age of empires, Half life, Half life 2, Half life 3, oh no, wait...

"How was all of this possible? I need to know how this is made..." 

And there I was, learning how to code the very basics. After 3 years of learning I had the opportunity to take on my first videogame development course, I was SO excited, that was why I was there after all.

We used C# and Blitz3D. C# because we were very familiar with it, and Blitz3D, well, I guess because it was something that we could use with C#.

We learnt the basics of writing a game loop and updating and rendering our game. Made a small game in 2D and then jumped into 3D. These games were developed in teams of 2 people, but I was so motivated that I'm sure I knew all the code involved in each one.

2D game: Finding the missing gems.

We got all the assets for the game so that we could focus on development. The game is a grid based platform game where you can't control the main character, but have to control the environment so that it can travel the world. The objective is to get as many gems as you can and get to the exit. Here's the result:

We made another project in the visual studio solution for creating a map editor. This was so useful because level design in Excel or just plain XML would have been a nightmare. By switching the tile tipe and clicking on the game you could just edit it blazing fast and save it as a well formed XML. Then you had to manually set the level number, because that's how the game would later sort the levels, but it was a minor step compared to the whole level design process. 

This level editor wasn't a requirement, but it was so quick to implement and added so much value! Fun fact: Next year level editors were a requirement in the course so it looks like we elevated the standards, sorry guys :D

I found the .EXE! And it still works in Windows 10 lol. I don't expect you to just download and open my .exe, but I promise it's just the game I made years ago :)

Finding the missing gems

And also pushed it to Github, it's fun to look at our own code years later.

Github repo

3D game: Air race

Got the assets as well. This consisted in going through all the checkpoints with an airplane as fast as possible. This was really fun and illustrative. There was no visual editor for the world! Designing the world was pure imagination at first, which was really useful for understanding space and transformations. I didn't realize that at the moment, but nowadays with visual editors in Unity and Unreal there's no need to think about space so much, and there are so many advantages of having a good understanding of space in 3D games (of course!).

So many new concepts here, pitch, yaw and roll, that directly apply to airplane movements. Sound volume and pitch for the engine. Camera control, near and far planes, fog. Collisions. Sprites in 3D space. So much fun! This was a dream come true!

We also implemented a level editor, which was tricky because previewing the cones in the 3D world implied so many things. First we needed to know where the mouse was pointing, put a placeholder preview with some alpha, rotate it with keyboard, then actually place it when user clicked. But we made it, and it worked beautifully. Simple implementation, checkpoints weren't sorted, just stored in the same order you created them. So proud of that one! Again, map editors started being a requirement next year :D

The arrows on the left/right side of the screen weren't a requirement but it was hard to find the destination without them so we decided to do something about it. We ended up transforming the destination point from world space to the airplane local space, and checking the X coordinate so see if it was on the right/left side. And we also used the straight line equations to check whether the destination was visible or not, by discarding the Y coordinate and seeing the world as a 2D horizontal plane.
I couldn't find the source code for this one :( really sad about that, I'm really curious about how we managed to do the space conversions without having a good understanding of scene hierarchies and local spaces at the time. But I found the .EXE though, funny how they still work:

Air race executables


This two games were my first creations and the beginning of a never ending learning journey.

Really proud of these, and remember them with joy.

Comments

Popular posts from this blog

Semantic versioned Unity package template