Commit d155dc71 authored by Gavin An's avatar Gavin An

게임의 개념 수정

parent 701f48a4
실험용.
L-Defense 게임 개요
플랫폼: Mobile
- 게임의 개념과 목적
* 소환사가 하나의 스테이지(무대)에서 유닛들을 소환해서 무한정 생성되는 몬스터들을 잡아서 극한까지 가는 게임
* 게임이 끝난다고 해서 모든것이 초기화 되는 것이 아니라, 소환사의 레벨을 올릴 수 있어 성취감도 느낄 수 있음
* (추후)멀티플레이가 가능하며, 비슷한 소환사의 레벨대와 경쟁할 수도 있음(내가 처치한 몬스터는 상대방의 스테이지에 보내어 경쟁)
* 소환사가 하나의 스테이지(무대)에서 무작위 유닛들을 소환해서 무한정 생성되는 몬스터들을 잡아서 극한까지 가는 게임
* 게임이 끝난다고 해서 모든것이 초기화 되는 것이 아니라, 소환사의 레벨을 올릴 수 있어 성취감도 느낄 수 있음
* 스테이지마다 몬스터의 최대 개수는 200마리, 200마리가 넘어가면 게임 오버.
* 영웅, 유닛의 개념이 있음. 영웅은 플레이어블. 유닛은 배치.
* 몬스터를 죽여서 얻은 골드를 영웅을 키우는 데 쓸 것이냐. 유닛의 증가 또는 유닛 강화에 쓸 것이냐는 플레이어의 몫
* 나는 영웅을 키워서 컨트롤을 통해 스테이지 클리어 vs 컨트롤 필요없이 유닛을 키워서 탄탄하게 스테이지 클리어
* (추후)멀티플레이가 가능하며, 비슷한 소환사의 레벨대와 경쟁할 수도 있음(내가 처치한 몬스터는 상대방의 스테이지에 보내어 경쟁)
- 소환사 개념
* AOS 게임처럼 유닛을 소환하는 소환사 개념이 존재.(디펜스 게임의 주인공 느낌)
* 소환사는 게임 시작 전에 선택할 수 있음
* 소환사는 레벨 개념이 존재하며, 레벨마다 각 특성을 찍을 수가 있음.
* 최대 레벨은 30
* 소환사는 고유 소환사 스킬이 있음. 쿨타임은 꽤 긴 편.
* AOS 게임처럼 유닛을 소환하는 소환사 개념이 존재.
* 소환사는 게임 시작 전에 선택할 수 있음.
* 소환사는 레벨 개념이 존재하며, 레벨마다 각 특성을 찍을 수가 있음.
* 레벨 개념은 스테이지가 종료 되어야 반영 됨.
* 소환사는 고유 소환사 스킬이 있음. 쿨타임은 꽤 긴 편.
* 최대 레벨은 100
- 영웅 개념
* 영웅은 플레이어가 실시간으로 직접 컨트롤 가능한 유일한 유닛.
* 영웅은 일정 골드를 통해 하나만 뽑을 수 있음. 무작위 확률로 하나가 나옴.
* 영웅의 레벨은 돈으로 올릴 수 있음. 스킬 레벨업 또한 돈으로 올릴 수 있음
* 생성과 동시에 HUD UI에 영웅의 초상화가 뜨고, 영웅의 스킬 2개를 사용할 수 있음.
- 유닛 개념
* 유닛 생성시 마다 골드가 소모되며, 모두 무작위 확률로 생성
* 생성된 유닛은 스테이지의 격자에 각각 배치 가능. 고정되어 있으며 자동 공격함.
* 체력 / 공격력 / 공격속도 / 이동속도
* 유닛의 등급은 일반 / 고급 / 희귀 / 전설 / 신화 / 유일 등급
* 일반 ~ 희귀까지는 고유 스킬이 없고 일반 공격만 가능(근거리 / 원거리 구분 존재)
* 전설 ~ 신화는 고유 스킬 존재.
* 유일(영웅) 등급은 레벨이 존재하며 고유 스킬이 2개 존재
* 전설 등급 이상 유닛이 생성 되었을 때 알려주는(강조하는) 알림이 뜸
- 몬스터 개념
* 체력 / 이동속도 / 리젠 시간 각각 차이
* 매 10라운드마다 보스몹 출현. 보스몹은 유닛의 공격이 가능함.
* 체력 / 이동속도 / 리젠 시간 각각 차이
* 매 10라운드마다 보스몹 출현. 보스몹은 유닛의 공격이 가능함.
- 스테이지 개념
* 여러개의 스테이지가 존재 함. -> 평원 / 사막 / 고원 / 용암지대 / 설원 등
* 스테이지 마다 고유의 유닛 및 몬스터에 버프 / 디버프를 줌
- 유닛 개념
* 유닛 생성시 마다 골드가 소모되며, 모두 무작위 확률로 생성
* 유닛은 RTS 게임처럼 각각/부대로 컨트롤 가능함
* PC에선 RTS 게임처럼 공격 / 이동 / 홀드 가능함
* 체력 / 공격력 / 공격속도 / 이동속도
* 모바일에선 클릭해서 이동하면 고정되는 것이 기본
* 유닛의 등급은 일반 / 고급 / 희귀 / 전설 / 신화 / 유일 등급
* 일반 ~ 희귀까지는 고유 스킬이 없고 일반 공격만 가능(근거리 / 원거리 구분 존재)
* 전설 ~ 신화는 고유 스킬 존재.
* 유일(영웅) 등급은 레벨이 존재하며 고유 스킬이 2개 존재
* 전설 등급 이상 유닛이 생성 되었을 때 알려주는(강조하는) 알림이 뜸
* 여러개의 스테이지가 존재 함. -> 평원 / 사막 / 고원 / 용암지대 / 설원 등
* 스테이지 마다 고유의 유닛 및 몬스터에 버프 / 디버프를 줌
* 스테이지의 크기는 10 x 10
- HUD UI 구성
* 하단 중앙에 유닛 생성 버튼 존재
* 상단 중앙에 스테이지 수 / 현재 골드 양 / 몬스터의 양
* (추후) 좌측에 유일 등급의 초상화가 존재. 영웅 개념
* 하단 중앙에 유닛 생성 버튼 존재
* 상단 중앙에 스테이지 수 / 현재 골드 양 / 몬스터의 양
* 좌측에 내가 선택한 영웅 초상화가 존재.
- 씬의 구성
* 게임 시작 화면 -> 소환사 선택 화면 -> 스테이지 선택 화면 -> 게임 시작
* 게임 시작 화면 -> 소환사 선택 화면 -> 스테이지 선택 화면 -> 게임 시작
......@@ -27,6 +27,7 @@
3. **3D 노드 사용:** 3D 디펜스이므로 2D 노드(`Node2D`)가 아닌 3D 노드(`Node3D`, `CharacterBody3D`, `Path3D`, `PathFollow3D`)를 사용할 것.
4. **자원 관리:** `preload()`를 적극 활용하고, 복잡한 데이터는 커스텀 `Resource`를 만들어 관리할 것.
5. **독립성 유지:** 노드는 상위 노드를 직접 참조(`get_parent()`)하지 말고, 반드시 **시그널(Signal)**을 통해 통신할 것.
6. **주석 철저:** 코드를 작성하고 반드시 주석을 상세히 작성할 것.
## 4. 커스텀 CLI 명령 (에이전트 전용)
에이전트는 아래의 명령을 수행하여 프로젝트를 관리할 수 있습니다.
......
......@@ -27,7 +27,6 @@ window/size/viewport_width=1280
window/size/viewport_height=720
window/size/mode=3
window/stretch/mode="canvas_items"
window/stretch/aspect="keep"
window/handheld/orientation=4
[physics]
......
......@@ -114,7 +114,7 @@ func _spawn_projectile(fire_position: Vector3) -> void:
proj.set("damage", unit_data.damage)
proj.set("target", _target_monster)
proj.set("speed", 18.0) # 불덩이는 크고 묵직하므로 조금 느린 속도(18.0m/s)로 날아가게 설정
proj.set("color", Color(1.0, 0.35, 0.1, 1.0)) # 붉은 주황색 계열의 색상 지정
#proj.set("color", Color(1.0, 0.35, 0.1, 1.0)) # 붉은 주황색 계열의 색상 지정
# 셰이더 및 GPUParticles3D가 사전 구성된 불덩이 비주얼 효과 씬(.tscn)을 전달합니다.
var fb_effect: = preload("res://src/entities/projectiles/fireball/fireball_effect.tscn")
......
[gd_scene format=3 uid="uid://br3p733g43o5f"]
[ext_resource type="Script" uid="uid://bbduakccdnoye" path="res://src/entities/units/mage/mage_unit.gd" id="1_mage_script"]
[ext_resource type="PackedScene" path="res://src/entities/units/mage/mage.tscn" id="2_mage_scene"]
[ext_resource type="PackedScene" uid="uid://5ebt3f4yxl4d" path="res://src/entities/units/mage/mage.tscn" id="2_mage_scene"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_body"]
radius = 0.4
......@@ -12,9 +12,9 @@ radius = 0.4
height = 1.2
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ring"]
albedo_color = Color(0.9, 0.25, 0.15, 1)
albedo_color = Color(0.09803922, 0.9019608, 0.09803922, 1)
emission_enabled = true
emission = Color(0.9, 0.25, 0.15, 1)
emission = Color(0.09803922, 0.9019608, 0.09803922, 1)
emission_energy_multiplier = 2.0
[sub_resource type="TorusMesh" id="TorusMesh_selection"]
......
[gd_scene load_steps=2 format=3]
[gd_scene format=3 uid="uid://doj12ce3mmosn"]
[ext_resource type="MeshLibrary" uid="uid://ddc7y16q0whgv" path="res://src/map/tile_mesh_library.tres" id="1_mesh_lib"]
[ext_resource type="MeshLibrary" uid="uid://cynw1xywjqb77" path="res://src/map/tile_mesh_library.tres" id="1_mesh_lib"]
[node name="Stage1Map" type="GridMap"]
[node name="Stage1Map" type="GridMap" unique_id=875122487]
mesh_library = ExtResource("1_mesh_lib")
data = {
"cells": PackedInt32Array(65531, 65531, 0, 65531, 65532, 0, 65531, 65533, 0, 65531, 65534, 0, 65531, 65535, 0, 65531, 0, 0, 65531, 1, 0, 65531, 2, 0, 65531, 3, 0, 65531, 4, 0, 65532, 65531, 0, 65532, 65532, 1, 65532, 65533, 1, 65532, 65534, 1, 65532, 65535, 1, 65532, 0, 1, 65532, 1, 1, 65532, 2, 1, 65532, 3, 1, 65532, 4, 0, 65533, 65531, 0, 65533, 65532, 1, 65533, 65533, 1, 65533, 65534, 1, 65533, 65535, 1, 65533, 0, 1, 65533, 1, 1, 65533, 2, 1, 65533, 3, 1, 65533, 4, 0, 65534, 65531, 0, 65534, 65532, 1, 65534, 65533, 1, 65534, 65534, 1, 65534, 65535, 1, 65534, 0, 1, 65534, 1, 1, 65534, 2, 1, 65534, 3, 1, 65534, 4, 0, 65535, 65531, 0, 65535, 65532, 1, 65535, 65533, 1, 65535, 65534, 1, 65535, 65535, 1, 65535, 0, 1, 65535, 1, 1, 65535, 2, 1, 65535, 3, 1, 65535, 4, 0, 0, 65531, 0, 0, 65532, 1, 0, 65533, 1, 0, 65534, 1, 0, 65535, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 0, 1, 65531, 0, 1, 65532, 1, 1, 65533, 1, 1, 65534, 1, 1, 65535, 1, 1, 0, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 4, 0, 2, 65531, 0, 2, 65532, 1, 2, 65533, 1, 2, 65534, 1, 2, 65535, 1, 2, 0, 1, 2, 1, 1, 2, 2, 1, 2, 3, 1, 2, 4, 0, 3, 65531, 0, 3, 65532, 1, 3, 65533, 1, 3, 65534, 1, 3, 65535, 1, 3, 0, 1, 3, 1, 1, 3, 2, 1, 3, 3, 1, 3, 4, 0, 4, 65531, 0, 4, 65532, 0, 4, 65533, 0, 4, 65534, 0, 4, 65535, 0, 4, 0, 0, 4, 1, 0, 4, 2, 0, 4, 3, 0, 4, 4, 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment