docs: Progress Quest 언급 제거 + README 전면 재작성
Some checks failed
CI / analyze-and-test (push) Has been cancelled
Some checks failed
CI / analyze-and-test (push) Has been cancelled
- README: 프로젝트 설명, 게임 시스템, 스탯 표 포함 재작성 - CLAUDE.md, ARCHITECTURE.md: PQ 참조 제거 - skill_data, pq_logic, game_state, game_mutations: 주석에서 PQ 언급 제거 - analysis/market-analysis: PQ 언급 제거
This commit is contained in:
@@ -68,7 +68,7 @@ Config.dfm에서 추출한 종족, 직업, 스킬, 포션, 스토리 데이터.
|
||||
|
||||
| 파일 | 역할 |
|
||||
|------|------|
|
||||
| `pq_config_data.dart` | PQ 원본 데이터 (몬스터, 아이템, 주문 등) |
|
||||
| `pq_config_data.dart` | 게임 원본 정적 데이터 (몬스터, 아이템, 주문 등) |
|
||||
| `class_data.dart` | 직업 정의 + 특성 |
|
||||
| `race_data.dart` | 종족 정의 + 특성 |
|
||||
| `skill_data.dart` | 68개 스킬 정의 |
|
||||
|
||||
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## 프로젝트 개요
|
||||
|
||||
Askii Never Die는 Progress Quest 6.4의 핵심 메커니즘을 기반으로, 독자적 세계관("디지털 판타지")과 확장된 시스템으로 재구성한 오프라인 싱글플레이어 방치형 RPG입니다. 네트워크 기능은 제외됩니다.
|
||||
Askii Never Die는 "디지털 판타지" 세계관의 오프라인 싱글플레이어 방치형 RPG입니다. ASCII 아트 비주얼과 자동 전투 시스템이 특징이며, 네트워크 기능은 제외됩니다.
|
||||
|
||||
## 빌드 및 실행
|
||||
|
||||
@@ -29,7 +29,7 @@ flutter test
|
||||
lib/
|
||||
├── main.dart # 앱 진입점
|
||||
├── data/ # 정적 데이터 (Config.dfm 추출 + 확장)
|
||||
│ ├── pq_config_data.dart # PQ 원본 정적 데이터
|
||||
│ ├── pq_config_data.dart # 게임 원본 정적 데이터
|
||||
│ ├── class_data.dart # 직업 데이터
|
||||
│ ├── race_data.dart # 종족 데이터
|
||||
│ ├── skill_data.dart # 스킬 데이터
|
||||
|
||||
63
README.md
63
README.md
@@ -1,6 +1,6 @@
|
||||
# Ascii Never Die
|
||||
# ASCII Never Die
|
||||
|
||||
Progress Quest 6.4의 핵심 메커니즘을 기반으로, "디지털 판타지" 세계관과 확장된 시스템으로 재구성한 오프라인 싱글플레이어 방치형 RPG.
|
||||
"디지털 판타지" 세계관의 오프라인 방치형 RPG. ASCII 아트 비주얼과 자동 전투 시스템으로, 켜두기만 하면 캐릭터가 성장합니다.
|
||||
|
||||
## 스크린샷
|
||||
|
||||
@@ -15,25 +15,47 @@ Progress Quest 6.4의 핵심 메커니즘을 기반으로, "디지털 판타지"
|
||||
|
||||
## 주요 기능
|
||||
|
||||
- **6개 화면** -- 타이틀/세이브 선택, 캐릭터 생성(3d6 스탯 롤), 게임 진행(장비/인벤토리/퀘스트/스킬/전투로그/스토리), 아레나 PvP, 명예의 전당, 설정
|
||||
- **완전 오프라인** -- 네트워크 불필요. 모든 게임 데이터와 세이브가 로컬에 저장
|
||||
- **수익화** -- AdMob 리워드/인터스티셜 광고 + IAP 광고 제거/프리미엄
|
||||
- **다국어 지원** -- 한국어, 영어, 일본어 (앱 UI + 게임 데이터)
|
||||
- **ASCII 아트 애니메이션** -- Canvas 기반 전투/탐험/마을 씬, 종족별 캐릭터 프레임
|
||||
- **보안** -- 세이브 파일 HMAC-SHA256 무결성 검증, IAP 영수증 RSA 서명 검증
|
||||
- **방치형 자동 전투** -- 전투, 레벨업, 퀘스트, 스토리가 자동으로 진행
|
||||
- **ASCII 아트 애니메이션** -- Canvas 기반 전투/탐험/마을 씬, 21개 종족별 캐릭터 프레임
|
||||
- **깊은 캐릭터 빌드** -- 21개 종족, 18개 직업, 68개 스킬, 11개 장비 슬롯
|
||||
- **로컬 아레나** -- 클리어한 캐릭터들끼리 1:1 전투, 장비 약탈
|
||||
- **완전 오프라인** -- 네트워크 불필요, 모든 데이터가 로컬에 저장
|
||||
- **다국어 지원** -- 한국어, 영어, 일본어
|
||||
|
||||
## 게임 시스템
|
||||
|
||||
### 스탯
|
||||
| 스탯 | 효과 |
|
||||
|------|------|
|
||||
| STR | 물리 공격력, 쳐내기 |
|
||||
| CON | 방어력, 최대 HP, 방패 방어 |
|
||||
| DEX | 크리티컬, 회피, 명중, 공격 속도 |
|
||||
| INT | 마법 공격력, DoT 데미지, MP |
|
||||
| WIS | 마법 방어력, DoT 틱 간격, MP |
|
||||
| CHA | 상점 할인 (최대 15%), 희귀 아이템 드롭률 보정 |
|
||||
|
||||
### 장비 희귀도
|
||||
Common → Uncommon → Rare → Epic → Legendary (스탯 1.0x ~ 3.0x)
|
||||
|
||||
### 스킬 시스템
|
||||
68개 전투 스킬 (공격/회복/버프/디버프), 쿨타임 기반, 자동 선택 AI
|
||||
|
||||
### 수익화
|
||||
- AdMob 리워드/인터스티셜 광고
|
||||
- IAP 광고 제거 + 프리미엄 (영구 5배속, 되돌리기 3회, 보물 상자 10개, 오프라인 2배)
|
||||
|
||||
## 기술 스택
|
||||
|
||||
| 구분 | 기술 |
|
||||
|------|------|
|
||||
| 프레임워크 | Flutter 3.x / Dart ^3.9.2 |
|
||||
| 상태 관리 | Stream + 직접 관리 |
|
||||
| 프레임워크 | Flutter 3.x / Dart 3.9+ |
|
||||
| 상태 관리 | ValueNotifier + Stream |
|
||||
| 코드 생성 | freezed + json_serializable |
|
||||
| DI | GetIt (서비스 로케이터) |
|
||||
| 광고 | google_mobile_ads 7.x |
|
||||
| 인앱결제 | in_app_purchase 3.x |
|
||||
| 보안 저장 | flutter_secure_storage, crypto (HMAC), pointycastle (RSA) |
|
||||
| 오디오 | just_audio |
|
||||
| 보안 | flutter_secure_storage, HMAC-SHA256, RSA 서명 검증 |
|
||||
| 오디오 | just_audio (BGM 11곡, SFX 10종) |
|
||||
| 폰트 | JetBrainsMono (ASCII), PressStart2P (레트로 UI) |
|
||||
|
||||
## 빌드 및 실행
|
||||
@@ -48,6 +70,9 @@ dart run build_runner build --delete-conflicting-outputs
|
||||
# 실행 (-d macos, -d chrome, -d android 등)
|
||||
flutter run
|
||||
|
||||
# 릴리즈 빌드 (난독화 포함)
|
||||
flutter build appbundle --obfuscate --split-debug-info=build/debug-info
|
||||
|
||||
# 검증
|
||||
dart format --set-exit-if-changed .
|
||||
flutter analyze
|
||||
@@ -58,7 +83,7 @@ flutter test
|
||||
|
||||
```
|
||||
lib/
|
||||
├── main.dart # 앱 진입점
|
||||
├── main.dart # 앱 진입점 + 에러 핸들링
|
||||
├── data/ # 정적 게임 데이터 (종족, 직업, 스킬, 포션, 스토리)
|
||||
├── l10n/ # 앱 UI 다국어 리소스 (arb)
|
||||
└── src/
|
||||
@@ -66,11 +91,12 @@ lib/
|
||||
├── core/
|
||||
│ ├── engine/ # 게임 루프, 전투, 보상, 스킬 등 30개 서비스
|
||||
│ ├── model/ # GameState, 장비, 스킬, 전투 등 데이터 모델
|
||||
│ ├── infrastructure/ # AdMob, IAP 외부 서비스 구현
|
||||
│ ├── infrastructure/ # AdMob, IAP 외부 서비스
|
||||
│ ├── di/ # GetIt 서비스 로케이터 + 인터페이스
|
||||
│ ├── audio/ # BGM/SFX 오디오 서비스
|
||||
│ ├── storage/ # 세이브/설정/통계 저장소
|
||||
│ └── util/ # RNG, 밸런스 상수, PQ 로직 헬퍼
|
||||
│ ├── logging/ # 로컬 에러 로거
|
||||
│ └── util/ # RNG, 밸런스 상수, 로직 헬퍼
|
||||
├── features/
|
||||
│ ├── front/ # 타이틀/세이브 선택
|
||||
│ ├── new_character/ # 캐릭터 생성
|
||||
@@ -80,8 +106,8 @@ lib/
|
||||
│ └── settings/ # 설정
|
||||
└── shared/ # 테마, 레트로 위젯, ASCII 애니메이션
|
||||
|
||||
example/pq/ # Delphi 원본 소스 (참조용)
|
||||
test/ # 단위/위젯/회귀 테스트 (25개 파일)
|
||||
test/ # 단위/위젯/회귀 테스트 (276개)
|
||||
analysis/ # 프로젝트 감사/시장 분석 리포트
|
||||
```
|
||||
|
||||
아키텍처 상세는 [ARCHITECTURE.md](ARCHITECTURE.md) 참조.
|
||||
@@ -90,7 +116,7 @@ test/ # 단위/위젯/회귀 테스트 (25개 파일)
|
||||
|
||||
| 버전 | 날짜 | 주요 내용 |
|
||||
|------|------|-----------|
|
||||
| 1.1.0 | 2026-03-30 | IAP RSA 검증, HMAC 세이브, CI, 테스트 105개 추가 |
|
||||
| 1.1.0 | 2026-03-30 | IAP RSA 검증, HMAC 세이브, CI, 아키텍처 개선, 테스트 276개 |
|
||||
| 1.0.1 | 2026-03-19 | 초기 릴리즈 (Google Play 내부 테스트) |
|
||||
|
||||
전체 변경 이력은 [CHANGELOG.md](CHANGELOG.md) 참조.
|
||||
@@ -99,5 +125,4 @@ test/ # 단위/위젯/회귀 테스트 (25개 파일)
|
||||
|
||||
비공개 프로젝트. 무단 배포 금지.
|
||||
|
||||
Progress Quest 원본 소스(`example/pq/`)는 참조용으로만 포함되어 있습니다.
|
||||
폰트 라이선스: JetBrains Mono (SIL OFL 1.1), Press Start 2P (SIL OFL 1.1).
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
## 프로젝트 포지셔닝
|
||||
|
||||
**장르**: 오프라인 방치형 Idle RPG + ASCII 아트
|
||||
**원형**: Progress Quest 6.4
|
||||
**원형**: 클래식 방치형 RPG
|
||||
**수익화**: AdMob 광고 + IAP 광고 제거 프리미엄 (₩9,900)
|
||||
**플랫폼**: Android (출시), iOS (예정)
|
||||
**다국어**: 한/영/일
|
||||
@@ -33,7 +33,7 @@
|
||||
## 3. Askii Never Die 차별화
|
||||
|
||||
1. **순수 ASCII 비주얼** — 그래픽 피로도 제로
|
||||
2. **Progress Quest 정통 계승** — Zero-player 철학의 모바일 최적화
|
||||
2. **방치형 RPG 정통 계승** — Zero-player 철학의 모바일 최적화
|
||||
3. **완전 오프라인** — 데이터/서버 의존 없음
|
||||
4. **3개 국어** — 텍스트 게임에서 현지화가 핵심 경쟁력
|
||||
|
||||
@@ -49,14 +49,14 @@
|
||||
|
||||
## 5. 타겟 유저
|
||||
|
||||
- **코어**: 30-40대 남성, IT 종사자, MUD/Progress Quest 경험자
|
||||
- **코어**: 30-40대 남성, IT 종사자, MUD/방치형 RPG 경험자
|
||||
- **서브**: 디지털 디톡스 선호 미니멀리즘 게이머
|
||||
- **페르소나**: "업무 중 옆에 켜두어도 눈치 안 보이는 게임"
|
||||
|
||||
## 6. 성장 전략
|
||||
|
||||
1. **커뮤니티 바이럴**: Reddit r/incremental_games, DC인사이드, 5ch
|
||||
2. **ASO 키워드**: ASCII, MUD, Progress Quest, Text RPG, Idle RPG
|
||||
2. **ASO 키워드**: ASCII, MUD, 방치형 RPG, Text RPG, Idle RPG
|
||||
3. **크로스 플랫폼**: Android → iOS → Steam (PC)
|
||||
4. **유저 기여**: ASCII 아트/이벤트 모딩 시스템 (장기)
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ import 'package:asciineverdie/src/core/model/skill.dart';
|
||||
|
||||
/// 게임 내 스킬 정의
|
||||
///
|
||||
/// PQ 스펠을 기반으로 68개 전투 스킬로 재구성
|
||||
/// 스펠 이름(영문)으로 스킬 조회 가능
|
||||
/// 68개 전투 스킬 정의
|
||||
/// 스킬 ID(영문)로 조회 가능
|
||||
class SkillData {
|
||||
SkillData._();
|
||||
|
||||
@@ -1081,9 +1081,9 @@ class SkillData {
|
||||
// 스펠 이름 → 스킬 매핑
|
||||
// ============================================================================
|
||||
|
||||
/// PQ 스펠 이름으로 스킬 조회
|
||||
/// 스킬 ID로 스킬 조회
|
||||
///
|
||||
/// 스펠 이름(영문)을 키로 사용하여 해당 전투 스킬을 반환
|
||||
/// 스킬 ID(영문)를 키로 사용하여 해당 전투 스킬을 반환
|
||||
static const Map<String, Skill> spellNameToSkill = {
|
||||
// 공격 스킬
|
||||
'Stack Trace': stackTrace,
|
||||
|
||||
@@ -5,7 +5,7 @@ import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/pq_config.dart';
|
||||
import 'package:asciineverdie/src/core/util/pq_logic.dart' as pq_logic;
|
||||
|
||||
/// Game state mutations that mirror the original PQ win/reward logic.
|
||||
/// 게임 상태 변경(mutation) 함수 — 보상, 장비, 스탯 획득 로직.
|
||||
class GameMutations {
|
||||
const GameMutations(this.config);
|
||||
|
||||
|
||||
@@ -28,8 +28,7 @@ import 'package:asciineverdie/src/core/util/deterministic_random.dart';
|
||||
|
||||
/// 게임 전체 상태 (Game State)
|
||||
///
|
||||
/// Progress Quest 구조를 미러링하는 최소 스켈레톤 상태.
|
||||
/// 로직은 Delphi 소스에서 충실하게 포팅됨.
|
||||
/// 게임 진행에 필요한 모든 데이터를 포함하는 불변(immutable) 상태 객체.
|
||||
class GameState {
|
||||
GameState({
|
||||
required DeterministicRandom rng,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/// Progress Quest 핵심 로직 모듈
|
||||
/// 게임 핵심 로직 모듈
|
||||
///
|
||||
/// 원본 Delphi 소스(Main.pas / NewGuy.pas)의 유틸리티 함수들을 포팅.
|
||||
/// 유틸리티 함수 모음.
|
||||
/// 이 파일은 분할된 모듈들을 re-export하여 기존 코드 호환성 유지.
|
||||
|
||||
// 랜덤/확률 함수
|
||||
|
||||
Reference in New Issue
Block a user