From feabbd0fcf86bdd3144cdc0f7bb46e74ed8381ca Mon Sep 17 00:00:00 2001 From: Isha Dijcks Date: Tue, 17 Mar 2026 20:54:25 +0100 Subject: [PATCH] Add blog post on Data Driven Systems --- src/lib/content/blogPosts.ts | 24 ++--- .../(posts)/data-driven-systems/+page.svx | 100 ++++++++++++++++++ .../data-driven-systems/sliced-bread-yaml.png | Bin 0 -> 49209 bytes 3 files changed, 111 insertions(+), 13 deletions(-) create mode 100644 src/routes/(app)/blog/(posts)/data-driven-systems/+page.svx create mode 100644 static/images/data-driven-systems/sliced-bread-yaml.png diff --git a/src/lib/content/blogPosts.ts b/src/lib/content/blogPosts.ts index 18e0139..1c016fa 100644 --- a/src/lib/content/blogPosts.ts +++ b/src/lib/content/blogPosts.ts @@ -1,6 +1,16 @@ import type { BlogPost } from '$lib/model/BlogPost'; import { asset } from '$app/paths'; +export const dataDrivenSystems: BlogPost = { + id: 'data-driven-systems', + title: 'Game engines, Sliced bread, and data-driven systems', + description: 'Designing data-driven systems by separating behavior from content.', + date: '16/03/2026', + image: asset('/images/data-driven-systems/sliced-bread-yaml.png'), + tags: ['games', 'overengineering'], + path: '/(app)/blog/(posts)/data-driven-systems', +}; + export const piano: BlogPost = { id: 'piano', title: 'Video game piano', @@ -34,16 +44,4 @@ export const foolsball: BlogPost = { path: '/(app)/blog/(posts)/foolsball', }; -export const blogPosts: BlogPost[] = [ - // piano, - // { - // id: 'unique-puzzle', - // title: 'Unique Puzzles', - // description: 'A short story about the awesomeness of puzzles', - // date: '01/01/2026', - // image: '', - // tags: ['games'], - // path: '/(app)/blog/(posts)/puzzles', - // }, - beatBox, -]; +export const blogPosts: BlogPost[] = [dataDrivenSystems, beatBox]; diff --git a/src/routes/(app)/blog/(posts)/data-driven-systems/+page.svx b/src/routes/(app)/blog/(posts)/data-driven-systems/+page.svx new file mode 100644 index 0000000..732cc7a --- /dev/null +++ b/src/routes/(app)/blog/(posts)/data-driven-systems/+page.svx @@ -0,0 +1,100 @@ + + +Years ago I released the [Incremental Game Template](https://123ishatest.github.io/igt-docs/) (IGT) which I then called "*A collection of useful scripts to help you develop incremental games*". +While that was technically true, it served mostly as an archive for me to store all the game development work I had done over the years. +As the template grew it not only contained more game mechanics, but also more concrete implementations of my games. +It became more and more difficult to separate mechanics from content, making it nearly impossible for people who are not me to benefit from the project. + +Today we will dive into those distinctions alongside the lessons I've learned deprecating IGT, and how my new game engine [Ludiek](https://ludiek.123ishatest.com) does everything way better. + +## Behaviour vs Content +Over the years I have become a big proponent of separating behaviour from content. +This is most prominent in applications with a large amount of content, such as games. +But I believe keeping this divide in mind will help you design cleaner applications no matter what you are creating! + +- *Behaviour* encompasses the logic of your application, decisions that need to be taken based on the state and content we are operating on. +- *Content* is the static data of your application. Be it items in an RPG, routing tables in an SPA, Content in a CMS. It is *not* state. + +One advantage becomes immediately obvious, the implementation of behaviour is pure and deterministic. +This improves testability, composability and maintainability! + +## In practice +Enough theory crafting, what does it look like in practice? What went wrong with IGT? +IGT contained functionality for `Items` and `Inventory` as most games use some sort of an inventory system. +In its most basic form it is a way to track how many you have of certain items. +Some items have special interactions: Materials can be processed, Armour can be equipped, and Consumables can be... consumed. +Here is how we would define a consumable `Bread` item in IGT, it restores 10 health when eaten. + + +```ts +class SlicedBread extends Consumable { + public name = "Sliced Bread" + + public consume() { + player.restoreHealth(10) + } +} +``` + +On first sight it looks sensible, there is little boilerplate and the consume function is succinct. +But what if the `consume` function grows more complex? +What if we have different kinds of food that all trigger the same code when consumed? We'd have to repeat the consuming logic everywhere. +But even worse, this game content is now defined in code, meaning game designers need to dive into the codebase to balance the game. +They don't like that. + +Let's separate the behavior from the content! We need to restore health based on the provided amount. +```ts +class RestoreHealth extends ConsumableEffect { + type: 'restore-health'; + + public args: { + amount: number, + } + + public apply(args) { + player.restoreHealth(args.amount) + } +} +``` + +And the content becomes much cleaner! + +```yaml +# sliced-bread.item.yaml +name: Sliced Bread +onConsume: + type: restore-health + amount: 10 +``` + +While there is an initial investment of having to create the `RestoreHealth`, we now have it forever. +Every item can be turned into a consumable by adding 3 lines of data, and no extra code. + +That is the essence of data-driven design: Isolate behaviors as small as possible, and let your static data compose it to achieve your desired behaviour! + +Game designers often believe that data-driven games lose some of their magic. +When all your content has to adhere to rigid systems, unique mechanics are more difficult to implement. +While this could happen, realise you are expecting your developers not to overengineer a system that can support even your wildest dreams. + +## Ludiek + +Speaking of wild dreams, with this new data-driven approach I have been designing and building [_Ludiek_](https://ludiek.123ishatest.com/), the game engine that focuses on the fun. +It is the spiritual successor of IGT, but with a plugin-based architecture so you can mix and match whatever you need! + +Today we mostly discussed moving from level 1 towards level 2, but Ludiek pushes all the way to level 3! + +```ts +// level 1 // level 2 // level 3 // Level ∞ +if (money > 100) { if (money > upgrade.cost)) { if (canAfford(upgrade.cost)) { do() + money -= 100 money -= upgrade.cost; spend(upgrade.cost) + power += 2; power += upgrade.powerGain; apply(upgrade.benefit) +} } } +``` + +With these abstractions we can create plugins that operate on the most abstract of concepts. + +If you are curious, you can read more on it [here](https://ludiek.123ishatest.com/docs/introduction/welcome), or stay tuned for the next blog post! + +Thanks for reading! diff --git a/static/images/data-driven-systems/sliced-bread-yaml.png b/static/images/data-driven-systems/sliced-bread-yaml.png new file mode 100644 index 0000000000000000000000000000000000000000..56150d2d99154154ea500a98c9e9cf49a599639a GIT binary patch literal 49209 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