My Experience with Project Management

Image from here

As someone who has now worked on a few different project’s, although all academic in nature but one, I thought I should talk a little about my project management experience considering the nature of the material from week eleven. I will talk about how Agile was introduced to me, how I took to using it or not and how I think Kanban fits in to the mix for me.

Being introduced to Agile with Scrum

I was introduced to the Agile approach to software development and in particular, Scrum, early on in the BA top up course I took in 2017. As with most things on the course, the concepts were explained quickly and in a hurried fashion (our lecturer needed to be everywhere, all at once, but still managed to deliver a great course) and I don’t think that I understood what the benefit to the methodology was. I don’t think that I was alone in that either as although most of the other students present were on the course as a logical continuation of their study rather than coming in from the outside like me, they did not seem to have had to work in this way before. I was already vaguely aware of Kanban and had stumbled across Trello in reading around for better ways to manage my business tasks. We were informed that we needed to set up a Trello board and use the standard lists (To Do, Doing and Done) and although there was talk of Sprint’s, there was no mention of User Stories, the Scenario Testing to validate that they had been delivered or the idea of a Minimum Viable Product, at least not in those terms.

My First experiences with Agile

I think that considering the incomplete nature of the introduction to Agile combined with the sense of urgency that was being instilled due to the quality of the coursework needing to be very high, I saw Agile as a glorified to-do list. I thought that the bi-weekly catch up’s with the lecturer were just to make sure that the work was indeed moving forward. The idea of a ‘Sprint’ was not a lot more than ‘In two weeks I want to see where you are and I need to see that the project has moved on’ and not the heavily defined planning and tracking tool that I understand it to be now. Looking back, I would have benefited from understanding the link between the Sprints, the Backlog of User Stories and the fact that they combine to contribute to an MVP. I do think that the the idea of delivering something that worked as a whole was communicated and I do remember scrambling around to get assets that the team were working on into the main Unreal project file when each sprint was due. It’s fair to say that my memory of the process will be hazy as it was quite a while ago now and there was so much for me to learn and take in. I can say though that we did not create User Stories or Scenario Tests and in retrospect, that’s quite a large section of the Scrum methodology missing. In the teams we needed to choose a project leader and not a ‘Product Owner’, ‘Product Manager’ or ‘Scrum Master’, all important roles in the Scrum Agile approach. There were no Stand Ups, Retrospectives and work was frequently changed during the Sprint, which is forbidden until the Sprint ends and there is another Sprint Planning Meeting.

Despite a great many of Scrums implementation details missing, I did come away from the experience of the first two coursework projects with a better idea of why an approach like Agile should and does work. I liked the fact that there was no major upfront planning simply due to the fact that I had such little skill at that time, I would not have been able to create much of a plan past my ‘best guess’ at how something will go. I do appreciate that is the nature of most plans, but the clarity would have been very low and the probability that the content of the plan would need to change dramatically would have been high. That meant that Agile, even in its incomplete form, was quite a good fit for me and the team’s I worked with throughout the course as it was at least obvious that being flexible and responding to change was encouraged.

The mighty Kanban

When the need to complete a Gantt chart was thrown into the mix during one of the initial projects, I really felt that it was in direct opposition to all the benefits that had been communicated to us regarding Agile. Here was a document that was heavy in upfront definition and recording of tasks, dependencies and estimations of time and for me at least, seemed to be in direct opposition to the Agile methods. I think that it was intended that the Gantt chart be used in planning Sprints but I have since discovered that Scrum already caters for that kind of planning with the User Stories being broken down and prioritised and then being pulled forward by a team member willing to accept ownership of that task. Also, time is a tricky metric in software development, I know from my own experience, and so Story Points are used as a way to estimate the overall difficulty and complexity of a broken down User Story leading to a better estimate of how long the feature will take.

