Files
2nd/10_Wiki/Topics/AI_and_ML/No Mans Sky.md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

154 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: wiki-2026-0508-no-mans-sky
title: No Man's Sky
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [NMS, No Mans Sky, Hello Games NMS]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [no-mans-sky, hello-games, procedural-generation, live-service, case-study, game-engineering]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack: { language: c++, framework: custom-engine }
---
# No Man's Sky
Hello Games (Sean Murray) 우주 탐험 SF. 2016 출시 직후 혹평 → 8년간 무료 업데이트로 회복한 라이브 서비스 모범 사례. 18 quintillion (1.8×10^19) 절차적 행성.
## 핵심
### 절차적 생성
- **64-bit seed** 기반 deterministic generation: 행성/지형/생물/식물/색상.
- **Uniform 우주 좌표**: galactic position → seed → 동일 결과 어디서든.
- **레이어 구조**: galaxy → star system → planet → biome → terrain → fauna → flora.
- **Voxel terrain** (LOD 적용) + **noise 함수** (Simplex/Worley).
- **PCG 생물**: 부위 조합 (head/torso/legs/wings) + 색/크기 변이.
### 기술 스택 (추정/공개)
- 자체 C++ 엔진, Vulkan/DX12.
- multi-thread streaming, infinite-precision 행성 (origin shifting).
- PSSL/HLSL 셰이더, GPU procedural texturing.
### 라이브 서비스 진화 (주요 무료 업데이트)
- Foundation (2016) — 기지 건설.
- Pathfinder, Atlas Rises — 차량/포털.
- NEXT (2018) — 멀티플레이어 (16명).
- Beyond — VR.
- Origins, Next Generation, Companions, Expeditions, Frontiers — 정착지.
- Endurance, Waypoint, Fractal, Singularity, Echoes, Omega.
- Orbital, Adrift, Worlds Part I/II (2024-2025) — 행성 다양성 대폭 확장.
- Aquarius, Relics (2025-2026) — 수중/고생물.
### 모던 엔지니어링 교훈
- **출시 후 신뢰 회복**: 무사과 + 일관된 무료 업데이트 + 기능 약속 이행.
- **Live-service ≠ 과금**: 모든 확장 무료, payd cosmetic 없음.
- **PCG vs hand-crafted**: PCG 단독 → 단조로움. 이후 templated biome / set-piece 추가.
- **소규모 스튜디오 (~30명)** + 장기 운영의 가능성.
- **Cross-play / cross-save** (PC, PS, Xbox, Switch, Mac, VR).
### 응용 (게임 디자인)
- Starfield (procedural + handcrafted hybrid), Elite Dangerous, Star Citizen 비교.
- 인디 PCG 게임 (Astroneer, Subnautica) 영향.
- 실패 → 회복 케이스 스터디 (Cyberpunk 2077, FF XIV: A Realm Reborn 비교).
## 💻 패턴
### 결정론적 PCG (의사코드)
```cpp
struct PlanetSeed { uint64_t galacticIndex; };
Planet generatePlanet(PlanetSeed s) {
PRNG rng(s.galacticIndex);
Planet p;
p.radius = lerp(1500, 6500, rng.float01());
p.biome = pickBiome(rng);
p.atmosphere = pickAtmosphere(rng, p.biome);
p.fauna = generateFauna(rng.fork("fauna"), p.biome);
p.heightmap = simplexFractal(p.galacticIndex, octaves=8);
return p;
}
```
### Origin shifting (대규모 좌표 정밀도)
```cpp
Vec3d worldOrigin; // double
Vec3f localPos; // float, near origin
void update(Vec3d player) {
if ((player - worldOrigin).length() > 1024.0)
worldOrigin = player;
localPos = (player - worldOrigin); // float-safe
}
```
### Procedural creature assembly
```cpp
Creature assembleCreature(PRNG& rng) {
return {
.head = headLibrary[rng.range(headLibrary.size())],
.torso = torsoLibrary[rng.range(torsoLibrary.size())],
.legs = legsLibrary[rng.range(legsLibrary.size())],
.scaleY = rng.range(0.6f, 2.4f),
.palette = generatePalette(rng),
};
}
```
### LOD 기반 voxel streaming
```cpp
void streamChunk(Vec3i chunk, int playerLOD) {
if (distance(chunk, player) > LOD_DISTANCE[playerLOD]) return;
if (!cache.has(chunk))
async_load([&]{ cache.put(chunk, generate(chunk)); });
}
```
### 무료 라이브 업데이트 — feature flag 출하
```ts
// 클라이언트는 server flag로 신규 시스템 unlock
if (flags.has("WORLDS_PART_2")) enableNewBiomes();
if (flags.has("RELICS_EXPEDITION")) startExpedition("Relics");
```
## 결정 기준
| 비교축 | NMS | Starfield | Elite Dangerous |
|---|---|---|---|
| 행성 개수 | 18 quintillion | 1000 | 400B |
| 무중단 진입 | O | X (loading) | O |
| 핸드크래프트 비중 | 낮음 (post-Worlds 증가) | 높음 | 매우 낮음 |
| 멀티플레이 | 16명 | X | 대규모 |
| 라이브 서비스 무료 | O | DLC 유료 | 주요 확장 유료 |
기본값 (PCG 인디 reference): **NMS의 결정론적 seed + 후속 templated content 추가** 모델.
## 🔗 Graph
- 부모: [[Procedural Generation]]
## 🤖 LLM 활용
- 언제: 패치 노트 요약, 행성/생물 생성 narrative, 커뮤니티 Q&A 트리아지, expedition 가이드 초안.
- 언제 X: 게임 내 PCG 자체 (deterministic seed가 더 적합), 로어 정합성 검증 (LLM hallucination).
## ❌ 안티패턴
- PCG = 무한 콘텐츠 라는 가정 (시각/메카닉 단조로움 빠짐).
- 출시 마케팅 과약속 (NMS 2016 트라우마).
- Float 좌표로 행성-스케일 처리 (jitter) → double + origin shifting 필수.
- 라이브 서비스를 유료 DLC = 동일시 (NMS 모델은 무료 + 게임 자체 판매 지속).
- 결정론 깨기 (랜덤 시드 새로 뽑기) → 멀티플레이 동기화 깨짐.
## 🧪 검증 / 중복
- 검증: 동일 좌표 두 클라이언트 결과 일치 (deterministic test), origin shift 시 jitter 없음.
- 중복: [[Procedural Generation]] (기법 일반) vs 본 문서 (NMS 사례 특화).
## 🕓 Changelog
- 2026-05-10: 표준 포맷, 2024-2026 업데이트 (Worlds, Relics) 반영.