<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Performance on Nathaniel Inman</title><link>https://nathanielinman.com/tags/performance/</link><description>Recent content in Performance on Nathaniel Inman</description><generator>Hugo -- 0.147.7</generator><language>en-us</language><copyright>Nathaniel Inman</copyright><lastBuildDate>Sat, 20 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://nathanielinman.com/tags/performance/index.xml" rel="self" type="application/rss+xml"/><item><title>2.5D: 2D Gameplay, 3D Rendering, 1000+ Enemies</title><link>https://nathanielinman.com/2-5d-rendering-1000-enemies/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://nathanielinman.com/2-5d-rendering-1000-enemies/</guid><description>&lt;p>I &lt;a href="https://nathanielinman.com/building-a-modern-roguelike-in-2026/">promised last time&lt;/a> I&amp;rsquo;d write up the rendering trick that lets the Godot port of DET-33 push far more enemies than the JS version. Here it is, and it&amp;rsquo;s a little unusual: the game runs its logic in 2D and its rendering in 3D.&lt;/p>
&lt;p>&lt;img alt="Top-down gameplay, but rendered in 3D at an ~80 degree pitch: note the depth on the foliage and the fog" loading="lazy" src="https://nathanielinman.com/content/images/2026/det33/combat-2-5d.png">&lt;/p>
&lt;h3 id="why-split-them">Why split them&lt;/h3>
&lt;p>A top-down bullet-hell wants to look 2D, and all the gameplay genuinely is 2D. Physics, collision, movement, combat, skills, traps, and the entire map-generation pipeline stay in 2D where they&amp;rsquo;re simple to reason about. But drawing a thousand individual 2D sprites means a thousand draw calls, and culling what&amp;rsquo;s behind a wall means doing visibility checks on the CPU. Both were exactly the costs that capped the JS build.&lt;/p></description></item><item><title>Building a Modern Roguelike in 2026</title><link>https://nathanielinman.com/building-a-modern-roguelike-in-2026/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://nathanielinman.com/building-a-modern-roguelike-in-2026/</guid><description>&lt;p>I have a habit of writing one of these every few years. &lt;a href="https://nathanielinman.com/building-a-modern-roguelike-in-2017/">In 2017&lt;/a> it was a 7DRL experiment merging a roguelike with an FPS, and &lt;a href="https://nathanielinman.com/building-a-modern-roguelike-in-2019/">in 2019&lt;/a> it was ascii characters embedded into a 3d map. This year&amp;rsquo;s entry is different: DET-33, the bullet-hell roguelike I built in JS and Phaser over the last few months, is feature-complete and plays great. So naturally I&amp;rsquo;m rewriting it from scratch in Godot 4 and C#.&lt;/p></description></item></channel></rss>