Well, the second year of my degree is officially over. I can't believe it's been two years already. It feels like yesterday when I decided out of the blue to become a programmer and start learning C++. I now have a foundation degree in Software Engineering & Game Development, but I'm doing the one year top-up to achieve a Bachelors degree. Even though I have the entire summer ahead of me, I've already started work on my dissertation as I've chosen something rather ambitious.
The past two years have been something of an eye opener for me. I initially chose the course because on the second year it included a module on modding games engines and for me this sounded like the perfect job. It made me think of game mods like the Skyrim Thomas the Tank Engine or various GTA5 mods (like this hilarious one showcased by Funhaus, I've watched this a thousand times and it never gets old). However, when I eventually got to this module after a year and half, I absolutely detested it. We had to use Unreal Engine 4 and create a game within a team of 5. I can now say with absolute certainty; that I detest Unreal Engine with a burning passion. I also don't particularly like 3D modelling or creating game assets which is half the point of being a games developer. I find these aspects to be tedious and boring.
My problem I suppose is that the first language I learnt was C++ but in a C-style. Principles & Practice by Bjarne Stroustrup is an excellent book for learning C++, however, by learning it in a C-Style, I have come to hate object orientated programming and much prefer the old procedural style that had to be used with older languages. My favourite module of the second year was 3D games programming in which I used DirectX9 and C++ to create a simple StarFox (1992) clone. My tutor was exasperated with me because I created my own procedural engine instead of utilising his fully object-orientated engine. He likes to remind me that having my engine code and game logic so firmly tied to each other is not a good thing. I tend to counter with the fact that no-one but me should be using my engine so it shouldn't really matter. However, if I plan to get a job with a games company, my style of programming will clearly become a problem.
So, all of these experiences have forced me re-evaluate exactly what it is I want to achieve from programming. I love writing code, I honestly cannot see myself doing anything else now that I've started, however, I'm not sure if I can see myself becoming a games developer (apart from in my spare time). That is why I have decided to go on after my degree and complete a master's degree in computer science to broaden my programming field.
For my dissertation, I've chosen to create a games engine for the Super Nintendo utilising the SuperFX chip, as I find it extremely fascinating. I've already started learning Assembly x86 and have found it to be a more enjoyable language than C++ because it has to be done procedurally. I actually really love it. After I have grasped the basics, I'll be going on to learn 65c816 ASM, which is the microprocessor used in the Super Nintendo (or well, the Ricoh 5A22 is used in the SNES but it's based on this particular chip). I've been told this is a particularly difficult language and should not be used to learn Assembly off the bat, so I chose x86 instead.
So far I've found this task to be challenging and rewarding, far more so than choosing a more game-related subject. Therefore, I will continue to post exercises from Principles & Practice as I complete them but it is not going to be my main focus (as I thought it would be). Learning Assembly and finishing a DirectX11 engine in preparation for my final year is going to be my main priority. Thank you to all those, who visit this blog though and who knows where I'll be a couple more years down the line.
Good luck! I hope to see you keep posting, it is interesting to see another person's attempt to solve these problems, as the similarities and differences to my approach have been very helpful to see.
ReplyDeleteSorry, I wasn't notified about this comment. And thank you! Assembly programming has been an eye opener but rather enjoyable. I will finish this book at some point (sooner rather than later)and now that I've grasped the basics of 65816 I'm hoping to return to some other projects including my DirectX11/C++ engine.
DeleteThanks for sticking around, glad my ramblings could be of some use.