Skip to content

외부 PNG 우선 로더와 sprite 가이드·credits 템플릿#97

Merged
sw1029 merged 2 commits into
sw1029:mainfrom
SilverSupplier:feat/external-sprite-loader
May 30, 2026
Merged

외부 PNG 우선 로더와 sprite 가이드·credits 템플릿#97
sw1029 merged 2 commits into
sw1029:mainfrom
SilverSupplier:feat/external-sprite-loader

Conversation

@SilverSupplier
Copy link
Copy Markdown
Collaborator

@SilverSupplier SilverSupplier commented May 29, 2026

개요

지금 모든 sprite는 PixelArtFactory.cs가 코드로 합성합니다. 알고리즘이 깔끔할수록 결과가 인위적으로 보여 손맛 있는 픽셀 아트의 천장에 닿습니다. 자산 자체를 손으로 만든 PNG로 교체할 수 있는 길을 미리 깔아 둡니다.

자산이 들어오면 코드 수정 없이 자동 교체됩니다. 한 장도 없으면 게임은 지금과 똑같이 동작합니다.

변경 사항

PixelArtFactory 로더 확장

CreateSprite 호출 시 흐름:

  1. Assets/MagicExamHall/Resources/Sprites/<Kind>.png 검색
  2. 있으면 그대로 반환 (원본 색 유지)
  3. 없으면 기존 procedural 도형으로 fallback

캐싱:

  • 발견된 sprite는 Dictionary 캐시에 저장
  • 없는 sprite는 HashSet 미스 캐시에 저장해 디스크를 한 번만 칩니다
  • ResetExternalSpriteCache() public 헬퍼로 캐시를 비웁니다 (에디터 reload·PlayMode 테스트용)

호환성 변경 없음. PNG가 없으면 기존과 동일하게 동작합니다.

Sprite guide / credits

  • docs/SPRITE_GUIDE.md: 파일 경로와 PNG 명명 규칙, 권장 스펙, 로더 동작, 라이선스 호환 표, 후보 자산 출처, 작업 흐름 정리
  • docs/CREDITS.md: 비주얼·사운드·폰트·도구 영역별 출처 표 템플릿
  • docs/asset-licenses/README.md: 원본 LICENSE/README/attribution 파일 보관 위치 안내

라이선스 원본은 Resources/가 아니라 docs/asset-licenses/에 보관하도록 정리했습니다. Resources/Sprites에는 런타임에 불러올 PNG만 둡니다.

Resources/Sprites/ 폴더

자산이 들어올 자리를 미리 정해 두고 빠른 시작 README를 동봉했습니다. Unity Assets 아래에 들어가는 파일이라 Sprites.meta, README.md.meta도 함께 추가했습니다.

영향 범위

  • 게임플레이 로직 변경 없음
  • 인식기·점수·진행 조건과 무관
  • 외부 자산이 한 장도 없는 현재 상태에서는 동작이 완전히 동일

검증

  • git diff --check
  • node scripts/validate-doc-state.mjs

Unity 코드 경로는 PixelArtFactory의 외부 로더 추가뿐이며, 현재 외부 PNG가 없을 때는 procedural fallback을 그대로 사용합니다.

후속 작업

이 PR 머지 후 별도로 진행:

  • 후보 자산 팩 평가·다운로드·라이선스 보관
  • 환경(FloorTile, WallTrim, Rug, Bookshelf, Candle) 먼저 교체로 톤 결정
  • 캐릭터(Player, Station)와 룬(RuneCircle, FireRune 등) 후속
  • 톤이 결정되면 docs/GAME_DESIGN.md의 비주얼 기준을 갱신

관련

procedural 도형의 비주얼 천장을 벗어나기 위해 외부 픽셀 아트 자산으로 점진적 교체할 수 있는 구조를 만든다.

- PixelArtFactory.CreateSprite가 호출 시 먼저 Resources/Sprites/<Kind>.png를 찾아 있으면 그걸 그대로 사용하고, 없을 때만 기존 procedural 도형으로 fallback. 결과는 메모리 캐시되어 missing 파일도 디스크를 한 번만 친다.
- PNG 캐시를 비울 ResetExternalSpriteCache() 공개 헬퍼 추가 (에디터 reload·PlayMode 테스트용).
- docs/SPRITE_GUIDE.md 신규: 파일 경로·명명 규칙, 해상도·PPU·필터·팔레트 권장, 로더 동작 설명, 라이선스 호환 표, 후보 자산 출처 (Kenney, OpenGameArt, itch.io, Lospec), 작업 흐름.
- docs/CREDITS.md 신규: 비주얼·사운드·폰트·도구 영역별 출처 표 템플릿. CC-BY 자산 표기 의무 명시.
- Resources/Sprites/ 폴더와 빠른 시작 README 추가로 자산이 들어올 자리를 미리 정해 둠.

외부 자산이 한 장도 없으면 게임은 기존 procedural 도형 그대로 동작. 호환성 변경 없음.
@sw1029 sw1029 merged commit 1599d2c into sw1029:main May 30, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants