#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");
}
}
}