File size: 8,536 Bytes
04c376c
f2fcda1
04c376c
 
 
 
 
59c803c
952e153
04c376c
265975e
a557f77
 
f2fcda1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a557f77
f2fcda1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265975e
a557f77
 
f2fcda1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a557f77
f2fcda1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
04c376c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
---
title: 3D Air Combat Simulator
emoji: ๐ŸŒ
colorFrom: blue
colorTo: yellow
sdk: static
pinned: false
license: cc-by-nc-4.0
short_description: One-minute creation by AI Coding Autonomous Agent 'MOUSE-I'
---
# 3D Air Combat Simulator 

link: https://huggingface.co/spaces/cutechicken/3D-Airforce-Simulator
Developer: https://huggingface.co/spaces/cutechicken

## ๐ŸŽฎ Project Overview
A high-quality web-based 3D fighter jet simulator created with **VIBE CODING**. Built with Three.js, this is a full-scale aerial combat game that runs in your browser, featuring realistic physics engine and combat systems.

## โœจ Key Features

### ๐Ÿ›ฉ๏ธ Realistic Flight Physics
- **Real Aircraft Dynamics Simulation**: Realistic flight considering lift, gravity, and drag
- **G-Force System**: Blackout effects during extreme maneuvers
- **Stall System**: Loss of control when speed drops below threshold
- **Altitude-based Performance**: G-Force increases with altitude

### ๐ŸŽฏ Combat System
- **20mm Cannon**: 940 rounds, continuous fire capability
- **AIM-9 Sidewinder Missiles**: 8 missiles with 3-stage lock-on system
- **Flare System**: Heat-seeking countermeasures (3 uses)
- **Enemy AI**: Smart AI capable of evasive maneuvers, missile launches, and flare deployment

### ๐ŸŽจ Immersive HUD
- **Fighter HUD**: Speed, altitude, heading, pitch/roll indicators
- **RWR (Radar Warning Receiver)**: Enemy position and lock-on warnings
- **Pitch Ladder**: Aircraft attitude display
- **Target Markers**: Automatic enemy marking within crosshair

### ๐Ÿ”Š Sound Design
- Engine sounds, cannon fire, missile launches
- Warning system (altitude, stall, Over-G, missile alerts)
- Voice guidance system
- Distance-based volume control

## ๐ŸŽฎ Controls

### Basic Controls
- **W/S**: Throttle increase/decrease
- **A/D**: Rudder (yaw) control
- **Mouse**: Pitch/roll control
- **Left Click**: Fire weapon
- **R**: Switch weapon (Cannon โ†” Missile)
- **F**: Deploy flares
- **G**: Escape stall (hold for 2 seconds)

### Combat Tips
1. **Missile Lock**: Keep enemy in crosshair for 3 seconds in AIM-9 mode
2. **Flare Usage**: Press F immediately when missile warning sounds
3. **Over-G Warning**: Level out when vision darkens during extreme maneuvers
4. **Stall Recovery**: Hold G for 2 seconds when speed drops below 300kt

## ๐Ÿš€ Installation & Setup

### Requirements
- Modern web browser (Chrome, Firefox, Edge recommended)
- WebGL support
- Mouse required

## ๐Ÿ“ Project Structure
```
3D-Airforce-Simulator/
โ”œโ”€โ”€ index.html          # Main HTML (HUD and UI)
โ”œโ”€โ”€ game.js            # Game logic (physics, AI, combat systems)
โ”œโ”€โ”€ models/            # 3D model files
โ”‚   โ”œโ”€โ”€ f-15.glb      # Player fighter
โ”‚   โ””โ”€โ”€ mig-29.glb    # Enemy fighter
โ”œโ”€โ”€ sounds/            # Sound files
โ”‚   โ”œโ”€โ”€ main.ogg      # BGM
โ”‚   โ”œโ”€โ”€ normal.ogg    # Engine sound
โ”‚   โ””โ”€โ”€ ...           # Various sound effects
โ””โ”€โ”€ effects/          # Visual effects
    โ””โ”€โ”€ symbol.png    # RWR symbol
```

## ๐Ÿ› ๏ธ Tech Stack
- **Three.js**: 3D graphics rendering
- **Vanilla JavaScript**: Game logic
- **Web Audio API**: Sound processing
- **Pointer Lock API**: Mouse control

## ๐ŸŽฏ Game Objectives
- **Mission**: Destroy all enemy aircraft (4) within 180 seconds
- **Victory Conditions**: 
  - Destroy all enemies
  - Survive time limit + destroy all enemies
- **Defeat Conditions**:
  - Health reaches 0 (hit/collision)
  - Ground collision
  - Time expires with enemies remaining

## ๐Ÿ† Scoring System
- Cannon kill: 100 points
- Missile kill: 100 points
- Collision kill: 200 points

## ๐Ÿ’ก VIBE CODING Achievement
This project was created using the **VIBE CODING** methodology. Through rapid prototyping and immediate feedback, we achieved a high-quality 3D fighter jet simulator.

### Special Features
- Complete game engine in a single JavaScript file
- Real-time physics simulation
- Complex AI behavior patterns
- Professional HUD system
- Immersive sound design

## ๐Ÿ› Known Issues
- BGM playback delay due to autoplay policies in some browsers
- Possible frame drops on high graphics settings
- Flares may occasionally fail to perfectly evade missiles







# 3D Air Combat Simulator : 3D ์ „ํˆฌ๊ธฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ  

link: https://huggingface.co/spaces/cutechicken/3D-Airforce-Simulator
๊ฐœ๋ฐœ์ž: https://huggingface.co/spaces/cutechicken

## ๐ŸŽฎ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

**VIBE CODING**์œผ๋กœ ์ œ์ž‘๋œ ์™„์„ฑ๋„ ๋†’์€ ์›น ๊ธฐ๋ฐ˜ 3D ์ „ํˆฌ๊ธฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. Three.js๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ๋ณธ๊ฒฉ์ ์ธ ๊ณต์ค‘์ „ ๊ฒŒ์ž„์œผ๋กœ, ์‹ค์ œ ์ „ํˆฌ๊ธฐ์˜ ๋ฌผ๋ฆฌ ์—”์ง„๊ณผ ์ „ํˆฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.


## โœจ ์ฃผ์š” ํŠน์ง•

### ๐Ÿ›ฉ๏ธ ๋ฆฌ์–ผ๋ฆฌ์Šคํ‹ฑํ•œ ๋น„ํ–‰ ๋ฌผ๋ฆฌ
- **์‹ค์ œ ํ•ญ๊ณต๊ธฐ ์—ญํ•™ ์‹œ๋ฎฌ๋ ˆ์ด์…˜**: ์–‘๋ ฅ, ์ค‘๋ ฅ, ํ•ญ๋ ฅ์„ ๊ณ ๋ คํ•œ ํ˜„์‹ค์ ์ธ ๋น„ํ–‰
- **G-Force ์‹œ์Šคํ…œ**: ๊ธ‰๊ธฐ๋™ ์‹œ ๋ธ”๋ž™์•„์›ƒ ํšจ๊ณผ ๊ตฌํ˜„
- **์Šคํ†จ(์‹ค์†) ์‹œ์Šคํ…œ**: ์†๋„ ๋ถ€์กฑ ์‹œ ์กฐ์ข… ๋ถˆ๋Šฅ ์ƒํƒœ ์žฌํ˜„
- **๊ณ ๋„๋ณ„ ์„ฑ๋Šฅ ๋ณ€ํ™”**: ๊ณ ๋„์— ๋”ฐ๋ฅธ G-Force ์ฆ๊ฐ€

### ๐ŸŽฏ ์ „ํˆฌ ์‹œ์Šคํ…œ
- **20mm ๊ธฐ๊ด€ํฌ**: 940๋ฐœ ํƒ„์•ฝ, ์—ฐ์‚ฌ ๊ฐ€๋Šฅ
- **AIM-9 ์‚ฌ์ด๋“œ์™€์ธ๋” ๋ฏธ์‚ฌ์ผ**: 8๋ฐœ ์žฅ์ฐฉ, 3๋‹จ๊ณ„ ๋ฝ์˜จ ์‹œ์Šคํ…œ
- **ํ”Œ๋ ˆ์–ด ์‹œ์Šคํ…œ**: ๋ฏธ์‚ฌ์ผ ํšŒํ”ผ์šฉ ์—ด์ถ”์  ๊ต๋ž€ ์žฅ์น˜ (3ํšŒ ์‚ฌ์šฉ)
- **์ ๊ธฐ AI**: ํšŒํ”ผ ๊ธฐ๋™, ๋ฏธ์‚ฌ์ผ ๋ฐœ์‚ฌ, ํ”Œ๋ ˆ์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค๋งˆํŠธ AI

