Posted in MA Indie Game Development

GDD710 – Week 5

Without a systematic approach, creating a video game, an application or even this blog itself,  can become somewhat chaotic. That’s why it is highly important to count on basic tools to channel thoughts and ideas in order to  carry them out keeping in mind that reflective practice is mostly learning while doing.

The five reflective domains

The central concept this week is focused on the significance of the systematic approach in relation to project developments. To start getting to the bottom of what critical reflection is,  we have to take into consideration five different areas, also know as reflective domains, which are intrinsically linked and should be considered holistically, not in its individual parts but as a whole.

  • Dispositional domain (foundational domain: time management, motivation, psychological issues, behaviour, self discipline)
  • Affective domain (awareness of feelings,  emotion control)
  • Interpersonal domain ( interpersonal skills, group interaction, team management, listening, negotiation, problem solving, decision making)
  • Cognitive domain (strengths and weakness in the personal approach to learning, constant learning and improve skills)
  • Procedural domain (learning new skills, learn from failure, awareness of what we’re able to do and what we have to start to learn to do)

Personally speaking, I have been working very hard on some of them and very little on some others throughout my life and working environment. On the emotional level (affective domain)  I went through a couple of years of psychological therapy to deal with a mild depression that took over my life during my late 40’s for some months. That was shocking and unexpected because, normally, I am a very motivated and pragmatic kind of person. Fortunately having recognized the problem in time and using a lot of the help from my family and a psychiatrist I was able to overcome this unexpected situation, learning a lot about me during this battle. In fact, it was during this period that I began to work on a video game project, as part of my therapy, that ultimately changed my present and future in more than a positive way.

This hard experience gave me useful tools not only to apply in my personal day to day life but also when dealing with game development, specially after getting exposure, press attention and critics about my work and how to relativize them, how to manage bad / aggressive reviews, how to understand the real needs of the users behind them and eventually turn them into a more positive getting the best of any situation.

On the two last reflective domains (cognitive and procedural) I can  count on a creative and professional discipline which is sufficiently solid. These aspects are the pillar of my professional performance. What is more, sometimes I  allow myself to be less analytical and let some eventualities to give a little spice to life which is necessary to maintain my enthusiasm when having a new project. Without a shadow of a doubt, having lived the best and the worst of two different worlds. As many other argentinians, I developed a great adaptability sense to cope with constantly unstable situations and, on the other hand, I lived almost two decades on a completely opposite society where nothing is left to chance and where you never think over the possibility that things might change overnight.

That being said, the fact that I have never been part of a team of no more than 3 or 4 people,  techniques such as SMART or Scrum have only been part of my academic background which I have hardly ever put into practice really and when I tried to implement them I was not convinced at all.
In the final months of my graphic adventure development I felt between a rock and a hard place. This led me to finally apply such knowledge, late though. If I had used some of these techniques earlier, everything would have been easier, with less working hours, less stress, less money wasted and… more deadlines accomplished!.

Finally in the procedural domain I’m totally pro-active, specially when comes to learning new tools, concepts or techniques (mostly for 3D and game programming) spending at least 10 hours a week on this, including reading and on line tutorials. An important point to keep in mind is that I give preference to reading or written tutorials since it’s easy to waste a lot of time looking for information on youtube or similar channels that almost infallibly ends up generating more questions than answers. In fact it was on one of this youtube rabbit hole journeys that I got great advice about avoiding these pitfalls.  I agree with Allan McKay when he says “choose one or two sources of trust and go all-in on them rather trying to learn from ten different resources and wondering why you’ve got too many information and start suffering from paralysis analysis. Even with the best of the best people if you’re listening to too many people sometimes the information will start conflicting.”  Allan’s MacKay How to Learn VFX & CG in 2019 (2019 – min 4:15)

 

As result, an excellent tradeoff  for me was  start looking for good quality tutorials made by real experts on different fields on a specific topic and
I found excellent sources of training in the following sites, having done at least one course on each of them.

Game Dev Unlocked on indie game development
Finishing good games that sells on inde game development and publishing
Rebel Way Academy  on visual fx for games, tv and film
Creative Shrimp on Blender 3d software
Allan McKay  on film visual effects
Art of Aaron Blaise on traditional animation
Schoolism on digital art and illustration
Animation Mentor on 3D animation

Rapid ideation (part 2) & SMART goals

Going back to where I was last week this is the situation so far:

 

Fig 1 – Scrum board for the rapid ideation exercise

 

As you can see I completely avoided using an online Scrum tool for this. Having the ‘analogical’ version on the wall in front of me seems more realistic and efficient by far. I also decided to follow this  SMART proposition I wrote:

I am going to give up using the old game engine I was using for my previous game developments (AGS) and replace it for one more powerful, versatile and well known in the industry (Unity). In this way it will be easier for me to find new collaborators for future projects and put the team to work immediately, saving extra training hours to make them proficient with the old and not so common tools. I will immediately update my knowledge on Unity over the next two weeks for 1.5 hours at day with the help of this Skillshare tutorial and a couple of professional youtube channels devoted to make games with Playmaker and Unity (Dumb game developer and Romi Fauzy). At the same time, I will also put into practice what I have learned creating the prototype for this exercise.

During the weekend I was able to finish the tasks on blue (on progress) and to start testing the red ones (to verify) on the board above, specially the keyboard FSM system to control the gargoyle character walking over the roof of the church and picking and throwing a brick to the street.
Implementing the control mechanism to throw an object -in this case a brick from the church- was more complicated than I supposed. It took me half of the day (I was planning to do this task in a couple of hours) mostly because I’m absolutely new using visual scripting instead of C# on Unity. My knowledge of C#is not great but I’m more used to do traditional programming than linking nodes on the screen… and finding the way to use a mathematical formula to throw the brick on a parabolic curve from the building to the ground without writing any line of code was an real unexpected  problem!

Fig 2 – Unity screen capture featuring the gargoyle, the church and the keyboard detection using Playmaker

 

Gargoyle’s revenge (prototype)

Prototype refers to incomplete versions of the software program. A prototype typically simulates only a few aspects of, and may be completely different from, the final product. Prototyping is a process of creating model for future applications in order to determine the validity of the application, its functionality and, in general, the concept of the application. (Evlannikov 2014).

Prototyping is an exploration where the designer gets to test their idea and learn about how it functions. The prototype is a playable version of the game or a part of the game that assists in understanding and enhancing the player experience. (Braithwaite 2009)

So, finally, a couple of minutes of the gameplay from this prototype:

You play with the Gargoyle on the the roof, moving with the keyboard from one side to another trying to push the bricks from the top to scare (eventually smash) some of the out of control tourist on the ground. (WebGL version coming soon).

For this version I used the modified rig for the Gargoyle, the church I modelled in Blender and a couple of free models from CG Trader as I was running out of time. Problably I’ll change and animate them later on, but for the seek of this demo it was a good tradeoff.

 

What went fine during the prototyping phase

  • Choosing to use Playmaker over traditional coding on Unity was a fine decision. After a couple of days  learning the basics concepts and the philosophy behind this add-on I was more than enthusiastic and confident to finish the job on schedule. At first I was quite unsure about taking this big risk, facing the possibility of wasting hours and hours going  in circles trying to grasp the rudiments of a new paradigm, specially because the last time I used Unity was almost 6 years ago.
  • Exporting files from native Blender to .fbx (a file format that not only is able to convert the rig but also the animation and textures) was also quite straightforward after consulting the documentation.
  • At the beginning I was  concerned about how to implement a pathfinding algorithm to move the tourist characters along the building. As I had already gone through this problem in the past I did some research on the famous A* algorithm to refresh my memory. Fortunately Unity already implements these functionalities providing an excellent solution out of the box. In any case I found a fantastic article wrote by Roberts, P. about pathfinding for games on issue 48  of Wireframe Magazine, pages 50-55.
  • Personally I’m very satisfied with the result obtained, specially for having met most of the objectives that I had set for this challenge, which were certainly not few.

