{"assets":[{"original":"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow-title-550x309.png","local":"\/data\/posts\/2014\/12\/9ffc3570fce496e118b6fae4b6012ff4.png"},{"original":"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow-exit-300x168.png","local":"\/data\/posts\/2014\/12\/cb755cea0574bd8e15ce18ae1b63cfda.png"},{"original":"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow2-300x168.png","local":"\/data\/posts\/2014\/12\/818ecc4c6890d9bb78c6b6e4cdea2f19.png"},{"original":"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow3-300x168.png","local":"\/data\/posts\/2014\/12\/0773a0f261cb40403894143b9f7abbc0.png"}],"author_link":"author\/tyruspeace\/","author_name":"TyrusPeace","cat":"LD #31","categories":["LD #31"],"comments":[],"epoch":1418026920,"event":"LD31","likes":11,"metadata":{"p_key":"82404","p_author":"TyrusPeace","p_authorkey":"0","p_urlkey":"293136","p_title":"Blue Window: post mortem","p_cat":"LD #31","p_event":"LD31","p_time":"1418026920","p_likes":"11","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1417737600","event_key":"26","event_name":"LD31"},"source_url":"2014\/12\/08\/blue-window-post-mortem\/","text":"<p><a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/08\/blue-window-post-mortem\/bluewindow-title\/\" rel=\"attachment wp-att-419914\"><img alt=\"bluewindow-title\" class=\"alignnone size-large wp-image-419914\" height=\"309\" sizes=\"(max-width: 550px) 100vw, 550px\" src=\"\/data\/posts\/2014\/12\/9ffc3570fce496e118b6fae4b6012ff4.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow-title-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow-title-550x309.png 550w\" width=\"550\"\/><\/a><\/p>\n<p><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=5305\">My entry, Blue Window, is submitted for the compo and playable here.<\/a><\/p>\n<p>This was my most relaxed Ludum Dare dev cycle yet! A lot of things went right for this, but the biggest one was that I was in \u201ccontent production mode\u201d, just designing levels, by the end of the first day. I naturally did end up coding up some new toys for the last few levels a few hours before submitting, though ;).<\/p>\n<h2>Day 0<\/h2>\n<p>I got all self righteous and puffy about the the topic, so I set out to do something in 3D despite the implied design restrictions. I\u2019ve seen a good few other entries with \u201cone screen in a 3D world\u201d concepts, so I\u2019m not exactly\u00a0breaking the mold here. I\u2019m pretty happy with the concept, though.<\/p>\n<p>I had a prototype of the rendering working in a few hours:<\/p>\n<p><img alt=\"\" class=\"alignnone\" height=\"223\" src=\"http:\/\/stttutter.com\/LD\/31\/screen-wip-vine.gif\" width=\"250\"\/><\/p>\n<p>Unity\u2019s RenderTexture and using different layers for objects that were only visible via the screen were most of the work here. The rest was spent fiddling with the overall art style and the screen camera\u2019s rendering settings to make the screen\u2019s contents look unique\/different from the rest of the world.<\/p>\n<p>I had a go at making the screen\u2019s texture size dynamic based on your screen resolution and bailed once I had unexpected\u00a0aspect ratio problems. Fortunately,\u00a0I think having pixelation in there helped it look more like an in-game object, rather than just some magical hovering portal.<\/p>\n<p>My chief focus for the first night was getting the actual crux of the game design implemented: being able to click on the screen while it\u2019s up to activate\/deactivate otherwise invisible objects in the world.<\/p>\n<p><img alt=\"\" class=\"alignnone\" height=\"270\" src=\"http:\/\/stttutter.com\/LD\/31\/screen-wip-0.gif\" width=\"460\"\/><\/p>\n<p>This involved raycasting from the mouse world position for the player\u2019s camera until it hit the \u201cblue window\u201d\u2018s screen, and then using that to find the pixel coordinates of the clicked location in its texture. Then I figured out the world position of that texture coordinate in the blue window\u2019s\u00a0coordinate system, raycast from there, and figured out what the user was hovering\/clicking.<\/p>\n<p>It ended up being a fairly late night, working from\u00a0about an hour after the\u00a07pm announcement time to 2am after a fairly late and strenuous day of real-world work. It was a great start to Ludum Dare, though!<\/p>\n<h2>Day 1<\/h2>\n<p>I accidentally left my alarm on and woke up at 7am. That sucked.<\/p>\n<p>While inspiration carried me pretty late into the first night, I\u2019d definitely had a long week leading into this, and I felt it waking up the next morning. I stumbled and bumbled through until I could get my footing. I managed to\u00a0<a href=\"http:\/\/stttutter.com\/LD\/31\/screen-wip-2.gif\">test the physics<\/a> of what I\u2019d implemented and then\u00a0Chipotle <em>finally<\/em> opened. This really just involved making those pillars physics objects and then fiddling with the logic for that\u00a0activate\/deactivate label *a lot* so that it would stay somewhere comprehensible once things started moving.<\/p>\n<p>By 7pm I\u2019d gotten vertical fog and respawning working, stuck a bunch of hanging text into a level, and had a mostly functional tutorial.<\/p>\n<div class=\"wp-caption alignnone\" style=\"width: 298px\"><img alt=\"\" height=\"194\" src=\"http:\/\/stttutter.com\/LD\/31\/screen-wip-3.gif\" width=\"288\"\/><p class=\"wp-caption-text\">I\u2019m pretty slow at implementing vertical fog for\u00a0someone that spends so much of his free time working on a game about clouds.<\/p><\/div>\n<p>After coding the level exit logic I then moved on to designing the next two levels.<\/p>\n<p><a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/08\/blue-window-post-mortem\/bluewindow-exit\/\" rel=\"attachment wp-att-419979\"><img alt=\"bluewindow-exit\" class=\"alignnone size-medium wp-image-419979\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"\/data\/posts\/2014\/12\/cb755cea0574bd8e15ce18ae1b63cfda.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow-exit-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow-exit-550x309.png 550w\" width=\"300\"\/><\/a>\u00a0<a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/08\/blue-window-post-mortem\/bluewindow2\/\" rel=\"attachment wp-att-419985\"><img alt=\"bluewindow2\" class=\"alignnone size-medium wp-image-419985\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"\/data\/posts\/2014\/12\/818ecc4c6890d9bb78c6b6e4cdea2f19.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow2-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow2-550x309.png 550w\" width=\"300\"\/><\/a><a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/08\/blue-window-post-mortem\/bluewindow3\/\" rel=\"attachment wp-att-419987\"><img alt=\"bluewindow3\" class=\"alignnone size-medium wp-image-419987\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"\/data\/posts\/2014\/12\/0773a0f261cb40403894143b9f7abbc0.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow3-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow3-550x309.png 550w\" width=\"300\"\/><\/a><\/p>\n<h3>On designing puzzles:<\/h3>\n<p>From the designer\u2019s perspective I\u2019ve always had a hard time with puzzles. It\u2019s very hard to not see *every* bit of progress that the user makes in a game as \u201cmove forward, click on things until progress is possible, repeat\u201d. Naturally, that\u2019s not how I want the player to feel.<\/p>\n<p>I tend to\u00a0just see through the design of my own game, so I concentrated on making things fun, pretty, and with relatively obvious but explorable game mechanics leading into\u00a0a bit of player education before any challenging stuff. Basically, \u00a0<a href=\"https:\/\/vine.co\/v\/OrA9dWIWYd9\">I gave up designing fancy puzzles and blew things up instead<\/a>.<\/p>\n<h2>Day 2<\/h2>\n<p>I spent the first half of my last\u00a0day fiddling around with GarageBand, making a song to play to. Then I finally managed to write that \u201cresume playing from the last spot you were at before the level loaded\u201d script that all of my Ludum Dare entries have desperately needed. When reading the docs on the playback time I was fetching warned that compressed streams could\u00a0be off by some amount of time. Perfect! It results in the music stuttering and\/or glitching when you respawn sometimes. I like the effect.<\/p>\n<p>Actually, I <em>probably<\/em> spent most of that morning tearfully singing along with <a href=\"http:\/\/www.youtube.com\/watch?v=e2J-0EtsCpo\">Rivers and Roads<\/a>. The dog didn\u2019t seem to care for it, but it was a pretty good way to reboot.<\/p>\n<p>After taking time out for a rather nice\u00a0lunch with my parents, I figured I\u2019d had a nice long break from all of that coding stuff and dove back into it to make a new obstacle for the last few levels of Blue Window:<\/p>\n<p><img alt=\"\" class=\"alignnone\" height=\"176\" src=\"http:\/\/stttutter.com\/LD\/31\/screen-wip-6.gif\" width=\"310\"\/><\/p>\n<p>I made a normal boring \u201c1 beam, no spinning\u201d version of this as well, but naturally the spinny 4 beam version of the\u00a0death beams was the most exciting one. That was done by 2:30, leaving me 4.5 hours until submission time to actually use the thing.<\/p>\n<p>I\u2019d set a goal of doubling my level count on the last day, and I managed it! One level each for introducing single beam and spinning quad beam lasers, and then one last level with a ton of lasers and a bunch of spheres to drop while running downhill.<\/p>\n<p><a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/08\/blue-window-post-mortem\/bluewindow4\/\" rel=\"attachment wp-att-420061\"><img alt=\"bluewindow4\" class=\"alignnone size-medium wp-image-420061\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow4-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow4-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow4-550x309.png 550w\" width=\"300\"\/><\/a>\u00a0<a href=\"http:\/\/ludumdare.com\/compo\/2014\/12\/08\/blue-window-post-mortem\/bluewindow5\/\" rel=\"attachment wp-att-420062\"><img alt=\"bluewindow5\" class=\"alignnone size-medium wp-image-420062\" height=\"168\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow5-300x168.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow5-300x168.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/bluewindow5-550x309.png 550w\" width=\"300\"\/><\/a><\/p>\n<h3>Last minute \u201ccrises\u201d:<\/h3>\n<ul>\n<li>My lasers killed performance! They did a lot of raycasting to figure out where to end the beam\u2026 and I just had left a debug print in there. Deleting it fixed everything. Hooray!<\/li>\n<li>My lasers couldn\u2019t detect players while they weren\u2019t moving. They have a collider for most other situations, but that tends to break down if it\u2019s moved into the player rather than the other way around. I added a hack to\u00a0that raycasting bit to detect players as well.<\/li>\n<li>There was no way to exit the game. How do I <strong>always<\/strong> forget that? I slapped my keyboard until I had an Application.Quit() getting\u00a0called for escape key down events.<\/li>\n<li>The last level is kind of a pain in the ass to beat and it started quite a bit harder than that, so actually testing the thing in my jittery Ludum-Dare-finishing state took a stupid-long time.<\/li>\n<\/ul>\n<p>And that was my Ludum Dare! I should go to work now. After that I\u2019ll have a fun evening playing your games! Great work, everyone! It was your posts and progress that kept me inspired and on task throughout this.<\/p>\n<p><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=5305\">Blue Window on Ludum Dare<\/a><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>","time":"December 8th, 2014 8:22 am","title":"Blue Window: post mortem","title_was_empty":false}