CrownyEngine

크라우니엔진 + CrownyReal — 0 의존성 게임/3D/CAD 엔진

792
Tests
86
Modules
40K+
Lines
0
External Deps
v0.6
Version

핵심 구성요소

CrownyReal v1.0

소프트웨어 GPU 렌더러 — Metal/DirectX 완전 대체. 7단계 파이프라인, 4상 가시성, 내장 셰이더 7종.

Metal 대체DirectX 대체4상 FSM크로스플랫폼

CrownyFrame

HTML/React 없는 자체 UI 프레임워크. 11종 위젯, 한선씨 마크업. 0 의존성.

UI한선씨 마크업0 dep

한선씨 컴파일러

한국어 프로그래밍 → ARM64 JIT 실행. KPS → ISA729 → ARM64 기계어. Mach-O 바이너리 생성.

JITARM64Mach-O

ISA729 VM

삼진 가상머신. 43 opcodes. RPN 스택 + 레지스터 하이브리드. 디스어셈블러 포함.

VM삼진▲■▼

3D 소프트웨어 래스터

삼각형 래스터라이제이션, Z-버퍼, Blinn-Phong 조명, 텍스처 매핑. GPU 없이도 3D.

3DZ-buffer텍스처

크라우니월드

생활 시뮬레이션 게임. NPC 20명, 4가지 뷰 모드 (2D/2.5D/3D/GPU). 한글 완전 지원.

게임NPC 20명한글

설치 및 실행

1. 새 프로젝트 생성

# CrownyEngine으로 새 게임 프로젝트 만들기
crowny new 나의게임
cd 나의게임
cargo run

# 자동 생성:
#   src/main.rs          ← CrownyReal GPU 3D 게임 템플릿
#   assets/maps/main.crs ← 씬 파일
#   scripts/시작.kps     ← 한선씨 스크립트

2. 크라우니월드 실행

# 생활 시뮬레이션
cargo run -p crowny-world                    # 2D (설정→타이틀→게임)
cargo run -p crowny-world -- world3d         # 3D 마을 (하이트맵+NPC+낮밤)

# 레이싱
cargo run -p crowny-world -- race            # 오벌 트랙
cargo run -p crowny-world -- race 2          # S자 트랙
cargo run -p crowny-world -- race 3          # 8자 트랙

# 게임 내 F1=2D, F2=2.5D, F3=3D, F4=CrownyReal GPU

3. 한선씨 스크립팅

# 한국어 프로그래밍
crowny repl                   # 대화형 모드
crowny run 안녕.kps           # 스크립트 실행
crowny build 게임.kps -o 게임  # ARM64 바이너리 컴파일
crowny teach                  # 5단계 튜토리얼

아키텍처

크라우니월드 (게임)
    ↓
CrownyEngine (엔진 — 씬, AI, 물리, UI, 오디오)
    ↓
CrownyReal GPU (Metal/DirectX 대체 — 소프트웨어 렌더러)
    ↓
한선씨 컴파일러 → ISA729 VM → ARM64 JIT
    ↓
CrownyOS (bare-metal) 또는 macOS/Linux

CrownyReal v1.0 — GPU 표준 규격

Apple Metal / Microsoft DirectX 12를 대체하는 소프트웨어 GPU 렌더러. 크라우니 패밀리 병렬 엔진 표준.

7단계 렌더링 파이프라인

단계기능Metal 대응DirectX 대응
1. 텍스처UV 보간 (perspective-correct), Nearest/Bilinear, 밉맵 자동 생성MTLTexture + SamplerSRV + Sampler
2. 조명Blinn-Phong, 방향광/포인트/스팟, 다중 광원, per-pixel 법선Fragment Shader (사용자 구현)Pixel Shader (사용자 구현)
3. 블렌딩Opaque/Alpha/Additive/Multiply, 알파 테스트, 깊이 정렬MTLBlendStateD3D12_BLEND_DESC
4. 섀도우라이트 깊이 맵, PCF 소프트 섀도우, 설정 가능 바이어스Shadow Map Pass (사용자 구현)Shadow Map Pass (사용자 구현)
5. 멀티패스오프스크린 렌더 타겟, Bloom/Blur/ColorGrade/VignetteMTLRenderPassDescriptorRTV Descriptors
6. 셰이더Standard/Toon/Water/Fire/RimLight/Hologram/Custom, per-objectMSL (Metal Shading Language)HLSL
7. 컬링4상 절두체 컬링, LOD, 백페이스 컬링, near-plane 클리핑사용자 구현사용자 구현

CrownyReal vs Metal vs DirectX 12

