Skip to content

Welcome to GodthroneRPG, the ultimate Turn-based RPG game!

Notifications You must be signed in to change notification settings

GODiiKING/GodthroneRPG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฐ GodthroneRPG

GodthroneRPG Gameplay

GodthroneRPG is a sophisticated turn-based role-playing game built with Kaplay, delivering an immersive pixel-art experience with deep strategic gameplay mechanics. Embark on epic quests, engage in tactical combat, and forge your legend in a world where every decision matters.


๐Ÿ“š Table of Contents


๐ŸŒŸ Overview

GodthroneRPG represents a modern take on classic turn-based RPGs, combining nostalgic gameplay elements with contemporary game design principles. Built on the robust Kaplay engine, the game features a modular architecture that supports complex gameplay systems while maintaining performance and extensibility.

GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay GodthroneRPG Gameplay

The game emphasizes strategic decision-making, character progression, and immersive storytelling through its carefully crafted mechanics and atmospheric pixel-art presentation.

GodthroneRPG Gameplay


๐Ÿ—๏ธ System Architecture

The following UML class diagram illustrates the core architecture and relationships within GodthroneRPG:

classDiagram
    class GameEngine {
        +Kaplay kaplay
        +SceneManager sceneManager
        +InputHandler inputHandler
        +initialize()
        +update()
        +render()
    }

    class SceneManager {
        +Scene currentScene
        +Map~string, Scene~ scenes
        +switchScene(sceneName: string)
        +addScene(name: string, scene: Scene)
        +getCurrentScene(): Scene
    }

    class Scene {
        <<abstract>>
        +string name
        +boolean isActive
        +enter()
        +exit()
        +update(deltaTime: float)
        +render()
    }

    class ExplorationScene {
        +Player player
        +WorldMap worldMap
        +Camera camera
        +handleMovement()
        +checkCollisions()
        +triggerEvents()
    }

    class BattleScene {
        +Player player
        +Enemy[] enemies
        +BattleSystem battleSystem
        +UI battleUI
        +initializeBattle()
        +processTurn()
        +checkBattleEnd()
    }

    class MenuScene {
        +UI menuUI
        +SaveSystem saveSystem
        +displayMenu()
        +handleMenuSelection()
    }

    class Character {
        <<abstract>>
        +string name
        +Stats stats
        +Inventory inventory
        +Position position
        +Sprite sprite
        +takeDamage(amount: int)
        +heal(amount: int)
        +isAlive(): boolean
    }

    class Player {
        +int experience
        +int level
        +Quest[] activeQuests
        +gainExperience(amount: int)
        +levelUp()
        +addQuest(quest: Quest)
    }

    class Enemy {
        +EnemyType type
        +int reward
        +AI aiController
        +performAction(): Action
        +dropLoot(): Item[]
    }

    class Stats {
        +int health
        +int maxHealth
        +int mana
        +int maxMana
        +int attack
        +int defense
        +int speed
        +int luck
        +calculateDamage(attacker: Character): int
        +applyBuff(buff: Buff)
    }

    class Inventory {
        +Item[] items
        +int maxCapacity
        +addItem(item: Item): boolean
        +removeItem(item: Item): boolean
        +useItem(item: Item, target: Character)
        +getItemCount(itemType: ItemType): int
    }

    class Item {
        <<abstract>>
        +string name
        +string description
        +ItemType type
        +int value
        +Sprite icon
        +use(target: Character)
    }

    class HealingItem {
        +int healingAmount
        +use(target: Character)
    }

    class BuffItem {
        +Buff buff
        +int duration
        +use(target: Character)
    }

    class WeaponItem {
        +int attackBonus
        +WeaponType weaponType
        +use(target: Character)
    }

    class BattleSystem {
        +Character[] participants
        +TurnQueue turnQueue
        +ActionProcessor actionProcessor
        +initializeBattle(player: Player, enemies: Enemy[])
        +processTurn()
        +calculateTurnOrder()
        +executeAction(action: Action)
    }

    class Action {
        <<abstract>>
        +Character actor
        +Character[] targets
        +execute()
        +canExecute(): boolean
    }

    class AttackAction {
        +int damage
        +execute()
    }

    class UseItemAction {
        +Item item
        +execute()
    }

    class SkillAction {
        +Skill skill
        +int manaCost
        +execute()
    }

    class WorldMap {
        +Tile[][] tiles
        +NPC[] npcs
        +CollisionLayer collisionLayer
        +EventTrigger[] eventTriggers
        +getTileAt(x: int, y: int): Tile
        +checkCollision(position: Position): boolean
    }

    class UI {
        +UIElement[] elements
        +boolean isVisible
        +show()
        +hide()
        +update()
        +render()
    }

    class SaveSystem {
        +GameState currentState
        +save(slot: int)
        +load(slot: int): GameState
        +deleteState(slot: int)
        +hasState(slot: int): boolean
    }

    %% Relationships
    GameEngine --> SceneManager
    GameEngine --> InputHandler
    SceneManager --> Scene
    Scene <|-- ExplorationScene
    Scene <|-- BattleScene
    Scene <|-- MenuScene
    
    ExplorationScene --> Player
    ExplorationScene --> WorldMap
    BattleScene --> Player
    BattleScene --> Enemy
    BattleScene --> BattleSystem
    
    Character <|-- Player
    Character <|-- Enemy
    Character --> Stats
    Character --> Inventory
    
    Player --> Quest
    Enemy --> AI
    
    Inventory --> Item
    Item <|-- HealingItem
    Item <|-- BuffItem
    Item <|-- WeaponItem
    
    BattleSystem --> Action
    Action <|-- AttackAction
    Action <|-- UseItemAction
    Action <|-- SkillAction
    
    WorldMap --> Tile
    WorldMap --> NPC
    
    Scene --> UI
    MenuScene --> SaveSystem
