#CGDD Board Game Design & Crafting Session Team Blog: Board Game Design Idea

Our favorite game during the field trip was Good & Bad Ghost, we are surprised that such a simple mechanics could result in such an interesting game. After reading to book Game mechanics: advanced game design, we decide to make a complex system using our own simple rules and combine it with the on-going Russian-Ukraine War, trying to provide players an emergent playing experience.

Our board game is placed on a 10×10 board. Each player owns four types of pieces: soldier (7), commander (1), political commissar (1) and unmanned kamikaze drone aircraft (1). Two players sit on two sides of the board. Each player puts their pieces at any place at the last three rows of the board towards himself. Players take turns to move the pieces and every turn they can only move one piece. Players can only see the types of their own pieces and the types of their opponent’s pieces will only be displayed when the piece is captured. The rules of the pieces are listed below:
Soldier: move one square for once (forwards, backwards or sideways), can capture any opponent’s pieces.
Commander: move one square for once (forwards, backwards or sideways). If one player captures his opponent’s commander, he wins.
Political commissar: can move one square for twice (forwards, backwards or sideways), allows pieces within two squares (a diamond shape area) to move twice in one turn.
Unmanned kamikaze drone aircraft: move one square for once (forwards, backwards or sideways), can choose a piece at any position and check its type. If the piece chosen is not a commander, destroy it and unmanned kamikaze drone aircraft itself. Else, destroy the unmanned kamikaze drone aircraft itself and reveal the commander of each player.

We will test and revise our board game after we finish it in class and see how we can form a more emergent system with these simple rules. We plan to make the board game with cardboard.  We will make cones as the pieces and draw simple symbols on them to distinguish their types. Below are the rough draft of the symbols:

Soldier:

Commander:

Political commissar:

Unmanned kamikaze drone aircraft:

#CGDD Board Game Design & Crafting Session Individual Blog: Reading and Playing Response

On the board game field trip session, I played games including Good & Bad Ghosts, Chromino and Tofu Kingdom. Among them, my favorite is Good & Bad Ghosts, a two-player game of wit, strategy and bluff. The image below shows how it is played:

The most fun experience is derived from the mechanics that my opponent does not know whether my ghost is good or bad and the three conditions of winning the game. These mechanics make the game into a strategy game which player has to perceive whether the ghost of his opponent is good or bad depending on how the ghost moved previously and the perception of the strategy his opponent is taking. Then player need to move accordingly while hiding his own strategy and the condition of the ghost to misguide his opponent. Through the psychological war between player and his opponent and guessing whether the ghost is good or bad, player enjoys an emergent game experience as how player puts his ghosts vary at the start of the game and each time when he captures a ghost, or his ghost is captured by his opponent can change the player’s strategy.

Then, I would like to analyze how the board game Good & Bad Ghosts creates an emerging game experience for players. In chapter 3 of the book Game mechanics: advanced game design, Ernest Adams and Joris Dormans mention that “Three structural qualities of complex systems contribute to emergence: active and interconnected parts; feedback loops; and interaction at different scales.” The mechanics of Good & Bad Ghosts contains all three aspects.

Firstly, each player has 8 ghosts, 4 good and 4 bad, which provides a rich content for interconnection. Each ghost can move one square forwards, backwards or sideways and can conquer opponent’s ghosts, which offers adequate choices of action every turn. Moreover, the position for the ghosts is limited, so the move of one ghost will affect the possible action of other ghosts.

The unique objectives of the game help create both positive and negative feedback loops. For example, the winning condition “Cause your opponent to capture your four bad ghosts” and “Capture all four of your opponent’s good ghosts” encourages player to keep attacking his opponent when he captures a good ghost, while discouraging him if he captures a bad ghost.

Regarding interaction at different scales, Good & Bad Ghosts enables player to place good ghosts and bad ghosts at certain position to form a defense group or an attack group, which enlarges the scale of interaction between ghosts. Expanding further into the mental state, we can see the interaction of the two players’ strategies, perception and misguidance.

The analysis above shows that we can design an emergent experience intentionally by designing the three components. However, from my perspectives, it is more difficult to design emergent experience in video games than in board games, as board games are born with some components for emergent experience, which lies in its gameplay.

It’s often hard to find distinctions between the gameplay of video games and the one of board games, as there are tons of examples of transforming a board game into a digital version. However, I identify two things that is unique to board games, the offline environment and players’ interpretation of the gameplay.

Offline environment is quite self-explainable, which is that players usually play board games face-to-face. This offers players with a new input which is hardly used in video games, seeing their opponents. For example, when playing the board game Tofu Kingdom, player acting the prince needs to identify the identity of other players by asking questions. In this situation, recognizing facial expression of other players may be more helpful than using logic to infer the identity. This new input causes a new feedback loop, as player may be more careful about traps when he sees that his opponent is smiling.

Another difference in gameplay is that players need to interpret gameplay themselves when playing board games, while the gameplay is interpreted by computer in video games. Take Good & Bad Ghosts as an example, though it clearly mentioned the initial position of the ghosts in the rules, we didn’t see it when playing it for the first time, so we placed the ghosts randomly at the last two rows of the chessboard rather than the eight fixed blocks, which brought us a different game experience compared with the correct one. This misinterpretation unique to board games directly changes the complex system of the gameplay, which provides players with a more emergent experience.

In summary, designing active and interconnected parts, feedback loops, and interaction at different scales can help create emergent game experience in games. And the type of games can also influence the emergent game experience of players, like the offline environment and players’ interpretation of the gameplay in board games.

#CGDD Reading Response: The Art of Failure: Chapter 4 – How to Fail in Video Games

The chapter introduces three paths for player to achieve success, skill, chance and labor. On the path of skill, failure serves as a way of learning, which improves player’s skill and prepare him to conquer the challenge and succeed. For chance, there is an equal possibility to win when seeing the big picture, but every role of the game distributes the possibility to win unevenly, which means failure and success are based on luck. From my personal perspective, chance offers a great excuse for players when they lose the game, especially for PVP game. It would be humiliating to be beaten merely for lack of skill and boring if be beaten only for inadequate devoted labor, so chance comes as a way to engage players with the game again when they fail. For the path of labor, there is no concept of failure, which means players are impossible to lose. To achieve success, players need to keep putting time and labor on the game and accumulate more. Sometimes there is no success for labor-based games.

Besides the three paths, I want to propose the fourth path, information. Information is somewhat like skill, as they are both gained through the process of learning. However, the difference is that skill is to find a way or strategy to overcome challenges, while information could only help player overcome challenges more easily. For example, the skill of fighting with a monster could be escaping its attacks through rolling, while the information of this process could be whether there is a trap to hurt the monster. One example of the games which purely bases on information is puzzle-solving game. Though it requires observation skill to discover the information, the information could come from somewhere else, like the game guide or the player’s previous experience of playing this game.

From my perspective, when designing the failure for players, fairness is a must for PVP games and could be neglected for PVE games. For PVP games, players need fair rules so that they can prove their skills are better than others, since a key source of entertainment in PVP game is socializing. However, this does not mean that the PVP game should be completely fair. When the rule is completely fair, players wouldn’t have the excuse for their failure, which could cause them give up the game quickly, so chance and labor are also needed. For PVE game, fairness doesn’t quite matter as fighting someone stronger than you could be the challenge of PVE game. As long as there is a fixed rule, fairness is unnecessary for PVE games.

Then I want to illustrate my ideas more clearly by raising the PVE game Hollow Knight as an example. Hollow Knight is a 2D Metroidvania game featuring unique art style, smooth actions, great music and fantastic map design. It’s a combination of the paths of skill, chance, labor and information. Player needs to fight with monsters with little allowance for making mistakes, which requires skill. When fighting with some kinds of monsters, their attack involves certain randomness, which requires chance and offers player an excuse for failure. Player could discover several items in the scene to improve their abilities. Regarding information, there are several hidden places for the player to explore. Sadly, the game doesn’t provide much guidance, which somewhat stops players from succeeding through information although it could encourage map discovery. However, players could still collect information from game guide and explore the hidden places to strengthen themselves. Since it’s a PVE game which the player fights with the NPCs who are stronger than the main character, the fairness of the game is neglected while remaining certain rules.

For video games nowadays, multiple paths to success are designed to enable different players to discover what is fun to them, thus improving the players’ game experience. As video game developers, we should combine different paths to achieve success in our game to make our games enjoyable for larger group of people.

#CGDD Hollow Knight Playing Response

I finished the game Hollow Knight two weeks before I write this blog. From my perspective, Hollow Knight is a great 2D Metroidvania game, but there still remains some place to improve.




The video above is a record of me fighting with the final boss, Hollow Knight and the hidden boss, Radiance. From the video you can see its unique art style, which is simple but smooth. And the music is great, offering me a sense of epic.
But there is a critical problem for this boss fight. If you want to fight with Radiance, you have to fight with Hollow Knight first. And the game set the challenges of beating Radiance as very high and the challenges of beating Hollow Knight as quite low. This is understandable because Radiance is the hidden final boss, so it should be harder for players to conquer. But for those players who can’t improve their skills fast, like me, the final boss fight would be tormenting. Every time I want to fight with Radiance, I have to go through a long boring fight with Hollow Knight and then be beaten by Radiance within thirty seconds. Team Cherry, the team who made this game, might put the smoothness of storytelling at the first place when they design the boss fight, but it actually causes the players to suffer.
Similar design can be seen in other boss fight, although fighting with a pre-boss turns into travelling through the map. Take fighting with Hive Knight as an example, in the image below, player has to go through such a long way to reach the place for boss fight, and when they lose, they will have to walk the path again.

I don’t know whether the game designer made it intentionally or not, but it seems that the game is trying to increase the time of playing by adding on the cost of travelling in the map.

Regarding the map design, I think it is great, with plenty of hidden places to discover. But the designers seem to take for granted that every player likes to discover every place of the map, which makes them neglect the contents of guidance. For example, when player reaches the abyss for the first time, the gate is closed and there is only a “riddle” showed below, which doesn’t provide any help to open the gate.

Although I have raised several problems the game Hollow Knight have above, I still think it’s a good game due to its unique art style, epic music, smooth action and fantastic map design. However, there are still several drawbacks which make players uncomfortable while playing. Now I feel that game design and development is really hard. Any tiny mistake may bring players a bad experience, which could easily cover the efforts put on other parts of the game. Therefore, as game designers, we should always pursue for perfectionism.

#CGDD 2D Game: Documentation of game structure


The image above is the flow chart of our game system. The player controls the position of the fish by adding force onto it through WASD and space keys, which is the act of fishing. When the fish is in a good position, the player shoot at it and decrease its health. When the player adds too much or too little force, the fishhook will break and the fish will escape, which means the player loses. When the fish’s health enters zero, the player wins, and he gets the access to the next level.

There are four levels in this game. The harder the level is, the stronger force the fish adds on itself and longer health it gains. The image below is our scene of choosing game level:

The challenge of the player is to keep the force on the fish in a certain interval. He has to try to add the force of the fishing rod to make the fish jump out of water to make it easier to shoot, but he cannot make the force too strong so that the fish will not get off the hook.

The video below shows the UI:

When the player wins, the exclamation mark on the level will be remove and the player could access the next level. We have just built one level so that I could skip the easy level in the video. When the player loses, a restart button will appear on the canvas.

The videos below show how the player loses the game:


In this video, the player fails to set hook in time so that the fish escape directly.


In this video, the player adds too little force on the fish and the fish escapes.


In this video, the player adds too much force on the fish and throws the fish away.