항목CrownyRealMetalDirectX 12
삼각형 래스터라이즈내장GPU 하드웨어GPU 하드웨어
Perspective-correct 보간1/w 보정하드웨어하드웨어
내장 조명 (Blinn-Phong)3종 광원 내장사용자 구현 필요사용자 구현 필요
내장 셰이더 7종Toon/Water/Fire 등직접 MSL 작성직접 HLSL 작성
내장 포스트FX 4종Bloom/Blur 등직접 구현직접 구현
4상 가시성 FSM팝인 방지 고유 기술없음없음
외부 의존성0개Xcode/Metal.frameworkWindows SDK
크로스플랫폼전 플랫폼macOS/iOS만Windows만
GPU 하드웨어 필요불필요 (CPU)필요필요
셰이더 컴파일불필요 (내장)MSL 런타임 컴파일HLSL/DXC 컴파일
텍스처 필터링Nearest/Bilinear/밉맵+Trilinear/Aniso+Trilinear/Aniso
레이 트레이싱미지원Metal 3DXR
컴퓨트 셰이더미지원지원지원
MSAA미지원2x/4x/8x2x/4x/8x
멀티스레딩싱글스레드병렬 인코딩병렬 커맨드

GpuRenderer API (trait)

// 게임 코드는 trait만 사용 — 백엔드 무관
let mut gpu: Box<dyn GpuRenderer> = Box::new(CrownyReal::new(800, 600, GpuBackend::Software));

gpu.set_camera(cam_pos, cam_target, fov);
let mesh = gpu.add_mesh(Mesh::cube());
let toon = gpu.add_shader(CrShader::Toon { levels: 3 });
let obj = gpu.add_object("플레이어", transform, Color::RED, mesh);
gpu.bind_shader(obj, toon);
gpu.render();

// 16개 trait 메서드: set_camera, clear, add_object, set_transform,
// bind_texture, bind_shader, remove_object, add_texture, add_shader,
// add_light, clear_lights, add_mesh, render, apply_post_effect,
// enable_shadows, stats

CrownyReal 고유 기술: 4상 가시성 FSM

Unaware → (보임) → Unconfirmed → (보임) → Confirmed
  ↑                    ↓                       ↓
  └── (안 보임) ──── (안 보임) ← Misunderstood ← (안 보임)

Metal/DirectX에 없는 CrownyReal 고유 기술:
- Confirmed에서 한 프레임 안 보여도 바로 끄지 않음 (팝인 방지)
- LOD 레벨 자동 결정 (Confirmed=0, Unconfirmed=1, Unaware=2)
- 4상균형3진 아키텍처와 통합

모듈 목록 (86개)

카테고리모듈
렌더링renderer, render3d, lighting, particle, postfx, nine_slice, isometric, display, camera
GPUcrowny_real (CrownyReal v1.0 — 7단계 파이프라인)
레이싱vehicle (물리/드리프트/아이템/AI), racing (3D 트랙/카메라/HUD)
물리physics (AABB+원형+트리거+레이캐스트), pathfind (A*)
AIai, btree, npc_brain, anim_fsm
스크립트kps, hanseon, compiler, vm, jit, native, macho, typeck, selfhost
UIui (CrownyFrame), dialog_ui, game_ui, scroll, font, hangul
게임scene, scene_mgr, prefab, autotile, economy, quest, dialog, activity, building, crafting, collection, status, minigame, save, undo
에셋sprite, asset, audio, audio_out, modding, layered_sprite
시스템types, event, input, game_loop, world_time, sync, editor_bridge, console, hotreload, i18n, platform, sequencer, datatable, math3d, math3d_kps, shop_ui, decorate

4상균형3진 (핵심 차별점)

상태렌더링AIUI
확정 Confirmed+2풀 디테일정확히 앎Active
미확인 Unconfirmed0중간 LOD들었지만 미확인Hover
오해 Misunderstood-2재평가 필요잘못 앎Error
미인지 Unaware-1로딩 중모름Disabled

Claude 에이전트 참조

# 이 엔진을 참조하는 Claude 인스턴스는:
# 1. /Users/ef/Downloads/CrownyEngine/ 경로에서 소스 접근
# 2. CLAUDE.md 읽고 코딩 규칙 준수
# 3. 4상균형3진 원칙 유지
# 4. 외부 의존성 0 원칙
# 5. cargo test --workspace 전체 통과 필수
# 6. crownybus.com 상태 확인 (200 OK 유지)

# 핵심 파일:
#   CLAUDE.md — 프로젝트 규칙
#   docs/CROWNYFRAME_SPEC.md — 전체 규격서
#   docs/HANDOFF.md — 인스턴스 간 인계
#   src/engine/src/lib.rs — 엔진 메인
#   src/game/src/main.rs — 게임 메인