I did a little digging around at that time and stumbled across something that informs what I do even now. I found a presentation by a Microsoft project leader, Eric Brechner, and having watched that, was convinced that even Scrum, with the its limited planning and flexible nature, was still a little overly complicated. The way he spoke about Kanban really showed the simplicity of what he called Continuous Delivery. He calls the system an evolution from Scrum and talks about Scrum with respect. He does however say that he believes that the time spent Sprint Planning, tracking Sprint progress, holding daily stand-ups and the retrospective at the Sprints end would be better spent just, well, working. He talks about making sure that each of the Kanban board’s column’s are divided into two though, something that I had seen only in his presentation. The sub-column’s are the tasks that are to be completed and the ones that are complete. Sounds simple, but both of the sub-column’s contribute to the Work In Progress limit of the column that they combine to make. This makes it very easy to see what needs to be done from what is already done without the tasks having the move forward into the next column. The introduction of WIP limits in each of the columns keeps work coming at a steady pace so that developers don’t get overwhelmed and effort is tunnelled into one or two tasks (or however many tasks are appropriate for the team). But, having tasks that are complete still contribute to the the WIP limit does something very important. It act’s as a self imposed bottle neck that immediately shows problems with the work upstream and stops work being constantly pulled forward to that particular column, completed to that point and pooling there with no where else to go. This stops work being wasted on features that are not a priority and encourages the team to find out what the real problem is and band together to solve it.

This is a great presentation on Kanban over Scrum and well worth a look.

That’s the major difference. Scrum focuses on using the product backlog to house the User Stories just like Kanban, but from that, the Product Owner must create a sprint. All attention is then on that Sprint and the content of that Sprint should not change until it is complete. In Kanban, there is no such structure and tasks are pulled across to board at a steady pace and completed. The Sprint seems to me to be the last area of rigidity. So is it useful? Well, business people would likely think so as It’s the closest thing that an Agile practising team can put forward as a forecast. If there are team members that are perhaps not as intrinsically motivated as they could be, they may benefit from the push of the external, intermediate deadline. But I think that if the team is motivated, and the ‘Done’ rules for the board are clear and being obeyed, the Sprint is just not needed. On of the other key arguments is that at the end of the Sprint, there should be a prototype of the software that is available for the Product Owner to test. With Kanban, its no different. The only component needed on the board is a done rule in a ‘Build’ column that collects a number of tasks defined by the WIP limit, and forces a build in order that they can move onto the next column.

I would go with Kanban all the way if I could, and I have with Serial Link, but it’s clear that Scrum is very established. That means that in order to fit into other studios and be able to collaborate, I also need to embrace Scrum and that’s fine. It’s not the difference between cars and motorbikes, it’s as if we were talking about how different petrol and diesel cars feel to drive. Different, but closely related.

Using Now

In my little studio and in making Serial Link, I am using Kanban. I have dedicated one of the walls and set up the following columns.

  • Backlog
  • Breakdown
  • Development
  • Implementation
  • Build
  • Validate
  • Done

The Backlog is where I keep all the items that I want to work on although I currently don’t have this organised in User Stories or Epic’s. I think that given the chance to set it up again, I would do it that way as I feel that approach captures the emotional experience you want to player to have.

Backlog in my home studio

The Breakdown column is where large tasks get, you guessed it, broken down into smaller tasks. So, a large task like ‘Improve the Gore’ was broken down into several things like ‘Find better particles’, ‘Find out why the decals clip’, ‘Find a better way to draw blood, reducing the number of line traces’ and so on. I think that creating User stories would have been better here though and in my next project I will try using that approach.

Done rule: Broken down to the point where we know what the feature does for the player and what it looks like step by step. We know what assets we need and we have the work accepted by a team member.

The Development column is where the design and prototyping happens. This is where I get a bare bones ‘I could show this to other developers’ sort of feature done. It would have no UI and be printing feedback to the screen but all the pieces would be there before it is declared ‘Done’ and can move on. The WIP limit is quite high to accommodate the high number of smaller tasks that may be required to complete the main task from the Breakdown.

Done rule: Assets and logic have been created. There are no bugs that we know about and all the assets are ready.

