<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>CentriFuGe Docs</title><link>https://coolmule0.codeberg.page/Centrifuge/</link><atom:link href="https://coolmule0.codeberg.page/Centrifuge/feed_rss_created.xml" rel="self" type="application/rss+xml" /> <docs>https://codeberg.org/coolmule0/Centrifuge</docs><language>en</language> <pubDate>Sat, 28 Mar 2026 14:44:09 -0000</pubDate> <lastBuildDate>Sat, 28 Mar 2026 14:44:09 -0000</lastBuildDate> <ttl>1440</ttl> <generator>MkDocs RSS plugin - v1.17.9</generator> <image> <url>None</url> <title>CentriFuGe Docs</title> <link>https://coolmule0.codeberg.page/Centrifuge/</link> </image> <item> <title>Undo/Redo in Card Games Without Writing Undo Logic</title> <author>John</author> <category>Centrifuge</category> <description>&lt;h1&gt;Undo/Redo in Card Games Without Writing Undo Logic&lt;/h1&gt; &lt;p&gt;&lt;em&gt;Most undo actions in games require writing precise and careful reverse actions for every move. In CentriFuGe I avoid all this by storing state snapshots of each move.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Hi world,&lt;/p&gt; &lt;p&gt;Having an undo feature in your card game is a very common and useful feature. It can help:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Replay a match&lt;/li&gt; &lt;li&gt;Save and load the game&lt;/li&gt; &lt;li&gt;As a player, undo a mistake you just made&lt;/li&gt; &lt;li&gt;As a developer, follow card interactions and debug different actions&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;An undo system sounds simple enough until you try to implement it.&lt;/p&gt; &lt;p&gt;The usual approach is to write a reverse action, which undoes everything the action performs. This can become brittle very quickly as more complexity is added to the game. This happens especially with the interaction-heavy style of more modern card games, which sport a wealth of different card effects and combinations. One missed interaction can completely break the game.&lt;/p&gt; &lt;p&gt;I didn’t want every move in CentriFuGe, my Card Game Framework, to require hand-written undo code. Instead, I’m choosing a system that is not only simpler, but also has further benefits.&lt;/p&gt; &lt;!-- ![Video showing moves executing and then undoing them](../../img/centrifuge_undo_example.mp4) --&gt;</description> <link>https://coolmule0.codeberg.page/Centrifuge/blog/2026/03/28/undoredo-in-card-games-without-writing-undo-logic/</link> <pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate> <source url="https://coolmule0.codeberg.page/Centrifuge/feed_rss_created.xml">CentriFuGe Docs</source><guid isPermaLink="true">https://coolmule0.codeberg.page/Centrifuge/blog/2026/03/28/undoredo-in-card-games-without-writing-undo-logic/</guid> </item> <item> <title>Developing a Shiny New Way to Create Virtual Card Games</title> <author>John</author> <category>Centrifuge</category> <description>&lt;h1&gt;Developing a Shiny New Way to Create Virtual Card Games&lt;/h1&gt; &lt;p&gt;Hi, world.&lt;/p&gt; &lt;p&gt;This is my first article of what I hope to be many regarding my software development journey. I would like to start off with an introduction into what I’m building, a Card Game Framework for the Godot game engine called &lt;strong&gt;CentriFuGe&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;CentriFuGe&lt;/strong&gt; is all about easing the development of new virtual card games by simplifying the parts that all virtual card games share. Shared aspects are things like having multiple people take turns playing cards and interacting with the board. Or wanting bots to take turns, or to play with other people across the network.&lt;/p&gt; &lt;p&gt;The focus of &lt;strong&gt;CentriFuGe&lt;/strong&gt; is in the logic of the card games. How turns progress, how to handle player turns, and allowing multiple player to interact at the same time. Things that all card games need to handle. It is not focused on the look of the game, the animations, or how to visualise the game state. This allows game designers to hopefully take the underlying logic and craft the artistic style they are looking for.&lt;/p&gt; &lt;p&gt;I hope that development can be guided by community wants. After all, there’s not much point developing a framework just for myself. I hope I can help develop something people of all game development levels find useful.&lt;/p&gt; &lt;p&gt;&lt;img alt=&#34;Screenshot of the 2D card game Mau-mau with the CentriFuGe debug window on the left&#34; src=&#34;../../img/maumau.png&#34;&gt;&lt;/p&gt;</description> <link>https://coolmule0.codeberg.page/Centrifuge/blog/2026/03/20/developing-a-shiny-new-way-to-create-virtual-card-games/</link> <pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate> <source url="https://coolmule0.codeberg.page/Centrifuge/feed_rss_created.xml">CentriFuGe Docs</source><guid isPermaLink="true">https://coolmule0.codeberg.page/Centrifuge/blog/2026/03/20/developing-a-shiny-new-way-to-create-virtual-card-games/</guid> </item> </channel> </rss>