And what went wrong…

  • Time management was -again- a real problem!
    Some tasks -even with a more than decent planning-  were unexpectedly more complicated than I had anticipated. It is true that I made the decision to get out of my comfort zone using a new piece of software to develop the prototype, but still…
    For example: I wanted to calculate a ballistic trajectory to throw  objects from the roof to the floor. I partially achieved it after figuring out how to create a custom script to write the math and apply the physics… but my idea was not to do any coding at all!
    I spent a full evening  trying to figure out how make this just with Playmaker’s tools but I didn’t find the way. At the end of the day it was worth the experience (and the extra learning) but what was intended to be a matter of minutes turned into long hours of frustration.
  • Even if this add-on works under it’s own framework, still needs the usual Unity’s modules, as the Inspector window, that seems to have a weird bug on version 2019.4.17F1. Most of the time after changing selection from one game-object to another -both from the Hierarchy or the Scene- the Inspector window is not updated and this can be a real pain, having to press the Play button each time in order  to make it work with the right element. After checking the Unity’s community forum  I confirmed that this was a known problem and the fixes proposed were not super handy, to say the least.
  • Being aware that time was dangerously shortening, and after solving the aforementioned situations I had to make some important decisions along the way, as avoid using any animation on the characters (walks, jumps, throwing bricks, etc)  not to mention to rig the Gargoyle’s wings that was at this point absolutely pointless. But undoubtedly one of the most notable planning error was forgetting to add a menu to let the player restart or quit the ‘game’. It wasn’t something that I even considered at the beginning probably because I was focused on other objectives such as those mentioned in the section above… next time!
ProblemSolutionWay to accomplish a solution
Time always running short!Create more realistic goals that can be better measured Implement Agile approach and software time management tools
Due to my basic knowledge of Playmaker I could not find a way to use elementary mathematical formulas without having to code them 'by hand' which delayed the progress significantlyRelay more on practical solutions instead of being obsesed by do some 'elagant coding'Do more research on Playmaker, it has to be a way to solve this without coding.
Anticipate delays!
I had no time to add animations to the characters as intendedUse 3rd party animation libraries during prototype phase instead of make my own keyframe animation in BlenderLearn to implement 3rd party animation packages with Mecanim in Unity or with a similar add-on
Spent to much time adjusting lights and colors with not great results, time that could better used in other tasks!Use basic lightnings and materials during prototyping phasePrioritize the gameplay over the aesthetic aspect
Tried to add a WebGL version of the prototype on the blog at the very last momentInstalling the Unity3D to WebGL plug but it failedFind another way to accomplish this task, the plug in is not working at all, contact developer for assistance

I’d like to close this entry with a great talk from GDC Game Career Seminar: ‘The Hitchhiker’s guide to rapid prototypes’ by Mark Barrett (2017) that I found of great inspiration.

 

 

List of figures

Fig 1 – Scrum board for the rapid ideation exercise, photo by the author.
Fig 2 – Unity screen capture featuring the gargoyle, the church and the keyboard detection using Playmaker, photo by the author.
Fig 3 – Game play video from the current running prototype, video by the author.

References

Vander Wal, E. 2017. Dumb Game Developer Tutorial channel on Youtube. [online] Available at: <http://ericvanderwal.com> [Accessed 2 March 2021].

Fauzi, R, 2020. Tutorial channel on Youtube. [online] <https://www.youtube.com/channel/UCbjQvNpDaHBrlBhpk65OQgA> [Accessed 2 March 2021].

Unity Community forum. 2020. [online] Available at: <https://forum.unity.com/threads/inspector-not-updating-to-selected-gameobject.865474/> [Accessed 6 February 2021]

McKay, A. 2019. ‘Overtime vs Productivity Guide‘.  [online] Available at: <http://byy.allanmckay.com/download-best-year-yet-book > [Accessed 2 March 2021].

Evlannikov, S. 2014.  ‘Development of Game Prototype‘, Helsinki Metropolia University of Applied Sciences. [online] Available at:<https://www.theseus.fi/bitstream/handle/10024/74422/Development%20of%20Game%20Prototype%20Sergey%20Evlannikov.pdf?sequence=1>[Accessed 5 March 2021].

Brathwite, B and Schreiber I. 2000. ‘Challengers for game designers‘, A part of Course Technology, Cengage Learning. Charles Rivers Media.

Roberts, P. 2020.  ‘An introduction to pathfinding for games‘, Wireframe Magazine, Rasperry Pi Ldt, issue 48, pages 50-55. [online] Available at: <https://wireframe.raspberrypi.org/articles/out-now-chills-are-multiplying-in-wireframe-48> [Accessed 5 March 2021].

Barret, M. 2017. ‘The Hitchhiker’s guide to rapid prototypes‘, GDC Game Career Seminar Talks [online] Available at: <https://www.youtube.com/watch?v=sYWkiv1hTPM> [Accessed 3 March 2021].