미로 · 개발 블로그
게임 개발 블로그

턴룸 · TurnRoom

픽셀 잔디 데모 분석과 Unity 제품화 검토

개발 기록 · 블로그 공개

원본 기록 상태 완료

Godot 잔디 셰이더와 Pixel Camera 소스를 대조했습니다. 독립 식생 모듈과 카메라 연동을 권하며 실행 성능은 미검증입니다.

변경 전 — 사용자 제공 메뉴
턴룸 · TurnRoom의 다른 개발 기록에 첨부된 이미지 · 변경 전 — 사용자 제공 메뉴

작업 결과

분석은 완료했습니다. Unity로 유사한 표현을 구현할 수 있는 구조이며, 카메라 픽셀화와 식생 셰이더를 분리해 결합하는 방향을 제안합니다. Unity 이식·실행·성능 측정은 이번 분석에 포함하지 않았고 완료로 표시하지 않습니다.

원본은 Godot 4.4 / Forward Plus를 선언한 3D 픽셀 잔디 데모입니다. 확인한 커밋은 7486b9b99834d95c4287cc917971b3d74ba37d8c입니다. 완성 게임이나 Unity 패키지가 아닌 스크립트·셰이더·모델·텍스처·시연 씬입니다.

영상 페이지를 도구로 가져오지 못했습니다. 영상 전체 시청·음성·시간별 효과 대응은 미확인입니다. 사용자 첨부 화면과 실제 저장소 소스로 분석했습니다. 에디터 실행 화면은 수집하지 않았으며 시각 재현 통과를 주장하지 않습니다.


변경 내용

적용 내용

표현을 구성하는 기술

요소 소스에서 확인한 처리 Unity 적용 제안
풀의 모양 카메라 방향을 향하는 quad billboard + nearest 텍스처 + 알파 절단 픽셀 스프라이트를 얹는 인스턴스 메시
넓게 흐르는 바람 다른 방향·속도·스케일의 두 노이즈를 곱해 회전 생성 월드 좌표 바람 필드 공유
작은 흔들림 개별 위치 seed를 가진 사인파 회전 공통 바람에 개체별 움직임 추가
손그림 리듬 위치별 phase를 더한 시간을 round(time * FPS) / FPS로 양자화 렌더 FPS와 별도로 식생 애니메이션 FPS 제어
앞뒤로 눕는 인상 바람·캐릭터 방향과 카메라 방향에 따라 UV 폭을 변경 실제 원근 카메라 대신 재질의 가짜 원근 처리
자연스러운 색 덩어리 월드 노이즈로 3개 색 영역, 드문 accent 스프라이트 선택 바닥·풀 색 패턴의 좌표와 스케일 일치
부드러운 명암 계단형 toon 경계 일부에 smoothstep 혼합 픽셀 윤곽을 흐리지 않고 명암 경계만 부드럽게
구름 그림자 광원 방향으로 가상 구름 평면에 투영해 노이즈 조명 계산 풀·바닥에 같은 월드 조명 마스크
접촉 반응 최대 64개 위치·반경을 전달하고 카메라 축 방향으로 회전 합산 소수 캐릭터 배열 또는 넓은 장면용 상호작용 필드

카메라와의 관계

Demo.tscn은 640×360 SubViewport, orthographic projection=1, 카메라 size=6.085를 저장합니다. MultiMesh는 40,000개 할당, 30,000개 표시를 설정합니다. 이 숫자는 성능 벤치마크가 아닙니다. 저장 재질의 잔디 애니메이션은 5 FPS이며 CharacterManager의 위치 전달 기본값은 10 Hz입니다. 게임 전체가 5 FPS라는 뜻은 아닙니다. 사용자 첨부의 1·3·5·7 FPS가 정확히 어느 스위치인지 영상 확인은 못 했습니다.

카메라는 해상도·투영·화면의 픽셀 격자를 결정하고, 셰이더는 풀 모양·바람·접촉·명암을 결정합니다. billboard와 가짜 원근은 카메라 방향을 사용하므로 완전히 무관하지 않습니다. 카메라 필터만 추가해도 이 잔디가 생성되는 것은 아닙니다.

현재 PixelCameraEffect.cs는 저해상도 RenderTexture와 Point 필터, 격자 안정화를 구현하고 PixelCameraPreset.cs는 해상도·팔레트·외곽선 설정을 제공합니다. PixelCameraSteppedAnimator.cs는 Unity Animator를 일정 간격으로 평가합니다. 이는 GPU 셰이더 TIME을 단계화하지 않으므로 잔디에는 별도의 시간 uniform이 필요합니다. PixelCamera Runtime·Integrations에서 grass/wind/billboard/character_positions 검색은 일치하지 않았습니다. 다른 제품 전체의 기능 부재까지 주장하지 않습니다.

기존 도구와 선택

후보 확인한 역할 판단
Dylearn 원본 Godot 픽셀 잔디 소스와 아트 학습·이식 기준에 가장 직접적이나 Unity 재구현 필요

상용 에셋 구매는 수행하지 않았습니다. 상용 에셋을 게임에 쓰는 것과 자체 판매 패키지에 재배포하는 것은 구분해야 합니다.

제품화 제안 — 미구현 후보

  1. 우선 자체 아트의 작은 잔디 장면을 기존 Pixel Camera와 결합해 비교합니다. 연속/5/8/12 FPS, phase 동기/분산, hard/soft toon, 구름 켜기/끄기를 같은 카메라에서 비교하는 것이 적절합니다.
  2. 결과가 좋으면 독립적인 픽셀 식생 제품으로 분리합니다. 핵심은 billboard 식생, 페인팅/배치, 공통 바람, 캐릭터 반응, 스타일 프리셋, 거리별 표시와 카메라 선택 통합입니다. 카메라 없이도 동작하고 Pixel Camera는 선택 연동으로 두는 구성이 적절합니다.
  3. 확장 후보는 꽃밭·밀밭·갈대·관목·나뭇잎·깃발이며, 공통 바람과 단계화 시간을 재사용할 수 있습니다. 눈·모래 발자국은 누적 상태가 필요해 현재 순간적인 접촉 회전보다 별도 구현 범위가 큽니다. 물은 반사·깊이·투명 처리 때문에 초기 범위와 분리하는 것이 좋습니다.

이는 기술 구조에 근거한 제안이며 상품성·판매량·프레임 성능은 미확인입니다. 신규 제품을 채택할 경우 기존 프로젝트의 9개 언어, 샘플 격리, 자체 로고, 문서와 실행 QA 요구를 적용해야 합니다.

라이선스 확인


검증

원본 저장소를 내려받아 커밋·project.godot·Demo.tscn·Grass/Floor/Toon/Cloud 셰이더와 CharacterManager 소스를 직접 대조했습니다. 기존 Pixel Camera Runtime 소스와 비교했습니다. 공식 제작자 안내와 ProPixelizer 문서를 확인했습니다.

Godot 실행 파일은 PATH 조회에서 발견되지 않았으며 추가 설치나 GUI 실행을 하지 않았습니다. 프레임 성능, 실제 GPU 동작, Unity 동일 영상 재현과 회전 카메라에서의 품질은 미검증입니다. 이번 결과는 소스 분석 보고서이며 원본 실행 스크린샷이나 전후 품질 비교가 없습니다.


남은 사항

분석 요청은 완료했습니다. 실제 Unity 프로토타입, 플랫폼별 CPU/GPU 측정, alpha overdraw와 그림자 비용, 다중 카메라, 경사면·회전 시 billboard 품질 검증은 다음 구현 후보입니다. 64개 루프와 0 반경 슬롯, radius_exponent의 분수 지수 입력은 이식 시 수치 안전성을 확인해야 하며 현재 화면 결함 원인으로 단정하지 않습니다.


출처

중앙 아카이브 원문