The video below shows how the player wins the game:

#CGDD Create a real ‘Fake’ game

I chose the game Rolling Sky as my sample, here is a video of how it plays: https://www.bilibili.com/video/BV11V411Y7VM?p=3&vd_source=637c310ef910b08826920d2defc0a6f5
I’ve decided to create a simpler game where the player moves forward and avoids obstacles.

Firstly, I created a UI scene with a button to transition to another scene. Initially, I attempted to add text as a component to the button, resulting in an error. Upon watching a tutorial video, I discovered that text should be a separate game object, and when creating a button, a text object is automatically generated as the children object of the button.
Below is a video of it:

Secondly, I bonded the character and the main camera together under an empty object, which enables the camera to move accordingly with the character. I also asked Chat-GPT to write a script to move the character forward and a script to control the x position of the character with the key A and D. Below is the video of it:

Thirdly, I learned about collision trigger events and applied them to my game. Additionally, I created a canvas to display the “game over” message during gameplay, initially hidden at the start. When the player collides with obstacles, the canvas appears, allowing the player to press a button and return to the home page. Below is the video:

Then, I asked Chat-GPT to generate a script that randomly creates a fixed obstacle with a collider set, limited to a maximum of 7. However, I realized that continually adding new functionalities to the script without losing the original ones was challenging for Chat-GPT. Instead of repeatedly asking, I find it more efficient to request individual functions and incorporate them into the script myself. Here is the video:

After that, I thought of a game experience in the game DREDGE, which can be applied to my game.

I thought I could decorate the character as a fishing boat and the collisions as reef. Below is a video of DREDGE where my idea come from, the sudden appear of the reef is much similar to how the obstacles appear in my game.

