Check out our latest project ✨ OpenChapter.io: free ebooks the way its meant to be 📖

CentriFuGe

An asset by coolmule0
The page banner background of a mountain and forest
CentriFuGe thumbnail image
CentriFuGe thumbnail image
CentriFuGe hero image

Quick Information

0 ratings
CentriFuGe icon image
coolmule0
CentriFuGe

A logic framework for card games with built-in turns, players, complex card actions, and undo/redo

Supported Engine Version
4.5
Version String
0.1.0
License Version
AGPLv3
Support Level
community
Modified Date
1 day ago
Git URL
Issue URL

CentriFuGe - Logic Card Game Framework

A logic framework for card games with built-in turns, players, complex card actions, and undo/redo.

CentriFuGe (pronounced like a sarcastic person being sent around a tumble dryer) is a framework for developing card game logic within Godot.

CentriFuGe provides handy functionality that all card games can benefit from. Things like handling turn passing; controlling what actions are available at a given point; undo and redo moves; and save and restore the game state.

Get right in to developing your card game, and leave all the complicated boilderplate logic to CentriFuGe.

README Example 2D card game screenshot with CentriFuGe debug window

Features:

- Instantly undo and replay moves
- Easily model complex turn systems and evolving rules
- Logging and time-travel to previous states
- Debug prototyping interfaces for simulating moves without the need for designing visuals.

What can you build

README Example Slay The Spire clone card game video. Take back moves and replan your turn with CentriFuGe to avoid defeat

Usage

Installation

Two options. The simplest is to go to the Godot Asset Store and add "CentriFuGe" to your project.

Alternatively: Download this cardgameframework folder from here. Add GameManager.gd as an autoload. This is the master brain behind the card game logic and serves as the central location for examining and changing the card game logic.

If you want to check out the example card game add the games folder to the root structure also.

Quickstart

Create a new script that extends GameState. This will hold the contents of the board. Put here things like the deck, hands, and other interactible card piles. For example @export var deck := CardPile.new() and @export var hand := CardPile.new() to create a hand and deck using CentriFuGe's collection of cards.

Create a new resource derived from GameRules. This is your core file to define what your game does. Fill this out with your

Create a new script that extends GameMove. This will define a valid move, something that interacts with the game state and alters it. An example move could draw a card from the deck by defining in the execute function: var drawn_card = game_state.deck.draw_top(), then hand.add_card(drawn_card). Add this to the Default Moves of the created GameRules.

Finally, create a visual scene, either 2D or 3D. In that node's _ready() function (so the card game starts at the same time as the scene itself) run:

GameManager.set_rules($YourGameRules)
GameManager.start_game()

Now the first player is ready to play their first move! Each player can take turns drawing cards from the deck and adding it to their hand, using the example provided here.

There's loads more customisation available to define complex interactions and ways for turns to evolve as the game progresses.

You are free to delete the addons and test folders. These contain development plugins and code, which is not necessary for game development.

Documentation

Look at The official documentation site or browse the documentation files in the /docs folder.

Example card games

Have a look in the games folder for example fully functional games which use the framework as a basis.

Mau-mau is a traditional card game, which has evolved into modern games such as Uno. Each player takes their turn trying to empty their hand by matching the previously played card, either by value or suit.

Ascend the Abbey is a Slay-the-spire clone. It features an AI opponent, multiple card effects, and everything needed to develop it further into a fully-featured card combat game.

Get Involved

I would love contributions of any kind, whether ideas, features, or bugs (squashing, not creating more!).

Issues are the best place to communicate. Don't be put off by the name 'Issues',

License

This is open source software. You're basically free to use, modify, and share this code. And any changes must use this same open licensing. More formally:

Copyright (C) 2026 coolmule0

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

A logic framework for card games with built-in turns, players, complex card actions, and undo/redo

Reviews

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
CentriFuGe icon image
coolmule0
CentriFuGe

A logic framework for card games with built-in turns, players, complex card actions, and undo/redo

Supported Engine Version
4.5
Version String
0.1.0
License Version
AGPLv3
Support Level
community
Modified Date
1 day ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers