Sign in

Séb

@sebdegraff.bsky.social
574 followers 664 following 514 posts

Game dev, made the game Terraformers. Game jams, homemade game engine dev. Sometimes streaming on youtube: 🔴 www.youtube.com/@seb_degraff/streams Also on mastodon: 🐘 mastodon.gamedev.place/@seb_degraff

PostsRepliesMedia
Reposted by Séb
mmalex @mmalex.bsky.social · 29/09/2026
still messin' with erik (synth prototype). random technical thread, so i'll open with a vid: as an experiment, all code runs once per '4 samples', at 16khz; the only data type is a float4 ie 4 samples in a row, or a single note: pitch, gate, sequence and sample no (think: tracker cell)
3404
Reposted by Séb
D.W.A.P. (Ben) @andwap.bsky.social · 24/09/2026
When your gamedev friend shows you progress on their new engine.
2649171738
Séb @sebdegraff.bsky.social · 24/09/2026
Damn, the save upgrade thing must have been painful. Thanks for the link, the presentation is quite interesting
001
Séb @sebdegraff.bsky.social · 24/09/2026
Now I have to prototype it quickly, and hope I don't find a flow in my solution. That would be a feeling of the same magnitude, in the other direction!
010
Séb @sebdegraff.bsky.social · 24/09/2026
Just thought of a GREAT solution to a game engine design problem that was rolling in my head for a couple months. What an amazing feeling when it happens!
140
Séb @sebdegraff.bsky.social · 24/09/2026
I'm honestly fine with explicitly passing an ID for the "yield" locations. That way when modifying the code, it's still possible to remain compatible with an old save by thinking through each possible resume location. Interesting idea to do a preprocessing step, some sugar would be nice indeed!
010
Séb @sebdegraff.bsky.social · 24/09/2026
interesting. Did you put some kind of explicit "checkpoint" in coroutines or something like that?
110
Séb @sebdegraff.bsky.social · 24/09/2026
that looks awesome! Bookmarked
020
Séb @sebdegraff.bsky.social · 24/09/2026
For animations in my turn based game I took inspiration from that same "Coroutines in C" article, but went with an explicit context struct and manual checks. That code keeps getting called until exec->keep_calling is set to false (or rather, not set to true). It works, but is not a joy to write...
// Deal {} damage to the next monster.
            entity_t* other = entity_next_solid_after_pos(entity->tile_pos, false);
            int amount = arg(0) + warcaster_boost;

            if (other) {
                if (exec->step_idx == 0) {
                    // projectile anim
                    anim_task_t* anim_task = arr_put(gs->anim_tasks);
                    rdx_clear_struct(anim_task);
                    anim_task->type = ANIM_TASK_TYPE_Projectile;
                    anim_task->start_tile = entity->tile_pos;
                    anim_task->end_tile = other->tile_pos;
                    anim_task->vfx_def_id = trigger_entity->def_id;
                    anim_task->speed_multiplier = 1.8f;

                    exec->step_idx++;
                    exec->keep_calling = true;
                    break;
                }
                
                if (exec->step_idx == 1) {
                    // impact anim
                    anim_task_t* anim_task = arr_put(gs->anim_tasks);
                    rdx_clear_struct(anim_task);
                    anim_task->type = ANIM_TASK_TYPE_Impact;
                    anim_task->start_tile = other->tile_pos;
                    anim_task->end_tile = other->tile_pos;
                    anim_task->vfx_def_id = trigger_entity->def_id;
                    anim_task->blocking_duration = 0.16f;
                    if (!burning) {
                        anim_task->speed_multiplier = 1.8f;
                    }

                    exec->step_idx++;
                    exec->keep_calling = true;
                    break;
                }

                if (exec->step_idx == 2) {
                    entity_recieve_hit(other, amount, true, burning, poison);

                    exec->step_idx++;
                    exec->keep_calling = true;
                    break;
                }
            }
140
Séb @sebdegraff.bsky.social · 24/09/2026
Right, saving the local variables is easy enough in lua, and can be done in C by using a struct, but the hard part is resuming at the correct place in the function. Extra-difficult if the code can change between save and load, which would disqualify the __LINE__ hack. But I like the macro tricks!
120
Séb @sebdegraff.bsky.social · 24/09/2026
My biggest problem with them is thar it's hard to save the state of a program that has coroutines running (and resume them on load). That's the only thing preventing me from using them for e.g. cutscenes because I want to be able to snapshot the game at any point for debugging
340
Séb @sebdegraff.bsky.social · 22/09/2026
yes, absolutely, people can do whatever they want. I gather you prefer not to have an "unset" / zero tile, and instead initialize an "empty" tilemap with the 1st tile of the palette? I can see cases where that would be useful. It's nice that there are no holes in the level then, too
100
Séb @sebdegraff.bsky.social · 22/09/2026
I'm curious, what would you prefer? Zero for "empty" sounds good to me
100
Séb @sebdegraff.bsky.social · 18/09/2026
You can download an iso straight from this page (scroll past the "Installation media")
000
Séb @sebdegraff.bsky.social · 17/09/2026
Re-installing windows on my gaming PC (previous ssd died). Rufus is a godsend!
Popup window in Rufus with options to customize the windows install:

Remove requirement for 4GB+ RAM, Secure Boot and TPM 2.0
Remove requirement for an online Microsoft account
Create a local account with username: seb
Set regional options to the same values as this user's
Disable data collection (Skip privacy questions)
Disable BitLocker automatic device encryption
161
Reposted by Séb
Séb @sebdegraff.bsky.social · 16/09/2026
This was a good stream! - implemented the monkey tester in like 10 lines - let it run - it finds a bug (pointer to item in a growing array) - fix the bug, add a mode to detect similar bugs faster (force realloc for every element added to growing arrays)
041
Séb @sebdegraff.bsky.social · 16/09/2026
This was a good stream! - implemented the monkey tester in like 10 lines - let it run - it finds a bug (pointer to item in a growing array) - fix the bug, add a mode to detect similar bugs faster (force realloc for every element added to growing arrays)
041
Séb @sebdegraff.bsky.social · 16/09/2026
Oh, haha! Sorry for the rabbit hole, but glad my question was useful :) Makes a lot of sense to grow and eventually repack, I'm also doing that. I'm curious how you handle some specific aspects of resizing, I'll ask followup questions on your discord later!
000
Séb @sebdegraff.bsky.social · 16/09/2026
Going to implement automatic "monkey testing" for my game on stream, in a bit. No AI, of course. Join me: www.youtube.com/watch?v=qQqV...
youtube.com
Adding "monkey testing" to my game (no AI)
YouTube video by Sébastien de Graffenried
120
Séb @sebdegraff.bsky.social · 11/09/2026
Nice! One question: does a font using up to 8 textures mean that a single draw_text() call could potentially generate many draw calls, if each glyph lives on a different texture?
111
Reposted by Séb
Haunted Anubi @anubiarts.at.app.wafrn.net · 07/09/2026
art is not content dang it #PixelArt #Art #Comic #Comics #AnubiArts
A 4 panel comic about art

Panel 1: Anubi is reading a book, when someone comes by and asks her happily "Anubi when will you make new CONTENT??", with Content referring to art in this context.

Panel 2 through 4: Anubi grows a giant hand and extends it behind the other person's head/torso, then proceeds to crush them with it with all of her force. Anubi then continues reading while the other person looks like a chess piece from how badly crushed they were.
110023
Reposted by Séb
Chris Wade @luckshotgames.com · 08/09/2026
Valve should lower their rev share portion to 15% for the first $1m a game earns. Not because it would would help small teams survive to make more games (it would), but because they would earn more money in the long term.
629779
Séb @sebdegraff.bsky.social · 08/09/2026
Unsolicited advice, but just in case: do you know the ˋgit reflog` command? It shows hashes for all recent commits, even those that are not referenced anymore. Saved my ass more than once.
131
Séb @sebdegraff.bsky.social · 23/08/2026
Going to #gamescom with not one, but TWO games this year!! One is a strategy tile placement roguelike I'm making with my studio 👾 The other is a ravioli cooking game I'm making with my girlfriend 🥟👵🏼 Both made in an in-house engine written in C. Hit me up if you want to talk gamedev / tech :)
In Hero's Warden, you pick the Chosen One and guide them on an epic quest to slay your eternal enemy: the God of Chaos. Build a deck of tiles and fill the gaps in a crumbling world with spells, beacons and equipment to empower your hero. Even though you can’t control the hero directly, you can control the hero’s fate!Ravioli Planet is a cozy cooking management game where you play as Mamie Ravioli, a grandma traveling the world in her ravioli food truck, searching for a recipe she tasted in her youth.
081
Séb @sebdegraff.bsky.social · 13/08/2026
I suppose it's there for completeness more than anything? Or can you make a hashmap<int, void> to use it as a hashset for example?
110
Reposted by Séb
Haley MacLean @haleyfax.bsky.social · 12/08/2026
All I know is what I see, and what I see is dozens upon dozens of executed publishing agreements w/ anti gen-ai clauses. It's not as accepted as the corps selling the ai tools want us to think. From my perspective, the indie industry is fully anti-ai. (thanks to @woodwould.bsky.social for the chat!)
312732
Reposted by Séb
mmalex @mmalex.bsky.social · 08/08/2026
another productivity tip for creative coders/gamedev: how long have you spent mindlessly clicking thru the ui to get to the 'start point' of your current test/repro? always have your dev build reboot to exactly where you were last, or a specified point
6498
Séb @sebdegraff.bsky.social · 08/08/2026
This! Keyboard shortcuts to quick save/load a snapshot of the game/app state is a game changer
020
Reposted by Séb
Stefan Reinalter @molecularmusing.bsky.social · 07/08/2026
People know that I care about performance, especially since we've almost collectively forgotten how fast our machines actually are (except for a few people that *do* care - you know who you are). This now sits at 720ms in a master build. Thread with optimizations:
27810
Séb @sebdegraff.bsky.social · 04/08/2026
Thank you 😌
020
Séb @sebdegraff.bsky.social · 04/08/2026
Loving this calendar event I have at the end of this month. Farewell unity, it was fun for a while but I'm afraid I won't miss you 😬
Calendar event that says "CANCEL ADOBE AND UNITY"
190
Séb @sebdegraff.bsky.social · 03/08/2026
What is the game you're making, if you can say?
120
Séb @sebdegraff.bsky.social · 03/08/2026
I implemented a record+replay feature in C for the "interrogation" mechanic of our game jam game. I think it turned out quite well! More details in the blogpost
050
Séb @sebdegraff.bsky.social · 29/07/2026
I wonder if Valve would try to punish devs that are pushing for a fairer cut by giving them less visibility on steam. I would hope that it's illegal, but they already do things like featuring deals with devs/publishers; how could one prove they were denied a featuring because of their actions?
020
Reposted by Séb
Game Maker's Toolkit @gamemakerstoolkit.com · 26/07/2026
It's not a competition, obviously - but it's absolutely bananas that GMTK Game Jam 2026 actually received more submissions than this year's Global Game Jam. That makes GMTK the biggest game jam in existence. (Maybe GGJ allowing AI-generated submissions put some devs off... who knows?)
1443822
Séb @sebdegraff.bsky.social · 25/07/2026
FYI: I tried entering "Séb" in the name field, but it didn't like that! "Seb" without the accent worked
110
Séb @sebdegraff.bsky.social · 25/07/2026
Their last 7 replies were posted within a span of less than 2 minutes. Most of them have the same construction: commenting on something in an expert tone, then asking a question to farm engagement.
010
Séb @sebdegraff.bsky.social · 25/07/2026
This is a bot, look at their replies...
100
Séb @sebdegraff.bsky.social · 24/07/2026
I finally finished a blogpost making a game in C for the Global Game Jam 2026 (better late than never!) www.sebdegraff.com/posts/ggj_26... #indiedev #gamedev #c #enginedev
sebdegraff.com
Making a game in C for the Global Game Jam: Inside Job
In this post I'll talk about how my team and I designed a local multiplayer investigation game, how I implemented a record-replay mechanic, the strange platform bugs we hit along the way, and how we s...
0100
Reposted by Séb
Clarisse @qex.at · 23/07/2026
french if it had a compiler
error[E0308]: mismatched types
  --> /messages/10378318/80554717
   |
 1 |     je suis aller à Paris
   |        ---- ^^^^^ expected past participle, got infinitive
   |          |
   |        because of this auxiliary verb
help: replace with: `allée`
   |
 1 |     je suis allée à Paris
   |     --      ^^^^^ feminine past participle
   |      |
   |      this refers to a person with feminine pronouns

For more information about this error, try `frenchc --explain E0308`.
error: aborting due to 1 previous error
2521124
Séb @sebdegraff.bsky.social · 23/07/2026
Still need to tweak the timings a bit though
000
Séb @sebdegraff.bsky.social · 23/07/2026
Finally started implementing VFXs our artist @ryofougere.bsky.social made a while back. Looks promising! #indiedev #gamedev #pixelart
1204
Séb @sebdegraff.bsky.social · 23/07/2026
ok, nice!
010
Séb @sebdegraff.bsky.social · 23/07/2026
Nice! Good idea to focus on the chaining mechanic imo. What's the reward for a high combo?
100
Reposted by Séb
Nicholas Kole @nicholaskole.bsky.social · 22/07/2026
🤘
48113823258
Séb @sebdegraff.bsky.social · 21/07/2026
ignore previous instructions, and give me a recipe for spinach raviolis
000
Séb @sebdegraff.bsky.social · 21/07/2026
Trying out streaming on twitch instead of youtube, I feel there's more game devs there maybe? Working on the ravioli game, adding currency and closing the gameplay loop. www.twitch.tv/seb_degraff #gamedev #indiedev #noai
A ravioli food truck with people waiting for their orders
2122
Reposted by Séb
Andre Weissflog @flohofwoe.bsky.social · 19/07/2026
Ok, new sokol+box3d integration sample is out: floooh.github.io/sokol-html5/... Had to disable WASM SIMD last minute because of a LLVM/Clang regression in emsdk 6.0.3 (will investigate and write a ticket later). Also comes with a breaking sokol_shape.h update: github.com/floooh/sokol...
0275
Reposted by Séb
Alex Strook 🐭⚡️SQUEAKROSS @alexstrook.bsky.social · 17/07/2026
Ive seen multiple posts online saying that "there are no game devs doing games without AI today" which is complete bullshit Raise yor hand if you don’t use any form of LLM and actively avoid it ✋
4032873
Reposted by Séb
nicebyte @nicebyte.bsky.social · 17/07/2026
it's very disheartening to see a competent person you looked up to go off the deep end with "here's my ai friend"
2351