UNITY 6 · SERVICE LOCATOR · DB 기반 프로그래밍

굴러가유 알 2D 러닝 퍼즐 & 육성 시뮬레이션 게임

알의 내면 세계를 탐험하며 자원을 모아 성장시키는 게임.
Service Locator와 Event Bus 패턴으로 결합도를 낮춘 아키텍처를 짜고,
ScriptableObject 데이터 파이프라인으로 기획자가 직접 수치를 만지게 만들었습니다.

ENGINE Unity 6000.0.60f1
PLATFORM PC
PERIOD 약 4개월
TEAM 6명 (기획2·개발2·아트1·사운드1)
STATUS 완료
GitHub rladbals0129@naver.com
게임 전체 흐름 영상 썸네일 게임 전체 흐름
SCROLL
01

프로젝트 개요

한국 설화와 헤르만 헤세의 '데미안'에서 모티브를 얻은 독창적인 세계관의 육성 게임

프로젝트 소개

알의 내면 세계를 탐험하며 자원을 획득하고 성장시키는 게임. 한국 설화인 '삼신할미', '서천꽃밭' 및 헤르만 헤세의 '데미안'에서 모티브를 얻은 독창적인 세계관을 바탕으로 기획되었습니다.

개발 정보

  • 개발 기간: 약 4개월
  • 플랫폼: PC
  • 엔진: Unity 6000.0.60f1
  • 팀 구성: 기획 2, 개발 2, 아트 1, 사운드 1 (총 6명)
  • 담당 역할: 코어 아키텍처 / 육성 시스템 / 데이터 파이프라인 / 다국어
02

파트별 게임 플레이

러닝 파트와 육성 파트의 핵심 게임플레이 영상

러닝 파트

키를 활용해 알을 5가지 랜덤 색상으로 변환시켜 장애물을 통과하고 자원을 획득하는 육성 러닝 액션.

수집 및 육성 파트

러닝 파트에서 모은 재화(공용 재화, 알별 전용재화 등)를 투자하여 조건에 맞춰 다채로운 형태의 크리처로 진화시키는 성취감 부여.

03

시스템 아키텍처 & 코드 플로우

Service Locator와 Event Bus 패턴으로 모듈 간 결합도 낮추기

모듈이 서로 직접 참조하면 하나만 고쳐도 여러 곳이 깨집니다. 그래서 Service Locator 패턴Event Bus 패턴을 넣었습니다.

실제 코드 흐름 다이어그램

각 노드를 클릭하면 실제 구현 코드 요약을 확인할 수 있습니다.

ENTRY POINT INFRASTRUCTURE DOMAIN SERVICES UI LAYER GameManager MonoSingleton — Entry Point ServiceLocator Dictionary<Type, object> EventBus struct Pub/Sub — GC 0 CurrencyService 재화 획득/소비/검증 이중 재화 모델 → CurrencyBalanceChanged GrowthAction 5종 스탯 / 행동 수행 PerformActionAsync() → StatChanged / LevelChanged EvolutionService 확률적 진화 엔진 DetermineEvolutionForm() → EvolutionCompleted CollectionService 도감 등록 / 버프 RegisterEvolutionForm() → CollectionUpdated UI_Lobby 재화 표시 / 알 선택 UI_Nurture 육성 행동 / 스탯 표시 UI_EvolutionPopup 진화 연출 / 결과 표시 UI_Collection 도감 / 버프 현황 범례: 등록/초기화 서비스 조회 이벤트 전파 (Pub/Sub) UI 갱신 클릭 가능

코드 흐름 상세 설명

1

앱 시작 — GameManager 초기화

GameManager.InitializeAsync()에서 11개 서비스를 순차적으로 생성하고 ServiceLocator.Register<I..>()로 등록합니다. 모든 서비스는 async UniTask InitializeAsync() 패턴으로 비동기 초기화되며, 이 과정에서 Addressable 테이블 SO를 로드합니다.

2

서비스 간 통신 — ServiceLocator 조회

각 서비스는 다른 서비스를 직접 참조하지 않고, 필요할 때 ServiceLocator.Get<ICurrencyService>()로 조회합니다. 인터페이스 기반이므로 구현체 교체가 자유롭고, 테스트 시 Mock 주입이 가능합니다.

3

도메인 로직 실행 — 서비스에서 비즈니스 로직을 처리

예: 육성 행동 수행 시 GrowthActionService.PerformActionAsync()가 호출됩니다. 내부적으로 ICurrencyService에서 재화 검증 → 차감 → 스탯 변경 → 레벨업 판정까지 파이프라인 패턴으로 원자적으로 처리합니다.

4

이벤트 발행 — EventBus로 변경 사항 전파

로직 처리 후 eventBus.Publish(new StatChangedEvent { ... })로 struct 이벤트를 발행합니다. GC Alloc 0을 보장하며 (struct 기반), 코어 로직은 UI의 존재를 전혀 알 필요가 없습니다.

5

UI 갱신 — 이벤트 구독으로 반응형 업데이트

UI 레이어는 eventBus.Subscribe<StatChangedEvent>(OnStatChanged)로 이벤트를 구독합니다. Update() 폴링 없이 데이터가 바뀔 때만 UI를 갱신해서 불필요한 연산을 없앴습니다. Addressable 아이콘은 AssetReferenceSprite로 비동기 로드됩니다.

등록된 서비스 (Service Registry)

GameManager에서 초기화 시 총 11개의 서비스를 순차적으로 등록합니다. 모든 서비스는 async UniTask InitializeAsync() 패턴으로 비동기 초기화됩니다.

인프라

IResourceService

Addressables 래핑. 비동기 리소스 로드/해제

인프라

IEventBus

제네릭 Pub/Sub. struct 이벤트 기반 통신

인프라

ISettingsService

JSON 기반 환경 설정 저장/로드 관리

인프라

IAudioService

Addressable 기반 사운드 재생/풀 관리

인프라

ILocalizationService

Unity Localization 래핑. 런타임 로캘 전환

육성

ICurrencyService

재화 획득/소비/검증. 러닝 보상 공식 처리

육성

IGrowthActionService

5종 스탯 관리. 육성 행동 수행/기록/쿨다운

육성

IEvolutionService

진화 조건 판정, 확률적 형태 결정, 이력 관리

육성

ICollectionService

도감 등록. 중복 처리. 버프 누적/적용

육성

IStageService

스테이지 데이터 관리. 클리어 등급/점수 판정

러닝

IRunningService / IPlayerService / IMapService

러닝 게임 세션, 플레이어 상태, 맵 스플라인 관리

04

육성 시스템 심층 분석

4개 서비스가 나뉘어 맞물려 돌아가는 핵심 콘텐츠

이 프로젝트의 핵심인 육성(Nurture) 시스템은 4개 서비스로 나뉘어 있고, 서로 이벤트로 맞물려 돌아갑니다.
아래 흐름도 클릭 시 코드 요약본이 나옵니다.

육성 시스템 전체 흐름도

각 단계를 클릭하면 실제 구현 코드 요약을 확인할 수 있습니다.

1

알 선택

로비에서 5종 알 중 선택
EggSelectedEvent 발행

2

재화 획득

러닝 게임 클리어 시
공용/전용 재화 지급

3

육성 행동

5개 행동 슬롯에서 선택
재화 소비 → 스탯 증가

4

레벨업 & 진화

조건 충족 시 진화 시도
스탯 기반 확률적 형태 결정

5

도감 & 버프

진화체 도감 등록
영구 버프 누적 적용

단계별 인게임 스크린샷

각 육성 단계가 실제 게임에서 어떻게 보여지는지 확인할 수 있습니다.

육성 서비스 아키텍처 다이어그램

각 서비스 노드를 클릭하면 실제 구현 코드 요약을 확인할 수 있습니다.

DOMAIN SERVICES EVENT BUS UI LAYER CurrencyService 재화 획득/소비/검증 이중 재화 모델 → CurrencyBalanceChanged GrowthAction 5종 스탯 / 행동 수행 PerformActionAsync() → StatChanged / LevelChanged EvolutionService 확률적 진화 엔진 DetermineEvolutionForm() → EvolutionCompleted CollectionService 도감 등록 / 버프 RegisterEvolutionForm() → CollectionUpdated EventBus — struct Pub/Sub GC 0 — 서비스↔UI 느슨한 결합 UI_Nurture 육성 행동 / 스탯 표시 UI_EvolutionPopup 진화 연출 / DOTween UI_CollectionPopup 도감 / 버프 현황 범례: 서비스 흐름 이벤트 발행 UI 갱신 클릭 가능

서비스 간 데이터 흐름 요약

1

CurrencyService → GrowthActionService

PerformActionAsync() 호출 시 ICurrencyService.CanAffordAction()으로 공용/전용 재화를 동시에 검증하고, SpendForAction()으로 원자적 차감합니다.

2

GrowthActionService → EvolutionService

레벨업 판정 후 진화 가능 조건 충족 시 EvolutionService.AttemptEvolutionAsync()를 호출합니다. 스탯 분포 기반 확률적 형태 결정 알고리즘이 실행됩니다.

3

EvolutionService → CollectionService

진화 완료 시 CollectionService.RegisterEvolutionForm()으로 도감 등록. 최초 등록 vs 중복 분기 처리 후 영구 버프를 재계산합니다.

EventBus — 모든 서비스의 변경 사항 전파

각 서비스는 로직 처리 후 struct 이벤트를 Publish()합니다. UI는 Subscribe()로 구독하여 Update() 폴링 없이 데이터 변경 시에만 갱신합니다.

05

데이터 파이프라인 & 테이블 관리

Google Sheets → CSV → ScriptableObject → 런타임 자동화 파이프라인

게임 내 모든 밸런스 수치와 콘텐츠 데이터는 Google Sheets에서 관리하고,
커스텀 에디터 툴이 CSV를 ScriptableObject로 자동 변환합니다.
게임 로직은 하드코딩 없이 테이블 데이터(DB) 기반으로 동작하여
기획자의 밸런스 수정이 코드 변경 없이 즉시 반영되는 구조입니다.

CSV → SO 자동 변환

에디터 전용 변환기(CsvUtil.cs)가 CSV를 파싱하여 ScriptableObject에 자동 패킹. 버튼 한 번으로 데이터 갱신 완료.

DB 기반 게임 로직

진화 규칙, 육성 행동, 재화 밸런스 등 모든 게임 로직이 테이블 데이터를 참조. 코드 수정 없이 밸런스 조정 가능.

유지보수 용이한 설계

기획자는 Google Sheets만 만지고, 개발자는 에디터에서 버튼만 누릅니다. 서로 기다릴 일이 없습니다.

데이터 파이프라인 흐름

Google Sheets

기획자가 밸런스 수치를
실시간 수정

CSV Export

테이블별 CSV 파일
내보내기

Editor 변환기

CsvUtil.cs
CSV → SO 자동 패킹

Table SO

Addressable로 배포
런타임 CSV 파싱 금지

Runtime 서비스

비동기 로드 후
Dictionary O(1) 조회

왜 이렇게 설계했는가?

게임 로직에서 진화 확률, 재화 보상, 육성 비용 등의 수치를 하드코딩하면 밸런스 조정마다 코드를 수정하고 재빌드해야 합니다. 이를 방지하기 위해 모든 밸런스 수치를 테이블 SO에 외부화하고, 게임 로직은 항상 SO를 조회하여 동작하도록 설계했습니다. 기획자는 Google Sheets에서 수치를 변경하고, 에디터에서 CSV Import 버튼만 누르면 코드 한 줄 수정 없이 게임에 즉시 반영됩니다.

Step 1 — Google Sheets (Source of Truth)

기획자가 밸런스 수치를 실시간으로 편집하는 Google Sheets가 모든 데이터의 원본(Source of Truth)입니다. 행/열 구조로 정의된 데이터는 CSV로 내보내져 에디터 변환기를 거칩니다.

Step 2 — ScriptableObject 테이블 (Unity Inspector)

Google Sheets에서 내보낸 CSV를 에디터 전용 변환기(CsvUtil.cs)로 ScriptableObject에 패킹합니다. 행 단위 SO가 아닌 테이블 단위 SO로 묶어 메모리 효율과 에디터 성능을 보장합니다. 모든 SO는 Addressable로 배포되어 런타임에 비동기 로드됩니다.

Step 3 — Localization Tables (다국어 문자열 테이블)

Unity Localization 패키지의 String Table을 활용하여 모든 게임 내 텍스트를 5개 언어로 관리합니다. SO의 로컬라이즈 키(nameLocKey)가 이 테이블의 Key와 매핑되어 런타임에 ILocalizationService.GetAsync()로 비동기 조회됩니다.

데이터 테이블 SO 전체 목록

  • EggTableSO: 5종 알의 ID, 타입, 이름(로컬라이즈 키), 아이콘/이미지(Addressable 참조), 테마 색상, 애니메이터 컨트롤러 참조. TryGetById() / TryGetByType()으로 O(n) 조회, 에디터 OnValidate()로 ID/타입 중복 자동 검출
  • GrowthConditionPoolSO: 육성 행동 풀. 행동별 ID, 비용(공용/전용), 스탯 변화량, 대사 키(다국어), 레벨 범위, 희귀도(Common/Rare/Epic), 가중치, 쿨다운, 상호배타 조건 관리
  • EvolutionRuleTableSO: 알 타입 × 지배 스탯 × 진화 확률 매핑. FormProbability로 진화체별 확률(%) 정의, OnValidate()에서 확률 합 100% 자동 검증
  • EvolvedFormTableSO: 진화체 메타데이터. ID, 이름(로컬라이즈 키), 알 타입, 등급(1~5), 중복 보상, 아이콘(Addressable), 버프 타입/수치 정의
  • CurrencyTableSO: 재화 ID, 이름, 희귀도, 아이콘 매핑
  • StageTableSO: 스테이지 장애물 패턴, 점수 등급, SafeZone 배율 상수
  • StatTypeSO: 5종 스탯의 색상, 표시명(로컬라이즈 키), 아이콘 등 메타데이터

설계 원칙

  • 행 단위 SO 금지: CSV를 기능 단위(Monster/Stage/Upgrade 등) 테이블 SO 1~N개로 묶어 관리 → 메모리 효율 + 에디터 성능 보장
  • 런타임 CSV 파싱 금지: 에디터 전용 변환기(CsvUtil.cs)로 CSV → 직렬화된 테이블 SO 빌드, 결과 SO만 Addressable 배포
  • Addressable 참조: 스프라이트, 애니메이터 등 헤비 리소스는 AssetReferenceSprite / AssetReference로 지연 로딩
  • 에디터 무결성 검증: 모든 테이블 SO에 #if UNITY_EDITOR OnValidate()를 구현하여 ID 중복, 필수 필드, 확률 합 등을 자동 검증
  • SaveData 분리: 각 서비스(CurrencySaveData, GrowthActionSaveData, EvolutionSaveData, CollectionSaveData)가 독립적으로 JSON 직렬화/역직렬화하여 세이브 슬롯 관리
// 데이터 파이프라인 핵심 흐름
// 1. Google Sheets → CSV Export (기획자)
// 2. CSV → ScriptableObject 변환 (CsvUtil.cs, 에디터 전용)
// 3. SO를 Addressable 그룹에 등록
// 4. 런타임: ResourceManager → 비동기 로드 → Dictionary 인덱스 → O(1) 조회

// 예: 진화 규칙 조회
var rule = ServiceLocator.Get<IEvolutionService>()
    .GetEvolutionRule(eggType: "blue", dominantStat: StatType.Courage, level: 5);
// → FormId: 101 (직장인, 90%), FormId: 102 (요리사, 10%)

인게임 결과물 — 테이블 데이터가 게임에 반영되는 모습

위에서 설계한 ScriptableObject 테이블의 데이터가 실제 게임 내에서 어떻게 활용되는지 보여줍니다. 육성 행동 비용, 진화 확률, 진화체 메타데이터, 도감 정보 등 모든 수치가 테이블 SO에서 조회되어 UI에 렌더링됩니다.

06

다국어 지원 (Localization)

Unity Localization 패키지 기반 런타임 로케일 전환과 자동 텍스트 갱신

Unity Localization 패키지를 기반으로 모든 텍스트를 로컬라이즈 키로 관리합니다. 런타임 로캘 전환과 자동 텍스트 갱신을 지원합니다.

UnityLocalizationService

ILocalizationService 인터페이스 구현체

  • 비동기 문자열 조회: GetAsync(table, key, args)로 테이블/키 기반 문자열 비동기 조회. 매개변수 바인딩 지원
  • 런타임 로캘 전환: SetLocale(localeCode)에서 AvailableLocales 검색 후 SelectedLocale 변경
  • 자동 갱신 이벤트: SelectedLocaleChangedOnLocaleChanged 이벤트 브리징으로 모든 구독자에게 변경 통지
  • 폴백 정책: 조회 실패 시 키 문자열을 그대로 반환하여 빈 텍스트 방지

LocalizedTMPText 컴포넌트

TMP_Text 자동 로컬라이즈 컴포넌트

  • 자동 갱신: OnEnable에서 ILocalizationService를 ServiceLocator로 조회, 로캘 변경 이벤트 구독하여 자동 텍스트 갱신
  • 비동기 안전: CancellationTokenSource로 중복 요청 취소, 컴포넌트 파괴 시 자동 해제
  • Inspector 설정: [SerializeField] tableName, entryKey를 인스펙터에서 직접 설정하여 코드 없이 다국어 적용
  • 동적 키 변경: 프로퍼티 세터에서 키 변경 시 자동으로 RefreshAsync() 호출

다국어 키 적용 범위

SO 필드

EggRow.nameLocKey — 알 이름

SO 필드

ConditionEntry.nameLocKey — 육성 행동명

SO 필드

ConditionEntry.line1~3 — 행동 대사

SO 필드

EvolvedFormRow.nameLocKey — 진화체 이름

SO 필드

StatInfo.locKey — 스탯 표시명

UI 컴포넌트

LocalizedTMPText — 정적 UI 텍스트 전체

런타임 조회

GetLocalizedStatNameAsync() — 스탯명 비동기 조회

런타임 조회

GetLocalizedActionNameAsync() — 행동명 비동기 조회

07

버전 관리 & 협업

Git 브랜치 전략과 OFPA 시스템으로 동시 작업 충돌 방지

Git 협업 모델 & 브랜치 전략

전체 약 170+ 커밋. 터미널 기반 Git 워크플로우를 활용하여 브랜치를 관리했습니다.

  • main: 출시 및 빌드 가능한 안정된 메인스트림
  • feature/jeonghun, etc.: 단위 기능(맵 에디터 모듈, 사운드 매니저 등) 개발용 브랜치 분리 작업


OFPA (One File Per Actor) 전략 적용

유니티 맵 제작 중 발생하는 최악의 Map 병합 충돌을 피하기 위해 OFPA 시스템을 환경에 구축하여 다수결의 팀원이 로비, 스테이지 씬 등을 동시에 작업할 수 있도록 충돌을 사전에 방지했습니다.

Google Drive 활용 문서화


Git Commit Log (최근 이력 전체)

* bf2cfd8 [김유민] 폰트별 다국어 연결, 공백시 폰트 안나오던 문제 해결, 인스펙터에서 테이블 + 키 입력받고 실제 UI에 언어 적용 ,도감UI 제작중
* 47c693e [김지영]번체간체 일본어 폰트 머테리얼
* 17be83f [김지영]폰트 굵기 변경
* f945403 [김지영] 한국어, 영어 폰트
* f9abcc8 [김지영]미사용 폰트 제거
* 73d37c5 [송정훈] 플레이어 콤보 별 속도 증가 적용
* cc6cf79 [송정훈] Player Animation 추가 및 08. Animations 폴더 생성 및 정리
* d330473 [이리나] 굴러가는 알 애니메이션 icon폴더에 추가
* 968b4f1 [김유민] 알 id순서 변경
* 78a303a [김유민] - 다국어 별 Localization 키 ,값 바인딩 - 육성화면 육성 행동 시 테이블에 맞는 대화 출력 - 육성화면 재화 아이콘 실제 알에 맞는 재화 아이콘 매핑 (Addressables 아이콘 캐싱 안정화) - 로비화면 드롭다운 메뉴 구성 및 올바른 재화표기
* f0ce5cb [김지영] 한국어, 영어,번체,간체,일본어 도트 폰트 추가
* cc7ee70 [김지영] 스트링 테이블 업로드
* c31e8bd [김유민] - 다국어 중국어(번체),중국어(간체),일본어 추가 - 테이블 미구성 ,진화 플로우 버그수정 및 연동 완료 (키랑 이미지 있을 시 즉시 연동됨)
* 353a7a0 [송정훈] 빌드용 UI 수정
* 4da5837 [김유민] 오류수정
* 6df74ab [김유민] 파란알빼고 진화 막음
* 9d47e98 [송정훈] 플레이어 이미지 변경
* eb38537 [김지영] 러닝파트 알
* 95cb8ed [송정훈] Lobby 이동 버튼 수정
* 489dea3 [김유민] - 진짜최종
* 382184d [김유민] - 스프린트1 최종커밋
* d6b96fb [송정훈] 데이터 추가 및 재화 전달
* d099dce [송정훈] 콤보 보너스 적용
* 146f3e7 [김유민] 중간커밋
* c2756eb [송정훈] PlayserService 및 ParallaxBackground 추가
* 3b7a8c8 [이리나] bg_pc_stage1 > bg_stage1으로 이름 수정, 수정된 육성과 내면파트 배경 업로드
* b2faa50 [송정훈] 값 수정 및 버그 수정
* a522368 [송정훈] RunningService 다음 스테이지 이동 구현
* 8d107a4 [송정훈] 5스테이지 맵까지 제작
* fc6ae48 [송정훈] 러닝 결과 UI 생성 및 적용
* be189c9 [송정훈] TMP Setting 기본 폰트 변경 (둥근모)
* c0719be [송정훈] SafeZone에서 컬러 체인지 시 적용 로직 반영
* 8d910f1 [송정훈] Running 시작 시 카운트 다운 UI 추가
* 637a41d [송정훈] MapData StageNumber 추가 및 맵 추가
* 4d13855 [김유민]임시2
* f0026f1 [김유민]임시
* 98dcea3 [김유민] 육성 테이블 확장구현  (진화와 도감) 및 SO입력, 경험치시스템 삭제
* 22739ce [김유민] UI 해상도 다시높여서 진행중...ㅈㅅ
* 3de1f5d [김유민] UI작업 해상도 낮춰서 다시 진행중
* 45055f9 [김유민] 로비 알 애니메이션 적용 및 확대연출 - 타이틀 다국어 적용 - 육성 랜덤로직 버그수정, 다국어적용
* a7cd729 [김지영] 루프 머테리얼
* c4fe031 [이리나] icon_rope 수정 후 재업로드
* 3c79b51 [이리나] 이미지 폴더에 icon_rope 리소스 추가
* f517cb7 [김지영]임시 에셋 삭제
* ebcae3d [이리나] 이미지 폴더에 hamster/blackcat/fire 리소스 추가
* d75179d [이리나] 이미지 폴더에 worker/chef/artist 리소스 추가
* 46baefa Revert "Merge branch 'main' of https://github.com/JeongHun0612/RollingEgg"
*   22afd29 Merge branch 'main' of https://github.com/JeongHun0612/RollingEgg
|\  
| * c20f4a0 [송정훈] CameraManager 추가
| * 7eee18d [송정훈] 배경 이미지 ParallaxScrolling 구현 및 적용
| * 42c1c2a [송정훈] PlayerService 생성 및 RunningService와 책임 분리
|/  
*   faec43c [이리나] 이미지 폴더에 스테이지1 이미지 생성
|\  
| * 6904754 [송정훈] 빌드 셋팅
| * a769577 [송정훈] 플레이어 속도 셋팅 추가 (임시)
| * f03822a [송정훈] RunningPopup, Setting UI 추가 및 러닝 재시작 구현
| * 6d18286 [송정훈] RunningService 추가
| * b2db7b0 [송정훈] 게임 시작 시 카메라 연출 및 Path별 가중치 부여
| * 12b3dd2 [송정훈] 쿨타임 기능 추가
| * 8ed054a [송정훈] 러닝 시작 시 랜덤 색 지정 및 커스텀 키 바인딩
| * ba8d9f2 [송정훈] 커스텀 키 세팅 로직 수정
| * 4f655f4 [김유민] 커스텀 키 세팅 구현 및 옵션창 바인딩, Json 저장기능 구현
| * 3768714 [송정훈] 어드레서블 그룹 갱신
| *   dd15d01 Merge branch 'main' of https://github.com/JeongHun0612/RollingEgg
| |\  
| | * ca85503 [김유민] Localization을 이용한 다국어처리 진행중(한국어,영어), 관련 인터페이스,서비스 발행 및 GameManager에 등록, - User Setting값 JSON으로 저장 (현재는 설정탭에 언어밖에 없어서 언어만) - 아직 미완성이라 버그가 많아요,, 계속 작업하면서 수정할게요
| * | d068ec2 [송정훈] Map 관련 스크립트 및 SafeZone 오브젝트 추가
| * | 0fe6980 [송정훈] ResouceManager 함수 추가
| |/  
| * b62afda [송정훈] 폴더 정리
| * 2d5b2ee [김지영] 로프 이미지 수정
| * bff5efa [김지영]로프 이미지, 머테리얼 생성
| * 48cec3e [김지영]재화 아이콘 어드레서블, 커런시 테이블 데이터 입력, 크기조정하다가 날아간 검은 꽃 다시 추가
| * d1d9b1c [김지영]아이콘 사이즈 수정, 임시 진화체 아이콘 추가
| * e435db7 [송정훈] Install Recorder
| * ccb32ac [송정훈] LineShader 추가 및 러닝 시 적용
| * b658834 [김지영]링크 수정?
| * 8a57a13 [김지영] 로비 ui 추가
| * a07e26b feat: UIManager 초기화 안정성 개선 및 Scene UI 업데이트
| *   d6792a4 resolve: UI_RunningHUD.prefab 병합 충돌 해결
| |\  
| | * 809a85b [송정훈] 테스트 로프 이미지로 변경
| | * c2768ba [송정훈] 탐사게이지 UI 생성 및 적용
| | * 22222d0 [송정훈] 폴더 정리 및 PlayerDataSO 스크립트 생성
| * | dcae746 feat: UI 시스템 개선 및 서비스 로케이터 패턴 적용
| * | e215305 [김유민] 임시커밋
| |/  
| * fe3b9a3 [송정훈] 맵 에디터 및 PlayerController 수정
| *   bbf9bfa Merge branch 'main' into feature/jeonghun
| |\  
| | * 71cea83 육성 씬 업로드
| | * 88e0ca6 임시 아이콘 추가, 아이콘 메타 파일 업로드, 배경 이미지 1종 추가, 타이틀 ui 수정, 테스트 ui 수정 중
| * | 0029273 Util Extension Script 추가
| * | c189fdd 맵 생성 툴 제작 및 플레이어 자동 움직임 구현
| * | 76d2a3d Temp Commit
| * |   dcf734a Merge branch 'main' into feature/jeonghun
| |\ \  
| * \ \   3c2a29a Merge branch 'main' into feature/jeonghun
| |\ \ \  
| * | | | 73037f0 Install Splines Package
* | | | | 077a2ec [이리나] 이미지 폴더에 스테이지1 배경파일 공유
| |_|_|/  
|/| | |   
* | | |   a21926c Merge branch 'main' of https://github.com/JeongHun0612/RollingEgg
|\ \ \ \  
| * | | | f553f3b [김유민] feat: 이벤트 시스템 및 러닝 브릿지 구현 - 재화/경험치/육성/진화 이벤트 정의 - 러닝 게임 연동 브릿지 추가 - Editor Utils 유틸리티 추가
| * | | | d274c28 타이틀 ui 프리팹 생성(임시 작업 완료),폰트 리소스 추가(일단 3개),알 아이콘 메타 파일 커밋
| | |_|/  
| |/| |   
* / | | d88509d [이리나] icon폴더- 4종류의 알 png파일
|/ / /  
* | | 25e62f8 [이리나] 5색 알 아이콘 초안
* | | 4377116 오디오 폴더 추가
* | | 714b7a1 [김지영] 이미지 폴더에 백그라운드 폴더 생성
* | | 643c513 Table 작업중
| |/  
|/|   
* | d896b85 docs: AI Rules (프롬프트) 설정 및 가독성을 위한 한국어 md파일
* | 7db8c7c Merge branch 'main' of https://github.com/JeongHun0612/RollingEgg
|\| 
| * 3b2e089 Create UI System & Create Test UI
| * 45e4607 Create Core 매니저
| * e94e2a4 Create Addressable Default Group
| * a473af0 Install Addressables
* | 6097415 cursorignore 세팅
|/  
* e66dddd RootNameSpace 설정
* 730e69d 기본 폴더 정리
* 2ba1203 Install TMP
* a844ab8 Install DOTween
* 763dbb6 Install UniTask
* 6e31151 Create Project
* a71b8de Update .gitignore
* 52e35df Initial commit