Spaces:
Running
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
- Missile Lock: Keep enemy in crosshair for 3 seconds in AIM-9 mode
- Flare Usage: Press F immediately when missile warning sounds
- Over-G Warning: Level out when vision darkens during extreme maneuvers
- 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์ด๊ฐ ์ ์ง)
์ ํฌ ํ
- ๋ฏธ์ฌ์ผ ๋ฝ์จ: AIM-9 ๋ชจ๋์์ ์ ๊ธฐ๋ฅผ ํฌ๋ก์คํค์ด์ 3์ด๊ฐ ์ ์ง
- ํ๋ ์ด ์ฌ์ฉ: ๋ฏธ์ฌ์ผ ๊ฒฝ๊ณ ์์ด ๋ค๋ฆฌ๋ฉด ์ฆ์ Fํค๋ก ํ๋ ์ด ๋ฐ์ฌ
- Over-G ์ฃผ์: ๊ธ๊ธฐ๋ ์ ์์ผ๊ฐ ์ด๋์์ง๋ฉด ์ํ ๋นํ์ผ๋ก ํ๋ณต
- ์คํจ ํ๋ณต: ์๋ 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 ์ฌ์ ์ง์ฐ
- ๊ณ ์ฌ์ ๊ทธ๋ํฝ ์ค์ ์์ ํ๋ ์ ๋๋กญ ๊ฐ๋ฅ
- ํ๋ ์ด ํจ๊ณผ๊ฐ ๊ฐํน ๋ฏธ์ฌ์ผ์ ์๋ฒฝํ ํํผํ์ง ๋ชปํ ์ ์์