Therefore, I searched free material on Unity Asset Store (https://assetstore.unity.com/zh) and replaced the symbol objects with new models and materials.
Rock and cliff models: https://assetstore.unity.com/packages/3d/environments/landscapes/free-rocks-19288
Ocean material:
https://assetstore.unity.com/packages/2d/textures-materials/water/unlit-stylized-water-pack-142285
Fishing boat model: https://assetstore.unity.com/packages/3d/vehicles/sea/fishing-boat-23181
I also tried to use fog (https://assetstore.unity.com/packages/vfx/shaders/dynamic-vertical-fog-189939) to block the view of the player, but I failed to apply it on my game. So, I asked Chat-GPT to generate a script to create the cliffs and ocean ahead of the player and destroy them after the player passes them. However, I embedded the script on the object that I wanted to generate, which made the object keep generating the object with the same script and caused the Unity to freeze. I had to shut it up with the Task Manager, losing what I hadn’t saved. Anyway, below is the video of what I worked in this stage:

Next, I added a skybox (https://assetstore.unity.com/packages/2d/textures-materials/sky/allsky-free-10-sky-skybox-set-146014) and modified the script of the character moving forward. The character now starts from a low speed and moves faster as the game is played. Below is the video:

Finally, I created animations for the home page scene and the lose scene with Stable Diffusion. (https://stablediffusionweb.com/zh-cn/app/image-generator) Moreover, I added a music box (https://opengameart.org/content/deadly-sea) to play a horror music to enhance the game experience. Last but not the least, I modified the UI with new materials (https://assetstore.unity.com/packages/2d/gui/fantasy-wooden-gui-free-103811) Below is the video for the final work:

#CGDD Class01: Assignment 2 Blog Post – Video Game Gameplay

From my perspective, I agree with the idea proposed in the first class that a game is a form of learning, but there is much to discuss about it.

According to the theory of fun, there are four kinds of fun: easy fun, hard fun, people fun, and serious fun. I believe all of them are related to learning.

Easy fun is about novelty and curiosity. Through the process of exploration, we learn about new things, which brings us joy. One example is DREDGE, a game where the player simulates navigation through the ocean to catch fish cursed by the Ancient One and solves puzzles. The experience of catching a new kind of fish involves the process of learning, providing players with satisfaction.

Hard fun is the enjoyment derived from overcoming challenges, which necessitates learning skills or game strategy. One example is Hollow Knight, where the player embarks on an adventure with little room for mistakes. However, as the player learns how to defeat their enemies and successfully navigates through the challenges, they experience a significant sense of reward.

People fun arises from the joy of interacting with others. Where there is a crowd, there is comparison. Whether to showcase skills or to enhance the gaming experience, players learn to strengthen their abilities in competing or cooperating with others. One example is Lethal Company, a game that involves players avoiding monsters and collecting waste to sell through cooperation (or causing trouble for each other). To maximize enjoyment, whether by assisting friends and assuming leadership roles or by contributing to the defeat of the team, players learn.

The final aspect is serious fun, which contributes to reshaping players’ minds and lives. One example is NEEDY STREAMER OVERLOAD, where players assume the role of a producer for a streamer with manic-depressive psychosis. In this game, most of the endings are tragic. The streamer may commit suicide, develop a romantic connection with someone other than the player, or express an overwhelming amount of love to the player. However, these negative endings prompt players to reflect on the impact of the Internet on human lives, leading to a transformation in their real-life behaviors.

As the theory of fun suggests, most games are composed of multiple kinds of fun.

However, there are exceptions. In some smartphone games, such as Blue Archive, one aspect of players’ experiences involves logging into their accounts, completing daily tasks, and gaining daily rewards.

What type of fun is it? What do they learn?

From my perspective, none of the types of fun proposed in the theory of fun can adequately explain this phenomenon. This has led me to explore a theory called Operant Conditioning. I learned this theory and its relationship with game design in this video: https://www.youtube.com/watch?v=o9NytJXbJmI .

Operant Conditioning is a type of learning in which behavior is strengthened or weakened by consequences of rewards and punishments. It involves the use of reinforcement, either positive (adding a desirable stimulus) or negative (removing an aversive stimulus), to increase the likelihood of a behavior being repeated, which is the process of learning.

This theory could explain what players learn by repeating daily events in video games. They acquire a pattern of life, and the repetition shapes their routine, making logging into the game and completing daily tasks a habitual activity.

In conclusion, from my perspective, gameplay is a form of learning. Whether in experiencing the four kinds of fun or in shaping a pattern of life, gameplay is closely tied to the learning process. This process is shaped by rewards and punishments. Through the thoughtful design of rewards and punishments, we can reinforce the learning process, thereby creating a more engaging and effective game.

#CGDD Class01 Assignment -3: C# Challenges

Challenge 1:

Challenge2:

Challenge3:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class challenge3 : MonoBehaviour
{
public float speed = 1.0f;

public Rigidbody rb;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.D))
{
speed ++;
print(speed);
}
else if (Input.GetKeyDown(KeyCode.A))
{
speed --;
print(speed);
}
rb.Move(transform.position + transform.forward * speed * Time.deltaTime, transform.rotation);
}
}


Challenge4:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class challenge4 : MonoBehaviour
{
public float speed = 1.0f;
public Rigidbody rb;
private float maxspeed = 5.0f;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.D) && speed 0)
{
speed --;
print("The speed is " + speed);
}
rb.Move(transform.position + transform.forward * speed * Time.deltaTime, transform.rotation);
}
}


Challenge5:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class challenge5 : MonoBehaviour
{
private float maxspeed = 5.0f;
public float speed = 1.0f;
public Rigidbody rb;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.D))
{
speed ++;
}
else if (Input.GetKeyDown(KeyCode.A))
{
speed --;
}
rb.Move(transform.position + transform.forward * speed * Time.deltaTime, transform.rotation);
print("The speed is " + speed);
if (speed > maxspeed)
{
print("state: Overspeed");
}
else if (speed > 0)
{
print("state: Moving");
}
else if (speed == 0)
{
print("state: Stop");
}
else
{
print("state: Reverse");
}
}
}