{"id":4090,"date":"2025-09-16T11:11:23","date_gmt":"2025-09-16T17:11:23","guid":{"rendered":"https:\/\/handyvandal.com\/wphv\/?p=4090"},"modified":"2025-09-16T11:11:27","modified_gmt":"2025-09-16T17:11:27","slug":"doom-ported-to-sql","status":"publish","type":"post","link":"https:\/\/handyvandal.com\/wphv\/2025\/09\/doom-ported-to-sql\/","title":{"rendered":"Doom ported to SQL"},"content":{"rendered":"<p>A computer scientist used only &#8220;pure SQL&#8221; to construct a multiplayer DOOM-like game. The resulting first-person shooter game, cobbled from a mere ~150 lines of Python code, is dubbed DOOMQL. Despite the self-imposed software architecture restrictions, Lukas Vogel, co-founder of database performance outfit CedarDB, says DOOMQL plays at &#8220;a breezy ~30 FPS.&#8221;<\/p>\n<p>See:  <a href=\"https:\/\/cedardb.com\/blog\/doomql\/\">Building a DOOM-like multiplayer shooter in pure SQL<\/a><\/p>\n<p>Features:<\/p>\n<p><strong>Pure SQL renderer<\/strong>: Raycasting, sprite projection, occlusion, and HUD, all implemented as VIEWS.<\/p>\n<p><strong>Multiplayer<\/strong>: CedarDB handles concurrent players, synchronization, and state.<\/p>\n<p><strong>Hackable game state<\/strong>: Change config, teleport players, or balance weapons with a single UPDATE.<\/p>\n<p><strong>First-class cheating support<\/strong>: Since everyone just talks SQL to the DB, half the fun is figuring out sneaky cheating queries.<\/p>\n<p><strong>Minimal client<\/strong>: 150 lines of Python to capture key presses and display frames to your terminal.<\/p>\n<p>Via <a href=\"https:\/\/boingboing.net\/2025\/09\/16\/doom-ported-to-sql-welcome-to-hell.html\">Boing Boing<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A computer scientist used only &#8220;pure SQL&#8221; to construct a multiplayer DOOM-like game. The resulting first-person shooter game, cobbled from a mere ~150 lines of Python code, is dubbed DOOMQL. Despite the self-imposed software architecture restrictions, Lukas Vogel, co-founder of database performance outfit CedarDB, says DOOMQL plays at &#8220;a breezy ~30 FPS.&#8221; See: Building a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4091,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-4090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-video-games"],"_links":{"self":[{"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/posts\/4090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/comments?post=4090"}],"version-history":[{"count":1,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/posts\/4090\/revisions"}],"predecessor-version":[{"id":4092,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/posts\/4090\/revisions\/4092"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/media\/4091"}],"wp:attachment":[{"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/media?parent=4090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/categories?post=4090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/handyvandal.com\/wphv\/wp-json\/wp\/v2\/tags?post=4090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}