### ๐ŸŽจ ๋ชฐ์ž…๊ฐ ์žˆ๋Š” HUD
- **์ „ํˆฌ๊ธฐ HUD**: ์†๋„, ๊ณ ๋„, ํ—ค๋”ฉ, ํ”ผ์น˜/๋กค ํ‘œ์‹œ
- **RWR (๋ ˆ์ด๋” ๊ฒฝ๋ณด ์ˆ˜์‹ ๊ธฐ)**: ์ ๊ธฐ ์œ„์น˜ ๋ฐ ๋ฝ์˜จ ๊ฒฝ๊ณ 
- **ํ”ผ์น˜ ๋ž˜๋”**: ํ•ญ๊ณต๊ธฐ ์ž์„ธ ํ‘œ์‹œ
- **ํƒ€๊ฒŸ ๋งˆ์ปค**: ํฌ๋กœ์Šคํ—ค์–ด ๋‚ด ์ ๊ธฐ ์ž๋™ ํ‘œ์‹œ

### ๐Ÿ”Š ์‚ฌ์šด๋“œ ๋””์ž์ธ
- ์—”์ง„์Œ, ๊ธฐ๊ด€ํฌ, ๋ฏธ์‚ฌ์ผ ๋ฐœ์‚ฌ์Œ
- ๊ฒฝ๊ณ ์Œ ์‹œ์Šคํ…œ (๊ณ ๋„, ์Šคํ†จ, Over-G, ๋ฏธ์‚ฌ์ผ ๊ฒฝ๊ณ )
- ์Œ์„ฑ ์•ˆ๋‚ด ์‹œ์Šคํ…œ
- ๊ฑฐ๋ฆฌ๋ณ„ ์Œ๋Ÿ‰ ์กฐ์ ˆ

## ๐ŸŽฎ ์กฐ์ž‘๋ฒ•

### ๊ธฐ๋ณธ ์กฐ์ž‘
- **W/S**: ์Šค๋กœํ‹€ ์ฆ๊ฐ€/๊ฐ์†Œ
- **A/D**: ๋Ÿฌ๋” (์š”) ์กฐ์ž‘
- **๋งˆ์šฐ์Šค**: ํ”ผ์น˜/๋กค ์กฐ์ž‘
- **์ขŒํด๋ฆญ**: ๋ฌด๊ธฐ ๋ฐœ์‚ฌ
- **R**: ๋ฌด๊ธฐ ์ „ํ™˜ (๊ธฐ๊ด€ํฌ โ†” ๋ฏธ์‚ฌ์ผ)
- **F**: ํ”Œ๋ ˆ์–ด ๋ฐœ์‚ฌ
- **G**: ์Šคํ†จ ํƒˆ์ถœ (2์ดˆ๊ฐ„ ์œ ์ง€)

### ์ „ํˆฌ ํŒ
1. **๋ฏธ์‚ฌ์ผ ๋ฝ์˜จ**: AIM-9 ๋ชจ๋“œ์—์„œ ์ ๊ธฐ๋ฅผ ํฌ๋กœ์Šคํ—ค์–ด์— 3์ดˆ๊ฐ„ ์œ ์ง€
2. **ํ”Œ๋ ˆ์–ด ์‚ฌ์šฉ**: ๋ฏธ์‚ฌ์ผ ๊ฒฝ๊ณ ์Œ์ด ๋“ค๋ฆฌ๋ฉด ์ฆ‰์‹œ Fํ‚ค๋กœ ํ”Œ๋ ˆ์–ด ๋ฐœ์‚ฌ
3. **Over-G ์ฃผ์˜**: ๊ธ‰๊ธฐ๋™ ์‹œ ์‹œ์•ผ๊ฐ€ ์–ด๋‘์›Œ์ง€๋ฉด ์ˆ˜ํ‰ ๋น„ํ–‰์œผ๋กœ ํšŒ๋ณต
4. **์Šคํ†จ ํšŒ๋ณต**: ์†๋„ 300kt ์ดํ•˜์—์„œ Gํ‚ค๋ฅผ 2์ดˆ๊ฐ„ ๋ˆŒ๋Ÿฌ ํšŒ๋ณต

## ๐Ÿš€ ์„ค์น˜ ๋ฐ ์‹คํ–‰

### ์š”๊ตฌ์‚ฌํ•ญ
- ์ตœ์‹  ์›น ๋ธŒ๋ผ์šฐ์ € (Chrome, Firefox, Edge ๊ถŒ์žฅ)
- WebGL ์ง€์›
- ๋งˆ์šฐ์Šค ํ•„์ˆ˜

## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

```
3D-Airforce-Simulator/
โ”œโ”€โ”€ index.html          # ๋ฉ”์ธ HTML (HUD ๋ฐ UI)
โ”œโ”€โ”€ game.js            # ๊ฒŒ์ž„ ๋กœ์ง (๋ฌผ๋ฆฌ, AI, ์ „ํˆฌ ์‹œ์Šคํ…œ)
โ”œโ”€โ”€ models/            # 3D ๋ชจ๋ธ ํŒŒ์ผ
โ”‚   โ”œโ”€โ”€ f-15.glb      # ํ”Œ๋ ˆ์ด์–ด ์ „ํˆฌ๊ธฐ
โ”‚   โ””โ”€โ”€ mig-29.glb    # ์  ์ „ํˆฌ๊ธฐ
โ”œโ”€โ”€ sounds/            # ์‚ฌ์šด๋“œ ํŒŒ์ผ
โ”‚   โ”œโ”€โ”€ main.ogg      # BGM
โ”‚   โ”œโ”€โ”€ normal.ogg    # ์—”์ง„์Œ
โ”‚   โ””โ”€โ”€ ...           # ๊ฐ์ข… ํšจ๊ณผ์Œ
โ””โ”€โ”€ effects/          # ์‹œ๊ฐ ํšจ๊ณผ
    โ””โ”€โ”€ symbol.png    # RWR ์‹ฌ๋ณผ
```

## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

- **Three.js**: 3D ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง
- **Vanilla JavaScript**: ๊ฒŒ์ž„ ๋กœ์ง
- **Web Audio API**: ์‚ฌ์šด๋“œ ์ฒ˜๋ฆฌ
- **Pointer Lock API**: ๋งˆ์šฐ์Šค ์ปจํŠธ๋กค

## ๐ŸŽฏ ๊ฒŒ์ž„ ๋ชฉํ‘œ

- **๋ฏธ์…˜**: 180์ดˆ ๋‚ด์— ๋ชจ๋“  ์ ๊ธฐ(4๋Œ€) ๊ฒฉ์ถ”
- **์Šน๋ฆฌ ์กฐ๊ฑด**: 
  - ๋ชจ๋“  ์ ๊ธฐ ํŒŒ๊ดด
  - ์‹œ๊ฐ„ ๋‚ด ์ƒ์กด + ๋ชจ๋“  ์ ๊ธฐ ํŒŒ๊ดด
- **ํŒจ๋ฐฐ ์กฐ๊ฑด**:
  - ์ฒด๋ ฅ 0 (ํ”ผ๊ฒฉ/์ถฉ๋Œ)
  - ์ง€๋ฉด ์ถฉ๋Œ
  - ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ ์ ๊ธฐ ์ž”์กด

## ๐Ÿ† ์ ์ˆ˜ ์‹œ์Šคํ…œ

- ๊ธฐ๊ด€ํฌ ๊ฒฉ์ถ”: 100์ 
- ๋ฏธ์‚ฌ์ผ ๊ฒฉ์ถ”: 100์ 
- ์ถฉ๋Œ ๊ฒฉ์ถ”: 200์ 

## ๐Ÿ’ก VIBE CODING์˜ ๊ฒฐ๊ณผ๋ฌผ

์ด ํ”„๋กœ์ ํŠธ๋Š” **VIBE CODING** ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘๊ณผ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๋†’์€ ์™„์„ฑ๋„์˜ 3D ์ „ํˆฌ๊ธฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

### ํŠน๋ณ„ํ•œ ์ 
- ๋‹จ์ผ JavaScript ํŒŒ์ผ๋กœ ๊ตฌํ˜„๋œ ์™„์ „ํ•œ ๊ฒŒ์ž„ ์—”์ง„
- ์‹ค์‹œ๊ฐ„ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
- ๋ณต์žกํ•œ AI ํ–‰๋™ ํŒจํ„ด
- ์ „๋ฌธ์ ์ธ HUD ์‹œ์Šคํ…œ
- ๋ชฐ์ž…๊ฐ ์žˆ๋Š” ์‚ฌ์šด๋“œ ๋””์ž์ธ

## ๐Ÿ› ์•Œ๋ ค์ง„ ์ด์Šˆ

- ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™ ์žฌ์ƒ ์ •์ฑ…์œผ๋กœ ์ธํ•œ BGM ์žฌ์ƒ ์ง€์—ฐ
- ๊ณ ์‚ฌ์–‘ ๊ทธ๋ž˜ํ”ฝ ์„ค์ •์—์„œ ํ”„๋ ˆ์ž„ ๋“œ๋กญ ๊ฐ€๋Šฅ
- ํ”Œ๋ ˆ์–ด ํšจ๊ณผ๊ฐ€ ๊ฐ„ํ˜น ๋ฏธ์‚ฌ์ผ์„ ์™„๋ฒฝํžˆ ํšŒํ”ผํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Œ