Year 2 Block C - Team Projects and Collaboration

February 2022 - April 2022

Team Leadership Project Management Technical Implementation

Overview

A focus on collaborative development, team leadership, and managing complex technical projects. This block challenged me to balance technical implementation with effective team communication and project management.

Key Focus Areas: Team Leadership, Project Management, Technical Implementation

Current State of Competency

I believe that I am quite skilled at problem solving and implementing features to accommodate the wishes of other disciplines (designers and artists) working on a multi-disciplinary project as in I can bring their ideas to fruition. I think that I am a novice at C++ since I do not yet fully possess the skills to take full advantage of the features that C++ has. I want to develop my understanding of C++’s features so that I have more available in my toolbox when I need to solve a problem as well as developing my ability to document my work as that is probably my worst skill currently. I do think that over the course of the study I have developed my problem-solving abilities and my understanding of C++, but I am a long ways away from being a master at them.

Learning Goals

Academic and professional practice
Goal 01: Proactively working on documenting my work S: I want to be up to date on my learning log by the end of each Monday this block and I want to start filling in my ILOs as soon as I gather relevant evidence. M: This can be measured by seeing whether my learning log is up to date by the end of each Monday. A: Though I find it challenging to work on documenting my work, I believe that this goal is attainable since Monday’s are designated for project work and filling in the learning log, so I should be able to stay on top of it. R: Last block I failed to be proactive in documenting my work and got into the habit of filling it in before I was being reviewed or just before the deadlines. I hope to change that habit and become proactive. T: By the end of the block my goal should be achieved as I will have hopefully changed my habit to documenting my work each Monday. Goal 02: Future direction S: I want to assess myself and get a better understanding of what I want to do in the future. I will do so by documenting the types of things I like working on this block which should hopefully paint a better picture of what I want to achieve in the future. M: This can be measured as I would like to produce a short piece of reflection at the end of each week where I document what I enjoyed working on and what I did not, as well as thinking about what sorts of skills I need depending on my conclusions. A: As Fridays are for self-study, I will have adequate time to reflect on my learning and document this. R: As I do not know what I want to be doing in the future I believe that this goal will help guide me towards a role that suits me best. T: This will be bound to each Friday until the end of the block.

Professional skills and knowledge Goal 01: Render a textured model using DirectX 12 S: By the end of the block, I want to have finished creating a DirectX 12 renderer capable of rendering 3D a textured 3D model by following Jeremiah’s tutorials on 3dgep M: I want my renderer to be capable of rendering textured 3D models A: Although I have never worked with the DirectX 12 api before I think that by following Jeremiah’s tutorial series, I can become more competant and be capable of creating a basic renderer. R: I believe this goal is relevant to me since I am interested in graphics programming, but I am not sure if I have worked enough with more advanced apis to know if it is what I want to specialise in since I have only worked with Gmnx and OpenGL. T: I want this goal to be done by the end of the block, but I would like to keep developing it in the future as well. Goal 02: I want to learn how to use lambdas in C++ S: There are a few C++ features that I believe I have not been taking adequate advantage of, such as. I want to develop my skills by following the C++ Guild and exploring how to use lambdas M: I will document my learning of lambdas as well as trying to use them properly in our current project. A: I believe that I have the resources available to me in order to achieve this goal, as there is online documentation on these features, I have the C++20 book, and I can ask fellow students or lecturers for help if I get stuck. R: As a C++ novice (1.5 years working with C++) I think that developing my skills will make me more efficient and employable in the future. T: I want to follow the C++ Guild throughout the entire block, and I want to test these techniques out in my toy renderer project, so by the end of the block I will have achieved this goal.

Weekly Progress Highlights

Progress Report Must be updated every week Students report what they have done each week. It shows in-progress work, provides links to the work, and summarizes the feedback on progress made. Section C – Summary of ILO evidence Must be completed in week 8 Students summarize their evidence for each of the Intended Learning Outcomes of this block, and self-assess based on the provided detailed rubric. Section D – Block Reflection Must be completed in week 8 Students reflect on their progress during the block, and set learning goals going forward.

Section A Plan A

Current state of competency Current state of competency I believe that I am quite skilled at problem solving and implementing features to accommodate the wishes of other disciplines (designers and artists) working on a multi-disciplinary project as in I can bring their ideas to fruition. I think that I am a novice at C++ since I do not yet fully possess the skills to take full advantage of the features that C++ has. I want to develop my understanding of C++’s features so that I have more available in my toolbox when I need to solve a problem as well as developing my ability to document my work as that is probably my worst skill currently. I do think that over the course of the study I have developed my problem-solving abilities and my understanding of C++, but I am a long ways away from being a master at them.

A

SMART goals Academic and professional practice
Goal 01: Proactively working on documenting my work S: I want to be up to date on my learning log by the end of each Monday this block and I want to start filling in my ILOs as soon as I gather relevant evidence. M: This can be measured by seeing whether my learning log is up to date by the end of each Monday. A: Though I find it challenging to work on documenting my work, I believe that this goal is attainable since Monday’s are designated for project work and filling in the learning log, so I should be able to stay on top of it. R: Last block I failed to be proactive in documenting my work and got into the habit of filling it in before I was being reviewed or just before the deadlines. I hope to change that habit and become proactive. T: By the end of the block my goal should be achieved as I will have hopefully changed my habit to documenting my work each Monday. Goal 02: Future direction S: I want to assess myself and get a better understanding of what I want to do in the future. I will do so by documenting the types of things I like working on this block which should hopefully paint a better picture of what I want to achieve in the future. M: This can be measured as I would like to produce a short piece of reflection at the end of each week where I document what I enjoyed working on and what I did not, as well as thinking about what sorts of skills I need depending on my conclusions. A: As Fridays are for self-study, I will have adequate time to reflect on my learning and document this. R: As I do not know what I want to be doing in the future I believe that this goal will help guide me towards a role that suits me best. T: This will be bound to each Friday until the end of the block.

