This is a vague idea that I’ve had for awhile but I think I have it worked out enough to bring it to the community. I think we are very close to being able to make more reactive integrations which could solve a host of issues by making it possible to run integrations alongside the main app that automatically react to data changes in your game EDIT for clarity: using an efficient and database safe method.
Imagine if you could:
- Create a dashboard with pretty charts or reports or just lay out the data in a way that makes more sense to you that automatically updates
- Have a sound play on a certain event (someone has suggested that before)
- Trigger an AI agent to write a game summary automatically
- Automatically hold elections in a government simulator
- And more
Now you may be asking at this point, what is your actual idea for pulling this off David? Webhooks, dear reader. Webhooks.
For those that don’t know, webhooks are a way an application can react to state changes in another. As you may imagine from the name, they were invented for the web and are therefore primarily used in web applications, but there is no reason why they can’t also be used in a desktop application. It is fairly trivial in most languages these days to host a local web server as part of your desktop app just as it is trivial for a desktop app built on the dotnet framework, like Aurora, to send a http request.
If Aurora could be configured to post to a webhook endpoint when the game is saved, then any integration can listen for it and trigger a db read to refresh its data cache and then react to data changes. This reactivity creates possibilities and that’s what I’m interested in doing.
I think a bare minimum implementation would get us by for a long time, but the system could be expanded in the future with more events. Below, I’ve laid out what I think may be a valid, though a little rough, implementation plan.
Bare Minimum Implementation
First, add a table for the webhook configuration. It could be something like this:
Id
GameId
TriggerEvent - Initially just 'onsave'
Url
It would be empty by default but integration authors could add records here as needed when their integration starts, saving the need for an in-game UI.
Secondly, in the save logic do an http(s) post to any ‘onsave’ webhook endpoints (there can be more than one). Since it doesn’t matter to Aurora whether anything is actually listening at the configured endpoints, you would fire it off asynchronously and not even have to wait on the result, so the performance impact would be negligible.
Suggested ‘onsave’ webhook payload, but additional data could be added here:
{
'gameId': 1,
'gameDate': '2026-07-17 13:35'
}
That’s it!
Nicer Implementation
Same as above, but maybe add an in-game UI so users can configure their own webhooks, though that could also be handled by an integration.
For maximum flexibility, I think webhooks should be game specific, but it would be really convenient to have a global default webhook configuration that can be copied when a new game is started since it is likely that you’ll want run the same integrations during most games.
A Case for Autosave
This idea really makes the case for autosave as one of the goals here is reactivity and if the game autosaves AND notifies webhook listeners when it does, any integration can automatically react which will result in a very nice user experience, in my opinion.
Thanks for reading and I hope that others also see the potential in this idea!