📚 목적: Vibe Coding으로 만들어진 CivilSim 프로젝트를 처음부터 완전히 이해하고, 기술 면접에서 자신 있게 설명할 수 있도록 작성된 학습 문서입니다.

설명 구조: 설명 → 예시 → 체크 질문 → 요약 순서를 따릅니다.


1. 프로젝트 개요

이 프로젝트는 무엇인가?

CivilSim은 웹 브라우저에서 바로 플레이할 수 있는 심시티 스타일 도시 건설 시뮬레이터입니다. 플레이어는 도시를 설계하고, 건물을 배치하고, 도로·전력·수도 인프라를 건설하여 주민의 행복과 도시 경제를 성장시킵니다. 별도 설치 없이 URL 하나로 플레이할 수 있도록 WebGL로 빌드되었으며, GitHub에 push할 때마다 자동으로 빌드·배포됩니다.

어떤 문제를 해결하는가?

해결한 문제 접근 방법 관련 파일
복잡한 시스템 간 통신 이벤트 버스 패턴 GameEventBus.cs
WebGL 배포 자동화 GitHub Actions + Netlify .github/workflows/build-webgl.yml
Unity 코드 테스트 불가 문제 Static Formula 분리 EconomyFormula.cs, HappinessFormula.cs
대용량 WebGL 파일 로딩 속도 Brotli 압축 + CDN WebGLReleaseBuilder.cs, _headers
건물 데이터 하드코딩 ScriptableObject 분리 BuildingData.asset
매 프레임 무거운 연산 TickSystem 기반 분산 TickSystem.cs

주요 기능

기술 스택

분류 기술 선택 이유
엔진 Unity 6000.3.10f1 게임 엔진 표준, WebGL 지원
렌더링 URP 17 WebGL 성능 최적화, SRP Batcher 지원
빌드 타겟 WebGL 설치 없이 브라우저에서 실행
언어 C# (.NET Standard 2.1) Unity 공식 스크립팅 언어
입력 Unity Input System 1.18 멀티 플랫폼 입력 추상화
테스트 NUnit + Unity Test Runner EditMode 단위 테스트
CI/CD GitHub Actions (Self-hosted) 로컬 Unity 라이선스 활용
배포 Netlify Brotli 헤더 커스텀 가능

체크 질문 1: Unity에서 WebGL 빌드가 일반 PC 빌드와 다른 이유는?

: WebGL은 브라우저 샌드박스 환경에서 실행됩니다. Thread 직접 생성 불가, 파일 시스템(System.IO) 접근 불가, Application.Quit() 동작 안 함 등 제약이 있습니다.