Professional skills and knowledge Goal 01: Render a textured model using DirectX 12 S: By the end of the block, I want to have finished creating a DirectX 12 renderer capable of rendering 3D a textured 3D model by following Jeremiah’s tutorials on 3dgep M: I want my renderer to be capable of rendering textured 3D models A: Although I have never worked with the DirectX 12 api before I think that by following Jeremiah’s tutorial series, I can become more competant and be capable of creating a basic renderer. R: I believe this goal is relevant to me since I am interested in graphics programming, but I am not sure if I have worked enough with more advanced apis to know if it is what I want to specialise in since I have only worked with Gmnx and OpenGL. T: I want this goal to be done by the end of the block, but I would like to keep developing it in the future as well. Goal 02: I want to learn how to use lambdas in C++ S: There are a few C++ features that I believe I have not been taking adequate advantage of, such as. I want to develop my skills by following the C++ Guild and exploring how to use lambdas M: I will document my learning of lambdas as well as trying to use them properly in our current project. A: I believe that I have the resources available to me in order to achieve this goal, as there is online documentation on these features, I have the C++20 book, and I can ask fellow students or lecturers for help if I get stuck. R: As a C++ novice (1.5 years working with C++) I think that developing my skills will make me more efficient and employable in the future. T: I want to follow the C++ Guild throughout the entire block, and I want to test these techniques out in my toy renderer project, so by the end of the block I will have achieved this goal.

A

Section B Weekly Progress Report B

Week 1

What went well? I got in the main things that we wanted to get over from the block A project into our new project ie: memory management system (stack allocator) and resource manager. What didn’t go so well? I was extremely sick this week because I got corona virus. I was unable to work for most of the week, so in order to make sure the project could advance despite my lack of work I decided to use my self-study day to catch up on project work. What did you learn? I learned that it might be better to start with a plan for engine design rather than rushing in like we did this week, since at the start of week 2 (when I’m writing this) we had to rework a bit of the engine structure since a lot of the design was decided on a whim. Action points? Plan out engine structure before working on it. What did I do this week

Monday Reading project brief Preparing for block Tuesday Corona Wednesday Corona Thursday Corona Setup memory management system in new project (copied over and slightly modified from block A)

Friday Added mesh loading system Added texture loading system Added shader loading and generation system

Week 2

What went well? I believe that this week we laid a proper foundation for a healthy and expandable project through deciding on a code standard, discussing and deciding on going for DOD/ECS. We also got proper things in to showcase during our presentation such as BSP rendering.

What didn’t go so well? We had to rework our engine structure a bit since some of the structure was not properly discussed in the first week, so it had to be adjusted to fit our new direction. What did you learn? I learned how to use an ECS system (EnTT) in C++ which is something completely new to me and I will still need to experiment with it to learn how to properly use it as it deviates somewhat from the way of coding that I am familiar with. Action points? - Look more into ECS

  • In future set a better structure for something before starting to work on it, since the structure might not mesh well with what we would want in the future. What did I do this week

Monday Sprint Planning Establishing Team Contract ECS System Design Meeting Load .bsp maps into memory Tuesday Reflection Lecture Adding more BSP functionality (made more usable in graphics pipeline) Worked on adding Textures to BSP Wednesday Finished adding textures to BSP Testing trenchbroom and setting up everything needed in order to create a quake map Creating presentation Thursday Presentation Creating document to explain how to create a quake map to teammates Researching quake’s lighting system Friday Worked on Vulkan renderer side project …

Week 3

What went well? I got the project building on PS4. This was quite challenging as a lot of small aspect of our project where not geared towards running on PS4. such as libraries that we are using that have dependencies that are not compatible with PS4. What didn’t go so well? I did not spend a lot of time writing code as most of my time this week was spent working on getting the PS4 build up and running so that our Graphics programmer could start working on implementing their renderer for PS4. What did you learn? I learned that I would be wiser in the future to make sure that a project is set up for multi-platform development earlier in development, because adding it at a later stage means that more issues must be addressed at the same time. As in rather than incrementally facing these issues they all must be solved in one go. Action points? In future I will setup multi-platform development at the genesis of a project rather than shoe-horning it in once the project has already left the ground. Monday Setting up project to build on PS4 Tuesday Continuation on Orbis Build Engine Design Lecture Research on WAD loading Wednesday Implementing WAD loading LL Thursday Finished Implementing WAD loading Fix PS4 Build Bi-Weekly Show Off Meeting with Team Friday C++ Guild Work on DirectX12 renderer

Block Reflection

Must be completed in week 8 Students reflect on their progress during the block, and set learning goals going forward.

Technical Skills Developed

  • Programming Languages: C++, C#
  • Graphics APIs: DirectX 12, OpenGL
  • Tools & Frameworks: Custom engine development, The Forge framework
  • Methodologies: Agile development, SMART goal setting
  • Collaboration: Multi-disciplinary team work, technical communication

Key Takeaways

This block provided valuable experience in team leadership, project management, technical implementation, contributing to my growth as a game developer and preparing me for industry challenges.


This project page is part of my ongoing portfolio documentation. For more details about specific implementations or to discuss this work, feel free to contact me.