# My proposal

**Name**: joowonkim  
**Student ID**: 20200150  
**Repository URL**: http://git.prototyping.id/20200150/homework5

---

## Table of Contents
- [Game Title : "polygon alleyway"](#game-title--polygon-alleyway)
- [Brief Description](#brief-description)
- [More Description](#more-description)
- [Game Component](#game-component)
- [Implementation Plan](#implementation-plan)
- [Detailed Plan](#detailed-plan)
- [Expected Challenges](#expected-challenges)
- [Class Features](#class-features)
- [Code Implementation Plan](#code-implementation-plan)

---

## Game Title : "polygon alleyway"

## Brief Description
This game is an FPS game where you roam around alleyways and shoot key targets to eliminate them.  
I got the idea from *airsoft* games.

---

## More Description
- The player wins by eliminating key targets while avoiding enemies.
- Player controls movement and shooting using WASD and mouse.
- Hidden enemies, object collisions, and an HP system exist.
- Bullets lose damage over distance and have ballistic falloff.
- The game will look like a typical FPS scene, with guns, enemies, and 3D objects.

![FPSscene](./assets/FPSscene.png)

![airsoft image](./assets/Airsoft.png)  
Image from: [News article](https://www.chosun.com/national/weekend/2022/05/21/VW7LNLQHHNEAVLLZKKLNE3VQUU/)

---

## Game Component
- 3D polygon character
- 3D polygon gun
- 3D objects (interact with bullets)
- 3D enemies
- Walls and obstacles

---

## Implementation Plan
I plan to use Unity.

1. Background implementation
2. Character movement and animation
3. Shooting system
4. Collision system
5. Target objects
6. Enemies that attack the player

---

## Detailed Plan
- For character rigging and animation, I will use [Mixamo](https://www.mixamo.com/#/?page=2&type=Character)'s free assets.
- Among them, I plan to use the character shown below:

![character image](./assets/chracter.png)

---

## Expected Challenges
- Enemy movement and shooting AI
- Player detection algorithm for enemy
- Splitting upper/lower body movement based on mouse direction

---

## Class Features
I plan to use the following features covered in class:

- Collision detection
- Simple UI animations (e.g., HP bar)
- Event-driven battle interactions

---

## Code Implementation Plan

The following classes describe the modular components that will make up the game logic in Unity.

---

### `PlayerMovement`  
Handles WASD-based movement for the player.

```csharp
public class PlayerMovement : MonoBehaviour {
    public float speed = 5f;

    void Update() {
        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");
        transform.Translate(new Vector3(x, 0, z) * speed * Time.deltaTime);
    }
}

```csharp
public class PlayerController : MonoBehaviour {
    void Update() {
        Vector3 mousePos = Input.mousePosition;
        // Rotate character to face mouse position
    }
}

```csharp
public class GunController : MonoBehaviour {
    public GameObject bulletPrefab;

    void Update() {
        if (Input.GetMouseButtonDown(0)) {
            Shoot();
        }
    }

    void Shoot() {
        Instantiate(bulletPrefab, transform.position, transform.rotation);
    }
}
```markdown
- `PlayerHP` : manages health and death logic  
- `BulletMover` : handles bullet movement and collision  
- `EnemyMove` : moves enemy based on player's position