Make attacks faster than some games load! The Castagne Editor is easy to use when starting out, and unlocks incredible speed once you learn it!
Why limit yourself? Castagne’s flexibility allows you to use it for many action genres! Fighter, Platformer, Beat-them-Up? Go ahead! Want to add a dash of fighting to your TRPG? Use Castagne as a module!
Don’t just make a prototype, make a full game! Castagne has Rollback compatibility at a core level, and support for many game modes and quality of life features!
Castagne is Free and Open Source Software (MPL 2.0 Licence), meaning you will never get locked out. Your game will be your own and in your complete control.
Castagne isn’t a regular game engine: it’s a specialization of any engine. Written in Rust, it’s easy to hook it to general purpose engines like Godot and use the best tool for the job!
Castagne welcomes all. Precision design allows ways to edit code graphically, while still saving it in text for VCS. In a team? Easily define interfaces for your designers to adjust attacks. Experts and beginners alike are delighted.
Castagne’s design allows maximum flexibility within some key, tasteful constraints that allow performance and great tools. Make combo unit tests, analyze your data, and make the best game you can.
![]()
Hey! Panthavma here, I'm Castagne's author! The Godot 3 version was a long prototype, and I'm finally making the complete vision of Castagne! I want to make something that is still useful in 10 years, and all those previous tests help do that. That's not to say the Godot 3 version is lacking: commercial games have already been released in it, you can try it out!
The Rust version of the engine is still a work in progress, which I'll release in beta when I'm proud of it and I'm confident it can handle current projects. You can follow development here or on any of my channels. Stay tuned!
Follow castagne's development!
Youtube - Mailing List - Forum - Discord - Twitter - Bluesky
2D Fighter / Airdasher
Website - Steam - Bluesky - Twitter - Forum
Complex machines fighting at high speed! Tame each mech’s unique weapons using simple inputs and become an ace pilot!
2D Tag Fighter
Magic and technology intertwine in dynamic teamfights! Level up and call upon your allies to decide the fate of the Ashen Island!
2.5D Tag Fighter / Airdasher
A fast-paced tag fighter with only one attack button! A Fabled curse has swept the world… ordinary teens have begun transforming into characters from their favorite classic stories. Put together explosive team combos at Parable Academy for Fabled Youths!
Platform Fighter
A fast-paced, free-flowing platform fighter with a Shibuya Punk and Y2K aesthetic!
Today, I’m making updates for me. That’s right, it’s the castagne dev experience update, but CASP-side this time.
You know how sometimes you want to make a part of a state easily extensible? Like how I like having WalkF and WalkF-Movement so that you can completely change the movement if you don’t like it? It’s great for the end user, however it’s always annoying to set up: I need to create several states. That’s partially why I added hooks, so that I can “add” these without really doing work, with a simple WalkF-Anim? for example. The issue is that they don’t do anything, therefore if I want to have behavior you can change as opposed to behavior you can add, I still need to go through that process. Introducing:
!WalkF-Movement:
Move(1000)
endif
As you might expect, it’s just like a hook, except if the hook doesn’t exist it will call on the interior code! That allows these elements to be MUCH cleaner, as all the behavior is in the same state. These have got two particularities:
!!? is mandatory. Good enough imo, it’s added as the base parent so overriding the hooked state works as usual, it’s just a tricky integration that most likely won’t come up unless you start calling on hooks from several states or have several defaults.Another update is that, since the Castagne base files are now embedded inside of the binary, well you can’t really change them. This instantly makes the lock feature of the old editor unneeded since you can’t change it, but that means that I as a dev can’t do that either, which is annoying for development. I’ve therefore added an option where you can give the path to Castagne’s source to load these dynamically!
These updates mostly affect me since I’m the one writing the base CASP files lol. I am making my work environment better so that I can do better work, and I wish to thank me for taking the time to add one of my requested features.
Heyo! I’ve been working in the editor these days, but never had time to share. I’m writing a quick post to share some screenshots.
First off, I’ve advanced enough on the EdSpec compilation and handling to properly handle functions! Every function has its own EdSpec it can add internally, that is different from the one you can attach in the editor.
There’s also handling of colors through a system, and several options out of the box for Gizmos, including lines with caps and boxes with different styles. You can specify boxes in different ways, which match the way hitbox vs hurtbox are handled. In the screenshot below, you can see how Move() now adds an arrow, with a notch. The notch shows one frame, the arrow shows 10, in order to visualise the movement. Boxes show the box where it is.

Additionally, I’m working on the UI bit by bit. A lot of it is temporary with big buttons that don’t do anything but take place for future functionality, but here’s the file selection! As you can see there’s a good few more than usual, and it’s gonna get bigger. The rest of the window will help keep track.

There’s still some work to be done editor wise before I can get properly started on the mechmods and base CASP, mostly how to link to the actual Castagne project, and a fair bit of in engine stuff. Stay tuned!
Hey! So I’ve mentioned the EdSpec (which I’ve just renamed from ‘VarSpec’ if you’ve read the previous updates) system a few times, but what is it? Put simply, it’s a refined version of Castagne’s Gizmo, SpecBlocks, and Custom Editors, all put together as a single interface.
At it’s core, it’s a second language right inside of Castagne Script. Don’t worry, most users don’t need to learn it, and it doesn’t affect gameplay in any way, it only talks to the editor (hence the name, EDitor SPECifications.). It’s also way more forgiving, as it always tries to work and doesn’t crash (although you might get funky results). Its main objective is to make character creation in Castagne extremely efficient and fast. Here’s a quick example:
> GLine [0,20000,0] [20000,0,0]
This command, Gizmo Line, will draw a line on-screen at those game coordinates. This is the most basic usecase. A new feature in the editor is that these gizmos can now be drawn on a separate grid, even when the game is not running. Take a look!

As you can see, the grid is centered at your character, along with a preview of your ColBox. When the game is not running, information available is more limited, but this might also make it more clear. This is something I wish to expand upon in the future, but at the moment it’s already quite agreeable. The mouse is also tracked, which is a slight hint about future abilities ;)
I’ve got a LOT to say on EdSpec, but after writing a very long post yesterday (which I didn’t post), I figured it’s one of those cases where it would be way too much info at once, and actually seeing it will have more impact. So, expect little EdSpec updates bit by bit! What I can say however, is that this is the star of the new version, it put a lot of constraints on the compiler but I sincerely believe it will be worth it. The most impressive features are still on the way!
Also, I noticed just before posting I left some other hints about parts that got implemented in the screenshot. Consider that a bonus preview lol
All Progress Updates - RSS Feed
This list is not exhaustive, and can change often. It represents my global progress with this version, which will release in beta when it’s more complete.
Castagne Virtual Machine
Entity Lifecycle
Subentities
Inter-Entity Communication
Module Interface
Castagne Config
Profiling Framework
Memory Stack Rollback
Instanced Data
Castagne Compiler
Semantic Representation
Robust Compilation
Host-Engine Functions
Phases and Events
Basic Branches
State Calls
State Calls with Params
Advanced Branches
Structured Variables
EdSpec / Gizmo System
Skeleton and MechMod
Basic Structure
Game Streaming
Code Editor
Blocks Editor
EdSpec / Gizmo Display
Castagne Config
Tools Framework
Tutorial System
Docs System
Basic Math
Vector Math
Trigonometry
Randomness
State Transitions
Flags
Log / Error
Freeze / Halt Phases
Targetting Functions
Input Layout System
Combination Inputs
State-Derived Inputs
Input Events and Buffer
Motion Inputs
Input Transition / Flag
Fake Press
Input from Config
Replay
Environement Collisions
Expanded Env. Colliders
Colbox Collision
Attack Collision
Expanded Attack Colliders
3D Physics
Battle Init Data Interface
Simple Fighter BID Interface
Simple Level BID Interface
Simple World BID Interface
Rounds and Reset
Custom Exit
Training Mode (basic)
Menus Specification
Host Engine Integration
Options Menu
Input Rebinding
Attack Data Storage
Attack Param Base
Attack Data Optimization
Attack Overrides
Attack Events
Blocking System
CASP Hitstun Management
Basic Attack MechMods
Combo-Awareness MechMods
Attack Cancel Rules
Fighter Flow MechMods
Attack Mechanics MechMods
Movement MechMods
Combo MechMods
Godot Integration
Sprite Sytem & Integration
Shader Modifications
Model Management
VFX System
Godot Integration
Audio Parameters
SFX Definition
SFX Parameters
Background Music Support
Dynamic Audio Support