Aarni Annanolli
Hi, I’m Aarni. I make games and tools for game developers.
About
I’m a second-year software development student at Keuda, and I live in Järvenpää. I mostly work in Godot, and I enjoy engine-side programming and building editor tools.
My biggest project is YHDE. It lets several people work in the same Godot project at once, so the team doesn’t have to send scene files to each other or fix merge conflicts. I started it in January 2026. It now has a C++ core that runs inside the Godot editor, a C# server, accounts, teams and chat, and it runs on a server I set up and maintain.
I’m also making Aatra, a grand strategy game with procedurally generated maps. I’d like to work at a game studio as a programmer and learn from people who have shipped games.
Projects
YHDE Jan 2026 to now
A real-time collaboration plugin for Godot, currently in beta. Everyone on the team works in the same project and sees each other’s cursors, selections and edits as they happen. Two people can move nodes in the same scene or type in the same script at the same time. Git is still used for commits and releases.
- 800editors online at once in a load test on the production server
- 40 msp95 time for an edit to be saved and reach the team, at 800 editors
- 154server tests run on every change
- 30,000lines of C++ and C#
- 13,000+properties kept in sync between two editors in the end-to-end test
How it fits together
Drag the boxesDetecting changes
The Godot editor doesn’t report what an edit changed. Edits come from many different tools, such as the inspector, gizmos, tile painting and curve editors, and all of them go through the editor’s undo system. The C++ core runs inside the editor on Windows, macOS and Linux. After every change to the undo history, it compares the open scenes with a copy of the last synced state and sends the differences to the server as operations. This works with every editor tool and with other plugins without extra code. The value encoding is tested against every class in the engine.
Keeping editors in sync
Each node has an ID stored in hidden metadata. The ID is derived the same way on every computer, so two editors that open the same file give its nodes the same IDs. The server puts all edits in one order and every editor applies them in that order. When two people change the same property, the later change is kept and both changes are saved in the history.
Scripts and teamwork
Several people can type in the same script or shader at once, and Ctrl+Z undoes only your own changes. You can follow a teammate’s view, bring everyone to your view, chat, and leave comments in a scene.
Reliability
Every edit is saved to the database before it is sent to the rest of the team. The editor keeps unsent edits on disk. After a disconnect or a crash it reconnects, downloads what it missed and sends its edits again, and the server ignores duplicates.
Who built it
I built YHDE myself. That includes the C++ core, the GDScript add-on, the C# server and PostgreSQL database, the website and admin page in React and TypeScript, the deployment, and a load testing tool. YHDE is going open source.
Aatra Jun 2026 to now
A grand strategy game inspired by Europa Universalis. The world is generated when a new game starts, so every playthrough has different continents.
World generation is written in C++ for performance, and the gameplay is written in GDScript in Godot. I started it in June 2026 and I’m working on it alone. It’s still in development.
Education
Keuda July 2025 to now
Vocational qualification in information and communications technology, software development. I’m in my second year.
Experience
LuppaSoppi 2025 to now
I work as a web developer in a team of four on a client project through Keuda. We built LuppaSoppi’s WordPress website together with the client, and we’re now expanding it into an online store.
What I work with
Click any name to swap it for its logo, and drag a row by its label.
Contact
If your studio is hiring a programmer, I’d like to hear from you.
[email protected]This is the game development version of my portfolio. There’s also a software development version.