Stell Engine 개요
Stell Engine은 고성능 실시간 렌더링 애플리케이션 개발을 위해 설계된 DirectX 11 기반의 Native C++ 게임 엔진입니다. 상용 엔진(Unity, Unreal)의 아키텍처를 벤치마킹하여, 최신 생성형 AI 워크플로우를 엔진 코어에 통합하였습니다.
Stell AI Terminal (Gen-AI Integration)
Stell Engine은 업계 최초로 LLM(거대 언어 모델)과 3D 생성 AI를 엔진 런타임에 내장하였습니다. 별도의 모델링 툴 없이, 에디터 내 터미널에서 자연어 명령만으로 에셋을 생성하고 배치할 수 있습니다.
지원하는 AI 모델
- Google Gemini Pro: 사용자의 자연어 명령을 해석하고, 적절한 엔진 API 호출 코드로 변환합니다. (Logic Generation)
- Tripo3D / Pollinations: 텍스트 프롬프트를 기반으로 3D 메쉬(.obj)와 PBR 텍스처를 실시간 생성합니다. (Asset Generation)
AI Terminal 사용 예시
[System] Connecting to Gemini API... Parsing intent...
[System] Requesting 3D Model from Tripo3D (High Quality)...
[System] Downloading: 'container_mesh.obj' (15MB)
[Success] Asset imported and placed at (0, 0, 0).
- Gemini API Key: Google AI Studio에서 발급
- Tripo3D API Key: Tripo3D Dashboard (좌측 메뉴 'API Keys' 확인)
Graphics Architecture (Forward+)
전통적인 Forward 렌더링의 한계를 극복하기 위해, 최신 하드웨어 가속을 활용한 Forward+ (Tiled Forward) Rendering 파이프라인을 구축했습니다.
기술적 특징
- Light Culling: 화면을 타일(Tile) 단위로 분할하여, 각 픽셀에 영향을 주는 광원만 선별적으로 연산합니다. 이를 통해 수천 개의 동적 광원을 실시간 처리합니다.
- HLSL Shader: PBR(Physical Based Rendering) 셰이더를 직접 작성하여, 금속성(Metallic)과 거칠기(Roughness)를 정확하게 표현합니다.
- Post Processing: Bloom, Tone Mapping, Gamma Correction 등 후처리 효과가 기본 내장되어 있습니다.
Lua Scripting & Control Loop
C++의 성능과 Lua의 유연함을 결합했습니다. 특히 Stell Engine은 단순한 컴포넌트 이벤트를 넘어, runProcess 루프를 통해 개발자가 메인 루프를 직접 제어할 수 있는 권한을 제공합니다.
스크립트 구조 예시 (Main Loop)
-- runProcess: 엔진의 메인 진입점 (Entry Point)
runProcess(function()
-- [1] 초기화 (Initialization)
local scene = GetScene()
local player = CreateEntity("Player")
-- [2] 메인 루프 (Game Loop)
while true do
local dt = getDeltaTime()
-- 입력 처리
if Input.IsKeyDown("ESC") then break end
-- 물리/로직 업데이트
UpdatePlayerPhysics(player, dt)
-- 렌더링 명령 제출
render()
end
end)
Native Physics Engine
Stell Engine은 PhysX와 같은 상용 미들웨어를 래핑하지 않고, Native C++로 직접 구현된 물리 엔진을 탑재했습니다. 충돌 감지(Collision Detection)와 충격량 해결(Impulse Resolution) 알고리즘이 엔진 코어에 최적화되어 있습니다.
- RigidBody Dynamics: 질량, 마찰력, 탄성 계수를 기반으로 한 강체 역학 시뮬레이션.
- Broad-phase Optimization: BVH(Bounding Volume Hierarchy)를 사용하여 충돌 검사 비용을 최소화했습니다.
- Stability: 고속 이동 물체의 관통(Tunneling) 현상을 방지하는 CCD(Continuous Collision Detection) 기초 알고리즘 적용.
빌드 및 배포 (Deployment)
완성된 프로젝트는 Inno Setup을 통해 단일 설치 파일(.exe)로 배포됩니다. 엔진 런타임, 에셋 데이터, Lua 스크립트가 하나의 패키지로 묶여, 최종 사용자에게 제공됩니다.
실전 예제: 차량 물리 제어 (Car Physics)
Hyundai N Vision 74 데모에 사용된 차량 제어 스크립트입니다. 휠 콜라이더(WheelCollider) 없이, 순수 강체 역학으로 드리프트와 구동력을 구현했습니다.
function FixedUpdate(dt)
-- 가속 (Forward Force)
if Input.GetKey("W") then
self.rb:AddForce(self.transform.forward * self.enginePower)
end
-- 조향 (Torque)
local velocity = self.rb:GetVelocity():Length()
if velocity > 0.5 and Input.GetKey("A") then
self.rb:AddTorque(Vector3(0, -1, 0) * self.steerSpeed)
end
end