notes
BugRail 3D 학습 — 뭐부터, 어떤 순서로, 어떤 개념
관련: 3D 게임 만들기를 위한 AI 고퀄 3D 기술스택·MCP 시장조사 · Untitled
1. 공부 전략
전제: AI는 모델링(메시 초안)만 시킨다. 그 외는 직접 한다.
목표는 「모델을 잘 깎는 사람」이 아니라 「에셋을 게임에 붙여 움직이는 사람」이다. 조작감·콜라이더·네트·빌드에 공부 시간을 몰아준다.
메시는 Blender에서 열어 스케일(미터)·바닥·피벗·불필요 오브젝트만 정리한 뒤 FBX/glTF로 내보낸다. 풀 모델링·스컬프트 수업은 안 한다. 임포트 뒤에는 Read/Write·머티리얼·콜라이더를 본다. 리깅이 막히면 캡슐 콜라이더 + 임시 애니로 진행하고, 메쉬는 스킨만 쓴다.
막히면 회색 캡슐로 메카닉을 먼저 만든다. 예쁜 메시는 나중에 갈아끼운다. 플레이가 안 느는데 메시만 바꾸면 진도가 가짜다.
시간 배분 (주 10~15h 가정)
전반(1~2개월)은 Unity/C# 위주로 싱글 메카닉에 맞춘다. 중반은 폴리시(애니·사운드·UI)·맵으로 버티컬 슬라이스를 만든다. 후반은 멀티·Steam과 폴리시로 친구 테스트에 쓴다.
튜토 1개 = 결과물 1개. 바로 BugRail 씬에 이식한다. 숫자·한 줄을 바꿔서 깨본다. 15초 영상으로 메카를 증명한다. 막히면 48시간 안에 범위를 줄이거나 임시 에셋을 쓴다. 엔진은 Unity만. Godot/Unreal 병행은 금지.
전체 순서
기초 → Unity 싱글 → 메카닉 1개 → 캐릭터 메쉬 교체 → 메뉴~골 슬라이스 → Steam → 멀티(친구 로비). 이 순서만 탄다. 멀티를 너무 일찍 하면 조작 버그인지 네트워크 버그인지 갈라지지 않는다.
2. 단계별 — 뭐부터 / 순차 / 어떤 개념
각 단계에서 뭘 하고, 끝나면 뭐가 되고, 여기서 익히는 개념이 뭔지가 한눈에 들어오게 적었다. 다음 단계로 넘어가기 전에 완료 기준을 채운다.
0단계 — 환경 (3~7일)
Unity Hub에서 Unity 6 LTS를 깔고, 빈 3D(URP) 프로젝트를 만든다. Git + Git LFS로 원격 저장소 하나를 붙인다. Rider 또는 VS Code에 C#을 연동하고, 스크립트를 열어 브레이크포인트를 한 번 찍어 본다.
끝나면: 빈 프로젝트가 Git에 올라가고, exe(또는 플레이어 빌드)가 한 번 나온다.
여기서 익히는 것: 에디터 vs 빌드, 프로젝트/에셋 폴더, Git 커밋·푸시, LFS가 왜 필요한지(바이너리 에셋).
1단계 — 움직이는 것 (1~2주)
씬에 큐브나 캡슐을 두고 WASD + 점프를 붙인다. 카메라가 따라오게 한다(3인칭 단순 추적). Input(키보드·패드 감), Transform, Rigidbody 또는 CharacterController 중 하나로 이동을 만든다.
끝나면: WASD + 점프 + 따라오는 카메라. 캐릭터 메쉬는 아직 안 써도 된다.
여기서 익히는 것:
- Transform(위치·회전·스케일), 로컬 vs 월드
- 프레임 / Update — 매 프레임 로직이 돈다
- Input — 키를 읽어서 속도를 바꾼다
- CharacterController vs Rigidbody — 「직접 이동」 vs 「물리로 밀림」. BugRail 클라이밍·레일건은 둘 다 감은 뒤 하이브리드로 갈 수 있다
- 카메라 — 플레이어 뒤/위 오프셋. 벽 뚫림 보정은 2단계 이후
2단계 — BugRail 메카닉 하나 (2~4주)
여기가 핵심이다. 레일건으로 붙기, 또는 벽/레일 클라이밍 중 하나만 만든다. Raycast/SphereCast로 「어디에 붙을지·어디에 맞는지」를 잡고, 간단한 상태머신(Grounded / Climbing 또는 Aiming 등)을 둔다. 충돌 레이어로 붙을 수 있는 면만 가린다. 필요하면 프랍(벽·레일·플랫폼)을 맵에 놓는다.
끝나면: 15초 클립 + 작은 맵에서 혼자 골까지.
여기서 익히는 것:
- Raycast — 시선/총알/그랩 포인트 탐지. 선 하나 쏴서 뭐에 닿았나
- FSM(유한 상태머신) — 한 번에 한 상태. 서기↔매달리기↔조준이 섞이지 않게
- Collision vs Trigger, 레이어 마스크
- 드로우콜·배치는 아직 깊게 안 해도 된다. Profiler로 「왜 느린지」 한 번만 열어 본다(CPU vs GPU 병목 감)
메카닉이 확정되기 전에 멀티·예쁜 맵·풀 애니에 빠지지 않는다.
3단계 — 캐릭터 메쉬 갈아끼우기 (1~2주)
벌레 캐릭터 메쉬를 받아 Blender에서 스케일·피벗·내보내기만 정리한 뒤 Unity에 넣는다. Animator는 Idle / Run / Jump만. 클라이밍 애니는 그다음. 리깅이 막히면 메쉬는 보이기만 하고, 조작은 히든 캡슐을 유지한다.
끝나면: 내 IP 실루엣으로 2단계 메카닉이 그대로 재현된다.
여기서 익히는 것:
- 메쉬 / UV / 머티리얼 — 껍데기·펼친 지도·어떻게 보일지
- 임포트 스케일(미터), 피벗, Read/Write
- Animator 상태 전환, 클립 루프, (나중에) 루트모션 vs in-place
- PBR 채널은 쓰되, BugRail은 채도·단순 셰이딩이 귀여움의 핵심이다. 포토리얼 셰이더 연구는 하지 않는다
4단계 — 한 판 패키지 / 버티컬 슬라이스 (2~3주)
메뉴 → 스폰 → 메카닉 → 골/낙사 → 결과 화면까지 한 줄로 잇는다. 최소 SFX, 간단한 HUD. 맵 소품은 플레이 동선 위주(숫자 자랑 금지). 친구 1명에게 exe를 주고 플레이테스트 1회.
끝나면: 위 흐름이 끊기지 않는 exe. 이게 기초 졸업이다.
여기서 익히는 것: 씬 전환, 간단한 UI(Canvas), 일시정지, 오디오 클립·볼륨(타격감의 절반은 소리). 「프레임워크 완벽」보다 플레이 가능한 한 줄.
5단계 — Steam (1~2주)
Steamworks 앱 / 테스트 앱, 비공개 빌드 업로드, 오버레이 확인.
끝나면: Steam에서 실행되는 비공개 빌드.
여기서 익히는 것: 앱 ID, 오버레이. 배포 파이프는 완성도와 별개 스킬이다.
6단계 — 멀티 (4~8주, 앞이 안정된 뒤만)
같은 PC 2클라 → Steam 친구 2인 → 4인 순서로 간다. 스택은 Fish-Net 또는 Mirror + Steam 로비/초대(Facepunch). 토폴로지는 Listen server(방장=호스트). 점수·히트는 호스트(서버) 판정.
끝나면: 친구와 한 판. 매치메이킹은 없다.
이 단계에서만 깊게 익히는 것:
- 권한(authority) — 누가 「진짜」 위치를 말하는지
- 동기화할 것 / 안 할 것 선별(모든 Transform을 보내지 않음)
- Listen vs 전용서버 — 전용·안티치트·랭크는 후순위
- NAT/방화벽 → Steam 릴레이가 친구 초대에서 왜 편한지
싱글 15초 클립이 나오기 전 멀티는 금지.
프로그래밍 — 단계와 겹쳐 직접 한 번씩
강의만 보지 말고 손대볼 것: 상태머신 · 입력 · 캐릭터 이동+카메라 · Raycast · 애니 전환(Idle↔Run↔Jump) · Profiler로 병목 한 번.
3. 통과 기준
4. 개념 사전 — DirectX·그래픽
구현은 후순위다. 말이 통하고, Profiler·임포트·머티리얼 화면이 읽히게 하는 게 목표다. 직접 DirectX/Vulkan C++를 짜는 건 BugRail 범위 밖이다.
4.1 층위 — 게임이 화면에 닿는 길
flowchart TB
G["1 게임 (BugRail 로직·씬·메카닉)"] --> E["2 엔진 (Unity) — 드로우 요청·머티리얼·카메라"]
E --> A["3 그래픽 API — DirectX / Vulkan / Metal"]
A --> GPU["4 GPU — 삼각형·픽셀 계산"]
게임 층은 「벌레가 벽에 붙었다」 같은 규칙. 여기가 본업이다. 엔진은 메쉬·머티리얼·라이트를 모아 「그려라」고 API에 넘긴다. Unity 에디터·C#·설정만 만진다. 그래픽 API는 OS/하드웨어에 맞는 명령으로 GPU에 전달한다. 고르기·개념만 알면 되고, Unity가 대부분 호출한다. GPU는 실제 픽셀을 찍는다. 드라이버·해상도·품질 옵션 정도만 신경 쓴다.
비유하면 게임=요리 레시피, 엔진=주방장, API=주방 통로 규격, GPU=화구다. 초보가 화구 설계부터 하면 저녁이 안 나온다.
4.2 CPU vs GPU vs 프레임
프레임은 화면 한 장이다. 1초에 몇 장을 뽑느냐가 FPS. 60이면 약 16.6ms 안에 로직+그리기를 끝내야 한다.
CPU는 게임 로직 — 입력, 물리, 「다음에 뭘 그릴지」 준비. 여기가 막히면 입력 지연·틱 밀림이 난다. GPU는 그리기 — 삼각형·셰이더·픽셀. 여기가 막히면 화면만 버벅인다.
병목은 Profiler에서 CPU bound / GPU bound를 구분한다. 「무조건 폴리 줄이기」가 답이 아닐 수 있다. Unity의 Update는 대략 「프레임마다 CPU 쪽 로직」이고, 렌더는 엔진이 별도 파이프로 GPU에 넘긴다.
4.3 메쉬 · UV · 머티리얼 · 셰이더
메쉬(Mesh)는 삼각형으로 된 3D 껍데기(버텍스+면). 초안 메시는 Blender에서 스케일·정리만 한다. 하이폴리 스컬프트 커리는 안 한다.
버텍스 / 삼각형은 점과 그 점 3개로 만든 면. 폴리 수가 늘면 GPU 일도 늘지만, 드로우콜·오버드로우도 중요하다. BugRail에서는 귀여운 비율·실루엣이 폴리 자랑보다 중요하다.
UV는 3D 껍데기를 펼친 2D 지도. 그 위에 텍스처(그림)를 입힌다. UV가 찢어졌는지 Blender/엔진에서 확인한다.
텍스처는 UV 위에 붙는 이미지(색, 거칠기 등 채널). 플랫/소프트 팔레트. 포토바싱은 자제.
머티리얼은 「이 메쉬가 어떻게 보일지」 설정 — 색, 금속/거침, 어떤 셰이더를 쓰는지. Unity에서 슬롯만 제대로 연결한다.
셰이더는 GPU에서 버텍스·픽셀을 계산하는 작은 프로그램. 빛·그림·아웃라인 등이 여기 있다. 초반은 내장/URP Lit·단순 스타일. 커스텀 셰이더 연구는 후순위.
관계: 메쉬가 형태 → UV로 펼침 → 텍스처를 올림 → 머티리얼이 셰이더+파라미터로 최종 모습을 결정한다.
4.4 드로우콜 · 배치 · PBR
드로우콜(Draw call)은 CPU가 GPU에 「이거 그려」라고 보내는 명령 1회. 메시·머티리얼이 바뀔 때마다 늘기 쉽다. 같은 머티리얼끼리 모으면(배칭) 호출이 줄어들 수 있다. 초보 감: 오브젝트 수천 개 × 제각각 머티리얼이면 느려질 수 있다.
배칭 / SRP Batcher는 드로우를 묶거나 설정 전환 비용을 줄이는 엔진 쪽 최적화. 이름만 알고, 나중에 Profiler와 함께 본다.
PBR(Physically Based Rendering)은 현실 빛 반응에 가깝게 Albedo/Metallic/Smoothness 등으로 맞추는 방식. 채널 의미만 알면 된다. BugRail은 PBR을 쓰되 채도·램프/툰 느낌으로 귀엽게. 포토리얼 맞추기 대회가 아니다.
LOD는 멀리 있으면 폴리 낮은 메쉬로 바꾸는 것. 4인+이펙트 갈 때 기억한다.
4.5 그래픽 API · DirectX · DX11 vs 12
그래픽 API는 엔진이 GPU에게 말하는 통로·규격이다. DirectX(Windows·Xbox), Vulkan(크로스), Metal(Apple) 등. 층위 큰 그림은 4.1을 보면 된다.
DirectX는 Microsoft 쪽 그래픽(및 멀티미디어) API. PC 빌드에서 Unity가 흔히 쓴다. C++로 DX를 직접 호출할 필요는 없다.
DX11 vs DX12: 12는 CPU 쪽 멀티스레드 제출·더 세밀한 제어가 강점이다. 대신 난이도가 높다. 초보는 「플레이어 설정·Unity가 고른 그래픽 API」면 충분하다. 「DX12라서 내 게임이 무조건 빠르다」는 아니다.
Vulkan / Metal은 각각 크로스플랫폼·Apple 스택. Unity가 타겟 플랫폼에 맞게 백엔드를 고른다.
BugRail 학습 목표에 「DirectX 샘플 포팅」은 넣지 않는다. 넣는 것: 층위 그림, 프레임/CPU·GPU, 메쉬·UV·머티리얼·셰이더, 드로우콜·PBR 감, Profiler에서 병목 읽기.
4.6 용어 빠른 표 (검색용)
5. 하지 말 것
- 포토리얼 / Nanite / MetaHuman부터
- 오픈월드
- 커스텀 엔진
- 엔진 병행 (Unity + Godot/Unreal 동시 공부)
- Blender 스컬프트·고급 리토폴 커리큘럼 (깨진 에셋 최소 수정만)
- 멀티·매치메이킹·안티치트·전용서버 너무 일찍
- Photon 과금부터 붙이기
- 텍스처 툴만 수집
- 「완벽한 코드 구조」만 짜고 플레이 없음
- 메쉬만 고르다 주 증발 (주당 에셋 시간 상한)
6. 원본·근거
인디 트렌드 한 줄: 코옵·friendslop·클립 친화 쪽이 강함 — 원본 박스 /workspace/reports/indie_trends_2026_brief_ko.md
SSOT 근거 파일 (박스):
/workspace/reports/3d_tech_stack_easy_ko.md
/workspace/reports/3d_study_strategy_ko.md
/workspace/reports/3d_game_tech_stack_study_guide_ko.md
/workspace/reports/indie_trends_2026_brief_ko.md
가격·로열티는 변동 가능 → 출시 전 공식 확인. Unity Personal $200K 미만 무료 구간 · Runtime Fee 취소됨 · Godot 무료 · Unreal $1M 초과 시 로열티.
검색 힌트: Unity Learn (Junior Programmer / Creative Core) · Fish-Net / Steamworks 문서 · Gaffer on Games Networking (개념).