📚 목적: Vibe Coding으로 만들어진 CivilSim 프로젝트를 처음부터 완전히 이해하고, 기술 면접에서 자신 있게 설명할 수 있도록 작성된 학습 문서입니다.
설명 구조: 설명 → 예시 → 체크 질문 → 요약 순서를 따릅니다.
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()동작 안 함 등 제약이 있습니다.