{"id":1138,"date":"2013-03-12T14:51:18","date_gmt":"2013-03-12T21:51:18","guid":{"rendered":"https:\/\/dylanmc.ca\/\/-\/?p=1138"},"modified":"2024-09-16T10:08:26","modified_gmt":"2024-09-16T17:08:26","slug":"the-attack-of-the-crimson-plumber-ludum-dare-25","status":"publish","type":"post","link":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/","title":{"rendered":"The Attack of the Crimson Plumber! &#8211; Ludum Dare 25"},"content":{"rendered":"\n<p>Continuing on my current trend of writing blog posts about a year late, let me tell you about my last Ludum Dare game!<\/p>\n\n\n\n<p>One of these days, I will make a Ludum Dare game with an actual opponent. My Ludum Dare 25 game was no such achievement, but I ended up happier with it than <a title=\"Space Bees Attack! \u2013 My Ludum Dare 23 entry\" href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2012\/05\/01\/space-bees-attack-my-ludum-dare-23-entry\/\">my last one<\/a>. The tight deadline led to some very satisfying late changes and workarounds, and only a few disastrous omissions.<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-15-151249\/\" rel=\"attachment wp-att-1681\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"165\" data-attachment-id=\"1681\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-15-151249\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249.png?fit=624%2C345&amp;ssl=1\" data-orig-size=\"624,345\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2012-12-15 15:12:49\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;It all started with a hideous tile system demo, of course.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249.png?fit=300%2C165&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249.png?fit=525%2C290&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249.png?resize=300%2C165&#038;ssl=1\" alt=\"It all started with a hideous tile system demo, of course.\" class=\"wp-image-1681\" srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249.png?resize=300%2C165&amp;ssl=1 300w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249.png?w=624&amp;ssl=1 624w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">It all started with a hideous tile system demo, of course.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>The LD25 theme was &#8220;You are the villain.&#8221; I managed to come up with an idea reasonably quickly: the player needs to place traps in a&nbsp;side-scrolling&nbsp;platformer&nbsp;modelled&nbsp;after a Mario boss battle. As usual, that idea ballooned into something way more complicated than I could have handled in 48 or 72 hours. I had to do the hard part (editing!) while I made the thing. At its fullest, this would have demanded some fancy game mechanics to ensure the player doesn&#8217;t break the game and some fancy AI that can actually navigate traps. And then some even fancier AI that can navigate traps without being predictable or annoyingly capable.<\/p>\n\n\n\n<p>Dreading all the decision-making around that, I&nbsp;doddled&nbsp;along for the first day and a half, mostly just fiddling with the base technology. I wanted some practice with HTML Canvas, so I grabbed the Dart SDK as well, since I thought that language looked pretty interesting. As might be expected, this was a really great combination \u2014 I barely had any trouble with it. Eventually, I came up with some rudimentary behaviour for the opponent, so it always walks ahead and jumps (or doesn&#8217;t jump) according to certain combinations of blocks in its path. The graphics looked bad and I felt somewhat relieved thinking that I just wasn&#8217;t going to bother subjecting anyone to this thing.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-16-194735\/\" rel=\"attachment wp-att-1680\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"192\" data-attachment-id=\"1680\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-16-194735\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?fit=1316%2C843&amp;ssl=1\" data-orig-size=\"1316,843\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2012-12-16 19:47:35\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;It got more complicated, and worse in just about every way.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?fit=300%2C192&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?fit=525%2C336&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?resize=300%2C192&#038;ssl=1\" alt=\"It got more complicated, and worse in just about every way.\" class=\"wp-image-1680\" srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?resize=300%2C192&amp;ssl=1 300w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?resize=750%2C480&amp;ssl=1 750w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?w=1316&amp;ssl=1 1316w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-16-194735.png?w=1050&amp;ssl=1 1050w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">It got more complicated, and worse in just about every way.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Then a friend convinced me to release it for some reason. What a jerk.<\/p>\n\n\n\n<p>The painfully unreliable collision detection reminded me of those old handheld LCD games, so in the last few hours I changed most of the graphics to snap to a grid and I switched to a grey colour palette for the foreground, with a fixed coloured background. I also added a simple LCD ghosting effect, and I tinkered with buffers for some interesting effects.<\/p>\n\n\n\n<p>I think it looks quite handsome, for about half an hour of work.<\/p>\n\n\n\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-columns\"><div class=\"\"><div class=\"tiled-gallery__gallery\"><div class=\"tiled-gallery__row\"><div class=\"tiled-gallery__col\" style=\"flex-basis:77.12191%\"><figure class=\"tiled-gallery__item\"><a href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-17-192044\/\"><img decoding=\"async\" data-attachment-id=\"1688\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-17-192044\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?fit=1438%2C795&amp;ssl=1\" data-orig-size=\"1438,795\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2012-12-17 19:20:44\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;I also added a simple LCD ghosting effect, and messed with buffers for amusing results.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?fit=300%2C165&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?fit=525%2C290&amp;ssl=1\" data-attachment-id=\"1688\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-17-192044\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?fit=1438%2C795&amp;ssl=1\" data-orig-size=\"1438,795\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2012-12-17 19:20:44\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;I also added a simple LCD ghosting effect, and messed with buffers for amusing results.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?fit=300%2C165&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?fit=525%2C290&amp;ssl=1\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 1 of 2 in full-screen\"srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?strip=info&#038;w=600&#038;ssl=1 600w,https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?strip=info&#038;w=900&#038;ssl=1 900w,https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?strip=info&#038;w=1200&#038;ssl=1 1200w,https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?strip=info&#038;w=1438&#038;ssl=1 1438w\" alt=\"\" data-height=\"795\" data-id=\"1688\" data-link=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-17-192044\/\" data-url=\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png\" data-width=\"1438\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-192044.png?ssl=1\" data-amp-layout=\"responsive\" tabindex=\"0\" role=\"button\" aria-label=\"Open image 1 of 2 in full-screen\"\/><\/a><\/figure><\/div><div class=\"tiled-gallery__col\" style=\"flex-basis:22.87809%\"><figure class=\"tiled-gallery__item\"><a href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-screencast-from-12-12-17-085924-pm-webm\/\"><img decoding=\"async\" data-attachment-id=\"1685\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-screencast-from-12-12-17-085924-pm-webm\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?fit=222%2C416&amp;ssl=1\" data-orig-size=\"222,416\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from Screencast from 12-12-17 08:59:24 PM.webm\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;The most satisfying part of the game: failure. (This time with a little more style).&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?fit=160%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?fit=222%2C416&amp;ssl=1\" data-attachment-id=\"1685\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-screencast-from-12-12-17-085924-pm-webm\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?fit=222%2C416&amp;ssl=1\" data-orig-size=\"222,416\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from Screencast from 12-12-17 08:59:24 PM.webm\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;The most satisfying part of the game: failure. (This time with a little more style).&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?fit=160%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?fit=222%2C416&amp;ssl=1\" role=\"button\" tabindex=\"0\" aria-label=\"Open image 2 of 2 in full-screen\"srcset=\"https:\/\/i1.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?strip=info&#038;w=222&#038;ssl=1 222w\" alt=\"\" data-height=\"416\" data-id=\"1685\" data-link=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-screencast-from-12-12-17-085924-pm-webm\/\" data-url=\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png\" data-width=\"222\" src=\"https:\/\/i1.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-Screencast-from-12-12-17-085924-PM.webm.png?ssl=1\" data-amp-layout=\"responsive\" tabindex=\"0\" role=\"button\" aria-label=\"Open image 2 of 2 in full-screen\"\/><\/a><\/figure><\/div><\/div><\/div><\/div><\/div>\n\n\n\n<p>The rest of the game turned out more complicated than I had time for, so it all kind of falls apart if you look at it for more than a minute, but it was fun to explore Dart and HTML Canvas. I hadn&#8217;t used them before, and now that I&#8217;ve had some time to play around I feel really good about both of them. I hope I get to use them again some day! Next time, I&#8217;ll remember to implement timing code&nbsp;<em>first<\/em>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-17-205703\/\" rel=\"attachment wp-att-1684\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"238\" data-attachment-id=\"1684\" data-permalink=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/screenshot-from-2012-12-17-205703\/\" data-orig-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?fit=1307%2C594&amp;ssl=1\" data-orig-size=\"1307,594\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2012-12-17 20:57:03\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;That background gradient worked wonders.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?fit=300%2C136&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?fit=525%2C238&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?resize=525%2C238&#038;ssl=1\" alt=\"That background gradient worked wonders.\" class=\"wp-image-1684\" srcset=\"https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?resize=750%2C340&amp;ssl=1 750w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?resize=300%2C136&amp;ssl=1 300w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?w=1307&amp;ssl=1 1307w, https:\/\/i0.wp.com\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-17-205703.png?w=1050&amp;ssl=1 1050w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption class=\"wp-element-caption\">That background gradient worked wonders.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>If you want to play the game for some reason, it&#8217;s available <a href=\"https:\/\/s1.dylanmccall.com\/LD25\/CrimsonPlumber\/AttackOfTheCrimsonPlumber.html\">on the web<\/a>. It should work with any modern browser. <a href=\"https:\/\/s1.dylanmccall.com\/LD25\/CrimsonPlumber\/AttackOfTheCrimsonPlumber.dart\">The source<\/a> is in a single .dart file (I mentioned it was terrible, right?), and all the rest is on\u00a0<a href=\"https:\/\/web.archive.org\/web\/20210421101102\/http:\/\/www.ludumdare.com\/compo\/ludum-dare-25\/?action=preview&amp;uid=10898\">the game&#8217;s entry page at ludumdare.com<\/a>.<\/p>\n\n\n\n<p>As always, other magical people made some amazing things. Here are some of my favourites:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/web.archive.org\/web\/20210411133927\/http:\/\/www.ludumdare.com\/compo\/ludum-dare-25\/?action=preview&amp;uid=1984\">Age of Umpires<\/a>. Sort of reminds me of Konami Ice Hockey. Also, believe me: the referee mode is incredible.<\/li>\n\n\n\n<li><a href=\"https:\/\/web.archive.org\/web\/20210419103810\/http:\/\/ludumdare.com\/compo\/ludum-dare-25\/?action=preview&amp;uid=11072\">Dance Man<\/a>. This one is by <a href=\"http:\/\/andrewbrowngames.wordpress.com\/\">Andrew Brown<\/a>, who created Baby Farm for LD23. Bizarre and yet brilliant, again, as usual.<\/li>\n\n\n\n<li><a href=\"https:\/\/web.archive.org\/web\/20210305105339\/http:\/\/ludumdare.com\/compo\/ludum-dare-25\/?action=preview&amp;uid=8060\">Space Lord<\/a>. Space invaders. Need I say more?<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Continuing on my current trend of writing blog posts about a year late, let me tell you about my last Ludum Dare game!<\/p>\n<p>One of these days, I will make a Ludum Dare game with an actual opponent. My Ludum Dare 25 game was no such achievement, but I ended up happier with it than <a title=\"Space Bees Attack! \u2013 My Ludum Dare 23 entry\" href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2012\/05\/01\/space-bees-attack-my-ludum-dare-23-entry\/\">my last one<\/a>. The tight deadline led to some very satisfying late changes and workarounds, and only a few disastrous omissions&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federate","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[54],"tags":[57],"class_list":["post-1138","post","type-post","status-publish","format-standard","hentry","category-games","tag-ludum-dare"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Attack of the Crimson Plumber! - Ludum Dare 25 - Dylan McCall<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Attack of the Crimson Plumber! - Ludum Dare 25 - Dylan McCall\" \/>\n<meta property=\"og:description\" content=\"Continuing on my current trend of writing blog posts about a year late, let me tell you about my last Ludum Dare game!  One of these days, I will make a Ludum Dare game with an actual opponent. My Ludum Dare 25 game was no such achievement, but I ended up happier with it than my last one. The tight deadline led to some very satisfying late changes and workarounds, and only a few disastrous omissions&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\" \/>\n<meta property=\"og:site_name\" content=\"Dylan McCall\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-12T21:51:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-16T17:08:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png\" \/>\n<meta name=\"author\" content=\"Dylan McCall\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dylan McCall\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\"},\"author\":{\"name\":\"Dylan McCall\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5\"},\"headline\":\"The Attack of the Crimson Plumber! &#8211; Ludum Dare 25\",\"datePublished\":\"2013-03-12T21:51:18+00:00\",\"dateModified\":\"2024-09-16T17:08:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\"},\"wordCount\":635,\"image\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png\",\"keywords\":[\"Ludum Dare\"],\"articleSection\":[\"Games\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\",\"url\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\",\"name\":\"The Attack of the Crimson Plumber! - Ludum Dare 25 - Dylan McCall\",\"isPartOf\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png\",\"datePublished\":\"2013-03-12T21:51:18+00:00\",\"dateModified\":\"2024-09-16T17:08:26+00:00\",\"author\":{\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage\",\"url\":\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png\",\"contentUrl\":\"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#website\",\"url\":\"https:\/\/dylanmc.ca\/\/-\/\",\"name\":\"Dylan McCall\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dylanmc.ca\/\/-\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5\",\"name\":\"Dylan McCall\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g\",\"caption\":\"Dylan McCall\"},\"description\":\"Software developer, tea drinker, GNOME contributor. Occasionally a raving fanatic.\",\"sameAs\":[\"https:\/\/dylanmc.ca\/\/-\"],\"url\":\"https:\/\/dylanmc.ca\/\/-\/blog\/author\/dylan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Attack of the Crimson Plumber! - Ludum Dare 25 - Dylan McCall","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/","og_locale":"en_US","og_type":"article","og_title":"The Attack of the Crimson Plumber! - Ludum Dare 25 - Dylan McCall","og_description":"Continuing on my current trend of writing blog posts about a year late, let me tell you about my last Ludum Dare game!  One of these days, I will make a Ludum Dare game with an actual opponent. My Ludum Dare 25 game was no such achievement, but I ended up happier with it than my last one. The tight deadline led to some very satisfying late changes and workarounds, and only a few disastrous omissions&hellip;","og_url":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/","og_site_name":"Dylan McCall","article_published_time":"2013-03-12T21:51:18+00:00","article_modified_time":"2024-09-16T17:08:26+00:00","og_image":[{"url":"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png","type":"","width":"","height":""}],"author":"Dylan McCall","twitter_misc":{"Written by":"Dylan McCall","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#article","isPartOf":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/"},"author":{"name":"Dylan McCall","@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5"},"headline":"The Attack of the Crimson Plumber! &#8211; Ludum Dare 25","datePublished":"2013-03-12T21:51:18+00:00","dateModified":"2024-09-16T17:08:26+00:00","mainEntityOfPage":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/"},"wordCount":635,"image":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage"},"thumbnailUrl":"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png","keywords":["Ludum Dare"],"articleSection":["Games"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/","url":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/","name":"The Attack of the Crimson Plumber! - Ludum Dare 25 - Dylan McCall","isPartOf":{"@id":"https:\/\/dylanmc.ca\/\/-\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage"},"image":{"@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage"},"thumbnailUrl":"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png","datePublished":"2013-03-12T21:51:18+00:00","dateModified":"2024-09-16T17:08:26+00:00","author":{"@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dylanmc.ca\/\/-\/blog\/2013\/03\/12\/the-attack-of-the-crimson-plumber-ludum-dare-25\/#primaryimage","url":"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png","contentUrl":"https:\/\/dylanmc.ca\/wp-content\/uploads\/Screenshot-from-2012-12-15-151249-300x165.png"},{"@type":"WebSite","@id":"https:\/\/dylanmc.ca\/\/-\/#website","url":"https:\/\/dylanmc.ca\/\/-\/","name":"Dylan McCall","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dylanmc.ca\/\/-\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/c244419a779c5414c768bc53ac5fb2d5","name":"Dylan McCall","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dylanmc.ca\/\/-\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94ab3a7e6a884542205e0408711cd54bb1fd5f4e90e7a5f621a54656a18a037?s=96&d=mm&r=g","caption":"Dylan McCall"},"description":"Software developer, tea drinker, GNOME contributor. Occasionally a raving fanatic.","sameAs":["https:\/\/dylanmc.ca\/\/-"],"url":"https:\/\/dylanmc.ca\/\/-\/blog\/author\/dylan\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pcXOQX-im","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts\/1138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/comments?post=1138"}],"version-history":[{"count":25,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts\/1138\/revisions"}],"predecessor-version":[{"id":12777,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/posts\/1138\/revisions\/12777"}],"wp:attachment":[{"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/media?parent=1138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/categories?post=1138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dylanmc.ca\/\/-\/wp-json\/wp\/v2\/tags?post=1138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}