Sunday, February 7, 2021

Planning

 As part of our module in Semester 2, our class group will be working on an open-source academic textbook on Game Design and Development. This is a continuation of our reading and writing tasks from last year and serves as good practice and preparation to dissect academic articles and write in a formal style. I do feel uncertain as to whether I will able to meet the the level of writing standard  required. On top of that, from last year's reading experience I did find areas of academic reading overwhelming. 😓 Despite that we're bound to start somewhere, right?

First order of business was choosing a topic. I had a little trouble with this part as most people were quick to snag the 'fun' topics (RIP Character Creation).😔 I ended up switching a few times to make sure my topic wouldn't overlap with anyone else's as well as checking to see if there was enough reading material available in our library's database. I ended up sticking with the topic on Serious Games. Using the concept of games in education and real-world scenarios seems interesting and I'm curious to see what direction it will take me. 

This week, a member of the library staff,  Lindsay, generously gave us a tour of the library tools and resources which will help us when doing our research. She gave us tips on how to limit our searches to gather more relevant material, such as using quotation marks (" ") for keywords and phrase and taking advantage of  Boolean operators ('AND', 'NOT', other). The biggest takeaway was using RefWorks to store all our research material and it also generates the citations for you.

Following the task instructions I went ahead and made a document outlining a few questions based on the 4 W's (Who, What, Where, Why?). This served as a little brainstorm to see what areas I could potentially discuss in my writing. https://drive.google.com/file/d/11hwyJx11h0ipVOWdRY2XzBGPu03HzmSe/view?usp=sharing

Next, I came up with roughly 13 search keywords that relate to topic (although I haven't tried them all out yet). 

Finally I decided to download the Matrix Review spreadsheet and included 4 sources I found from the library database. The spreadsheet does look a bit overwhelming but I figured I'd give it a try and alter some sections to suit me as I go along. Here is a link to the working document: https://drive.google.com/file/d/1yw4aq4BtQHtcPtB4P0qG-t_CojexoDZe/view?usp=sharing

Now getting into the actual planning...

1. I'd try to stick the following strategy when looking up material:

2. Anything that seems useful will be added to the RefWorks folder. 


3. When scanning through the material, I plan to use a word frequency website where it will find the most common used words in the article. Here's an example: http://www.writewords.org.uk/word_count.asp  I'm still looking for one that can sift through documents/pdf's. 

This will give me a general idea of the main theme/keywords of the article and I can re-use the keywords to look up other material.

4. Finally after reading/skimming through the material I'll start to fill in the Review Matrix. I plan to also use Diigo, to highlight annotate on the actual document copy. Diigo is a chrome extension which allows you organize bookmarked websites and also add your notes and comments. 

 

Saturday, February 6, 2021

Unity Tutorial 01

 

Welcome back in 2021. Carrying on in semester 2, I feel more comfortable with Unity. When it came to choosing a route for the Unity tutorials, I decided to go with 2D game development. Looking back, although the video tutorials for the 3D game were nice and simple to follow; I did find the scripting part difficult especially when it came to making a game of my own.   Therefore, I felt that reinforcing what I've learned last year was the way to go. 

Setting up the Unity editor was a bit confusing. The tutorial didn't appear to be compatible with the 2018 version installed, so I went ahead and installed the 2020.1 which was recommended. The interface is somewhat different, so it took me a while to get used to it. The only downside to the 2020 version is that it currently does not provide long term support. Keeping my fingers crossed that nothing unfortunate happens down the road!😜🤞

As I worked through the  tutorials for this week, I noticed a contrast in their layout. The main difference being that there were no videos that accompanied the instructions similar to last semester. In their place, there were more detailed explanations of the Unity editor and what parts of the script meant which gave me a clearer understanding than I had last semester. Looking back, it seems quite silly but I only now understand the difference between Vector3 and Vector2. Vector is data type that stores numbers. Vector2 only stores two numbers and you can guess how many Vector3 holds. Since we're working on a 2D game we will only need the x and y axis positions which is why we will be using Vector2.

I was also introduced to working with tilemaps which are used to decorate the game world and various backgrounds. What I liked about using tilemaps is that you can create a set of tiles to use from a single tile sprite. For instance, the following 3x3 grid is split into 9 different cells of the same image. This is time efficient and saves a lot of effort when creating art for your game from scratch. Also, I found you can get pretty creative when combining various pieces.

Image source: Ruby's Adventure: 2D Beginner - Unity tutorial

The following is a screenshot of my final painted scene. It's not centered to the cameras position in the game view. Hopefully I'll be able to fix that later on!

Screenshot of my progress with Unity tutorials




Friday, November 27, 2020

Unity Tutorial 09

 

This week’s tutorials were a continuation of last week's sphere sumo battle game. This week's tutorial focused on spawning more waves of enemies - where when a player manages to knock out the enemy sphere from the island, an extra enemy player would spawn on the next wave. This would work the same for the power ups. By adding this functionality it will increase the difficulty of the game and keep the player engaged.

 In order to do this, we were introduced to the for-loop method. The main idea behind the for-loop method is that rather than rewriting the same instantiate code to spawn multiple enemies, adding the  for-loop to the instantiate will loop it a number amount of times depending how many enemies you want to spawn for each round.

Unfortunately, this was difficult to understand as I was not able to test out the code for myself.  My Unity kept freezing every time I pressed the play mode. Funny enough, it only happened when I added the for-loop method in my IDE (shown in green).

Screenshot of code in my IDE

If I removed this line of code by turning it into a comment, the game would not freeze when I click on Unity’s play mode. I’m not sure why this is the case but I wasn’t really able to properly follow along and see if the code I put in the script actually works.



Here’s a screenshot of my frozen Unity. No pretty cloud particles in the background and no enemies spawning. 


For Challenge 4, I made a separate project as I was worried that it would freeze too and I  didn’t want to take any chances. I found this challenge the most difficult; not only because it was challenge 4 but I couldn’t look back at the code on  the Sumo battle project so I had to review it from the tutorial page.

Again, my biggest problem for this challenge was not being able to spawn extra enemies in every wave. I fiddled with the code here and there but couldn’t work out what I was missing. The thing I learned from programming a game is that you need a lot of patience and accept that sometimes it will be more mistakes than progress. I will try again with a clear mind and hope for the best.


Tuesday, November 24, 2020

Review Week Comments and Feedback

 

Overall, the comments I have received so far by other students are pretty good. I can understand, in certain instances when it comes to giving feedback it can be a bit of a difficult situation as you may not have too much feedback to give or you may not want to seem rude when giving constructive feedback. So, sometimes it can be easier to say nicer things. And I guess that’s okay. Everyone does it. Even I do it sometimes.

 Comments and feedback can be tricky because in some ways it’s different in writing than it is verbally. Sometimes it’s harder to articulate certain things in writing than it is in person because they may not sound the same or the way you intended it. It can be a tricky process.

Having looked back at some of the feedback from my project posts, there were some good comments that were thought provoking and got me thinking about my game and its possibilities. (I kinda wish I had the guts to look at those sooner!) Feedback on the project are very useful especially when it comes to understanding the viewpoints of everyone reading about your game and seeing if they way you explained your game is in a way the easy for others to understand the gist behind it. If you look at it that way, you could treat your classmates as your target audience as they are nearly the only people who will read about the game. So, really any feedback is pretty golden and helped me with changing certain aspects like the scenery or considering game setting.



Blogger icon (source)                                                        comment icon (source)

As I have previously mentioned, when it came to giving feedback to others I did initially focus more on the ‘Wow’ factor in their project feedback. However, after being introduced to the ’ wow, wonder, what if’ and ‘tell’, ‘ask’ and ‘give’ strategies it has helped me structure my feedback  accordingly and be able to provide constructive feedback while being considerate of others. The sample questions that came along with the strategies also provided some perspective of what to look for in someone’s post and notice if something was amiss. This in turn made it that bit easier to write feedback. So I’m glad I was introduced to the strategies.

I also found some useful tips here and there when it came to looking at how other wrote their blog. For instance, I didn’t really use too much of bullet points when it came to working on the reading tasks. However there were cases where they seemed more appropriate to convey ideas in a straightforward and linear fashion which made things easier to understand.


There is sense of getting to know other people when writing blog comments. In some ways you still get to learn about a person by the way they write and introduce themselves. Although, there may not necessarily be conversation taking place as that would depend if the author wants to or has time to go through the comments or not. However, given the situation of remote learning, it is a good way to interact with others.

Personally, I’m not one for introductions. Especially when it comes to publishing a post about myself. So after publishing it, I made a mental note to try and forget about it until I couldn’t  XD. But as I mentioned before with the whole situation, it is important to put yourself out there a bit and give others an opportunity to get to know you in some way.

Looking forward, I want to be able to read the comments more regularly than I have done so far. Spending one evening each week to look through them and maybe post a few replies would be beneficial especially in relation to project feedback.

 

Week 9 Reading and Writing

 

Overall, I think the reading assignments have helped me in getting accustomed to digesting various levels of information from more informal videos and articles to academic level papers. I would not say I am a hundred percent comfortable reading the academic papers. However, compared to when I first started out, I feel like I can work my way through it better.

Initially, it would take me a long time just to read through the first reading. By the time I reached half of the second reading, the 45 minutes were up. Then, when it came to writing the blog post, I found myself going back to the readings as I found that I could not remember enough to articulate what I had understood from those readings. It was a slow and tedious process.

Once we started working on assignments as class, it was a game changer c; I think I am very detail-oriented and this can cause me to lose sight of the objective. So when we were taught some strategies on how to approach the reading and writing, it helped me to focus on the bigger picture for completing the writing assignment on that particular topic.

What I learned from working on the tasks together was that order doesn’t matter. What I mean by this is that although the video was last on the list after the readings, it would be of benefit to watch it first as a general overview of the topic. Then you can move onto the article and the academic paper.

Secondly, it’s important to have a word document open and ready to go. The idea with the papers is that you scan through them. Any bit of information that seems relevant to the topic can be put in the document. This works the same for the video. Pause it and add a few bits of notes. Some of this will be copy and paste but that’s ok as it is only there for reference so you don’t need to go back to the papers or video as you have everything you need in the one document.

Then, when looking at the notes and information that was collected it you collate that information and try to find common ‘themes’ in the readings. An example of this would be last week’s assignment (week 8).  The topic was the theory of ‘Game Fun’. The keywords or themes that were common in all the readings and video were:  games – MDA , Types of fun, Flow theory and Learning (is part of the theory of fun in games).

Finally, it comes to actually writing the blog post in your own words underneath the keywords that serve as sub-headings.

What I need to improve on for future readings is too be consistent and implement this strategy on my own. Most importantly, I need to manage my time and not spend too long getting bogged down about a particular paragraph in the text that looks like cipher.

I’d say it wouldn’t be much of a surprise that I found the reading task on ‘Game Fun’ the most enjoyable. Leaving aside the fact that it was a group effort for the actual task and focusing more on why I enjoyed this particular reading.



(source) I chose this image because I feel like the quote accurately represents the pleasure found in games.

Well, as I may I have mentioned before I do play games when I have the time, and due to the current situation with lockdown it’s one of the main ways I get ‘hang out’ with friends. As a gamer I do find it interesting to learn about theory behind the experience of ‘fun’ in games. So it was a bit of an eye-opener to read about fun being categorized such as the ‘eight kinds of fun’ which ties into the MDA or the 4 key’s of fun by Nicole. It allowed me to think about and identify what gets the player hooked in a game in the first place. It also made me reflect on myself as a player and see where I fit in the ‘fun’ chart. Due to this particular topic being open and relevant to many people, not necessarily just game designers but also a player is why I found it a ‘fun’ and interesting read.

Now, the big question. Have I put theory to practice? Did the notes help me in creating my game? In a way, yes they have. By understanding some of theory during the reading tasks it helped me when making decisions for my game. This was the case for the GDD in particular as not only we had to do a reading task for it but also make our very own as part of the game design process. Having a reading that is directly linked with the project task was helpful in understanding what you had to when it came than to making your own.

In terms of accomplishments, I don’t know if I have any. I know I learned a lot about game design and myself through the way I work around my tasks. I’m still working through building my game in unity which is messy process. Overall, I wouldn’t say there is an outstanding accomplishment from my end. However, I do hope that I am prepared for whatever is coming next semester.

 

Sunday, November 22, 2020

First playable

 In all fairness I don't think my game can labelled as a 'first playable' just yet. It has only been the second week of starting our game project and I genuinely feel like I have encountered more issues than made much progress.😅

I should probably begin by saying that majority of my time was spent updating my GDD (link here) with the assets and tutorials that closely matched what I am hoping to achieve for my original game idea. In addition, changes were made to challenges and obstacles of the game. This week's unity tutorials which included the powerup mechanic and having enemies follow the player were especially useful as I am looking to incorporated these mechanics in my game as well. 

Now, getting back to talking about the actually game. I must say, it's starting to look like one of those messy challenges we must complete at the end of each Unity tutorial. 


Screenshot of my current progress with the game


Camera Movement

Adjusting the camera was my first task. The idea is to have the player rotate the camera around the character. This is similar to this week's Unity tutorials where the camera rotates around a focal point. In this case, I tried to make the player itself the focal point by adding the camera as child object of the player. 

This somewhat works. The view seems clearer when you get to rotate the camera rather than having it stuck in one place. However, if you rotate the whole way around, you will eventually lose track of the character and the view almost shifts from third to first person. 

I can't really find the root of the issue, yet. I tried adjusting the camera's position, but it didn't seem to work. I'm beginning to wonder if this has to do which the fact that I'm using the same horizontal input for the player to rotate left and right as well as the camera. 

Player Movement

The jump mechanic was included. This seemed tricky at the start as my player object is empty and I needed to create individual scripts for each of the child animal game objects for it to work. Although, strangely enough the only force I am able to use is Impulse, otherwise pressing space to jump won't work. I also got rid of the player exploit where they could press multiple times to jump while still in the air. 

Next, I was looking to see if I could set triggers and conditions for certain animations to create an idle, walk, run and eat. The animation tree looked different from the Unity tutorials so I spent some looking for the animations clips that appeared missing but were placed in a different folder. Some animation parameters were missing, but I figured out how to create them, particularly the 'trigger' which seemed useful.

I managed to set the 'idle' as the default animation. The idea was to enable the 'walking' animation when the player used the 'w' key.  However, that didn't seem to work. Perhaps, I need to target the horizontal input again?

Powerups

I began setting up a powerup for the player. So far the only interaction is that when player moves over it, the powerup disappears from the scene. I still need to look into the idea if I can create HP bars and add damage numbers in the game. This will dictate whether I want the powerups to orientate towards regaining some missing health or increase movement speed instead. 

There is a small issue with gravity I encountered later as well, where the characters seem to just fall off the plane... It may be a simple check/unchecked box which, I will need to look into as well. 


I know I need to pickup the pace. I'm hoping to work on the game bit by bit each day rather than in one session as that does take a lot of  time and energy. I'm not gonna lie, I'm starting to have some doubts on the finished game, but I'll try and stay positive for now. 🤞



 


Friday, November 20, 2020

Unity Tutorial 07

In this week’s Unity  tutorial we had to program an arcade-style game. The player controls a distinct dark sphere on a floating island in the sky. The goal is the goal was to knock back incoming enemy spheres. 

Here's a screenshot of my screen as I was working through the tutorial.

In this tutorial, I learned how to incorporate new game-play mechanics which adds that extra layer of ‘fun’ to the game. The game-play mechanic is known as a Power-up which is a state where the player gains an advantage for a short duration.

In this case, the power-up was a diamond-shaped object which the player ‘collects’. Although what’s going on behind the scene is that once the player touches the diamond object, said object turns inactive and disappears from the scene. In its place, a power-up indicator is set active which surrounds the player to show that the player has a temporary advantage in the game.

However, to actually add this knock-back advantage I had to add an OnCollisionEnter method. In this method we write the code where the player interacts with the enemy. I created an if-statement in this method as this is a particular condition which happens only when the player touches the power-up.


The first line of code in the method targets the enemy’s rigidbody component which we need in order to apply a force to it.

The second line is an equation using Vector3 that calculates the direction the knockback will cause the enemy to go ‘awayFromPlayer’. This equation uses the enemy’s current position and subtracts it by the player’s current position.

Then the third line applies a force to the rigidbody of the enemy when it is knocked back. This is done by multiplying the direction at which the enemy will be knocked back  by the powerupStrength which is shown below:

A ForceMode of Impluse is added to make this and ‘instant’ effect.


There was a lot more covered in the tutorials but I found this the biggest take away for me as I feel like I could use a similar mechanic for one of the animals on my current game project. Explaining some parts of the code like this also helps with being able to understand it (although I should still include comments). 



 

Doing

  We are nearing the end of this semester and the book we’ve been working throughout the semester is in its final editing stages. This week,...