<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sven's Dev Journal</title><link>https://shendriks.dev/</link><description>Recent content on Sven's Dev Journal</description><language>en-us</language><lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://shendriks.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Shmup Devlog #4 - Collisions, Part Deux</title><link>https://shendriks.dev/devlog/2d-shmup/0004-collisions-part-deux/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/devlog/2d-shmup/0004-collisions-part-deux/</guid><description>
Fast bullets were tunneling straight through enemies undetected. This post digs into why, and adds a swept collision test for every pair the simple check misses.
&lt;img src="https://shendriks.dev/devlog/2d-shmup/0004-collisions-part-deux/images/tunneling-gap.svg"></description></item><item><title>Shmup Devlog #3 - Collisions</title><link>https://shendriks.dev/devlog/2d-shmup/0003-collisions/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><lastBuildDate>Sun, 26 Apr 2026 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/devlog/2d-shmup/0003-collisions/</guid><description>
This post is about benchmarking the collision detection system, comparing the brute-force approach to a spatial hash grid approach.
&lt;img src="https://shendriks.dev/devlog/2d-shmup/0003-collisions/images/duration.png"></description></item><item><title>Shmup Devlog #2 - One Life Closer to Game Over</title><link>https://shendriks.dev/devlog/2d-shmup/0002-one-life-closer-to-game-over/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><lastBuildDate>Sat, 28 Feb 2026 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/devlog/2d-shmup/0002-one-life-closer-to-game-over/</guid><description>
This post is about player lifes, re-spawning, game over, score and pre-shot animations
&lt;img src="https://shendriks.dev/devlog/2d-shmup/0002-one-life-closer-to-game-over/images/game-over.webp"></description></item><item><title>Shmup Devlog #1 - Weapons, Upgrades, and Damage Mechanics</title><link>https://shendriks.dev/devlog/2d-shmup/0001-weapon-upgrades-and-damage/</link><pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate><lastBuildDate>Sun, 08 Feb 2026 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/devlog/2d-shmup/0001-weapon-upgrades-and-damage/</guid><description>
This article is about the weapons, upgrades, and damage mechanics
&lt;img src="https://shendriks.dev/devlog/2d-shmup/0001-weapon-upgrades-and-damage/images/homing-missiles.webp"></description></item><item><title>Shmup Devlog #0 - No Plan, Just Bullets</title><link>https://shendriks.dev/devlog/2d-shmup/0000-no-plan-just-bullets-a-shmup-devlog-begins/</link><pubDate>Mon, 26 Jan 2026 00:00:00 +0000</pubDate><lastBuildDate>Mon, 26 Jan 2026 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/devlog/2d-shmup/0000-no-plan-just-bullets-a-shmup-devlog-begins/</guid><description>
I&amp;rsquo;ve always wanted to make a game. But I always thought that it would be too difficult. Then, one day, I thought &amp;ldquo;It can&amp;rsquo;t be that hard, right? Right?!&amp;rdquo;
&lt;img src="https://shendriks.dev/devlog/2d-shmup/0000-no-plan-just-bullets-a-shmup-devlog-begins/images/2d-shmup-01.webp"></description></item><item><title>Loosely Coupled Game Architecture with Events and Commands</title><link>https://shendriks.dev/posts/2025-05-10-loosely-coupled-game-architecture-with-events-and-commands/</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><lastBuildDate>Fri, 09 Jan 2026 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2025-05-10-loosely-coupled-game-architecture-with-events-and-commands/</guid><description>
This article introduces events and commands as a way to decouple game components. A (very) basic space shooter example illustrates how the pattern can be applied in practice.
&lt;img src="https://shendriks.dev/posts/2025-05-10-loosely-coupled-game-architecture-with-events-and-commands/images/message-dispatcher-0.png"></description></item><item><title>Framework-Independent Game Logic with Hexagonal Architecture</title><link>https://shendriks.dev/posts/2024-12-30-making-game-logic-framework-independent-with-hexagonal-architecture/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><lastBuildDate>Mon, 30 Dec 2024 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2024-12-30-making-game-logic-framework-independent-with-hexagonal-architecture/</guid><description>
Implementing a classic table tennis game using MonoGame, but making it so, that the game logic is independent of the framework using Hexagonal Architecture.
&lt;img src="https://shendriks.dev/posts/2024-12-30-making-game-logic-framework-independent-with-hexagonal-architecture/images/architecture.png"></description></item><item><title>A* Pathfinding in 2D Games: Addendum about Cyclic Dependencies</title><link>https://shendriks.dev/posts/2024-12-01-a-star-pathfinding-supplemental/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><lastBuildDate>Mon, 23 Dec 2024 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2024-12-01-a-star-pathfinding-supplemental/</guid><description>
Putting the grid navigation in its own class to avoid a cyclic dependency and to improve separation of concerns.
&lt;img src="https://shendriks.dev/posts/2024-12-01-a-star-pathfinding-supplemental/images/grid-cell-dependency-02b.png"></description></item><item><title>A* Pathfinding in 2D Games: From Top-Down to Side-View</title><link>https://shendriks.dev/posts/2024-09-04-a-star-pathfinding-side-view/</link><pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate><lastBuildDate>Thu, 24 Oct 2024 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2024-09-04-a-star-pathfinding-side-view/</guid><description>
Implementing the A* algorithm for pathfinding in a 2D side-scrolling platformer with gravity, ladders and hanging bars.
&lt;img src="https://shendriks.dev/posts/2024-09-04-a-star-pathfinding-side-view/images/example.png"></description></item><item><title>A* Pathfinding in 2D Games: A Simple Top-Down Scenario Implemented with MonoGame/KNI</title><link>https://shendriks.dev/posts/2024-08-24-a-star-pathfinding-top-down-blazorgl/</link><pubDate>Sat, 24 Aug 2024 00:00:00 +0000</pubDate><lastBuildDate>Sat, 24 Aug 2024 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2024-08-24-a-star-pathfinding-top-down-blazorgl/</guid><description>
In this article we will have a look at the implementation of the A* algorithm from the previous post with KNI, a MonoGame derivate with support for BlazorGL.
&lt;img src="https://shendriks.dev/posts/2024-08-24-a-star-pathfinding-top-down-blazorgl/images/gui.png"></description></item><item><title>A* Pathfinding in 2D Games: The Basics for a Simple Top-Down Scenario</title><link>https://shendriks.dev/posts/2024-07-13-a-star-pathfinding-in-2d-games-the-basics-for-top-down-scenarios/</link><pubDate>Sat, 13 Jul 2024 00:00:00 +0000</pubDate><lastBuildDate>Sat, 27 Jul 2024 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2024-07-13-a-star-pathfinding-in-2d-games-the-basics-for-top-down-scenarios/</guid><description>
This article introduces the implementation of A* pathfinding in a 2D top-down game, setting the stage for more complex applications in side-scrolling platformers.
&lt;img src="https://shendriks.dev/posts/2024-07-13-a-star-pathfinding-in-2d-games-the-basics-for-top-down-scenarios/images/pathfinding-01.png"></description></item><item><title>Using Hugo with Mermaid without client-side JavaScript</title><link>https://shendriks.dev/posts/2024-04-19-using-hugo-with-mermaid-wo-javascript/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><lastBuildDate>Sat, 13 Jul 2024 00:00:00 +0000</lastBuildDate><guid>https://shendriks.dev/posts/2024-04-19-using-hugo-with-mermaid-wo-javascript/</guid><description>
Convert Mermaid diagrams to SVG at build time to shift the burden of rendering diagrams from the client’s browser to the server.
&lt;img src="https://shendriks.dev/posts/2024-04-19-using-hugo-with-mermaid-wo-javascript/pizza-chart.png"></description></item></channel></rss>