The next column is Implementation. This is where I take the feature from ‘developer ready’ to ‘playtest ready’. Items don’t leave this column until they I am happy to put them in front of a play tester with confidence that they will understand what it does and how to use it. The reason that the WIP limit is only one is that I am the only developer that touches the project file. Knowing more about version control now, I would change this in the future and allow other developers to check in there own assets and so on.

Done rule: All logic and assets are integrated into the existing game to a standard that we are happy for a player to experience.

After that is the Build column. When the WIP limit is reached here, the project must be built and satisfy the frame rate criteria. This means that even though I am not using Sprint’s, I still have incremental builds being triggered in a systematic and predictable way. There are a couple of things that I will change in the future with regard to the done rule here. Replace ‘extended period of time’ with an actual number and ‘no bugs or crashes’ to something like ‘all bugs captured in kill list’. The presence of bugs should not mean that the build cannot go through to validation, the next step, as it could be that the feature needs heavy reworking anyway.

Done rule: Game builds with no errors and no warnings. Build player for extended period of time with no bugs or crashes.

Coming toward the end of the board is the Validate column. This is where the features are tested by users and is critical for making sure that we do not develop in the dark, emerging one day with something that no-one wants. I need to make sure that we are creating things that people actually want to play with and testing is very important to me because of that.

Done rule: Player reactions and feedback has been gathered and analysed. All issues identified and inserted into the workflow as needed. Ideas have been captured for the backlog if there are any.

The end of the board is the Done column and is just a place to collect the stickies that have travelled through the process. Its good to have them there as a reminder of whats gone into the project and allows better reflection in the future when planning new projects. Well, I suspect so, as this is the first one that I have managed this way!

Will that Change in the future?

In the immediate future I will be managing the Hostage Rescue project using the Trello board I have set up and using Scrum because I want to get the experience of doing that. I can see that in projects where I have the authority, I will be using Kanban only as I really do think that its the better way to go. But I have nothing against Scrum and I want to be able to contribute well to other studios using it.

Reflecting on my Reflections

Image from here

My goodness I am glad that this is done. I think all the students agree that the report on continuing personal and professional development has been difficult. Very difficult. But, we all also seem to agree that it’s been of great help. Talking it through with the other guy’s, I think that the report tackles one of those big, scary questions… What am I going to do? For some people, not knowing what they are doing is freedom and to have a plan is tantamount to prison, but for the rest of us, there is something in our brain that wants to know what the hell we are all about. My perspective has remained focused in one direction for the most part (being a game developer) but I have benefited greatly from the constant poking that the course is designed to inflict. It has helped me to look deeper into what I want to do and what I need to learn and practice in order to make that dream real.

Stronger together

The other interesting thing that happened was on the webinar yesterday (Wed 10th). Jamie asked what had been the most difficult part of the course so far and contrary to his expectation of something technical (I assume) the answer was ‘motivation’. That was a bit of a surprise to me but on listening to a couple of the other students talking, it made a lot of sense. There were two topics that came up for discussion. The first was ‘How do I fit all this in?’. Thats a fair point. Although this is a part time course, there are people working lots of hours but still keen to learn from a programme like this. The other topic was that of camaraderie and the difficulty of building that in an online environment.

Rise and shine

There was a conversation about how to fit the course content into a life where you actually have to go out and earn a living. I feel for these guys as a stay at home Dad. I have a lot of flexibility with my time, however, I cant code at a level that would get me employed so its not all sunshine and roses! But mostly it is…

The only suggestion I could make was an approach that worked for me when I had my shop and just had endless tasks building up because of it. Get up before everyone else and get and hour or so in before you day turns into doing stuff that other people need. Its a simple solution but I will admit that it a difficult habit to get into. I learned to do it by putting my phone on the other side of the room so that I would have to get myself out of the sack to turn it off. It worked, most of the time, if you just get some clothes on right there and then and get to the kitchen to make coffee, tea, bloody Mary, whatever you do in the morning. Once I was in the habit I got up at 5.30am and got 2 hours in before I needed to get showered and all that. A month later, I could see the difference in the work I was getting done and the quality of the work was better and not so rushed. The other end of developing that habit is getting to sleep on time. This was just a tricky as you do have to give up some free time to make an approach like this work. But, if your serious about what you doing and you want it more than you want to watch TV then really, should be easy enough. It gets harder when your relationships get a little compromised because the evening is that common time where you catch up with the other half and build your bond. Missing that time too much can be a hazard and I have felt that happen a couple of times. Creating dedicated time to spend with my Wife was to answer and has worked well ever since.

Sunday = No Work. End of story.

I get up at 5.45 these days and try to get 45 hours of work in per week, 20 on the MA and the other 20 on C++, Serial Link and some other bits. Also I need to study math. I keep track of which project my time is going on using TickSpot.com and my trusty Nerd Chart. And finally, I use a form of Pomodoro to make sure that I get my backside out of the chair every 30 odd minutes and it also helps me to stay focused as I know that a break is coming and the time is limited. There is just something about it that works for me.

Discord on Discord

The other suggestion that I made was setting up a server on Discord, a gaming oriented chat client that we could all use to get to know each other better and support each other. I set this up as soon as the webinar finished and invited all the students from the cohort to it and Im pleased to say that majority of them have already joined and its been fun talking to them. This has led to conversation about assignments, grading, feedback and personal ‘get to know you’ stuff too. Very useful and very enjoyable. I think we would have benefited from this a few weeks ago.

It has made writing this post take twice as long though… 😉

My CPD Goals

This is what I have decided are the top five skills I need to work on in order to move toward the reality that I am professional game developer. In particular, a game play programmer with some supporting skills in animation and and a really good grasp of the Agile methodology. Below are the goals from the final draft of the report. Very challenging piece to write and I am certain that there are many areas for improvement in how I think about this kind of thing and also in how I research. I think that I have strong ideas on what I need to do and am not quick sometimes to look at alternatives. Something to work on in the future, in addition to all the things I am about to put here. Busy times. Love it.

After this is posted (and it will a monster) I am going to come up with a time management plan and think about the practical implementation of all this reflection and talk. It’s the right talk, don’t get me wrong, but without some thought into how to execute this, I think it will be half cooked at best.

Goal One: C++ & the Unreal Engine

This is an important skill because C++ is an industry standard programming language, particularly within the context of complex PC and console games. I work with the Unreal Engine (Epic Games. 2019) due to the feature rich environment and business model offered by Epic (Epic Games. 2019). To access advanced engine features, I need to move toward coding in C++. This also removes the performance overhead introduced by additional processing required to use Epics visual scripting tool, Blueprint and the virtual machine it uses (Cpt.Trips. 2017).

Currently, I don’t have the proficiency to work quickly in the engine with C++.This obstacle has emerged because I had five weeks to learn about Unreal before coming back into education to study the final year of my BA. Learning C++, how Unreal uses it and the Unreal Engine editor simultaneously was not feasible for me, I just could not absorb that much information at once, so turned to Blueprint.

I am 68% through a course on Udemy (Frank J. Mitropoulos. 2019) that teaches the foundations of C++, introduces object-oriented programming principles and I will complete that first. Then, I will restart the Hostage Rescue Game Jam project, which is explained in the context of another goal. I will plan the classes and their relationships using Object Orientated Design Patterns (Gamma et al., 1995) and will express that design using the Unified Modelling Language (Object Management Group. 2019). Both topics are discussed later. I expect I would have a prototype within one hundred development hours. I will work fifteen hours a week on this task. 

Once I complete this challenge, I will investigate refactoring Serial Link into a C++ project. Serial Link is my main, personal game project that I hope to pitch to publishers this year. I will take the opportunity to redesign the class and interface structure to improve its performance and component portability.

This deliberate practice will solve the challenge because I will interact with many of Unreal’s features, learning how they are implemented in C++. My complex game project encourages this. I should gain an understanding of the structure of the Engine and will be successful when I am completing work more fluently and solving errors more quickly.

Specific

I will start the Hostage Rescue Game Jam project again and develop it in C++ so I can write more concise and performant code when compared to Blueprint.

Measurable

This project will be complete when the game prototype is finished and working.

Achievable

I have completed a tutorial using C++ in Unreal, comfortable that I predicted much of the material and understood all of it.

Relevant

This is a skill that is fundamental to my stated goal of game programming, therefor the challenge is relevant.

Time Bound

One hundred hours is appropriate, as I intend to reach only the level of detail I had in the original project already, which took thirty hours, and am not creating a sophisticated military simulation.

Goal Two: Object Oriented Design Patterns & the Unified Modelling Language

The obstacle is my project development slows once it gets to a certain level of complexity. My lack of upfront design causes an ‘ad hoc’ approach to further development. This often causes tight coupling between objects, reducing the objects reusability elsewhere. I refactor projects often, slowing the addition of new features. I tend to use complicated solutions due to my lack of knowledge on established, software organisation techniques. I frequently lose touch with how a class is interacting with other classes.

This obstacle exists because I did not uncover guidance relating to the overarching techniques of program design until experiencing class coupling and performance problems in my projects. I found this video (Christopher Okhravi. 2017) that introduced me to Design Patterns.

Object Oriented Design Patterns are proven, reusable solutions to common programming problems. An example of a common pattern used in games is the Observer. Numerous objects register with some class being observed. If it changes state or a specific event is triggered, the Observers are notified and can respond independently.

The Unified Modelling Language, a general purpose, visual development language that covers a broad range of planning diagrams, will help me organise my thoughts and designs on paper. I could use this, and the patterns I learn, to express better object-oriented designs.

This is crucial to my goal because without an understanding of this area, I will find it more difficult to plan solutions and communicate the construction of immersive and detailed games. During the Game Jam project, I failed to complete a working prototype. I believe this was due to a structural deficiency that caused the project file to irrecoverably crash.

I can learn the patterns and UML because I have demonstrated an ability to create projects with complexity although it’s clear that I need training in how to manage that.

I will know that this approach is working when my programming solutions are appropriately complex, robust, decoupled designs that solve problems at the right level of abstraction expressing them in UML before successfully coding them. 

Smart

Demonstrate the Object-Oriented Design Patterns from the book (Gamma et al., 1995) using UML and C++ console applications so I have more options when designing classes and class interactions.

Measurable

The goal is complete when I have UML plans and a console application for each pattern.

Achievable

This is the next logical step and I already have a beginner to intermediate skill with C++.

Relevant

I wish to create complex game systems that will likely require some upfront design, documentation and communication.

Time Bound

I will complete one or two patterns per week and all twenty-three in twelve to fifteen weeks.

Goal Three: Agile

Image from here

The obstacle is that my knowledge of Agile and its application in a software development project is fractured and incomplete. It’s important to complete my knowledge regarding Agile because it is the most common project management paradigm in software development today and I will need to collaborate effectively using it.

Currently I have some success using Kanban, managing Serial Link based on what I learned from the book Agile Project Management with Kanban (Brechner and Waletzky, 2015). However, the project lacks User Stories, a way to encapsulate what a user gets from the system at a higher level of abstraction. I’m focused on the technical delivery of features, almost in isolation. I don’t use Sprints which are periods or two to four weeks in which a selection of User Stories are delivered. Because of that, I don’t hold Retrospectives, a reflection regarding the success of the Sprint. This could be costing possible improvements in many areas of the project and my practice.

My incomplete knowledge has come about because I’m relatively new to software development and hadn’t experienced Agile before. Being introduced to the methodology previously, it was one of many skills to learn. Due its intangible nature, I focused more on skills that could produce visible or demonstrable assets, like game mechanics.

The challenge is to manage the development of the Hostage Rescue game, discussed earlier, with Agile methodologies. The deliberate practice I will complete will be two-fold. First, I will take a course that teaches the principles more completely (David Starr. 2010). Afterwards, I will manage the Hostage Rescue development using Agile.

This practice solves the challenge and removes the obstacle by allowing me to manage a new project, start to finish using Agile principles that I will study up front and then review along the way. By the end of the project, I should have been able to identify and solve the weaknesses that my incomplete knowledge caused. 

This practice will be working when I know the status of the project in terms of work completed, work outstanding and progress made through the current sprint. Ultimately, the delivery of the Hostage Rescue prototype will be the conclusion of this challenge.

Specific

Manage the development of the Hostage Rescue project using Agile methodologies I learn so I can understand the methods more completely.

Measurable

The successful completion of the Agile course I will engage (David Starr. 2010) and the artefacts that are created such as Use Stories, Sprint plans, records of Retrospectives will serve as measure this challenge. The completion of the Hostage Rescue project is also a measurable activity.

Achievable

This is achievable as I am comfortable that I understand Agile at a broad level. I have some information already and am practicing some of the methods.

Relevant

Its highly relevant as the methodology is used extensively in software development.

Time Bound

The Hostage Rescue project has one-hundred hours of development time and the Agile practice will be a part of that process, though I expect to complete the course the day that the project begins.

Goal 04: Animation

Image from here

The obstacle I face with this skill is that I want to customise my projects with animation that I can’t produce.

Development in this skill is important as I want to be able to work independently on my own prototypes. I could also be more effective within a team if I’m able to edit animations myself.

There are two areas of my work currently being affected. First, I struggle to compose animation systems for characters in Unreal. I constantly experiment with animation assets and settings and cannot confidently use them in a predictable way. Second, key features in my projects would benefit from small animations and edits that I cannot do. For example, the Psychic Push in Serial Link that throws enemies. Only a hand push animation would be required improve the players understanding of the feature.

This lack of skill has come about because I have focused very tightly so far implementing game logic and creating a prototype of Serial Link among other coursework obligations while studying for the BA. September 2017 was the beginning of my game development education and I’m only now broadening my skill set past mechanical implementation work.

The challenge I am setting is to follow a beginner’s tutorial course on how to use Blender, a free modelling and animation software package, for asset editing and creation (Mark Masters. 2016). Then, my deliberate practice will be using what I learn to create and edit animation assets in the Hostage Rescue project detailed already and in Serial Link.

Completing the animation course will teach me the concepts and information that I currently lack so I can understand animation at a more technical level. This specific practice will culminate in my ability to demonstrate that I can use this understanding to create unique animations and use Unreal’s animation systems to implement them in a predictable way instead of the excessive experimentation I conduct.

This is an achievable goal for me because I have already managed to get some systems working without a good understanding of why it works. Animation is built upon logical systems and I have not struggled to learn about such systems. I also have a somewhat under-developed artistic skill that should be enough to build on to enable me to make basic animations I need for prototyping.

I will know that my practice is successful when I’m able to import existing, and create new animations in Blender, develop them and export them to Unreal, using the Engines’ most appropriate implementation system.

Specific

Take a course to learn about animation (Mark Masters. 2016) so I can customise them for current projects including Hostage Rescue and Serial Link.

Measurable

When I have completed the animation course and created and implemented at least ten animations, this goal will be complete.

Achievable

I understand what animation is, I lack the detailed knowledge and experience to create them. This goal will be an extension of my knowledge, not a new, unknown subject.

Relevant

I am producing game artefacts already and animation is a key area in making them visually appealing and a vital tool for communication to the player.

Time Bound

I will spend ten hours studying a course. I will then be developing the skill throughout the Hostage Rescue development.

Goal: Learn 3D Maths for Games

YouTube video here

The obstacle I face using this skill is I don’t really understand what I’m doing when I create logic that relates to characters and objects in 3D space. For example, I don’t fully understand how to use vectors, rotators and trigonometry.

A degree of mastery of this skill is important because I want to build complex systems that enable assets to interact with each other and the virtual world. Maths is a fundamental skill for a game programmer as it deals with the analysis and manipulation of the game’s most basic building blocks (Jason Gregory. 2009).

Currently, I use combinations of Blueprint nodes, the building blocks of the scripting system, that I have picked up from example content that solve operations like line tracing and extracting the direction some object is facing. But I don’t deeply understand the foundations of what’s going on and would certainly struggle to explain it in clear terms. I often experiment excessively to get the result I want, and I would prefer a high degree of predictability instead. This prevents me from creating more interesting behaviours and interactions and slows down the completion of work.

Some of these things are GCSE level math problems but due to a difficult childhood, I was less than attentive at school. I never learned about vectors, trigonometry or linear algebra for example. I have picked up what I can from tutorials, but not yet studied the issue properly. I would like to address that now.

I have recently purchased a book about math for game development (Lengyel, 2012). I will work through the book and study the information relating to vectors, matrices, transforms, geometry and visibility determination.

I will learn the theory and formula’s, completing the exercises in the book to develop my understanding. I will create a small Unreal C++ demonstration project that shows these things working.

This practice will solve the challenge and remove the obstacle by enabling me to learn the formulas and fully understand why they work, expanding my ability to think with them. Producing the Unreal project will be a tangible artefact that I can use to demonstrate that understanding.

This challenge is achievable because over time, I have managed to acquire a basic understanding of how some of these structures work, just through exposure to tutorials that are focused on teaching other things. I think that using a structured text, research and reaching out to peers and tutors should be more than enough to allow me to build a solid base of knowledge and understanding in this area.

I will know that this practice is working when I can quickly and predictably build logic that leans on vectors, rotators and so on and easily demonstrate and explain how it works.

Specific

I will learn how to use vectors, matrices, transforms, geometry math and visibility determination so can create more complex interactions and behaviours.

Measurable

This will be complete when I can explain and demonstrate the skills above and have completed the Unreal C++ project that uses them.

Achievable

I am already using some of this math in projects and have a basic grasp of how it works, I need to extend the knowledge that I am familiar with.

Relevant

Understanding these domains of mathematics is crucial to be an effective game play programmer as they are the fundamental tools that allow Actors, any object in a scene, to be spatially organised, queried and manipulated

Time Bound

This will be completed in fifty hours and is a long-term goal. I expect this to take around eight weeks to complete.

References

Brechner, E. and Waletzky, J. (2015). Agile project management with Kanban. Redmond, WA: Microsoft Press.

Cpt. Trips. (2017). UE4 Performance – BP vs C++ vs Blueprint Nativization | feat. Multithreaded Tick. Available: https://www.youtube.com/watch?v=8gVixDglpQ4. Last accessed 10th Apr 2019.

Christopher Okhravi. (2017). Observer Pattern – Design Patterns. Available: https://www.youtube.com/watch?v=_BpmfnqjgzQ. Last accessed 10th Apr 2019.

David Starr. (2010). Agile Team Practices with Scrum. Available: https://app.pluralsight.com/library/courses/agile-team-practice-fundamentals/table-of-contents. Last accessed 10th Apr 2019.

Epic Games. (2019). Home Page. Available: https://www.unrealengine.com/en-US/feed. Last accessed 10th Apr 2019.

Epic Games. (2019). Frequently Asked Questions. Available: https://www.unrealengine.com/en-US/faq. Last accessed 10th Apr 2019.

Frank J. Mitropoulos. (2019). Beginning C++ Programming – From Beginner to Beyond. Available: https://www.udemy.com/beginning-c-plus-plus-programming/. Last accessed 10th Apr 2019.

Gamma, E., Helm, R., Johnson, R. and Vlissides, J. (1995). Design patterns, Elements of Reusable Object-Oriented Software.

Jason Gregory. (2009). 3D Math for Games. In: Game Engine Architecture. Florida, US: CRC Press. 359 – 414.

Lengyel, E. (2012). Mathematics for 3D game programming and computer graphics. 3rd ed. Boston, Mass.: Cengage Learning.

Mark Masters. (2016). Creating Game Animations in Blender. Available: https://app.pluralsight.com/library/courses/blender-creating-game-animation-2460/table-of-contents. Last accessed 10th Apr 2019.

Object Management Group. (2019). Home Page. Available: https://www.uml.org/. Last accessed 10th Apr 2019.