Loading

โœจ Features

๐Ÿ‘ค Player Experience

  • ๐Ÿšถ Dynamic Exploration: Navigate richly detailed environments with interactive elements
  • ๐Ÿ“Š Character Progression: Deep leveling system with customizable stat allocation
  • ๐ŸŽ’ Advanced Inventory: Comprehensive item management with categorization and sorting
  • ๐Ÿ’ฌ Interactive Dialogue: Engaging conversations with NPCs that affect story outcomes
  • ๐Ÿ† Achievement System: Track progress and unlock rewards for various accomplishments

โš”๏ธ Combat System

  • ๐ŸŽฏ Strategic Turn-Based Combat: Plan your moves carefully in tactical battles
  • โšก Skill System: Unlock and master powerful abilities as you progress
  • ๐Ÿ›ก๏ธ Equipment Management: Equip weapons, armor, and accessories for stat bonuses
  • ๐ŸŽฒ Dynamic Damage Calculation: Combat outcomes influenced by stats, equipment, and RNG
  • ๐Ÿ‘ฅ Party Formation: Build and manage a team of diverse characters

๐ŸŽฎ Game Mechanics

  • ๐Ÿ’พ Robust Save System: Multiple save slots with detailed progress tracking
  • ๐ŸŒ Procedural Events: Random encounters and events that keep gameplay fresh
  • ๐Ÿ“ˆ Difficulty Scaling: Adaptive challenge that grows with player progression
  • ๐ŸŽต Dynamic Audio: Immersive soundtrack that responds to game state
  • โš™๏ธ Customizable Settings: Adjust graphics, audio, and gameplay preferences

๐Ÿ”ง Technical Stack

  • ๐ŸŽฎ Engine: Kaplay (JavaScript game development framework)
  • ๐ŸŽจ Graphics: Custom pixel-art sprites and animations
  • ๐Ÿ”Š Audio: Web Audio API for dynamic sound management
  • ๐Ÿ’พ Storage: LocalStorage for save data persistence
  • ๐Ÿ“ฑ Compatibility: Cross-platform support (Desktop, Mobile, Web)

๐Ÿ’ป Getting Started

โš™๏ธ Prerequisites

  • Node.js (v16.0 or higher) - Download here
  • npm (comes with Node.js) or yarn package manager
  • Modern web browser with ES6+ support (Chrome 80+, Firefox 75+, Safari 13+)

๐Ÿš€ Installation & Setup

  1. Clone the repository:

    git clone https://github.com/your-username/GodthroneRPG.git
    cd GodthroneRPG
  2. Install dependencies:

    npm install
    # or
    yarn install
  3. Install development tools (optional):

    npm install -g @kaplay/cli

๐Ÿ•น๏ธ Running the Game

Development Mode:

npm run dev
# or
yarn dev

Production Build:

npm run build
npm run preview

Testing:

npm run test

Access the game at http://localhost:5173/


๐Ÿ—‚๏ธ Project Structure

GodthroneRPG/
โ”œโ”€โ”€ ๐Ÿ“ src/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ scenes/          # Game scenes (exploration, battle, menu)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ entities/        # Character classes and game objects
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ systems/         # Core game systems (battle, inventory, save)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ ui/              # User interface components
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ utils/           # Utility functions and helpers
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ data/            # Game data (items, enemies, maps)
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ main.js          # Application entry point
โ”œโ”€โ”€ ๐Ÿ“ assets/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ sprites/         # Character and environment sprites
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ audio/           # Music and sound effects
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ maps/            # Level data and tilesets
โ”‚   โ””โ”€โ”€ ๐Ÿ“ ui/              # UI graphics and fonts
โ”œโ”€โ”€ ๐Ÿ“ docs/                # Documentation and guides
โ”œโ”€โ”€ ๐Ÿ“ tests/               # Unit and integration tests
โ”œโ”€โ”€ ๐Ÿ“„ package.json         # Project dependencies and scripts
โ”œโ”€โ”€ ๐Ÿ“„ vite.config.js       # Build configuration
โ””โ”€โ”€ ๐Ÿ“„ README.md           # This file

๐ŸŽฏ Gameplay Guide

Getting Started:

  1. Create your character and customize stats
  2. Complete the tutorial to learn basic mechanics
  3. Explore the starting village and accept your first quest
  4. Engage in battles to gain experience and loot
  5. Visit shops to upgrade equipment and buy supplies

Combat Tips:

  • Study enemy patterns and weaknesses
  • Balance offensive and defensive actions
  • Manage your resources (health, mana, items) carefully
  • Experiment with different skill combinations
  • Save before challenging boss encounters

Progression Strategy:

  • Focus on core stats that match your playstyle
  • Keep a diverse inventory of healing and buff items
  • Complete side quests for additional rewards
  • Explore thoroughly to find hidden treasures
  • Save frequently to preserve your progress

๐Ÿ”ฎ Future Roadmap

  • ๐ŸŒ Multiplayer Mode: Online co-op and competitive battles
  • ๐Ÿฐ Guild System: Join guilds and participate in group activities
  • ๐ŸŽญ Character Classes: Specialized roles with unique abilities
  • ๐ŸŒŸ Prestige System: End-game progression mechanics
  • ๐Ÿ“ฑ Mobile App: Native mobile version with touch controls
  • ๐ŸŽจ Mod Support: Community-created content and modifications
  • ๐ŸŒ Expanded World: Additional regions and storylines

๐Ÿค Contributing

We welcome contributions from the community! Please read our Contributing Guide for details on:

  • Code style and standards
  • Development workflow
  • Bug reporting process
  • Feature request guidelines
  • Pull request requirements

๐Ÿ“„ License

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


โญ Star this repository if you enjoy playing Godthrone RPG! โญ

๐ŸŽฎ Play Now | ๐Ÿ› Report Bug | ๐Ÿ’ก Request Feature

About

Welcome to GodthroneRPG, the ultimate Turn-based RPG game!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published