Skip to content

gamesmiths-guild/forge

Repository files navigation

Forge Gameplay System

CI NuGet License

An Unreal GAS-like gameplay framework for developing games in C#.

Forge is an engine-agnostic gameplay framework designed for building robust game systems in C#. Inspired by Unreal Engine's Gameplay Ability System (GAS), Forge provides a centralized and controlled approach to managing attributes, effects, tags, abilities, events, and cues in your games. Forge is an engine-agnostic, data-driven system inspired by Unreal Engine’s Gameplay Ability System (GAS), designed to manage attributes, effects, abilities, tags, events, and cues in a structured way.

The framework eliminates the need to rebuild status systems for every game project by offering a flexible, data-driven architecture that works seamlessly with Unity, Godot, and other C#-compatible engines. With Forge, all attribute changes are handled through effects, ensuring organized and maintainable code even in complex gameplay scenarios.

Keywords: gameplay framework, C#, engine-agnostic, data-driven, attributes, gameplay effects, abilities, gameplay tags

Quick Start

New to Forge? Check out the Quick Start Guide to build your first Forge-powered entity in minutes.

Architecture Overview

Forge is built around core systems that work together to provide comprehensive gameplay functionality:

Core Systems

  • Attributes: Centralized attribute management with min/max values, channels, and controlled modifications.
  • Effects: Data-driven system for applying temporary or permanent changes to entities.
  • Tags: Hierarchical tagging system for entity classification and effect targeting.
  • Abilities: Creation, granting, activation, cooldowns, costs, and instancing rules for gameplay abilities.
  • Events: Gameplay event handling and propagation used for ability triggers and game logic reactions.
  • Cues: Visual and audio feedback system that bridges gameplay with presentation.

Entity Integration

Every game object that uses Forge implements the IForgeEntity interface, providing:

  • EntityAttributes - Manages all attributes and attribute sets.
  • EntityTags - Handles base and modifier tags with automatic inheritance.
  • EffectsManager - Controls effect application, stacking, and lifecycle.
  • EntityAbilities - Grants and activates abilities, handles cooldowns/costs, and manages instancing.
  • EventManager - Dispatches and listens to gameplay events for triggers and reactions.

Advanced Features

Forge supports a variety of gameplay mechanics through specialized subsystems:

Project Status

⚠️ Work in Progress - This project is currently under active development and not ready for production use.

Current Features ✅

  • Tags System: Complete hierarchical tag system with inheritance.
  • Attributes System: Full attribute management with modifiers and overrides.
  • Effects System: Comprehensive effect application with stacking support.
  • Cues System: Visual feedback system for effect application/removal.
  • Custom Calculators: Flexible logic execution for effects.
  • Abilities System: Ability granting, activation, instancing, costs, cooldowns, and tag-based requirements.
  • Events System: Gameplay event handling, tagging, and trigger support.

Planned Features 🚧

  • Multiplayer Support: Network replication for all systems.
  • Statescript: Backend support for state-based scripting of Ability behaviors.

Installation

Requirements

Forge targets:

  • .NET Standard 2.1 (for broad compatibility)
  • .NET 8 (for modern features)

Install via NuGet, reference the Forge project directly, or download the precompiled .dll from the Releases page.

NuGet (Recommended)

Install the package via .NET CLI:

dotnet add package Gamesmiths.Forge

Or search for Gamesmiths.Forge in the NuGet Package Manager UI in Visual Studio.

Manual Installation

If you need to build from source or make local changes:

  1. Clone this repository.
  2. Reference the Forge project in your solution.
  3. Follow the Quick Start Guide.

Documentation

For comprehensive documentation, explore the docs directory, starting with the documentation overview.

Contributing

This project is not currently accepting contributions as it's still in early development. However, if you're interested in contributing or have suggestions, feel free to reach out via GitHub issues or discussions.

License

Copyright © Gamesmiths Guild. See LICENSE for details.