Skip to content

Latest commit

ย 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NarrativeProtagonist

License: MIT Kotlin Spring Boot

์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์Šคํ† ๋ฆฌ ์ œ์ž‘์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ฐฑ์—”๋“œ ์—”์ง„

๋ณต์žกํ•œ ๋ถ„๊ธฐํ˜• ์Šคํ† ๋ฆฌ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” API ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.


๐Ÿ’ก Why This Project?

๊ฒŒ์ž„ ์‹œ๋‚˜๋ฆฌ์˜ค, ํŠนํžˆ ๋ถ„๊ธฐํ˜• ์Šคํ† ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด:

  • ์„ ํƒ์ง€๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ์–ด๋–ค ๋ฃจํŠธ๊ฐ€ ์–ด๋””๋กœ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต๋‹ค
  • ์—‘์…€์ด๋‚˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ๋Š” ๋ณต์žกํ•œ ๋ถ„๊ธฐ ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค
  • ๊ธฐ์กด ๋น„์ฃผ์–ผ ๋…ธ๋ฒจ ํˆด๋“ค์€ ๊ฒŒ์ž„ ์ œ์ž‘์—๋งŒ ์ง‘์ค‘๋˜์–ด ์žˆ๊ณ , ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์Šคํ† ๋ฆฌ ์ž‘์„ฑ์—๋Š” ๊ณผ๋„ํ•˜๋‹ค
  • ์กฐ๊ฑด๋ถ€ ๋ถ„๊ธฐ, ์•„์ดํ…œ, ๋ณ€์ˆ˜ ์‹œ์Šคํ…œ์„ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ๋„๊ตฌ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค

NarrativeProtagonist๋Š” ์ž‘๊ฐ€ ์ค‘์‹ฌ์˜ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์Šคํ† ๋ฆฌ ์ œ์ž‘ ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ถ„๋ฆฌ๋œ API ๊ธฐ๋ฐ˜ ์„ค๊ณ„๋กœ, ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ(์›น, ๋ชจ๋ฐ”์ผ, CLI)์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋ถ„๊ธฐ ๋กœ์ง์„ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์†”๋ฃจ์…˜๊ณผ์˜ ์ฐจ๋ณ„์ 

  • โœ… ๋ฐฑ์—”๋“œ API๋กœ ๋ถ„๋ฆฌ - ์–ด๋–ค UI๋“  ์ž์œ ๋กญ๊ฒŒ ๋ถ™์ผ ์ˆ˜ ์žˆ์Œ
  • โœ… Variable/Item ์‹œ์Šคํ…œ ๋ถ„๋ฆฌ - ์Šคํ† ๋ฆฌ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๋ช…ํ™•ํ•จ
  • โœ… Random Event ์ฒด๊ณ„ํ™” - ์กฐ๊ฑด + ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ๊ด€๋ฆฌ
  • โœ… ๋ฒ„์ „ ๊ด€๋ฆฌ - ๋…์ž ์„ธ์…˜๊ณผ ์ž‘๊ฐ€ ์ˆ˜์ • ๋ถ„๋ฆฌ
  • โœ… ๋‹ค์–‘ํ•œ Export ํ˜•์‹ - JSON, HTML, Ren'Py, Ink ์ง€์› ์˜ˆ์ •
  • โœ… ์˜คํ”ˆ์†Œ์Šค & ๋ฌด๋ฃŒ - Self-hosted ๊ฐ€๋Šฅ

โœจ Key Features

๐Ÿ  Multi-tenant Architecture

  • ์œ ์ €๋ณ„ Sandbox(์ž‘์—… ๊ณต๊ฐ„) ์ž๋™ ์ƒ์„ฑ
  • Private/Public ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ
  • JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ

๐Ÿงฉ Flexible Node System

  • ENTRY - ์Šคํ† ๋ฆฌ ์‹œ์ž‘์ 
  • SCENE - ๋‹จ์ผ ์žฅ๋ฉด (์ž๋™ ์ง„ํ–‰)
  • BRANCH - ์„ ํƒ์ง€ ๋ถ„๊ธฐ
  • ENDING - ์Šคํ† ๋ฆฌ ์ข…์ฐฉ์ 

๐ŸŽ’ Rich State Management

  • Variable - ์ˆ˜์น˜/๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜ ์ƒํƒœ (health, age, respect ๋“ฑ)
  • Item - ์•„์ดํ…œ ์†Œ์ง€ ๋ฐ ํšจ๊ณผ ์‹œ์Šคํ…œ
  • Effects - ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์‹œ ์ž๋™ ์‹คํ–‰๋˜๋Š” ์ƒํƒœ ๋ณ€๊ฒฝ

๐ŸŽฒ Random Event System

  • ์กฐ๊ฑด(Conditions) + ํ™•๋ฅ (Probability) ๊ธฐ๋ฐ˜
  • SCENE ๋…ธ๋“œ์—์„œ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „ ๋ฐœ๋™
  • Tag ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ

๐Ÿ”– Version Management

  • Publish ์‹œ์ ์— ์ „์ฒด ์Šคํ† ๋ฆฌ ์Šค๋ƒ…์ƒท ์ €์žฅ
  • ๋…์ž๊ฐ€ ์ฝ๋Š” ๋™์•ˆ ์ž‘๊ฐ€์˜ ์ˆ˜์ •์‚ฌํ•ญ ์˜ํ–ฅ ์—†์Œ
  • ๋…์ž๋ณ„ ์ง„ํ–‰ ์ƒํƒœ(Session) ๋…๋ฆฝ ๊ด€๋ฆฌ

๐Ÿ“ฆ Multiple Export Formats

  • JSON - ๋ฒ”์šฉ ๋ฐ์ดํ„ฐ ํ˜•์‹
  • Standalone HTML - ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ํ”Œ๋ ˆ์ด ๊ฐ€๋Šฅ
  • Ren'Py Script - ๋น„์ฃผ์–ผ ๋…ธ๋ฒจ ์ œ์ž‘์šฉ (์˜ˆ์ •)
  • Ink Script - Unity ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์šฉ (์˜ˆ์ •)

๐ŸŽฏ Use Cases

Self-Hosted Story Platform

ํŒ€์ด๋‚˜ ์กฐ์ง ๋‚ด๋ถ€์—์„œ ์ž์ฒด ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํ”ฝ์…˜ ํ”Œ๋žซํผ ์šด์˜

Public Service

๋ˆ„๊ตฌ๋‚˜ ๊ฐ€์ž… ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ ์ž‘์„ฑ ํ”Œ๋žซํผ์œผ๋กœ ์šด์˜

Game Development Backend

  • ๋น„์ฃผ์–ผ ๋…ธ๋ฒจ, ํ…์ŠคํŠธ ์–ด๋“œ๋ฒค์ฒ˜ ๊ฒŒ์ž„์˜ ์Šคํ† ๋ฆฌ ์—”์ง„
  • Unity + Ink ์›Œํฌํ”Œ๋กœ์šฐ
  • Ren'Py ํ”„๋กœ์ ํŠธ ํ†ตํ•ฉ

Writing Tool

๋ณต์žกํ•œ ๋ถ„๊ธฐํ˜• ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ ๋ฐ ์‹คํ—˜


๐Ÿš€ Quick Start

Prerequisites

  • JDK 17+
  • Docker & Docker Compose
  • Gradle 8+

Installation

# Clone repository
git clone https://github.com/yourusername/NarrativeProtagonist.git
cd NarrativeProtagonist

# Start infrastructure (PostgreSQL, Redis)
docker-compose up -d

# Run application
./gradlew bootRun

First API Call

# Health check
curl http://localhost:8080/actuator/health

# Create user (signup)
curl -X POST http://localhost:8080/api/auth/signup \
  -H "Content-Type: application/json" \
  -d '{"username":"writer","email":"writer@example.com","password":"password123"}'

# Login
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"writer@example.com","password":"password123"}'

๐Ÿ—๏ธ Tech Stack

Category Technology
Language Kotlin
Framework Spring Boot 3
Database PostgreSQL
ORM JPA / Exposed
Cache Redis (์˜ˆ์ •)
Auth JWT
Build Gradle (KTS)
Containerization Docker

๐Ÿ“– Documentation

  • Architecture Guide - ์‹œ์Šคํ…œ ๊ตฌ์กฐ ๋ฐ ERD
  • API Documentation - ์—”๋“œํฌ์ธํŠธ ๋ช…์„ธ (Swagger ์˜ˆ์ •)
  • Setup Guide - ์ƒ์„ธ ์„ค์น˜ ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • Contributing Guide - ๊ธฐ์—ฌ ๋ฐฉ๋ฒ•

๐Ÿ“ Project Structure

narrative-protagonist/
 โ”œโ”€ src/
 โ”‚   โ””โ”€ main/kotlin/com/narrativeprotagonist/
 โ”‚       โ”œโ”€ domain/          # ๋„๋ฉ”์ธ ๋กœ์ง
 โ”‚       โ”‚   โ”œโ”€ user/
 โ”‚       โ”‚   โ”œโ”€ sandbox/
 โ”‚       โ”‚   โ”œโ”€ project/
 โ”‚       โ”‚   โ”œโ”€ node/
 โ”‚       โ”‚   โ”œโ”€ item/
 โ”‚       โ”‚   โ”œโ”€ variable/
 โ”‚       โ”‚   โ”œโ”€ condition/
 โ”‚       โ”‚   โ”œโ”€ effect/
 โ”‚       โ”‚   โ””โ”€ random/
 โ”‚       โ”œโ”€ application/     # ์œ ์Šค์ผ€์ด์Šค
 โ”‚       โ”œโ”€ api/             # REST API
 โ”‚       โ””โ”€ infra/           # ์ธํ”„๋ผ ๊ตฌํ˜„
 โ”œโ”€ docs/                    # ๋ฌธ์„œ
 โ”œโ”€ docker-compose.yml
 โ”œโ”€ build.gradle.kts
 โ””โ”€ README.md

๐Ÿ—บ๏ธ Roadmap

v0.1 โ€” Core Domain Setup (๐Ÿšง In Progress)

  • Sandbox / User / Project ๊ธฐ๋ณธ ๊ตฌ์กฐ
  • Entry / Scene / Branch / Ending ํƒ€์ž… ์„ค๊ณ„
  • JWT ์ธ์ฆ ์‹œ์Šคํ…œ

v0.2 โ€” Item / Variable / Effect System

  • Effect engine ๊ตฌํ˜„
  • Conditions ์—”์ง„ ๊ธฐ๋ณธ ๋ฒ„์ „

v0.3 โ€” Random Event System

  • SCENE ๊ธฐ๋ฐ˜ ํ™•๋ฅ  ๋ถ„๊ธฐ
  • Condition + Probability ์กฐํ•ฉ

v0.4 โ€” Publish & Versioning

  • NodeSet ๋ฒ„์ „ ์Šค๋ƒ…์ƒท ์ €์žฅ
  • Reader ์„ธ์…˜ ๊ตฌ์กฐ ๊ตฌ์ถ•

v0.5 โ€” Export System (Phase 1)

  • JSON Export
  • Standalone HTML Export

v0.6 โ€” Export System (Phase 2)

  • Ren'Py Script Export
  • Ink Script Export (Unity)

v1.0 โ€” Full Release

  • API ๋ฌธ์„œํ™” (Swagger/OpenAPI)
  • ์ƒ˜ํ”Œ ์Šคํ† ๋ฆฌ ์ œ๊ณต
  • Docker ์ด๋ฏธ์ง€ ๋ฐฐํฌ (Docker Hub)
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ & CI/CD

๐Ÿค Contributing

๊ธฐ์—ฌ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

  1. ์ด ์ €์žฅ์†Œ๋ฅผ Fork ํ•˜์„ธ์š”
  2. Feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š” (git checkout -b feature/AmazingFeature)
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜์„ธ์š” (git commit -m 'Add some AmazingFeature')
  4. ๋ธŒ๋žœ์น˜์— Push ํ•˜์„ธ์š” (git push origin feature/AmazingFeature)
  5. Pull Request๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”

์ž์„ธํ•œ ๋‚ด์šฉ์€ CONTRIBUTING.md๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

Good First Issues

  • ๋ผ๋ฒจ์ด good first issue์ธ ์ด์Šˆ๋“ค์„ ํ™•์ธํ•ด๋ณด์„ธ์š”
  • ๊ถ๊ธˆํ•œ ์ ์€ GitHub Discussions์—์„œ ์งˆ๋ฌธํ•ด์ฃผ์„ธ์š”

๐Ÿ“ž Contact & Community


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํ”ฝ์…˜๊ณผ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


โš ๏ธ ํ˜„์žฌ ์ƒํƒœ: Work In Progress

์ด ํ”„๋กœ์ ํŠธ๋Š” ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. Production ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ์ฃผ์„ธ์š”.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages