게임 컨셉: 워해머 40K 스타일 오크가 되어 요새를 방어하며, 장인에게 장비를 만들게 하고, 밖에서 루팅해오는 협동 서바이벌 슈터 이 문서 범위: 싱글플레이어 MVP (1인 플레이 가능한 핵심 루프) Part 2 범위: 멀티플레이어, 포탑, 고급 루팅, 스페이스 마린
[요새 안] 장인에게 제작 요청
↓
[요새 밖] 웨이브 방어 + 시체/아이템 루팅
↓
[요새 안] "완성이다 임마!!" → 어그로 발생
↓
[요새 안] 장비 수령 + 업그레이드
↓
(반복, 점점 강해짐)
핵심 재미 요소:
Unity 6 LTS 또는 2022.3 LTS
템플릿: 3D (URP) - 나중에 비주얼 업그레이드 용이
Assets/
├── _Game/
│ ├── Animations/
│ ├── Audio/
│ │ ├── Music/
│ │ ├── SFX/
│ │ └── Voice/ # 오크/장인 보이스
│ ├── Materials/
│ ├── Models/
│ │ ├── Characters/
│ │ ├── Enemies/
│ │ ├── Environment/
│ │ └── Weapons/
│ ├── Prefabs/
│ │ ├── Characters/
│ │ ├── Enemies/
│ │ ├── Items/
│ │ ├── Projectiles/
│ │ └── Buildings/
│ ├── Scenes/
│ ├── ScriptableObjects/ # 데이터 에셋
│ ├── Scripts/
│ │ ├── Characters/
│ │ ├── Combat/
│ │ ├── Crafting/
│ │ ├── Enemies/
│ │ ├── Fortress/
│ │ ├── Items/
│ │ ├── Managers/
│ │ └── UI/
│ ├── Sprites/
│ └── UI/
└── Plugins/
- TextMeshPro (기본 포함)
- Cinemachine (카메라)
- AI Navigation (NavMesh)
- Input System (New Input System)
게임 밸런싱과 확장성을 위해 데이터를 코드에서 분리.
ItemData.cs
using UnityEngine;
public enum ItemType
{
Resource, // 재료
Weapon, // 무기
Armor, // 방어구
Consumable, // 소모품
Special // 특수 (스페이스 마린 장비 등)
}
public enum Rarity
{
Common, // 일반 재료
Uncommon, // 강한 적 시체
Rare, // 보스 드롭
Legendary // 스페이스 마린 장비
}
[CreateAssetMenu(fileName = "New Item", menuName = "Game/Item Data")]
public class ItemData : ScriptableObject
{
[Header("기본 정보")]
public string itemName;
public string itemNameKorean; // "쵸파!" 같은 오크식 이름
public Sprite icon;
public ItemType itemType;
public Rarity rarity;
[Header("설명")]
[TextArea(3, 5)]
public string description; // "이빨 많이 들었다 임마!"
[Header("스탯 (무기/방어구용)")]
public int damage;
public float attackSpeed;
public int armor;
public float moveSpeedBonus;
[Header("제작")]
public bool isCraftable;
public float craftTime; // 제작 시간 (초)
public CraftingRecipe recipe;
}