Skip to content

Conversation

@toymak3r
Copy link
Member

No description provided.

This commit adds a complete Godot plugin that integrates the Goethe Dialog System
library to provide powerful dialog management capabilities for visual novels and
interactive narratives.

## Features Added:

### Core Plugin Structure:
- Plugin entry point (plugin.gd) with custom type registration
- GDExtension configuration for C++ bindings
- CMake build system for cross-platform compilation
- Build script with dependency management

### GDScript Integration:
- GoetheDialogManager: Main dialog management node
- GoetheDialogNode: Individual dialog node resource
- GoetheCharacter: Character definition resource
- Complete dialog loading/saving from YAML files

### C++ Extension:
- GoetheDialogExtension: C++ bindings for libgoethe
- Type registration system for GDExtension
- Integration with existing Goethe library components

### Editor Tools:
- Custom dialog editor with visual interface
- File menu integration for dialog management
- Scene-based editor for dialog creation

### Examples:
- Basic dialog example with simple UI
- Visual novel example with character management
- Complete documentation and usage guides

### Testing:
- Comprehensive test suite for compression and GPKG functionality
- Sample dialog files and package creation tests
- Build verification and dependency checking

## Technical Details:
- Supports both simple and advanced GOETHE YAML formats
- Character management with portraits, expressions, and voice
- Conditional logic system with flags and variables
- Effect system for game state changes
- Compression support with multiple backends
- Statistics tracking for performance monitoring

## Build System:
- CMake-based build with dependency detection
- Cross-platform support (Linux, Windows, macOS)
- Integration with existing Goethe library source
- Proper error handling and dependency management

The plugin is ready for use in Godot 4.x projects and provides a complete
solution for visual novel dialog management.
Add CMake compilation database file to .gitignore to prevent
build artifacts from being tracked in version control.
This commit completes the Goethe Dialog Plugin with all missing features:

## New Features Added:

### Condition System:
- Complete condition evaluation system with autoload integration
- Support for flags, variables, quest states, chapters, areas
- Dialog history tracking and choice history
- Event system with timers and time-based conditions
- Inventory system integration
- Door and access control system
- Complex condition logic (ALL, ANY, NOT operators)

### Enhanced Dialog Manager:
- Advanced YAML parsing for both simple and advanced GOETHE formats
- Condition-based node visibility
- Effect system integration with 15+ effect types
- Proper effect application and signal emission
- Integration with condition system for game state management

### Scene Files:
- Dialog manager scene template
- Reusable dialog UI scene
- Complete visual novel example scene with all UI elements

### Visual Novel Example:
- Comprehensive visual novel implementation
- Character management with portraits and expressions
- Background switching system
- Music and sound effect integration
- Save/load system with JSON persistence
- Settings panel with volume and speed controls
- Auto and skip mode functionality
- Menu system with proper navigation

### C++ Extension:
- Complete C++ bindings implementation
- Integration with libgoethe compression and dialog systems
- Proper memory management and error handling
- Support for all dialog operations (load, save, add, remove)

## Technical Improvements:
- Proper signal handling and event propagation
- Memory-efficient dialog parsing
- Cross-platform compatibility
- Error handling and validation
- Performance optimizations

The plugin now provides a complete solution for visual novel and dialog-heavy game development in Godot.
@toymak3r toymak3r linked an issue Aug 24, 2025 that may be closed by this pull request
24 tasks
@toymak3r toymak3r merged commit ae545be into main Aug 24, 2025
32 of 76 checks passed
@toymak3r toymak3r deleted the 7-adding-godot-plugin-to-use-libgoethe-description branch August 24, 2025 06:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adding Godot Plugin to use libgoethe Description

2 participants