Skip to content

About

Unity-style C++20 game engine — DirectX 11/12 · OpenGL · Vulkan · Android · WebGPU, C# scripting (MonoBehaviour · ScriptableObject · Job System · Burst-style native compile), Animator · Timeline · Cinemachine, 50 km open worlds with Terrain Graph · PCG, VFX/Shader Graph, SSGI, FSR upscaling, AI-driven CLI. 유니티 6 에디터를 그대로 옮긴 C++ 게임 엔진

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Latest commit

 

History

418 Commits

Folders and files

Repository files navigation

NOVA logo

NOVA Game Engine

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 에 가깝게 만들어 가는 프로젝트

C++20 DirectX 11 DirectX 12 OpenGL 4.5 Vulkan 1.3 Android Web WebGPU .NET 8 최신 릴리스

공식 사이트 · 다운로드 · 빠른 시작 · 주요 기능 · 스크린샷 · CLI · 로드맵 · 개발 문서

NOVA — 밤 캠프장 (Visual Effect Graph · 절차적 숲 · HDR Bloom)
밤 캠프장 데모 — 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 가 다루는 에디터 — nova CLI 로 만들고 · 바꾸고 · 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 견본 — 불꽃놀이 · 마법진 · 토네이도 · 은하 · 포털 · 불티 · 모닥불


VFX Graph 창 · 연산 노드

Shader Graph (용암 Voronoi)

숲 1500 그루 (LOD · 임포스터)

바다 · 해안 · 호수 · 강

Adaptive Probe Volume (실시간 간접광)

Screen Space Reflection

Depth of Field — Bokeh

Decal Projector

GPU 오클루전 컬링 — DX11 · GL · Vulkan

지형 생성기 · 바이옴

Model Editor (패키지)

2D Animator (패키지)

AI Navigation — NavMesh Link · Obstacle

Profiler

Terrain Graph — 50 km 침식 · 강 · 길

PCG — 규칙으로 채우는 열린 월드

Building Generator (패키지)

군중 1 만 명

Cinemachine (패키지)

Render Scale — FSR 1.0 업스케일


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


lilToon 툰 셰이더 (VRoid 샘플 캐릭터)


안드로이드 (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 에셋 사용 안 함).

nova-game-engine.web.app

About

Unity-style C++20 game engine — DirectX 11/12 · OpenGL · Vulkan · Android · WebGPU, C# scripting (MonoBehaviour · ScriptableObject · Job System · Burst-style native compile), Animator · Timeline · Cinemachine, 50 km open worlds with Terrain Graph · PCG, VFX/Shader Graph, SSGI, FSR upscaling, AI-driven CLI. 유니티 6 에디터를 그대로 옮긴 C++ 게임 엔진

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages