Roguelike game based on William Gibson's Sprawl trilogy
Project description
Roguelike Sprawl — Development Project
이 디렉토리는 Game/roguelike_sprawl/ 게임 프로젝트의 코드 베이스입니다. 게임 디자인 문서(../design/, ../decisions/, ../wiki/)와는 별개.
빠른 시작
1. 의존성 설치 (uv 사용, 권장)
cd Game/roguelike_sprawl/prototype
uv sync --all-extras
2. 폰트 다운로드 (최초 1회)
make download-font
이 명령은 data/fonts/terminal10x10_gs_tc.png (libtcod 공식 폰트)을 다운로드합니다.
3. 게임 실행
make run
# 또는
uv run roguelike-sprawl
빈 tcod 윈도우가 열리고, "You jack in. The world goes gray." 메시지가 표시됩니다. ESC로 종료.
3-1. 전체 게임 플로우 데모 (Phase 5+) ⭐
프롤로그부터 첫 전투까지 완전한 게임 흐름 체험:
make demo # 전체 데모 자동 진행 (Prologue → Briefing → Matrix → Combat)
make demo-fast # 빠른 타이핑
make demo-skip # 프롤로그 건너뛰기 (Briefing부터)
make play # 인터랙티브 모드 (직접 조작!)
🎮 인터랙티브 모드 INTERACTIVE_GUIDE.md:
- 방향키로 자유롭게 던전 탐험
- NPC와 대화하며 다양한 선택
- 전투에서 직접 스킬 선택
- 다중 경로와 결과
⚡ 빠른 시작: QUICK_START.md - 30초 안에 Combat 체험!
🎮 주요 조작법:
- 방향키 (↑↓←→): 이동 (Matrix) / 메뉴 선택
- ENTER: 확인/실행 (메뉴)
- SPACE: 액션 메뉴 (Matrix에서 노드 조작)
- ESC: 취소/나가기
- 1-9: 빠른 선택 (숫자 키)
📊 상태 피드백:
- 모든 행동이 화면 하단에 메시지로 표시
- Side panel에 현재 상황 및 다음 행동 안내
- 실시간 쿨다운 및 AP 상태 표시
📋 상시 상태 패널 (화면 우측, 28 columns):
- PLAYER: Grade, PPL, HP, AP (전투 중)
- WHERE: 현재 화면, 노드, 위치
- MISSION: 진행 중 미션, 보상, 목표
- INVENTORY: 보유 재료/아이템
- ACTIVITY: 최근 3개 행동 로그
- 자세한 내용:
STATUS_PANEL_GUIDE.md
🎨 시각적 피드백 (현재 노드 인식):
- 5가지 방법으로 현재 위치 표시
- Bright cyan 테두리 (
#═══║) - Yellow 텍스트
- Dark cyan 배경
- 화살표 마커 (
> < v ^) - "[ YOU ]" 라벨
- Bright cyan 테두리 (
- Title bar에 현재 노드 이름 표시
- 자세한 설명:
VISUAL_GUIDE.md
📖 자세한 플레이 가이드: DEMO_GUIDE.md 참고
- 조작법, 화면 설명, 전략 팁 포함
- 단계별 체크리스트
- 트러블슈팅
⚠️ 폰트 문제 해결:
한글 자막은 현재 [KO: N chars] 형태로 표시됩니다 (폰트 한계).
만약 영문도 깨져 보인다면:
-
텍스트 전용 데모로 내용 확인:
make text-demo # 터미널에서 텍스트로 출력
-
tcod 폰트 렌더링 테스트:
make test-tcod # 폰트가 제대로 로드되는지 확인
-
폰트 재다운로드:
rm data/fonts/terminal10x10_gs_tc.png make download-font
흐름:
- Prologue (타이핑 효과) — 깁슨 원작 오프닝
- Finn Briefing (NPC 대화) — 첫 미션 설명
- Matrix (노드 그래프) — 사이버스페이스 진입
- Combat (RT-MS) — ICE와의 첫 전투
제어:
- Space: 타이핑 스킵
- 방향키: Matrix 이동
- ENTER: Action Menu (ICE 노드에서 자동 열림)
- E: ENGAGE (전투 시작)
- 1-9: 스킬 사용
- Q: 종료
3-2. 개별 장면 시뮬레이터
깉슨 톤의 스토리를 타이핑 효과와 한글 자막으로 체험:
make prologue # 프롤로그 (기본 속도)
make prologue-fast # 프롤로그 (빠른 타이핑)
make briefing # Finn 브리핑 장면
기능:
- 타이핑 효과 (character-by-character reveal)
- 글리치 효과 (random character corruption)
- 영어 원문 + 한글 자막 (bilingual)
- NPC 초상화 (ASCII portraits)
- Space로 타이핑 스킵, ESC로 장면 종료
3-3. Phase 1-5 신규 데모 (Dungeon · VFX · 미션매핑 · ECS · Novel)
Phase 1-5 (ADR-0060, ADR-0061) 가 추가한 핵심 게임플레이를 헤드리스로 검증 (창 불필요):
PYTHONPATH=src .venv/bin/python scripts/play_dungeon_mode.py # Phase 1 — dungeon_mode + BSP
PYTHONPATH=src .venv/bin/python scripts/play_vfx_overlay.py # Phase 1.5 — 4 VFX spawners
PYTHONPATH=src .venv/bin/python scripts/play_mission_mapping.py # Phase 3 — Mission→Room
PYTHONPATH=src .venv/bin/python scripts/play_ecs_dungeon.py # Phase 4 — ECS DungeonSystem
PYTHONPATH=src .venv/bin/python scripts/play_novel_runtime.py # Phase 5 — Novel runtime
전부 0 종료 + 한 줄 요약 출력. 자세한 가이드: scripts/README.md 섹션 6.
4. 테스트 실행
make test
# 또는
uv run pytest
5. 린트 / 포맷 / 타입 체크
make lint # ruff check
make format # ruff format
make typecheck # mypy
디렉토리 구조
prototype/
├── pyproject.toml # uv / pip 프로젝트 설정
├── README.md # 본 문서
├── Makefile # 편의 명령
├── .gitignore
├── .editorconfig
├── .python-version
├── src/
│ └── roguelike_sprawl/ # Python 패키지
│ ├── __main__.py # 진입점
│ ├── engine/ # tcod 관련 (app, render, input, config)
│ ├── ecs/ # ECS-lite (entity, world)
│ ├── i18n/ # 번역 (translator)
│ ├── portraits/ # ASCII Portraits (manager)
│ └── data/ # 데이터 로더
├── tests/
│ ├── conftest.py
│ └── unit/ # 단위 테스트
├── data/
│ ├── i18n/ # en.json, ko.json
│ ├── portraits/ # portraits.json
│ ├── programs/ # programs.json
│ └── fonts/ # terminal10x10_gs_tc.png
├── scripts/
│ └── download_font.py # 폰트 다운로드
└── .github/
└── workflows/
└── ci.yml # GitHub Actions CI
Phase 상태
이 프로젝트는 Phase 5 (Vertical Slice) 완료. Phase 6 (콘텐츠 확장)에서 반복 보강.
- Phase 4 (완료): 빈 프로젝트, 빌드/테스트/린트/CI 가능, hello-world 실행
- Phase 5 (완료): 매트릭스, 전투 (RT-MS), 의뢰 시스템, BSP 던전, Novel Hook Dispatch
- Phase 6 (진입): 콘텐츠 확장, 추가 미션/ICE/엔딩/단편
게임 디자인
- 결정 사항:
../decisions/README.md - 디자인 명세:
../design/GDD.md - 세계관:
../wiki/world/ - 단계별 계획:
../ROADMAP.md
Python 버전
- 권장: Python 3.11+ (tcod, hatchling 호환)
- 테스트됨: 3.11, 3.12, 3.14 (3.14는 tcod 호환성 확인 필요)
라이선스
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file roguelike_sprawl-1.0.0b1.tar.gz.
File metadata
- Download URL: roguelike_sprawl-1.0.0b1.tar.gz
- Upload date:
- Size: 3.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8907978de749e077b5fd111b35c10f01b7bb669629dc09e4dad9e97a7f271aa9
|
|
| MD5 |
c5002ee09179fa750ead05e9db3094af
|
|
| BLAKE2b-256 |
ad7a59620fa44c91afb0ebe01a0bab9e5bb34bc7d36f39337813835879b83b40
|
File details
Details for the file roguelike_sprawl-1.0.0b1-py3-none-any.whl.
File metadata
- Download URL: roguelike_sprawl-1.0.0b1-py3-none-any.whl
- Upload date:
- Size: 356.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2e76bc30eb0b0df89fd6cb07ff6780cf5f03b0a659ecbc490e260af1228153c
|
|
| MD5 |
87cad1681f62468c0f4484a9e0f9d17a
|
|
| BLAKE2b-256 |
a2dfab4f18c203f451a0189e2cbc76545efc404b651db1d54d2cb9001653931d
|