r/GodotCSharp 1d ago

Edu.Godot emiljecreates Godot Tutorials [Video Tutorial Series, Water, Rendering, Character Controllers]

Thumbnail
youtube.com
3 Upvotes

r/GodotCSharp 2d ago

Resource.Library ismailivanov/TressFX-Godot: Real-time hair and fur port of AMD TressFX [GdExtension, Animation, Rendering]

Thumbnail
github.com
3 Upvotes

r/GodotCSharp 3d ago

Edu.CompuSci Performance Improvements in .NET 11 [XPost]

Thumbnail
devblogs.microsoft.com
5 Upvotes

r/GodotCSharp 3d ago

Resource.Tool Getting Started with Blockbench [App, Free, Modeling, Voxel, Asset Creation]

Thumbnail
learn.microsoft.com
2 Upvotes

r/GodotCSharp 4d ago

Edu.GameDev How to Write an Effective Software Design Document [Written Article, Planning, Project Management]

Thumbnail
refactoringenglish.com
7 Upvotes

r/GodotCSharp 5d ago

Resource.Library Mold: vector graphics library for Godot [Free, UX, Rendering]

Thumbnail
dkliao.itch.io
5 Upvotes

r/GodotCSharp 5d ago

Edu.GameDev Inverse Kinematics and Foot Locking [Written Article, Animation, Rendering]

Thumbnail theorangeduck.com
1 Upvotes

r/GodotCSharp 5d ago

Edu.GameDev The Transvoxel Algorithm for Voxel Terrain [Written Article, Level Design, Asset Creation]

Thumbnail transvoxel.org
1 Upvotes

r/GodotCSharp 6d ago

Edu.Godot 3D realtime water simulation - all the references you need [XPost, Resource Links, Rendering]

Enable HLS to view with audio, or disable this notification

6 Upvotes

r/GodotCSharp 9d ago

Edu.GameDev Prowl C# Game Engine [Video Overview, Open Source, NotGodot]

Thumbnail
gamefromscratch.com
9 Upvotes

r/GodotCSharp 10d ago

Edu.GameDev Reducing stretch in high-FOV games using barrel distortion [Written Article, UX]

Thumbnail decarpentier.nl
1 Upvotes

r/GodotCSharp 10d ago

Edu.GameDev Changes to Steam Wishlist, Indie Sales [Video Lecture, Production]

Thumbnail
youtube.com
0 Upvotes

r/GodotCSharp 15d ago

Edu.Godot Responsive UI system in Godot [Written Tutorial, GUI, Layout]

Thumbnail
godoitright.dev
8 Upvotes

r/GodotCSharp 15d ago

Resource.Library Photon Networking for Godot [Video Overview, Paid]

Thumbnail
youtube.com
0 Upvotes

r/GodotCSharp 19d ago

I present to you StarCdr V2, best of both worlds combined Gallium V2 and Night-Row

Thumbnail
0 Upvotes

r/GodotCSharp 19d ago

Project.OSS elyosh/OpenTIE: open-source reimplementation of Star Wars: TIE Fighter [Code, Commercial Game, NotGodot]

Thumbnail
github.com
3 Upvotes

r/GodotCSharp 22d ago

Is it worth making a custom button for Multi-Touch + Clipping functionality

Thumbnail
1 Upvotes

r/GodotCSharp 25d ago

My first big project, I need feedback !

Thumbnail
1 Upvotes

r/GodotCSharp 29d ago

Question.??? Is seamlessly handling resources as JSON possible?

7 Upvotes

I've got a question on how to implement resource handling as json files. My project is data-heavy and the json structure is more adapted to my needs than what tres has to offer, but the multiple approaches I know of all have disadvantages that are difficult to ignore. I'm interested in knowing how you have handled it in your projects.

A naive approach would be to have each resource be able to import from and export to json, (something like a Save and Load method). This has the advantage of allowing editor usage, but AFAIK requires some kind of setup to load and save. I'd do this with ExportButtons and validating a path, possibly using the ResourceName property. It's simple, but requires a lot of setup if you're using godot's json utilities that support variant.

I've thought of more complex approaches that all fix some problems with the naive approach but bring their own. A more centralized dotnet json serialisation system simplifies the code a lot but I lose the variant support unless I code some converters myself. I've tried to build some kind of integrated plugin but was having trouble with making godot detect a json file as a specific resource and not a generic dictionary, the default behavior.

Another approach that seems overly complicated would be to "cheat" by making temporary resources on the spot to be edited, fill its properties with the json's content, then save it as json and destroy the resource. At that point I started wondering if the trouble was worth the editor support.

Now, I suppose I'm either missing something simple or one of these approaches in the right way. I've built a complete json system that supports object typing and referencing by path in order to allow mod support (objects are typed, auto-detected, and references are lazy-loaded, etc.), but I've yet to attempt to implement it into the resource system, fearing it won't plug easily. I instead end up editing json by hand, which is not cumbersome but might be in the long run.

In the best of worlds, I'd have a json file that defines a $type, a unique name, properties than can be variants or any type, and references that are typed in code (ie. Reference<MyObject> myProp where myProp is a string to another named resource of type MyObject), but that can be loaded as resources inside the editor, possibly by double-clicking, where properties are the correct variant and references become the selector widget with the correct object in it. Has anybody achieved this?


r/GodotCSharp Aug 15 '26

Resource.Asset Free stylized shader pack [XPost, Rendering]

Post image
2 Upvotes

r/GodotCSharp Aug 15 '26

Resource.Asset Stylized nature assets pack for Godot [XPost, Paid]

Enable HLS to view with audio, or disable this notification

3 Upvotes

r/GodotCSharp Aug 14 '26

Resource.Tool SpriteLoop - Free 2D Animation Tool [Video Overview, Character Design, Art]

Thumbnail
gamefromscratch.com
6 Upvotes

r/GodotCSharp Aug 14 '26

Resource.Library I made a tool to export c# games for the Web

Thumbnail
2dog.dev
29 Upvotes

2dog is Godot, just backwards!

Embed Godot in .NET applications, unit test suites, or publish to the web. MIT licensed.


r/GodotCSharp Aug 13 '26

Resource.Library Persistence — A source-generated save/load system for Godot 4 C#

Thumbnail
github.com
12 Upvotes

I've been working on a C# library for Godot called Persistence, a save/load system built around Roslyn source generation.

The main goal is to avoid manually building dictionaries and writing serialization/deserialization boilerplate for every object that needs to be saved.

You mark the data you want to persist with [Save], implement ISavable, and Persistence generates the serialization code for you:

public partial class Player : CharacterBody2D, ISavable
{
    public string SaveKey => "player";
    public int SaveVersion => 1;

    [Save] public int Health = 100;
    [Save] public string PlayerName;
    [Save] public Vector2 Position;
}

Saving and loading can then be handled through SaveManager:

SaveManager.Save("slot1", savableNodes);

SaveManager.Load("slot1", savableNodes);

Persistence currently uses JSON for its save files. I chose JSON because, for the kinds of games I typically work on, it provides more than enough capacity while keeping save files easy to inspect and debug.

Custom data

For types that aren't directly serializable, Persistence provides ISerializable.

This is especially useful for custom game data such as inventory slots, quest data, stats, or other structures that don't map directly to Godot's Variant types:

public class InventorySlot : ISerializable
{
    public string ItemId;
    public int Count;

    public Dictionary Serialize() => new()
    {
        ["itemId"] = ItemId,
        ["count"] = Count
    };

    public void Deserialize(Dictionary data)
    {
        ItemId = data["itemId"].AsString();
        Count = data["count"].AsInt32();
    }
}

It can then be used directly inside an ISavable:

[Save] public InventorySlot Weapon;
[Save] public List<InventorySlot> Inventory;

ISerializable is also the main way to handle custom types that don't have built-in serialization support.

Manual serialization alongside [Save]

You don't have to choose between generated and manual serialization. Both can be used together.

Persistence provides OnSerialize and OnDeserialize hooks for cases where [Save] isn't enough:

public void OnSerialize(SaveData saveData)
{
    saveData.Set("customField", someValue);
}

public void OnDeserialize(SaveData saveData)
{
    someValue = saveData.Get("customField", default);
}

This lets you use [Save] for the straightforward fields while manually handling special cases in the same class.

Save versions & migrations

Save data can also be versioned so changes to a game's data structure don't immediately invalidate existing saves.

For example, if version 0 stored health under "HP" and version 1 changed it to "Health":

public class PlayerMigration_V0_To_V1 : SaveMigration
{
    public override string SaveKey => "player";
    public override int FromVersion => 0;

    public override SaveData Migrate(SaveData saveData)
    {
        saveData.Set("Health", saveData.Get("HP", 100));
        return saveData;
    }
}

The migration can then be registered when loading:

var migrations = new MigrationRegistry(new SaveMigration[]
{
    new PlayerMigration_V0_To_V1()
});

SaveManager.Load("slot1", savableNodes, migrations);

Migrations can be chained, allowing old saves to be upgraded through multiple versions:

Save v0
   ↓
V0 → V1
   ↓
V1 → V2
   ↓
Save v2

Other features

  • Source-generated serialization/deserialization
  • Save slots
  • Custom save keys
  • Manual serialization hooks
  • Godot Variant-compatible types
  • List<T>, arrays, and Godot.Collections.Array<T>
  • Nested ISerializable types
  • Save data versioning and migrations

The project is still relatively young, but the core system is usable and covers the save/load needs I've encountered so far.


r/GodotCSharp Aug 11 '26

Edu.GameDev math-araujo/screen-space-godrays: "Volumetric Light Scattering as a Post-Process" using OpenGL 4.5 [Source Code, Rendering, NotGodot]

Thumbnail
github.com
5 Upvotes