Skip to content

Repository files navigation

Argode

Argode

A powerful and flexible visual novel framework for Godot Engine, designed to make creating interactive narratives simple and enjoyable.

๐ŸŒŸ Features

๐Ÿ“– Visual Novel Framework

  • RGD Script Language: Easy-to-learn custom scripting language for visual novels
  • Character System: Define characters with multiple sprites, expressions, and voice sets
  • Scene Management: Seamless transitions between backgrounds, characters, and UI elements
  • Text Animation: Beautiful typewriter effects and text animations
  • Audio Integration: Background music, sound effects, and voice acting support

๐Ÿ’พ Advanced Save System

  • Screenshot Thumbnails: Automatic Base64-encoded screenshot thumbnails for save slots
  • Temporary Screenshots: Capture UI-free game scenes for clean save thumbnails
  • Auto-Save: Automatic saves at key story points (slot 0)
  • Manual Save: Player-controlled saves in slots 1 and above
  • Encrypted Data: AES encryption for save data security

๐ŸŽจ Customizable UI

  • AdvScreen: Advanced screen management system
  • Custom Themes: Fully customizable visual themes
  • Responsive Design: Adaptive UI that works on different screen sizes
  • Menu Integration: Built-in game menus and settings screens

๐Ÿ”ง Developer-Friendly

  • Custom Commands: Extend functionality with GDScript integration
  • Asset Management: Efficient resource loading and management
  • Debug Tools: Built-in debugging and testing utilities
  • Documentation: Comprehensive bilingual documentation

๐Ÿš€ Quick Start

Installation

  1. Clone the repository:

    git clone https://github.com/AheadGameStudio/Argode.git
    cd Argode
  2. Open in Godot:

    • Launch Godot Engine (4.x required)
    • Click "Import" and select the project.godot file
    • Wait for the project to import and compile
  3. Run the demo:

    • Press F5 or click the play button
    • Select the main scene when prompted (or create a new scene for your game)

Basic Usage

  1. Create your first scenario:

    # scenarios/my_story.rgd
    character yuko "Yuko" color:#4A90E2
    
    label start:
    
        scene bg common/bg_room.png
        
        yuko happy "Hello! Welcome to Argode!"
        yuko normal "This is your first visual novel scene."
        
        menu:
            "Continue the story":
                yuko excited "Great! Let's explore more features..."
                jump next_scene
            "Save the game":
                save 1
                yuko normal "Game saved! You can load it anytime."
                jump next_scene
    
    label next_scene:
    
        yuko normal "Thanks for trying Argode!"
        return
    
  2. Load the scenario:

    # Call this in your Main scene.
    
    # Specify the message window that inherits from ArgodeScreen and was added to the scene
    @onready var argode_gui: ArgodeScreen = %ArgodeGui
    
    func _ready() -> void:
        # Wait for the message window to be ready
        await argode_gui.screen_ready
    
        # Ensure both ArgodeSystem and UIManager exist to avoid errors
        if ArgodeSystem and ArgodeSystem.UIManager:
            # Jump to the 'start' label to begin
            argode_gui.jump_to("start")
        else:
            print("โŒ ArgodeSystem or UIManager not found")

๐Ÿ“š Documentation

Key Topics

Visit our online documentation for detailed guides:

๐ŸŽฎ Core Commands

Basic Commands

  • character - Defines a character with sprites and properties
  • scene - Sets the background image and scene
  • audio - Plays audio data
  • menu - Creates interactive choices

Save System Commands

  • save [slot] - Saves the game to a specified slot (1 or higher)
  • load [slot] - Loads the game from a specified slot (0 or higher)
  • capture - Takes a temporary screenshot for the save thumbnail

Advanced Commands

  • fade - Screen transitions and effects
  • wait - Pauses execution for timing control
  • set - Creates variables, arrays, and dictionaries

๐Ÿ› ๏ธ Development

Requirements

  • Godot Engine 4.x
  • Basic knowledge of GDScript (for custom commands)

Development Tools

VS Code RGD Syntax Highlighter

For the best development experience, install our official VS Code extension:

Argode RGD Syntax Highlighter

โœจ Features:

  • Syntax Highlighting: Full support for RGD script syntax with beautiful color themes
  • Smart Indentation: Automatic indentation for labels, menus, and choices
  • Code Folding: Collapsible label blocks for better organization

๐Ÿ“ฆ Installation:

  1. Download the .vsix file from the releases page
  2. Open VS Code โ†’ Extensions (Ctrl+Shift+X)
  3. Click "..." โ†’ "Install from VSIX"
  4. Select the downloaded file

Project Structure

If you create definition files with a .rgd extension inside the definitions directory, ArgodeSystem will automatically load them first. Similarly, .gd files in custom/commands that inherit from BaseCustomCommand are also automatically loaded as user-defined custom commands.

addons/argode/          # Core framework files
โ”œโ”€โ”€ core/               # Main system components
โ”œโ”€โ”€ builtin/            # Built-in commands
โ”œโ”€โ”€ commands/           # Command handling system
โ””โ”€โ”€ managers/           # Game state managers

custom/                 # Your custom commands (optional)
โ””โ”€โ”€ commands/          # Custom command implementations

definitions/            # Asset and character definitions (optional)
โ”œโ”€โ”€ assets.rgd          # Image, audio, and UI definitions
โ”œโ”€โ”€ characters.rgd      # Character definitions
โ””โ”€โ”€ variables.rgd       # Global variable definitions

scenarios/              # Story scripts (.rgd files)
โ””โ”€โ”€ main.rgd            # Scenario file

Root files:
โ”œโ”€โ”€ project.godot       # Godot project file
โ””โ”€โ”€ README.md           # This file

Documentation: Full documentation is available online at https://aheadgamestudio.github.io/Argode/

Note: Development files (test/, tools/, assets/, scenes/, docs/, etc.) are excluded from distribution to keep the framework clean and focused.

Creating Custom Commands

# custom/commands/MyCommand.gd
extends BaseCustomCommand

func _init():
    command_name = "mycommand"
    description = "My custom command"

func execute(args: Array, context: Dictionary) -> Dictionary:
    # Your custom logic here
    return {"success": true}

๐Ÿค Contributing

We welcome contributions! Please read our Contributing Guidelines before submitting pull requests.

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

๐Ÿ“„ License

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

๐Ÿ”— Links

๐Ÿ™ Acknowledgements

Thank you to all contributors who help make Argode better for the visual novel development community.


Made with โค๏ธ for visual novel creators using Godot Engine

About

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages