This is my final post related to this module. I’ll discuss each step I’ve taken throughout and reflect upon the process.
I began with research, I used a variety of resources to gather as much information about C++ & the basics as possible. I conversed with programmers and other game-dev professionals, they were incredibly helpful and shared a lot of information. I could’ve asked more follow up questions based around their answers, I didn’t understand the concepts they were pointing me towards. I know the point is to learn the concepts suggested, but it sounded quite complicated at the time, this discouraged me a little. Aside from that the research went well, I was pointed in the right direction, found some great resources & managed to talk with professionals.
The next step was to learn the basics of C++ and make use of the resources collected. I aimed to complete every hour I’d set myself and learn as much as possible, which did not play in my favour. I didn’t feel I was learning the right things and progress seemed slow. It wasn’t until week 3 things became somewhat clearer and progress sped up. Another problem I had is the 2 huge books I’d acquired to aid my learning. The books themselves were great, but I definitely didn’t have time for both. I ended up reading the first few chapters and moving onto the next book for the rest of my learning. This wasn’t a giant problem as the book I primarily worked from was game development specific. The other was more a C++ dictionary covering countless features (helpful as I could constantly refer back to it when things became unclear).
I didn’t finish either book, but I think I made good progress throughout this task. I got to a point when the author stated the basics had been covered. This was the last week of learning and honestly I was thrilled to hear that, I’d thought I’d taken a wrong turn and hadn’t learned enough. But with my last few hours I managed to take a step further and learn some advanced features. What did I learn? And how close was it to what was suggested to me during my research? Well below are the concepts suggested:
- Object-Oriented Programming (OOP)
- Virtual functions (polymorphism)
Looking back at what I was told to learn I feel as I achieved the requirements of this task. I can honestly say I understand what each of those concepts are and I know how they’re used in C++. Polymorphism was the biggest struggle, however, this was a more advanced feature. The fact I managed to introduce myself to it and attempt to understand it was a pleasant bonus.
So what would I do differently? Not much, though it didn’t seem it, what I had learned was very helpful. I would’ve tried get through this process faster, what should have taken 4 weeks took 6, eating into the time I had for the rest of this module. I managed, but I think this hindered the total quality of the next task. The final task, make use of C++ and build a prototype within Unreal Engine 4 (UE4). The biggest obstacle I had to overcome was the learning curve, the code had lots of engine specific uses. Due to this, I had to spend some time learning about the engine and its built in types. This does not render what I learned in the last task useless, most of it converted over quite easily (e.g. int is int32). After learning about the engine I was ready to attempt my own project. I began by creating an interactive door, I thought it would be a simple start but it required more than I thought. After I moved to the next room where I decided to extend the door class and make the player race it before it closed. This included a lot of functionality even within its simplicity. I was learning quickly making things work right took a lot of work and thought.
It took lots of trial and error but I eventually got the hang of things and aimed for more complicated functionality. The biggest hurdle was the last room, firstly I wanted a lot more in it, I’d planned the player to win 2/3 minigames then a green door would open. I had to cut this a lot after running into many problems getting a shooting range minigame working. I ran into crashes, bugs and problems trying to tie it together, due to this I had to finish with just one game.
It’s difficult to say how I feel about the product produced, it could include more, however I’m very proud of getting what’s in there working. Considering the entire point was to learn C++ at an entry level I’d consider that a success, everything may be simple but I made use of many different programming concepts. I managed to learn from the entire experience, I understand more how UE4 works. I definitely learnt a lot about debugging/problem solving, it had to be done for every asset. What would I do differently with this task? More planning, I didn’t design the game from the start. This meant when It came to making something I was lost. If I’d designed something specific, I’d have known exactly what I was doing & it would’ve been easier creating the prototype.
Before finishing I’ll talk about the project as a whole. As I’ve said I think the tasks set out was accomplished, this is the biggest success of the project. If repeated I’d aim to research the engine before I used it. This would save time & I’d have been able to instantly start working. Excluding that I’m satisfied with how everything went, it wasn’t easy (especially the prototype) but I expected challenges from the start. Encountering problems and overcoming them just added to the overall learning experience.