Unity 6 에디터를 그대로 옮겨 온 C++20 게임 엔진
DirectX 11 · DirectX 12 · OpenGL 4.5 · Vulkan 1.3 · 안드로이드 (OpenGL ES 3.2) · 웹 (WebGPU) · C# 스크립팅
Claude(Opus 5.5)와 함께 기능 하나하나를 Unity 와 1:1 에 가깝게 만들어 가는 프로젝트
공식 사이트 · 다운로드 · 빠른 시작 · 주요 기능 · 스크린샷 · CLI · 로드맵 · 개발 문서

밤 캠프장 데모 — Visual Effect Graph (포털 · 마법진 · 불꽃놀이 · 은하) · 절차적 나무 · HDR Bloom, 실시간 렌더
- Unity 그대로 — 창 배치 · Inspector · 단축키 · 동작, C# API (
using UnityEngine;→using NovaEngine;), 저장하면 핫 리로드 - 네 그래픽 API + 안드로이드 + 웹 — 같은 렌더 코드, HLSL 하나 → GLSL · SPIR-V · DXIL · WGSL 자동 변환. PC 는 DX11 · DX12 · OpenGL · Vulkan, 안드로이드는 GLES 3.2 APK, 웹은 WebGPU
- 멀티스레드 · 데이터 지향 코어 — Job System, 렌더 스레드, 씬마다 메모리 힙, SoA Transform · SIMD 컬링, 프레임을 멈추지 않는 씬 스트리밍
- 50 km 열린 월드를 규칙으로 — 노드 지형 그래프 (침식 · 강 · 길) · PCG 로 채우는 기후대별 식생 160 종 · 바위 · 풀밭, 건물까지 모델 파일 없이 식으로 짓는다
- 게임을 만드는 데 필요한 Unity 기능 — Animator (레이어 · Avatar Mask · 애니메이션 이벤트 · IK) · Timeline 컷신 · Cinemachine · ScriptableObject 데이터 에셋 · NavMesh · 래그돌 · 천
- 터미널 · AI 가 다루는 에디터 —
novaCLI 로 만들고 · 바꾸고 · Play 하고 · 찍고 · 잰다. 기능마다 자동 검사 스위트
에디터
| 에디터 · Hub | Unity 6 도킹 레이아웃, 창을 OS 창으로 빼기, Undo, 자동 저장 + 충돌 복구, NOVA Hub (프로젝트 · 설치 · 안드로이드 모듈) — NOVA_HUB |
| 씬 · 뷰 | Scene 뷰 핸들 · 스냅 · 비행 카메라, Game 뷰 해상도 · Stats, Hierarchy · Inspector · 프리팹 (Apply / Revert / Unpack) |
| 에셋 | Project 창 (2단), Import Settings (.meta — 텍스처 압축 · 모델 Humanoid · 오디오 Load Type), 모델 끌어 놓기 → 노드마다 GameObject — MODEL_PLACEMENT |
| 도구 | Profiler (CPU · GPU · Timeline · Memory), NOVA Code (내장 C# IDE — 자동 완성 · 오류 밑줄), Animator 창 |
렌더링
| 그래픽 API | DirectX 11 · DirectX 12 (명시적 API — 명령 목록 · 디스크립터 힙 · 리소스 상태 장벽) · OpenGL 4.5 · Vulkan 1.3 (에디터 · 게임 모두, 화소 차이 최대 1) — DIRECTX12_BACKEND · VULKAN_BACKEND |
| 재질 · 셰이더 | URP Lit (PBR), 테셀레이션 높이 변위 (Height Map 만큼 벽 · 바닥 · 지형 레이어를 실제로 민다, Shader Graph Displacement, 먼 곳 · 테셀레이션 없는 기기는 POM — DX11 · OpenGL · Vulkan), Shader Graph (노드 65 종 · Vertex 단계 · Sub Graph · Custom Function) — TESSELLATION · SHADER_GRAPH |
| 조명 | Cascaded 그림자, SSGI (HDRP Screen Space Global Illumination — 굽기 없는 실시간 간접광, SSGI), 면광 (HDRP 식 실시간 Rectangle · Disc, LTC), Adaptive Probe Volume (굽지 않는 실시간 간접광), Reflection Probe, 높이 안개 · 대기 · Local Volumetric Fog (늪 · 동굴 안개 — 노이즈 · 해 · 점광 산란) — AREA_LIGHT · FOG_VOLUME · APV · Probe |
| 렌더 파이프라인 | Rendering Path (URP 처럼 Forward · Forward+ · Deferred — G-버퍼 + 클러스터 조명) — DEFERRED_RENDERING, Forward+ (클러스터 조명 — 한 화면 빛 1024 개) — FORWARD_PLUS, Render Graph (패스 노드 · 쓰이지 않는 패스 빼기 · 임시 텍스처 풀 · Render Graph Viewer) — RENDER_GRAPH, 비동기 컴퓨트 (DX12 · Vulkan 두 번째 큐 — VFX 시뮬레이션이 그래픽과 겹쳐 돈다) — ASYNC_COMPUTE, Streaming Virtual Texturing (보이는 128² 페이지만 GPU 로 — 피드백 · 페이지 표 · 캐시) — VIRTUAL_TEXTURING, 로드맵 — RENDERING_ROADMAP |
| 후처리 (Volume) | Bloom · ACES · Color Adjustments · Depth of Field (Bokeh) · Motion Blur · SSR · SSAO · Motion Vectors · Vignette · Film Grain — DoF · SSR · SSAO · Motion Vectors. Rendering Debugger (깊이 · 노멀 · AO · 모션 벡터 · APV 보기) — RENDERING_DEBUGGER |
| 안티에일리어싱 · 해상도 | FXAA · SMAA · TAA (URP 카메라 4 가지) — ANTI_ALIASING, Render Scale + 업스케일 (Bilinear · Nearest · AMD FSR 1.0 EASU + RCAS — 절반 해상도로 그려도 경계가 또렷, UI 는 출력 해상도) — RENDER_SCALE |
| 성능 | GPU 오클루전 컬링 (굽기 없는 Hi-Z), LOD Group (Cross Fade), GPU 인스턴싱 + MaterialPropertyBlock, 자동 묶기, 셰이더 캐시 — OCCLUSION · LOD |
| 기타 | Decal Projector, Line · Trail Renderer, 2D Sprite Renderer (Sorting Layer · 시트 자르기), 2D 빛 (Light 2D · Shadow Caster 2D · 노멀 맵), Culling Mask — DECAL · LINE · LIGHT_2D |
엔진 코어 · 성능 (숫자는 개발 PC 에서 잰 값 — 도시 장면은 오브젝트 2852 개)
| 동시성 | Job System (작업 훔치기 · 파이버 · 무잠금 큐 — 물리 · 컬링 · 클러스터 · 백그라운드 일이 그 위에서), 물리 ↔ 렌더링 겹치기 (Simulate During Rendering, 핑퐁 버퍼), 렌더 스레드 (Multithreaded Rendering — DX11 은 deferred context, DX12 · Vulkan 은 큐 제출 · Present 를 렌더 스레드로. 도시 Vulkan 8.9 → 5.4 ms) — JOB_SYSTEM · ASYNC_PHYSICS · RENDER_THREAD · 로드맵 |
| 메모리 | Linear · Stack · Pool · Buddy 알로케이터, 씬마다 힙 (씬을 지우면 한 덩어리로 돌려준다 — 씬 전환 단편화 0, 누수는 꼬리표로 보고), 프레임 아레나, 캐시 라인 (64 B) 정렬 · 거짓 공유 방지 (4 배) — MEMORY_ALLOCATORS |
| 데이터 지향 | Transform SoA (늦은 계산 · 프레임마다 Job System 으로 한 번에), 컬링 (바뀐 렌더러만 · 옥트리 칸 재사용 · SIMD 4 개씩 절두체 검사) — 큐브 2 만 개를 모두 움직이는 프레임 64 → 30 ms (Debug) — TRANSFORM_SOA, 그리기 준비 (씬 순회 대신 등록 목록 · 모션 벡터는 월드 번호 — 도시 DX12 CPU 7.2 → 4.5 ms) — RENDER_THREAD, 물리 동기화 (물리 번호 · 월드 번호로 바뀐 바디만, 새 바디는 한 번에 넣기, 스트리밍 중 형상 미리 — 도시 물리 프레임당 0.52 → 0.035 ms) — PHYSICS_SYNC |
| 씬 스트리밍 | LoadSceneAsync — 새 씬을 프레임마다 예산 (backgroundLoadingPriority) 만큼 꺼진 채 미리 짓고, Humanoid 아바타 · 나무 메시 · 텍스처 디코드는 작업 스레드. 도시를 바꿔 끼우는 프레임 86 → 11 ms (Release) — SCENE_STREAMING |
이펙트
| Visual Effect Graph | GPU 파티클 수십만 개 (compute) — 블록 18 종, GPU Event, 연산 노드 ~55 종 (Compare · Branch 포함) · Sub Graph (연산 · 블록) · 사용자 속성, Output Mesh (모델 파일도), 깊이 버퍼 · SDF 충돌, 꼬리 (Particle Strip), GPU 정렬, 화면 밖 컬링, 견본 11 개, VFX Assistant (로컬 Claude Code 와 대화로 이펙트 만들기) — VFX_GRAPH |
| Particle System | Unity Shuriken 모듈 (Sub Emitters · Trails · Collision · Noise …), Lit · Soft · Lights |
월드 제작
| 지형 | 쿼드트리 LOD, 브러시, 레이어 칠하기, 지형 생성기 (노이즈 → 스탬프 → 침식), 바이옴 10 종, 스플라인 (길 · 협곡), 바이옴에 맞는 사진 지형 재질 · 강한 테셀레이션 |
| 지형 그래프 · 열린 월드 | Terrain Graph (Gaea 식 노드 38 종 — 산맥 · 침식 · 강 · 길 · 호수 · 절벽 디테일), 50 × 50 km 월드 (1 km 타일 스트리밍, 먼 타일 묶기), PCG (규칙 그래프로 숲 · 초원 · 바위를 채우고, 규칙을 고치면 바로 다시) — TERRAIN_GRAPH · PCG |
| 레벨 블록아웃 | 기본 패키지 Prototype (1 m 격자 텍스처 흰색 ~ 어두운 회색 · 벽 · 창 · 문 · 아치 · 지붕 · 탑 · 성벽 조각 57 개), World Space UV (늘려도 격자 1 m), Prototype Shape (크기를 숫자로 — 계단 단 높이 고정 · 아치 벽 · 원호 벽), Spline Instantiate (성벽 · 길은 곡선을 따라 휘고, 울타리 · 판자는 반복), Scene 뷰 치수 — PROTOTYPE · SPLINE |
| 식생 · 바위 | 절차적 식생 160 종 · 기후대 13 (나무 · 야자 · 대나무 · 선인장 · 고사리 · 꽃 — 모델 · 텍스처 파일 없이, 바람), 숲 (인스턴싱 + 임포스터), 빽빽한 풀밭 (정점 셰이더가 만드는 풀잎, 길 · 강은 비움), 바위 · 절벽 (SDF + 사진 재질) — VEGETATION |
| 건물 | Building Generator (패키지) — 중세 판타지 · 북유럽 · 로마 · 고딕 · 바로크 등 양식 25 개, 단계 대화상자 편집기, 곡선 지붕 · 모서리 탑 · 내민 창 · 반목조, 사진 PBR 텍스처 팩 (ambientCG CC0 146 재질) — BUILDING |
| 물 | Water Body — 바다 (Gerstner) · 호수 · 강 (급류), 굴절 · SSR · 코스틱 · 수중 · Buoyancy |
게임플레이
| 입력 | Unity 의 Input System 그대로 — .inputactions (Unity 파일을 그대로 읽는다) · 동작 (Value · Button · Pass Through) · 합성 (WASD) · 데드존 · Hold · Tap, XInput 게임패드 (진동), PlayerInput (Send Messages · 스킴 자동 전환), 다시 묶기 + 저장, Input Actions 창 · Generate C# Class, InputSystem.actions, Cursor.lockState, nova input (AI 가 Play 를 시험) — INPUT_SYSTEM |
| C# 고성능 | Unity 의 Burst 경로 그대로 — NovaEngine.Mathematics (float3 · quaternion · math) · NovaEngine.Collections (NativeArray · NativeList · NativeHashMap · 안전 검사 · 누수 알림), C# Job System (IJobParallelFor · JobHandle · 의존성 · ParallelWriter — 12 스레드 9 배), [BurstCompile] (HPC# 분석기 · IL → C++ → MSVC 네이티브 DLL — 단순 고리 16 배), IJobParallelForTransform · RaycastCommand · Mesh.MeshData — MATHEMATICS_COLLECTIONS · CSHARP_JOBS · BURST · CSHARP_MESH |
| C# | Unity 와 같은 MonoBehaviour API, 코루틴, 재질 · Renderer (material · MaterialPropertyBlock · sortingOrder), 씬 Additive · LoadSceneAsync · DontDestroyOnLoad, PlayerPrefs, ScriptableObject 데이터 에셋 ([CreateAssetMenu] · Resources.Load · 배열 · List<T> · [Serializable] 필드) — MATERIAL_SCRIPTING · SCENE_MANAGEMENT · SCRIPTABLE_OBJECT |
| 물리 | Jolt (Rigidbody · Collider · Character Controller · Joint · Character · Configurable Joint · 래그돌 — RAGDOLL · 차량 Wheel Collider — WHEEL_COLLIDER · 천 Cloth (치마 · 망토 같은 캐릭터 옷도) — CLOTH), 2D 물리 Box2D (Collider 2D · Joint 2D), 레이어 충돌 행렬 — JOINTS_2D |
| 애니메이션 | Animator (Blend Tree · 루트 모션 · Humanoid 리타게팅 · 레이어 + Avatar Mask (걸으며 상체만 휘두르기) · Additive · 애니메이션 이벤트 (타격 프레임 · 발소리) · Animator IK (OnAnimatorIK · SetIKPosition · SetLookAtPosition) · Two Bone IK Constraint), BlendShape · VRM 표정, 발 · 손 · 시선 IK, Dynamic Bone — ANIMATOR |
| 시네마틱 | Timeline (패키지) — Animation · Activation · Audio · Signal · Cinemachine 트랙, Playable Director, 재생 헤드를 끌면 편집 중 미리 보기 — TIMELINE |
| 군중 | 애니메이션 캐릭터 1 만 명 — Auto LOD · 본 줄이기 · GPU 스키닝 인스턴싱 · 임포스터가 설정 없이 — CROWD |
| UI · 오디오 | UGUI + TextMeshPro 통합 (SDF), 자동 레이아웃, World Space Canvas · XAudio2, 3D 사운드, Audio Mixer (리버브 19 종), OGG · MP3 |
| 빌드 | Windows .exe · 안드로이드 APK / AAB (ASTC · ETC2, C# Mono, 터치, 서명 키) — ANDROID · 웹 (WebGPU) (WGSL, C# = .NET 웹어셈블리, Build And Run 미리 보기 서버) — WEB |
패키지 (Window > Package Manager — 넣은 것만 불러오고 빌드에 포함) — PACKAGES
| 패키지 | 내용 |
|---|---|
com.nova.animation |
Animator (레이어 · Avatar Mask · 애니메이션 이벤트 · Animator IK) · Two Bone IK Constraint · Legs / Hands / Look Animator · Dynamic Bone · Expressions — ANIMATOR |
com.nova.timeline |
Timeline — .playable 에셋 · Playable Director · Timeline 창 (트랙 · 클립 끌기 · 재생 헤드 미리 보기) — TIMELINE |
com.nova.building · com.nova.textures |
건물 생성기 (양식 25 · 단계 편집기 · CLI) + 텍스처 팩 (CC0 사진 PBR 재질, WebP → BC 압축, nova textures search) — BUILDING |
com.nova.cameras |
Cinemachine (Unity Cinemachine 3 이름): 가상 카메라 여럿 · Brain 의 Priority · 섞기 (Ease In Out · Cut · Custom Blends), Follow · Orbital Follow (FreeLook) · Third Person Follow · Rotation Composer, Perlin 흔들림 · Impulse — CINEMACHINE |
com.nova.cameras · com.nova.starter-assets |
Follow Camera · Third Person Controller (WASD · 달리기 · 점프) · 운전할 수 있는 차 (프리팹) · 맞으면 래그돌로 쓰러지는 표적 — STARTER_ASSETS |
com.nova.ai.navigation |
Recast · Detour — NavMesh Surface · Agent · Link · Obstacle (Carve), 탑다운 2D (XY 평면 — NAVIGATION_2D.md) |
com.nova.weather |
오픈 월드 날씨 — 비 · 눈 (카메라를 따라가는 GPU 입자), 젖은 표면 · 웅덩이 · 빗방울 물결 (캐릭터 · 물도), 쌓이는 눈 · 발자국 (지형은 실제로 파인다), 지붕 아래는 마른다, 먹구름 · 안개 · 돌풍, 번개 + 천둥, 소리 — WEATHER |
com.nova.daynight |
낮 · 밤 순환 — 새벽 · 아침 · 낮 · 저녁 · 노을 · 밤 · 은하수, Directional Light 가 해 · 달로 돈다, 하늘 그라데이션 · 노을 빛 · 별 · 은하수, 빛 · 환경광 · 안개 색 (날씨와 함께) — DAY_NIGHT |
com.nova.modeling |
Blender 식 Model Editor (Extrude · Bevel · Subsurf · 리깅 · 가중치 붓 · 셰이프 키), FBX · GLB · VRM 내보내기, 전부 CLI — MODEL_EDITOR |
com.nova.animation2d |
Spine 식 2D 뼈대 애니메이션 — ANIMATION2D |
com.nova.tween |
트윈 (DOTween 같은 쓰임) — transform.DOMove(p, 1f).SetEase(Ease.OutBack), Sequence, 곡선 30 종, 반복 · Yoyo, 튀기기 · 흔들기 · 뛰기, UI · 빛 · 카메라 · 소리, 코드 없는 Tween Animation 컴포넌트 — TWEEN |
com.nova.tilemap |
Unity 식 2D Tilemap — Grid · Tilemap · Tile Palette (붓 · 상자 · 흘려 채우기), 맞닿은 칸을 합치는 Tilemap Collider 2D — TILEMAP |
com.nova.toon |
lilToon 툰 셰이더 (VRM MToon 자동 변환) |
NOVA CLI — 실행 중인 에디터를 명령으로 (창 포커스 없이, Undo 로 남음). AI 에이전트는 nova ai-guide 부터 — NOVA_CLI
nova open D:\NovaProjects\MyGame --background # 뒤에서 에디터 열기
nova create cube --name Box --position 0,1,0 # terrain · tree · ocean · visual-effect · character …
nova set Box --scale 2,1,2 MeshRenderer.castShadows=1
nova play && nova wait 120 && nova screenshot box.png --view game
nova perf --frames 240 # 프레임 · CPU · GPU 단계별
nova exec "GameObject.Find(\"Box\").transform.position"
Visual Effect Graph 견본 — 불꽃놀이 · 마법진 · 토네이도 · 은하 · 포털 · 불티 · 모닥불

날씨 (패키지) — 숲속 오두막: 맑음 → 비 → 폭풍 (젖은 돌 마당) → 눈 → 눈보라 (발자국) → 갠 뒤

안드로이드 (MuMu · OpenGL ES 3.2) — PC DirectX 11 과 같은 그림

웹 (Chrome WebGPU) — 엔진 전체를 WebAssembly 로, PC DirectX 11 과 같은 그림
더 많은 그림: 공식 사이트 갤러리
바로 쓰기: 최신 릴리스 zip → Binaries\NovaEngine.exe (Windows 10 / 11 x64).
직접 빌드: Visual Studio 2022+ (C++ 데스크톱 워크로드), .NET SDK 8+ (C# 스크립트용). 외부 라이브러리는 저장소에 포함.
build.bat :: Debug x64
build.bat release :: Release (성능 측정 · 게임 빌드용)| 실행 | |
|---|---|
NovaEngine.exe |
NOVA Hub (프로젝트 · 설치) |
NovaEngine.exe --project "<폴더>" |
에디터로 열기 (-force-d3d11 · -force-d3d12 · -force-opengl · -force-vulkan) |
게임 빌드: File > Build Settings (Ctrl+Shift+B) → 씬 추가 → Windows / Android / Web → Build And Run.
배포 zip: Tools\package_release.ps1. 자동 검사: Tools\tests\run_tests.ps1 [-Only vfx,render …] (실행 중인 에디터를 CLI 로 확인, 결과 TestResults\).
using NovaEngine;
public class Spinner : MonoBehaviour
{
[Range(0, 360)] public float speed = 90f;
void Update() => transform.Rotate(0, speed * Time.deltaTime, 0);
void OnCollisionEnter(Collision c) => Debug.Log($"hit {c.gameObject.name}");
}단축키는 Unity 와 같습니다 (QWERTY 도구 · F 포커스 · Ctrl+P Play · Ctrl+S 저장 · Ctrl+D 복제 …).
| docs/ | 기능별 문서 (VFX Graph · Shader Graph · 안드로이드 · Vulkan · DirectX 12 · 오클루전 · 렌더 스레드 · 씬 스트리밍 · 패키지 · CLI …) |
| docs/ENGINE_ROADMAP.md | 앞으로 할 일 — Godot 4.7 기능 목록과 대조한 분야별 표, 단계 P0 ~ P3 |
| AGENT_HANDOFF.md | 구조 · 구현 설명 · 규칙 · 자체 검사 |
| 공식 사이트 | 소개 · 갤러리 · 다운로드 |
Dear ImGui · imgui-node-editor · Jolt Physics · Box2D v3 · Assimp · DirectXTex · Effects11 · DXC · SPIRV-Cross · nlohmann/json · stb_vorbis · dr_mp3 · Recast & Detour · FastLZ · meshoptimizer · libwebp · astc-encoder · AMD FidelityFX FSR 1.0 (MIT) · lilToon (MIT, © lilxyzw — Packages/com.nova.toon/LICENSE-lilToon.txt) · Pretendard · Font Awesome
그림 속 캐릭터: Seed-san © VirtualCast, Inc. (VRM Public License 1.0), VRoid AvatarSample_A · B (pixiv Inc.) — 모델 파일은 저장소에 없음 (테스트 프로젝트에만).
기본 스카이박스: Poly Haven CC0 HDRI. 텍스처 팩 재질: ambientCG CC0. 에디터 아이콘 · 효과음은 Tools/ 스크립트로 직접 만든 것 (Unity 에셋 사용 안 함).





















