This was my third project at "Breda University of Applied Sciences". This project is really important for me because I have learned a lot from it! Since this project, programming finally started to click.

The assignment for this project was: make a Raspberry Pi 3 game space game. I needed to add a flying section, a docking section and a section that you walk inside the spaceship. We were allowed to use the teacher 's OpenGL ES 2.0 framework, and we needed to code in C++. The main purpose of this assignment was to feel alone. In the real world, if you want to make a game for the Nintendo GameCube or something else like a PlayStation 5, you have to sign a NDA to use the dev kits. You are not allowed to share any knowledge of those systems unless the game console company has set up a special chat website for that. You have to deal with the fact that you can't just search for YouTube tutorials. All you got is the documentation. If unlucky, the documentation can be poorly written.

This project was tough because the Raspberry Pi 3 got quite some issues that blocked me quite a few times. Think about overheating, the system itself was really slow and if unlucky... The system could get corrupt (it happened 3 times to me). This leads me to having to completely wipe the memory card and reinstall the OS. Speaking about the OS, this was my first introduction to Linux. Linux sometimes blocked me as well because Linux is quite different compared to Windows. This mostly has to do with the fact that I need to use the command line a lot. Also, this was my first introduction to OpenGL and with the help of tinyobjloader, I made my first model loader.

The weirdest/worst issue that had blocked me took me a few whole days to fix! I finally had input working in the game. I was happy and the next day I wanted to show it to my favourite teacher. Guess what, the inputs were broken. After searching for days of the issue in my own code... I found out that it wasn't my code after all. While the keyboard did work in my OS, it didn't work in my game. The solution: I had to start the game, plug out and in the keyboard, shut down the game and repeat this process until it works. If it does work, it will work for the rest of the day. Yeah, while I was happy to find that solution, I was also angry because I lost quite some time.


The great benefits from this project:

This project has meant a lot to me. Thanks to this project, I got a better insight on how game engines work. While I didn't understand OpenGL that much yet at that time, I did directly start following this online course after this project. That course gave me a lot of answers on how OpenGL works. With that course, I learned how to make my own shaders, rasterized light rendering (point light + spotlight), sky box and rasterized shadows. Click here to view my portfolio page on the OpenGL 3 graphics demo that I made thanks to that online course.

Thanks to this project, I got a better knowledge on vector maths. Coding games did also become easier because I got constantly exposed to common C++ features that I haven't really used before. Learning how to use templates for example, was a lot more important than I expected. Unity, it's component system, uses generic types constantly. I have noticed that after this project, I started to have an easier time by making games in Unity and in other engines. Instead of constantly looking on the internet for tutorial videos, I am now directly typing code and trying to access components/functions that will help me further. If I need something of a component in Unity, I first call the GetComponent() function to see what it contains, instead of going through the documentation or looking online for tutorials. My whole mindset on making games has completely changed, and I am so glad about that! Even in the custom game engines that I have made in my second year in teams, I was already looking through the list of functions if I see something that I can use.

The last thing that I am the proudest on, is the fact that I got so much done in a very short time. I faced so many problems in the first five and half weeks, I didn't expect to come far. Especially because at that time, corona came to my country, and we needed to get into lockdown in the middle of the block. So, most of the features that you can see in this video were made within two and half weeks. You can also see some evidence of me trying to get so much done on the last part of the video. You can see a robot running away from the player. That robot has a disco texture on it. The disco shader was implemented on 02:00 just 7 hours before the death line to show that I understand shaders.

So, if I look back at that block, I can definitely see me growing from a decently bad programmer, to a decent programmer. Knowing how to program really started to click since that block, and that is why I wanted to show you this project! I have learned a lot from my mistakes that I made in the past years, and I am glad that I have relearned how to program properly on this school. I ended this block with a seven. It originally was a six, but due to the difficulty of the project and the corona lockdown, we got a grade adjustment of one point. It also helped me a lot that I started following a few online courses (maths in video games and OpenGL) after this block to understand most of my mistakes on this and my past blocks.

A spaceship flying around. The interior scene.