tag:blogger.com,1999:blog-9291158197261910102017-10-11T03:40:50.899-07:00Lunar Pulse<a href="http://www.LunarPulse.com"><img border="0" src="http://LunarPulse.com/Images/BlogTitle.png"></a>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-929115819726191010.post-2772417298069649522017-02-12T12:40:00.000-08:002017-02-12T12:41:24.181-08:00Araxxis Squadron Alpha Completed<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I've completed the alpha build of Araxxis Squadron and plan on uploading it to get some feedback soon. Here are some screenshots...</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-K-dlf9oQXow/WKDHg-FbYxI/AAAAAAAAAg8/FTKfH34BbJcxlxSb8D4h_mHctk_0sVaewCLcB/s1600/Araxxis11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://3.bp.blogspot.com/-K-dlf9oQXow/WKDHg-FbYxI/AAAAAAAAAg8/FTKfH34BbJcxlxSb8D4h_mHctk_0sVaewCLcB/s640/Araxxis11.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-QtiUqr2zGJY/WKDHiQusvaI/AAAAAAAAAhA/2szeEoZ8JwkvBga0vGIblKyJl6OpvlhpACLcB/s1600/Araxxis1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://4.bp.blogspot.com/-QtiUqr2zGJY/WKDHiQusvaI/AAAAAAAAAhA/2szeEoZ8JwkvBga0vGIblKyJl6OpvlhpACLcB/s640/Araxxis1.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-zilnKIm76PE/WKDHoA3ve0I/AAAAAAAAAhM/mK1Q1-Mmy00V1sTzXe3MNIjg8kUu3SFuACLcB/s1600/Araxxis2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-zilnKIm76PE/WKDHoA3ve0I/AAAAAAAAAhM/mK1Q1-Mmy00V1sTzXe3MNIjg8kUu3SFuACLcB/s640/Araxxis2.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-2P92cBl9rAQ/WKDHqNzSYNI/AAAAAAAAAhQ/0jDE7i7OOIkK0VrvnL99z-rh0Bop7fy-gCLcB/s1600/Araxxis4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-2P92cBl9rAQ/WKDHqNzSYNI/AAAAAAAAAhQ/0jDE7i7OOIkK0VrvnL99z-rh0Bop7fy-gCLcB/s640/Araxxis4.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-cspWzCBMz5I/WKDHu80q_qI/AAAAAAAAAhU/v30E0ImkV7gcWciWyHBKFT-9U69oXnPFwCLcB/s1600/Araxxis5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://4.bp.blogspot.com/-cspWzCBMz5I/WKDHu80q_qI/AAAAAAAAAhU/v30E0ImkV7gcWciWyHBKFT-9U69oXnPFwCLcB/s640/Araxxis5.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-n-fbEveOpuA/WKDH2Ke9RmI/AAAAAAAAAhk/n9_659F9KVEysXhfjdYly84wmt9x7foKgCLcB/s1600/Araxxis9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://3.bp.blogspot.com/-n-fbEveOpuA/WKDH2Ke9RmI/AAAAAAAAAhk/n9_659F9KVEysXhfjdYly84wmt9x7foKgCLcB/s640/Araxxis9.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-lDEzfPXUaZ8/WKDH1wRohDI/AAAAAAAAAhg/QCWQkApQGVwZcoqpkXjDfmJTQOtypSqIACLcB/s1600/Araxxis8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-lDEzfPXUaZ8/WKDH1wRohDI/AAAAAAAAAhg/QCWQkApQGVwZcoqpkXjDfmJTQOtypSqIACLcB/s640/Araxxis8.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-cec42npsVkQ/WKDHyEso1JI/AAAAAAAAAhc/UR0nD9AAMTwh4SlBbEEvEDVy5kWiiNqrQCLcB/s1600/Araxxis7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://2.bp.blogspot.com/-cec42npsVkQ/WKDHyEso1JI/AAAAAAAAAhc/UR0nD9AAMTwh4SlBbEEvEDVy5kWiiNqrQCLcB/s640/Araxxis7.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-JouQ3KsHf5c/WKDHv87Nd0I/AAAAAAAAAhY/T49nEzYeEcQ5BctkewT9stizysxhVWkwQCLcB/s1600/Araxxis6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://2.bp.blogspot.com/-JouQ3KsHf5c/WKDHv87Nd0I/AAAAAAAAAhY/T49nEzYeEcQ5BctkewT9stizysxhVWkwQCLcB/s640/Araxxis6.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-G0dlTqDxIj0/WKDHi3wm7rI/AAAAAAAAAhE/-VUQShezBdgKHgjLgtrkafqH8xhgidoGQCLcB/s1600/Araxxis10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://2.bp.blogspot.com/-G0dlTqDxIj0/WKDHi3wm7rI/AAAAAAAAAhE/-VUQShezBdgKHgjLgtrkafqH8xhgidoGQCLcB/s640/Araxxis10.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-AVBPibqVKw8/WKDHmwYUy6I/AAAAAAAAAhI/PGcozMrmUJQtQrGO35jEgS6DOFY3JMmLgCLcB/s1600/Araxxis12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://2.bp.blogspot.com/-AVBPibqVKw8/WKDHmwYUy6I/AAAAAAAAAhI/PGcozMrmUJQtQrGO35jEgS6DOFY3JMmLgCLcB/s640/Araxxis12.jpg" width="640" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-40136098342625080522017-01-28T19:00:00.000-08:002017-02-12T12:34:30.280-08:00Araxxis Squadron<div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">My real-time strategy Zyrtuul was probably my favourite project. However, over time I came to realize that the scope of it was too large and that, as a result, it was unlikely to ever reach completion. So I decided to cut my losses and put it on hold indefinitely.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-RV8X3Grjs6A/WI8IMU4cFkI/AAAAAAAAAfc/TaHaMGGxFOkdKkDPITUTvv-v62G7FbqPwCLcB/s1600/Araxxis%2B%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-RV8X3Grjs6A/WI8IMU4cFkI/AAAAAAAAAfc/TaHaMGGxFOkdKkDPITUTvv-v62G7FbqPwCLcB/s640/Araxxis%2B%25282%2529.jpg" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Out of the ashes rose a new, simpler game, Araxxis Squadron. I had put in so much work on Zyrtuul, and didn't want to let all of that time and effort go to waste. So I salvaged the game and decided to convert it into something new.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-I1W4ZWDJqyE/WI8IX0-kZvI/AAAAAAAAAfg/GN9a_M6KJygTJjVLMRt64UY1MOhRmouGACLcB/s1600/Araxxis%2B%25286%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-I1W4ZWDJqyE/WI8IX0-kZvI/AAAAAAAAAfg/GN9a_M6KJygTJjVLMRt64UY1MOhRmouGACLcB/s640/Araxxis%2B%25286%2529.jpg" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">This new game is called Araxxis Squadron -- Into Legend. It has the feel of an old-school arcade space shooter, but there are also strategic elements, in that you have to penetrate the enemy's base to destroy their outpost core.&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">So it feels like what you'd get if you took the old Asteroids or Space Invaders games, and added in strategy elements.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-m3MoFgFHlWk/WI8Igx6K_yI/AAAAAAAAAfk/uEhCxmhGX_c72-nDV769xVXaNireUj_QwCLcB/s1600/Araxxis%2B%25287%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-m3MoFgFHlWk/WI8Igx6K_yI/AAAAAAAAAfk/uEhCxmhGX_c72-nDV769xVXaNireUj_QwCLcB/s640/Araxxis%2B%25287%2529.jpg" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8Xr265LcvZo/WI8IsLPIrmI/AAAAAAAAAfo/oDpHz-729o4n--EfXUegn5PfHcASlf6MgCLcB/s1600/Araxxis%2B%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-8Xr265LcvZo/WI8IsLPIrmI/AAAAAAAAAfo/oDpHz-729o4n--EfXUegn5PfHcASlf6MgCLcB/s640/Araxxis%2B%25283%2529.jpg" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-xueFojShoS4/WI8I2bCzBtI/AAAAAAAAAfw/EGAKtGMbV2oaGUJRHyDGuE8v29t0n_jKACLcB/s1600/Araxxis%2B%25288%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://2.bp.blogspot.com/-xueFojShoS4/WI8I2bCzBtI/AAAAAAAAAfw/EGAKtGMbV2oaGUJRHyDGuE8v29t0n_jKACLcB/s640/Araxxis%2B%25288%2529.jpg" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-RbwJvSYTDMk/WI8I8vVpOEI/AAAAAAAAAf0/GPCOciQgT7sGY6zO1lNe5tyXTf4JqN1cACLcB/s1600/Araxxis%2B%25284%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://1.bp.blogspot.com/-RbwJvSYTDMk/WI8I8vVpOEI/AAAAAAAAAf0/GPCOciQgT7sGY6zO1lNe5tyXTf4JqN1cACLcB/s640/Araxxis%2B%25284%2529.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-BKbxKX5uloY/WI8JEcqK50I/AAAAAAAAAf8/56G92BCGsL4EbWq8hnXIPisZNFuMPCbEQCLcB/s1600/Araxxis%2B%25289%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://4.bp.blogspot.com/-BKbxKX5uloY/WI8JEcqK50I/AAAAAAAAAf8/56G92BCGsL4EbWq8hnXIPisZNFuMPCbEQCLcB/s640/Araxxis%2B%25289%2529.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-76253956724302163072016-06-28T09:15:00.000-07:002016-06-28T14:07:21.076-07:00Shimmerblade: A Side-Scrolling Platform Game<div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">One of my newest and more promising game prototypes is a side-scrolling platform game, using retro 2D game mechanics&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">(reminiscent of the 8-bit and 16-bit era of gaming where side-scrolling platformers dominated), while using 3D models and&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">modern graphics techniques.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-thlj2piliIw/V3LhUAW05BI/AAAAAAAAAeM/KBbpEcXKs_MpM6RlRRkvPvwa13IvoUsoQCK4B/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-thlj2piliIw/V3LhUAW05BI/AAAAAAAAAeM/KBbpEcXKs_MpM6RlRRkvPvwa13IvoUsoQCK4B/s1600/1.jpg" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The game is inspired by some of my childhood gaming memories, borrowing ideas and elements from (apparently quite obscure) games like 'Wonderboy&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">in Monster Land' and 'Wonderboy 3: The Dragon's Trap', both of which I played extensively on my Sega Master System back in&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">the early 90s.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-1iHDv0iXcHE/V3KgSRFJ2zI/AAAAAAAAAdI/1m8qMQcVRAwRBChuxYazHjs-rXOJcRL6QCK4B/s1600/Wonderboy2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://3.bp.blogspot.com/-1iHDv0iXcHE/V3KgSRFJ2zI/AAAAAAAAAdI/1m8qMQcVRAwRBChuxYazHjs-rXOJcRL6QCK4B/s1600/Wonderboy2.jpg" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: small;">Wonderboy in Monsterland</span></td></tr></tbody></table><div style="text-align: justify;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-tyM-TWo1g4s/V3KgXZHMZbI/AAAAAAAAAdQ/_uyFC-H4lSYNR2UeP7VLBu86IUk2H0efQCK4B/s1600/Wonderboy3.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://2.bp.blogspot.com/-tyM-TWo1g4s/V3KgXZHMZbI/AAAAAAAAAdQ/_uyFC-H4lSYNR2UeP7VLBu86IUk2H0efQCK4B/s1600/Wonderboy3.jpg" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: small;">Wonderboy 3: The Dragon's Trap</span></td></tr></tbody></table><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I started work on it in early February of this year (2016) and made significant progress between then and the end of May (realised that you can get a lot done in four months if you push really hard, start with a lot of good content, and make good re-use of code from previous projects).&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">During the early stages the focus was on implementing basic side-scrolling platform game mechanics. I re-used some code from&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">one of my projects from a few years ago called 'Shroomsters' (albeit with a fair bit of modification).</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I'm targeting PC for a change so that I can focus on nice visuals without too many limitations. It's a nice change from mobile and&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">allows me to not worry about overall scope and technical limitations as much.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-m0ljvZJdPJo/V3LhbB8to7I/AAAAAAAAAeU/1I6yV94KD6MKqpjv3y2QipMR_LDjGDz8QCK4B/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-m0ljvZJdPJo/V3LhbB8to7I/AAAAAAAAAeU/1I6yV94KD6MKqpjv3y2QipMR_LDjGDz8QCK4B/s1600/2.jpg" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I put a lot of work into the visuals -- tweaking materials, coding up various shaders and getting the post-processing effects looking&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">good. The scenes are crafted by hand (with the help of some high-quality outsourced art). I've made use of various post-processing&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">effects, including bloom, screen-space ambient occlusion, radial light scattering (sunshafts / god rays) and FXAA (anti-aliasing achieved&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">via post-processing).</span><br /><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-jPMFDJKlIYs/V3Lhj5iKl7I/AAAAAAAAAec/sNKGZLoUXuETnwnhtfe00d17ptmzdaU_QCK4B/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-jPMFDJKlIYs/V3Lhj5iKl7I/AAAAAAAAAec/sNKGZLoUXuETnwnhtfe00d17ptmzdaU_QCK4B/s1600/3.jpg" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The scope of the game is quite a bit larger than other projects I've focused on in the last two years or so. Previously I had made the&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">decision to deliberately scope down my games because my older, more ambitious projects turned out to be too much work to complete&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">by myself in a reasonable time frame.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">As such, rather than working toward a complete product, my initial goal is to finish a vertical slice -- that is, a portion of the&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">game (a quarter of the final game, for example) that is complete and playable in something resembling its final, polished form. From&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">there I can release it as a demo and, depending on how the cards fall, decide how to proceed. Despite some solid progress, a lot of work still remains. By the end&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">of May I had run out of steam and progress slowed, but I hope to get back into it soon.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-dNz9YVl6_IY/V3LhpwYX3TI/AAAAAAAAAek/5Pxv9xL4_V8FGGDSORgYXhJz8yJEdWXjwCK4B/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-dNz9YVl6_IY/V3LhpwYX3TI/AAAAAAAAAek/5Pxv9xL4_V8FGGDSORgYXhJz8yJEdWXjwCK4B/s1600/4.jpg" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">On a related note, others seem to share my enthusiasm for the Wonderboy games and have also begun working on similar projects.&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">These are larger companies with teams of artists working on them full-time, so even attempting to compete with them would be futile.&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Fortunately, I've taken a fairly different approach and so mine has a very different look and feel.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I definitely plan on playing the aforementioned games when they're ready though (they both look amazing). One is Wonderboy: The&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Dragon's Trap (a modern remake of the original Wonderboy 3). The other is 'Monsterboy and the Cursed Kingdom' (inspired by the&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">original, rather than being a remake).</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-kaRr24XjDzw/V3LhvQtBquI/AAAAAAAAAes/hR9Ign-8V1oGrpw14i37t_pc4Jm4w-Z7gCK4B/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-kaRr24XjDzw/V3LhvQtBquI/AAAAAAAAAes/hR9Ign-8V1oGrpw14i37t_pc4Jm4w-Z7gCK4B/s1600/5.jpg" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-71111616377643021452016-06-18T11:00:00.000-07:002016-06-28T03:48:51.493-07:00The Bloody Glade 99.9% Complete<div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I just realized that it has been about 9 months since I posted about the progress of The Bloody Glade. At the time I estimated it to be 80% complete. For the most part that was accurate -- as with most projects during the later phase it became difficult to maintain pace and focus, so I took a break from it to focus on other projects and allow my enthusiasm for the project to be naturally rejuvenated.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I find that pushing myself too hard with a single project for too long eventually starts to rapidly diminish how much I like the game and to hinder progress. Taking a break and coming back to it later gives some perspective and a fresh eye.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-XlKS7vZHRJA/V3JSSH5tpII/AAAAAAAAAcg/C_gjQDmX3fAjdzBsj0EhqRzOIEBcxg57QCLcB/s1600/1-MasterVersionFullScreen.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-XlKS7vZHRJA/V3JSSH5tpII/AAAAAAAAAcg/C_gjQDmX3fAjdzBsj0EhqRzOIEBcxg57QCLcB/s1600/1-MasterVersionFullScreen.png" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I recently took to fixing those bugs and issues that I had been avoiding, and added a bit more polish, tweaked the gameplay and stats a bit, and removed a few game mechanics. One of the main mechanics I disabled was quick-time events for spell-casting. Previously you'd need to perform rapid tap or swipe motions in order to successfully cast a spell. In theory it sounds good, but in practice it felt like it interfered with the flow and pace of the game. So I decided to streamline and simplify it. I find the new, simpler version more fun.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">A big problem I faced was performance on mobile devices. I found that creating enemy characters on the fly, as each stage progressed, was creating lag spikes and momentary freezes. It was nothing dramatic, but enough to provide an inferior gameplay experience to what I was experiencing on PC. I eventually found a simple solution -- simply pre-spawn all characters at the start of each level and enable / disable them as needed.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-5Me7ewfna7Q/V3JSX5s4ClI/AAAAAAAAAco/qphjKriluekB3M62cWV9rWiVNM8tG1swACLcB/s1600/3-MasterVersion4x4b.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-5Me7ewfna7Q/V3JSX5s4ClI/AAAAAAAAAco/qphjKriluekB3M62cWV9rWiVNM8tG1swACLcB/s1600/3-MasterVersion4x4b.png" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I've finished creating the promotional content and have thoroughly tested it on iPad and iPhone. There was an obscure crash that was happening during the final boss battle but, I&nbsp;<i>think</i>&nbsp;I've fixed it now. Another round of testing should verify this (hence me not making the 100% complete claim, and saying 99.9% instead).</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">That makes two games pretty much ready for release: McGrimm's Time Trap (yes, I still haven't released it) and The Bloody Glade. I'm still deciding which to focus on releasing first.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-QF4RP_tiw7k/V3JScN6W_XI/AAAAAAAAAcw/7qr7Fh6pa2EsdoodABGTSrHlnkGfSRQ8gCLcB/s1600/4-MasterVersion3x1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-QF4RP_tiw7k/V3JScN6W_XI/AAAAAAAAAcw/7qr7Fh6pa2EsdoodABGTSrHlnkGfSRQ8gCLcB/s1600/4-MasterVersion3x1.png" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-31225803762341476392016-05-08T13:30:00.000-07:002016-06-28T14:12:33.336-07:00McGrimm's Time Trap<div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Last December I was on a plane returning from Cape Town to Durban and I spent the time contemplating&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">game design ideas. The concept I came up with was a simple action-based evasion game where, instead of&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">having computer-controlled opponents, it stores and repeats player-generated gameplay. Basically, you&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">become your own opponent.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">This evolved into a time-travel based concept where the player is cursed to repeat the same scenario over and&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">over again (like in the movie Groundhog Day). Except, in my game, your previous incarnations would still&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">be present. Occupying the same space as your previous selves would disrupt the space-time continuum,&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">and so you must evade previous versions of yourself.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-hYb-SJIpUYc/V3JOgbMtQlI/AAAAAAAAAcI/T1aJFni5ewkyX35KznJl_7U8Nlq9_cAKACLcB/s1600/Image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="https://2.bp.blogspot.com/-hYb-SJIpUYc/V3JOgbMtQlI/AAAAAAAAAcI/T1aJFni5ewkyX35KznJl_7U8Nlq9_cAKACLcB/s640/Image1.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">On the technical side there was a bit of work involved in order to store and replay the player's actions in&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">a way that would not be too memory-intensive, but at a high enough resolution so as to be accurate. Fortunately it ended up working well without much hassle</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">&nbsp;(basically I just store snapshots of the player character's state periodically and then,&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">when replaying, use interpolation and extrapolation for generating state information between snapshots).&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The core gameplay was done over the course of the next few days.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Of course, adding polish and getting something that is bug-free and fluid enough to release ends up adding&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">significantly more time to any project, and I (like many developers) tend to lose interest and thus neglect most&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">of my projects after the initial creative proof-of-concept phase.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-nV-SZLJcO1Y/V3JOgj-fpqI/AAAAAAAAAcM/uSn-OFuOPS8j-DfpwHoK3-fYGWBHaNUogCKgB/s1600/Image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="https://4.bp.blogspot.com/-nV-SZLJcO1Y/V3JOgj-fpqI/AAAAAAAAAcM/uSn-OFuOPS8j-DfpwHoK3-fYGWBHaNUogCKgB/s640/Image2.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">But I've been trying to be more disciplined and follow through on my projects, so I recently spent some time </span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">getting the game ready for release on iOS. It's pretty much done, I just need to push through that last&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">cumbersome step of actually deploying it.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I struggled to think of a good name. I ended up going with "McGrimm's Time Trap". I &nbsp;don't dislike the name,&nbsp;</span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">but don't think it's amazing either. It sounds pretty generic, but I can't think of anything better.</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-NT_DfnycHTE/V3JOgY_gkDI/AAAAAAAAAcE/MXroO4m3OzE7H180HbOp0im8aa8pRFptwCKgB/s1600/Image4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="https://3.bp.blogspot.com/-NT_DfnycHTE/V3JOgY_gkDI/AAAAAAAAAcE/MXroO4m3OzE7H180HbOp0im8aa8pRFptwCKgB/s640/Image4.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-77040236533753513902015-09-17T15:45:00.004-07:002016-01-05T07:53:39.101-08:00The Bloody Glade Hits 80% Pre-Alpha Milestone.<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">What I'd ordinarily consider a reasonable bedtime (for a work night) came and went about an hour ago. However, I've been thoroughly absorbed in trying to complete a few tasks in my current pet project, The Bloody Glade.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-eZKFAv0EQlk/Vfs4yxzX8-I/AAAAAAAAAZ4/QkKGS4-olMo/s1600/Glade%2B2015-09-17%2B23-38-52-58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://4.bp.blogspot.com/-eZKFAv0EQlk/Vfs4yxzX8-I/AAAAAAAAAZ4/QkKGS4-olMo/s640/Glade%2B2015-09-17%2B23-38-52-58.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Levelling up... you have to press the button at the top right to select new spells.</span></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I still have 3 spells to polish off, various bugs to fix, a few extra enemies to finish off (need to make them more interesting)</span><span style="font-family: Arial, Helvetica, sans-serif;">, and a bunch of miscellaneous tidbits to deal with. But I looked at the plan I had laid out for myself and it seems to progressing well. According to my previous schedule it looks like I am 80% of the way to what I had planned for the initial "somewhat finished" alpha version.</span><br /><div><br /></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-_NDrUcxEFZg/Vfs7phqZOmI/AAAAAAAAAaA/fJCdMCq4aLU/s1600/Glade%2B2015-09-17%2B23-39-21-96.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://3.bp.blogspot.com/-_NDrUcxEFZg/Vfs7phqZOmI/AAAAAAAAAaA/fJCdMCq4aLU/s640/Glade%2B2015-09-17%2B23-39-21-96.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The Earth Shatter spell spews rocks and dust from the ground around the player. This is the lowest level variant. As you level up the spell it becomes more potent and visually dramatic.</span></div><br /><br /><br /><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Scope creep has unfortunately kicked in, though I'm trying my best to resist it.&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">I'm keeping to my "cool stuff can be added with updates, get the initial game out there" philosophy and trying to complete it as per my initial design. With that as the goal it looks as if I'm almost there. But, of course, when you think it's 90% complete, it tends to only be about 50% complete in reality, so don't judge me if I'm wrong here (and I probably am).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">The glorious early stages were characterized by fresh ideas and cool new features rolling in hard and fast. The late stages tend involve dealing with an endless list of bug fixes and hours and hours and hours of work that doesn't yield obvious tangible results to a casual onlooker.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Anyway, I built the latest version and grabbed a few screenshots of each of the three current playable characters in action. I dumped a few screenshots above (because reading without pictures to break up the text is boring). From here on there are only screenshots...</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-YSuEu7YyIfg/Vfs7tHCXbwI/AAAAAAAAAaM/QPlZ25dfDGU/s1600/Glade%2B2015-09-17%2B23-40-20-88.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://1.bp.blogspot.com/-YSuEu7YyIfg/Vfs7tHCXbwI/AAAAAAAAAaM/QPlZ25dfDGU/s640/Glade%2B2015-09-17%2B23-40-20-88.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The wizard's level 1 fireball spell. It also looks far progressively more impressive as you level it up.&nbsp;</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-bJsSmHKqwJ8/Vfs7tDp3P5I/AAAAAAAAAaI/QuFkdjMIxG0/s1600/Glade%2B2015-09-17%2B23-40-48-61.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://4.bp.blogspot.com/-bJsSmHKqwJ8/Vfs7tDp3P5I/AAAAAAAAAaI/QuFkdjMIxG0/s640/Glade%2B2015-09-17%2B23-40-48-61.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Hard to tell from the image, but there is a spike trap near the wizard with metal spikes that periodically thrust up and do damage to anybody foolish enough to be in close proximity. I want to add two more trap types, though doing so will add about two extra more nights of development (which, given that I only get a few nights a week to work on this, equates to about an extra week). Should be worth it though.</span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-wNxbGQfKQsI/Vfs7y4KcIWI/AAAAAAAAAaY/JCiujYi9ZkU/s1600/Glade%2B2015-09-17%2B23-41-38-57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://3.bp.blogspot.com/-wNxbGQfKQsI/Vfs7y4KcIWI/AAAAAAAAAaY/JCiujYi9ZkU/s640/Glade%2B2015-09-17%2B23-41-38-57.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The wizard's fireball spell has been levelled up and now does explosive splash-damage.</span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-7ycMRtXehWo/Vfs8BHZFpSI/AAAAAAAAAag/eIwZgLcnwJo/s1600/Glade%2B2015-09-17%2B23-42-10-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://4.bp.blogspot.com/-7ycMRtXehWo/Vfs8BHZFpSI/AAAAAAAAAag/eIwZgLcnwJo/s640/Glade%2B2015-09-17%2B23-42-10-15.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;">&nbsp;<span style="font-size: x-small;">Various stats are displayed when you complete a level. I want a social aspect that allows you to compare how you did, what items you collected, which spells you used etc to other players (the 'other players' button accesses this functionality). I'm probably going to delay this for now though.</span></span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-0VIKnUL9THQ/Vfs8F7_vM5I/AAAAAAAAAao/iMzzoH0CyQg/s1600/Glade%2B2015-09-17%2B23-43-12-89.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://1.bp.blogspot.com/-0VIKnUL9THQ/Vfs8F7_vM5I/AAAAAAAAAao/iMzzoH0CyQg/s640/Glade%2B2015-09-17%2B23-43-12-89.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Selecting a new spell when you level up.</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-50ZdELieAJc/Vfs8PyuEJWI/AAAAAAAAAaw/GSZw-9XAbA4/s1600/Glade%2B2015-09-17%2B23-43-26-06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://4.bp.blogspot.com/-50ZdELieAJc/Vfs8PyuEJWI/AAAAAAAAAaw/GSZw-9XAbA4/s640/Glade%2B2015-09-17%2B23-43-26-06.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The abomination character is so bad-ass that skeletons pretend to be asleep as he approaches just so that he doesn't hurt them (not really though, I actually just insta-killed them with a debug cheat key).</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-aKYTP1UmBic/Vfs8Ttp3KwI/AAAAAAAAAa4/eDlS98wZZI0/s1600/Glade%2B2015-09-17%2B23-43-48-25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://3.bp.blogspot.com/-aKYTP1UmBic/Vfs8Ttp3KwI/AAAAAAAAAa4/eDlS98wZZI0/s640/Glade%2B2015-09-17%2B23-43-48-25.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The enchantress has an area-of-effect lightning storm spell.</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-VQK4u8ZJUJ4/Vfs8Y3Yq28I/AAAAAAAAAbA/tL2sEMNM6MQ/s1600/Glade%2B2015-09-17%2B23-43-55-65.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://1.bp.blogspot.com/-VQK4u8ZJUJ4/Vfs8Y3Yq28I/AAAAAAAAAbA/tL2sEMNM6MQ/s640/Glade%2B2015-09-17%2B23-43-55-65.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">If you look carefully you can see the purple-robed fella to the right dropping a ring. The inventory system is deliberately very simplistic (I want to provide non-casual aesthetics to a more casual audience).</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-VEUNBCOqKNQ/Vfs8g2yWknI/AAAAAAAAAbI/lJt4EGE3MRY/s1600/Glade%2B2015-09-17%2B23-46-23-99.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://1.bp.blogspot.com/-VEUNBCOqKNQ/Vfs8g2yWknI/AAAAAAAAAbI/lJt4EGE3MRY/s640/Glade%2B2015-09-17%2B23-46-23-99.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">An ice storm spell inspired by fond memories of Warcraft 2 (which happens to be one of the old-school soundtracks I've often listened to while developing this all).</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-rKK3Tx5nKg4/Vfs8nnKJ1NI/AAAAAAAAAbQ/G-QcJz1lm9M/s1600/Glade%2B2015-09-17%2B23-46-47-24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://2.bp.blogspot.com/-rKK3Tx5nKg4/Vfs8nnKJ1NI/AAAAAAAAAbQ/G-QcJz1lm9M/s640/Glade%2B2015-09-17%2B23-46-47-24.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The wasteland scenario -- I am very fond of the ground texture.</span></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-ruZuHq06SPA/Vfs8oKbp6_I/AAAAAAAAAbU/wurmP8DtlYs/s1600/Glade%2B2015-09-17%2B23-47-19-71.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://1.bp.blogspot.com/-ruZuHq06SPA/Vfs8oKbp6_I/AAAAAAAAAbU/wurmP8DtlYs/s640/Glade%2B2015-09-17%2B23-47-19-71.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">The little critter to the left just stole a health potion (he gives a hearty little giggle and taunts you as he does so). A friend who play-tested for me protested that it wasn't clear that you were about to be robbed -- that I should make it more obvious. "Bah! Nonsense!" was my response. I like it just the way it is. You'll know better next time.</span></div><div style="text-align: justify;"><br /></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-56382420871121687212015-09-05T05:33:00.003-07:002015-09-08T12:16:19.840-07:00No Crashy Spaceship<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">In late January this year I was close to having Doombot Arena ready for release. At the time I wanted to&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">focus on mini-games where I could keep the scope really small so that I could focus on actually releasing&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">them and get familiar with the deployment process on the Apple store. I decided to leverage a lot of the&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">work I'd done on Doombot Arena and build a similarly small-in-scope game based on time challenges. I started&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">working on a racing game, but found that the standard techniques suggested for car physics in Unity to provide an&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">experience that was not quite as fun, frantic and simple as I was looking for. And so I decided to change&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">course and go for a spline-following approach. The result was No Crashy Spaceship, a game which is essentially&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">an infinite-runner (a genre in which you attempt to dodge obstacles to see how long you can survive).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Note before I proceed: I have interspersed this wall of text with a few screenshots to make viewing this blog post less of a chore&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">to read.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-v_YyIZuAXWM/Ve8zgrCD1lI/AAAAAAAAAYs/3FWUCrx1EnY/s1600/1-MasterVersionFullScreeny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://4.bp.blogspot.com/-v_YyIZuAXWM/Ve8zgrCD1lI/AAAAAAAAAYs/3FWUCrx1EnY/s640/1-MasterVersionFullScreeny.png" width="640" /></a></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I have subsequently started working on games that are somewhat larger in scope -- games that I am more&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">passionate about. As a result, my enthusiasm started to wane on this project (my larger projects running concurrently just offered more of a challenge). However, I recently decided (after looking at&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">the graveyard of unfinished and almost-finished projects I have lying around) that I need to stay the course&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">and make more of an effort to finish and release.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-Up-SQU1jwY4/Vergpu-FyeI/AAAAAAAAAX0/Msi2FNjq0fQ/s1600/2-MasterVersion4x4a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://2.bp.blogspot.com/-Up-SQU1jwY4/Vergpu-FyeI/AAAAAAAAAX0/Msi2FNjq0fQ/s640/2-MasterVersion4x4a.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The overall look of the game was inspired by Tron (having watched the animated series I became quite fond of&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">the dark background contrasted with bright lights; it's a unique sci-fi look that I feel is very effective).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">The initial work-in-progress name was 'Lunatic Skyway', but after chatting to some work colleagues about it&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">we concluded that the name was a bit bland and generic. After throwing around a few names I threw out the&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">whacky 'No Crashy Spaceship' idea (as a joke). There were laughs all-round and unanimous approval, and so I&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">decided to go with it.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-0_ezY7d0ClE/Verg4cpOnZI/AAAAAAAAAX8/ik482axSgt0/s1600/3-MasterVersion4x4b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://4.bp.blogspot.com/-0_ezY7d0ClE/Verg4cpOnZI/AAAAAAAAAX8/ik482axSgt0/s640/3-MasterVersion4x4b.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Initially it was far more fast-paced and frenetic. I played it so much during testing that to me this felt&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">like a suitable level of challenge. User-testing confirmed that I was utterly mad -- the game was completely&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">intimidating to first time players. So I have toned it down a lot. When I watch friends play it on my iPad&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">I'm always commenting about how I've made it too easy (the whole point in my mind was for it to be ridiculously difficult&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">to simply not die almost immediately -- think Flappy Bird levels of frustration). However, not a single person who&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">has tested it agrees and the consensus seems to be that having a slightly gentler difficulty curve makes it&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">more fun. The speed does ramp up significantly with each lap though. I laughed when people were commenting how&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">fast it gets a few laps in (my initial speed was WAY faster than that, even on the first lap). I think I have to acknowledge that I have an overly&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">active brain though (and the attention span of a newt) -- a wiser course action is to accept that complete sensory overload isn't palatable to everyone.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-5UambEu-HOs/VerhCmq_mzI/AAAAAAAAAYE/Ew-xDTgTlBs/s1600/4-MasterVersionFullSplash.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://4.bp.blogspot.com/-5UambEu-HOs/VerhCmq_mzI/AAAAAAAAAYE/Ew-xDTgTlBs/s640/4-MasterVersionFullSplash.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">As it stands it is pretty much ready for release, though my latest play-through did uncover one or two minor&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">bugs which I'll have to fix first. Creating the promotional screenshots (which are the images you see here)&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">has been a bit of a trial because the Apple store requires images of various vastly differing resolutions and&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">aspect ratios -- trying to cater for all is a bit of a nightmare. This is one of the tasks that I have been&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">avoiding. I could have released a few months back had I not been so reluctant to just whip myself on the&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">back (like a Catholic monk fervently self-flagellating himself) to inspire enthusiasm and force me to go through the schlep of it all.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-vU9hHNGEaeQ/VerhJOpvWEI/AAAAAAAAAYM/P--iKP90wgs/s1600/5-MasterVersionChallenge.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://3.bp.blogspot.com/-vU9hHNGEaeQ/VerhJOpvWEI/AAAAAAAAAYM/P--iKP90wgs/s640/5-MasterVersionChallenge.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-71004753658221268812015-07-10T01:38:00.000-07:002015-07-10T02:08:58.035-07:00Bloody Glade Update<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The Bloody Glade is a side-scrolling hack-'n-slash / light RPG targeting mobile devices (primarily iPad and iPhones right now). I started work on it at the start of the year and have devoted a lot of time to it.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">It's larger in scope than some of my previous personal projects, but I tried to keep the scope of the game at least manageable. I was inspired to create it when playing through the original Golden Axe (I have it as part of a retro Sega game pack for PS3).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">I spent a lot of time in the dingy arcade section in a shop down the road from my childhood home playing it when I was about 9 years old, so it brought back fond memories.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I could complete Golden Axe in about 20 minutes, and I liked the idea of a fairly short session where you could actually get through a game, even if it is fairly mindless and straight-forward button-mashing (though I've tried to add a bit more strategy into The Bloody Glade).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-crHvpKgY3Hc/VZ-DEzely_I/AAAAAAAAAW4/cvn79rkwHj8/s1600/Ice.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-crHvpKgY3Hc/VZ-DEzely_I/AAAAAAAAAW4/cvn79rkwHj8/s640/Ice.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">A few nights back I spent a lot of time creating a new world map (I wasn't satisfied with what I had before). I wanted to give the player the option to choose between various routes to give some incentive to replay the game once completed. Getting the map to have the feel I wanted was quite frustrating and time-consuming, but I'm happy with the end-result.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-9jPyQPkudKA/VZ-BKTdMpgI/AAAAAAAAAWc/HbYgKEs-1VI/s1600/BloodyGlade%2B2015-07-10%2B10-13-59-97.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://2.bp.blogspot.com/-9jPyQPkudKA/VZ-BKTdMpgI/AAAAAAAAAWc/HbYgKEs-1VI/s640/BloodyGlade%2B2015-07-10%2B10-13-59-97.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">At the moment I am planning on making 3 playable characters: the wizard, the enchantress and the abomination. I have around 8 enemy character types so far. Getting enough content in is a concern (the moment a game starts visually resembling the larger, professional games people are used to, they start to expect more overall), but I'll deal with that later.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-sDN4m0ZlUBw/VZ-LdgjkQ8I/AAAAAAAAAXQ/mB3uAr4hQSs/s1600/BloodyGlade%2B2015-07-10%2B11-08-13-34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-sDN4m0ZlUBw/VZ-LdgjkQ8I/AAAAAAAAAXQ/mB3uAr4hQSs/s640/BloodyGlade%2B2015-07-10%2B11-08-13-34.png" width="640" /></a></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The spells I've implemented so far are a fireball, an ice orb, hailstorm (reminiscent of the ice blizzard in Warcraft 2), earth shatter (pretty much an earthquake) and lightning storm (which at the moment is a bit over-the-top, but fun). I have another one where a dragon swoops down partially implemented, though it looks pretty cheesy at the moment (a friend laughed when he saw it, that bastard).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-ihRMR6pLXJo/VZ-C0oC5S1I/AAAAAAAAAWw/E9NGl1aUMuQ/s1600/BloodyGlade%2B2015-07-10%2B10-30-06-68.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-ihRMR6pLXJo/VZ-C0oC5S1I/AAAAAAAAAWw/E9NGl1aUMuQ/s640/BloodyGlade%2B2015-07-10%2B10-30-06-68.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The game has a few RPG elements, including a very basic inventory system and leveling</span><br /><span style="font-family: Arial, Helvetica, sans-serif;">system. These have been deliberately keep very simple though, since I want to target a broader, more casual audience than the typical RPG player,&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">and avoid overly complex game mechanics. At the moment, most of the game mechanics revolve around:</span><br /><ul><li><span style="font-family: Arial, Helvetica, sans-serif;">selecting which characters to attack</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">choosing when to consume health and mana potions</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">deciding when to cast spells (some of which require quick-time events to be cast successfully) and who to target</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">choosing which spells to learn when leveling up</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">choosing a route to follow in the world map</span></li></ul></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I have a few plans for adding to this a bit (I want it simple, but not <b>too</b>&nbsp;simple, I don't want it to feel like a brainless exercise in simply tapping on bad guys). So far it actually feels fun so I'm feeling optimistic.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-BK68BeQsZnE/VZ-Bmd123YI/AAAAAAAAAWk/Qh4dWMKAcHw/s1600/BloodyGlade%2B2015-07-10%2B10-13-27-64.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://1.bp.blogspot.com/-BK68BeQsZnE/VZ-Bmd123YI/AAAAAAAAAWk/Qh4dWMKAcHw/s640/BloodyGlade%2B2015-07-10%2B10-13-27-64.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Below are a few of the items that have a chance of being spawned by slain enemies. Each item gives you a perk / buff. When you die there is a resurrection penalty (i.e. you can continue the game, but at a cost). One of the potential penalties is removing items you have collected.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-iTuY3y0mi5g/VZ-G3K5lRRI/AAAAAAAAAXE/iepV3GTmk1s/s1600/Items.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-iTuY3y0mi5g/VZ-G3K5lRRI/AAAAAAAAAXE/iepV3GTmk1s/s1600/Items.png" /></a></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-80109782106631244772015-07-02T07:28:00.000-07:002015-07-02T07:57:23.331-07:00The Bloody Glade Screenshots<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I currently have three game projects on the go: No Crashy Spaceship (an infinite runner survival racing game with a Tron-like theme), Warsmith Zuul (a real-time strategy game) and, my most recent project, The Bloody Glade (a hack-n-slash action RPG slightly inspired by the original Golden Axe).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">No Crashy Spaceship is almost finished, and I like to have more than one project on the go at a time (so that if I lose steam or become frustrated on one, I can switch to another temporarily). I was playing the original Golden Axe a few months ago (a childhood favourite), and I had the urge to put together a hack-n-slash game for the iPhone / iPad.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">It's going pretty well so far so I thought I'd post some screenshots to show its progress.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">One or two of the images are from a mock-up prototype, but most of them are plain screenshots. It's still a work-in-progress so some of it is still rough around the edges (the world map especially), but I'm still pleased with where it's at so far.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-hkG6e5fcoKE/VZVKAdTBtqI/AAAAAAAAAUI/9Tu_DIBGXBY/s1600/BloddyGlade%2B2015-07-02%2B16-16-02-30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://2.bp.blogspot.com/-hkG6e5fcoKE/VZVKAdTBtqI/AAAAAAAAAUI/9Tu_DIBGXBY/s640/BloddyGlade%2B2015-07-02%2B16-16-02-30.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Ar_DlVjJQ4g/VZVQHMqTT9I/AAAAAAAAAWA/prLt97dl2UY/s1600/Prototype.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://1.bp.blogspot.com/-Ar_DlVjJQ4g/VZVQHMqTT9I/AAAAAAAAAWA/prLt97dl2UY/s640/Prototype.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-Y1EkhO2ZsIY/VZVQG5ZzBjI/AAAAAAAAAV8/0gRwRu_PH0Q/s1600/Map%2BWith%2BLevel%2BNames.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://2.bp.blogspot.com/-Y1EkhO2ZsIY/VZVQG5ZzBjI/AAAAAAAAAV8/0gRwRu_PH0Q/s640/Map%2BWith%2BLevel%2BNames.png" width="640" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-s4YbedhZDP4/VZVKAeuYihI/AAAAAAAAAUM/Xul4u-x-bUw/s1600/BloddyGlade%2B2015-07-02%2B16-16-15-04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-s4YbedhZDP4/VZVKAeuYihI/AAAAAAAAAUM/Xul4u-x-bUw/s640/BloddyGlade%2B2015-07-02%2B16-16-15-04.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-13XhALLJoW0/VZVKATJPgaI/AAAAAAAAAUQ/djvq4jLmzDM/s1600/BloddyGlade%2B2015-07-02%2B16-16-21-99.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-13XhALLJoW0/VZVKATJPgaI/AAAAAAAAAUQ/djvq4jLmzDM/s640/BloddyGlade%2B2015-07-02%2B16-16-21-99.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-JkRS_mQT3lQ/VZVKBXNtg1I/AAAAAAAAAUY/_sAvYAkvCBA/s1600/BloddyGlade%2B2015-07-02%2B16-16-32-44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-JkRS_mQT3lQ/VZVKBXNtg1I/AAAAAAAAAUY/_sAvYAkvCBA/s640/BloddyGlade%2B2015-07-02%2B16-16-32-44.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-9YPF1ZNdUSE/VZVKBoOUSEI/AAAAAAAAAUk/2pfyvyrfHrI/s1600/BloddyGlade%2B2015-07-02%2B16-16-51-12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://2.bp.blogspot.com/-9YPF1ZNdUSE/VZVKBoOUSEI/AAAAAAAAAUk/2pfyvyrfHrI/s640/BloddyGlade%2B2015-07-02%2B16-16-51-12.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-xhgg0ibd3nI/VZVKCKMjpDI/AAAAAAAAAUo/nyiRkkMUJGQ/s1600/BloddyGlade%2B2015-07-02%2B16-16-57-35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-xhgg0ibd3nI/VZVKCKMjpDI/AAAAAAAAAUo/nyiRkkMUJGQ/s640/BloddyGlade%2B2015-07-02%2B16-16-57-35.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-Vab-lr5wJKs/VZVQG_E1ApI/AAAAAAAAAWE/a3ENyVKB2cE/s1600/Heroes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="430" src="http://4.bp.blogspot.com/-Vab-lr5wJKs/VZVQG_E1ApI/AAAAAAAAAWE/a3ENyVKB2cE/s640/Heroes.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-UhkWrh0ah9A/VZVKCS3PqLI/AAAAAAAAAUw/fM-8dTLB5XM/s1600/BloddyGlade%2B2015-07-02%2B16-17-14-23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://4.bp.blogspot.com/-UhkWrh0ah9A/VZVKCS3PqLI/AAAAAAAAAUw/fM-8dTLB5XM/s640/BloddyGlade%2B2015-07-02%2B16-17-14-23.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-8etPhr-0Ha8/VZVKCxxPMFI/AAAAAAAAAU4/-rWyN43pLuY/s1600/BloddyGlade%2B2015-07-02%2B16-17-17-35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://4.bp.blogspot.com/-8etPhr-0Ha8/VZVKCxxPMFI/AAAAAAAAAU4/-rWyN43pLuY/s640/BloddyGlade%2B2015-07-02%2B16-17-17-35.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-a16BpY89F9Y/VZVKDFmYwGI/AAAAAAAAAVA/k6Fvyzw-ZPA/s1600/BloddyGlade%2B2015-07-02%2B16-19-22-25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://3.bp.blogspot.com/-a16BpY89F9Y/VZVKDFmYwGI/AAAAAAAAAVA/k6Fvyzw-ZPA/s640/BloddyGlade%2B2015-07-02%2B16-19-22-25.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-NiJHBHbEYqg/VZVKDswfK0I/AAAAAAAAAVE/1v5TUXC9mTs/s1600/BloddyGlade%2B2015-07-02%2B16-19-51-79.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://4.bp.blogspot.com/-NiJHBHbEYqg/VZVKDswfK0I/AAAAAAAAAVE/1v5TUXC9mTs/s640/BloddyGlade%2B2015-07-02%2B16-19-51-79.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-ztFh2CArI10/VZVKD3g5tnI/AAAAAAAAAVM/g679GRsWR3g/s1600/BloddyGlade%2B2015-07-02%2B16-19-59-65.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://1.bp.blogspot.com/-ztFh2CArI10/VZVKD3g5tnI/AAAAAAAAAVM/g679GRsWR3g/s640/BloddyGlade%2B2015-07-02%2B16-19-59-65.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-2BlWl4v7HT4/VZVKEfrO9kI/AAAAAAAAAVQ/PVTRhUeH1eQ/s1600/BloddyGlade%2B2015-07-02%2B16-20-33-35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://2.bp.blogspot.com/-2BlWl4v7HT4/VZVKEfrO9kI/AAAAAAAAAVQ/PVTRhUeH1eQ/s640/BloddyGlade%2B2015-07-02%2B16-20-33-35.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-CH8aKxPNNc8/VZVKEVszjLI/AAAAAAAAAVc/iMpvVYRCdvM/s1600/BloddyGlade%2B2015-07-02%2B16-20-37-48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="http://2.bp.blogspot.com/-CH8aKxPNNc8/VZVKEVszjLI/AAAAAAAAAVc/iMpvVYRCdvM/s640/BloddyGlade%2B2015-07-02%2B16-20-37-48.png" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-40388334352175058322015-04-23T22:51:00.001-07:002015-04-23T23:10:29.987-07:00Warsmith Zuul Screenshots<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I recently released Death Arena (re-branded as Doombot Arena so as to avoid a 'name-too-similar' clash on the iOS app store) and have been working on another mini-game (working title is "No Crashy Spaceship") which is also almost ready for release. However, the late phase always entails a lot of bug-fixing, adding polish and preparing the app for release (which entails a surprising amount of work and can be quite frustrating).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">Having already spent so much time on this recently I felt a bit burnt out, so I decided to take a break and focus on one of my larger projects (to allow myself the luxury of focusing on the more interesting aspects of development while I recharge).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I've been wanting to convert my real-time strategy game, Zyrtuul (which is a PC game), to be mobile-friendly so that I can release it on iPad and possibly iPhone.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Unfortunately, progress with Zyrtuul was so far in, and the differences significant enough, that I realized it would be more of a re-write than a conversion (though a lot of code and art assets are re-usable). I decided to use a different name for the iOS version (mostly to differentiate the two projects to myself).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">The working title for the iOS version is Warsmith Zuul. From an implementation perspective they're completely separate projects that just happen to share a bit of code and some art assets. From a thematic viewpoint though they're clearly related.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">A big part of the motivation for me wanting to do this was realizing that, although I was proud of Zyrtuul and happy with its progress, I could never compete with the larger PC RTS games out there (Starcraft 2, for example). However, the games on the mobile platforms (Clash of Clans, for example), while still larger in scope than what I'm aiming for (I think it would be unwise to even try), are at least not leagues beyond what a solitary developer can put together, given time and perseverance.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">It's going pretty well so far and, since I haven't posted anything in a while, I thought I'd add some screenshots. They're pretty rough around the edges and not yet very polished (it's still in the early stages), but they should give some idea of where the project is header.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-4gN3Sp1-h2s/VTnZfCjw0tI/AAAAAAAAATg/0Gmod81Nd_c/s1600/WarsmithZuul%2B2015-04-24%2B07-42-56-91.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4gN3Sp1-h2s/VTnZfCjw0tI/AAAAAAAAATg/0Gmod81Nd_c/s1600/WarsmithZuul%2B2015-04-24%2B07-42-56-91.png" height="480" width="640" /></a></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-lbNBWmhruk8/VTnZeesFkxI/AAAAAAAAATc/tlz_JvDCXuY/s1600/WarsmithZuul%2B2015-04-24%2B07-41-55-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-lbNBWmhruk8/VTnZeesFkxI/AAAAAAAAATc/tlz_JvDCXuY/s1600/WarsmithZuul%2B2015-04-24%2B07-41-55-10.png" height="480" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-VWHN5ax1ySA/VTnZdHOfcZI/AAAAAAAAATU/0P4qcYdtRNQ/s1600/WarsmithZuul%2B2015-04-24%2B07-42-06-64.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-VWHN5ax1ySA/VTnZdHOfcZI/AAAAAAAAATU/0P4qcYdtRNQ/s1600/WarsmithZuul%2B2015-04-24%2B07-42-06-64.png" height="480" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-T-dolO3Opas/VTnbTBX0asI/AAAAAAAAAT0/iFHghwJb8JU/s1600/WarsmithZuul%2B2015-04-24%2B07-41-39-58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-T-dolO3Opas/VTnbTBX0asI/AAAAAAAAAT0/iFHghwJb8JU/s1600/WarsmithZuul%2B2015-04-24%2B07-41-39-58.png" height="480" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-31265014328371458332014-11-13T00:10:00.000-08:002014-11-13T00:46:58.153-08:00Hero Brawler Game Prototype<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">About two months back I revived a game I developed a few years back called Death Arena, making various improvements, integrating it with Facebook, implementing various new gameplay features and getting it ready for deployment on the iStore. It's pretty much ready to go but I feel the need to do one last pass and see if there is anything else that can be improved before putting it out there.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-FHPQEIdSb5I/VGRqfkCwZNI/AAAAAAAAASM/dwxR6ywU5tQ/s1600/DeathArena4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="460" src="https://1.bp.blogspot.com/-FHPQEIdSb5I/VGRqfkCwZNI/AAAAAAAAASM/dwxR6ywU5tQ/s640/DeathArena4.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>Screenshots of Death Arena</i></span></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">However, the last phase of any project is often the most cumbersome and I started feeling a bit burnt out on it and&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">decided I needed a break. This is how I justified allowing myself the twisted pleasure of working on an entirely new project when I had a 99.9% complete one waiting to go (and others on hold!). Admittedly, I felt a pang of guilt as I wrote this paragraph.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Anyway, I shall now cease this mincing of words and get to the point. I began experimenting with other game ideas for my next project. I experimented with transforming my PC-based real-time strategy game, Zyrtuul, into an iPad game, but it was a bit of a daunting task so I decided to hold off on that.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-8vl9wnnzfYo/VGRsDeYyuUI/AAAAAAAAASg/dNQ3Trb-f_I/s1600/Zyrtuul3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="462" src="https://4.bp.blogspot.com/-8vl9wnnzfYo/VGRsDeYyuUI/AAAAAAAAASg/dNQ3Trb-f_I/s640/Zyrtuul3.png" width="640" /></a></div><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>This is Zyrtuul. Attempting to simplify it so that it works on iPad (rather than PC) turned out to be a bit too complicated for my liking.</i></span></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I toyed with several other game ideas before developing a two week long addiction to the iPad version of the game Injustice. Injustice is a one-on-one fighting game featuring DC Comics superheroes. The mobile version differs from the console versions in that it is less action-oriented and uses a collectible card mechanic, allowing you to acquire characters as you progress and level them up.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-GoJuX7-0Arg/VGRrEokP9zI/AAAAAAAAASU/2tqV4e0JoiI/s1600/grundy1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://3.bp.blogspot.com/-GoJuX7-0Arg/VGRrEokP9zI/AAAAAAAAASU/2tqV4e0JoiI/s640/grundy1.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>Character Store in Injustice</i></span></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">As always, whenever I get into a game I started feeling the urge to develop my own game inspired by it. So I started experimenting in Unity, trying to implement a similar concept. It's still a very early prototype (none of the game mechanics are in yet), but it's looking promising. I'm considering making this my next project (though I'll need to evaluate other existing projects that are closer to completion before making this call).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I purchased character models a few years back for another game prototype (called the Weeping World -- it was grim and awesome, but too large in scope). Hence the decent looking characters despite it being only a few weeks in.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">It has a dark fantasy theme and is somewhat inspired by the early Mortal Kombat games (I had Goro's lair from the first game in mind when developing the first combat arena).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">As a prototype / proof-of-concept mock-up it is, of course, very rough around the edges, but I thought I'd post some screenshots of it's current state anyway.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0CyAlXi_cIc/VGRmWqF6nbI/AAAAAAAAARo/nE4ochnrl_g/s1600/Wizards.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://1.bp.blogspot.com/-0CyAlXi_cIc/VGRmWqF6nbI/AAAAAAAAARo/nE4ochnrl_g/s640/Wizards.png" width="640" /></a></div><div style="text-align: justify;"><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>In an act of callous heartlessness, an evil wizard gives his equally evil twin a solid blow to the crotch, thus reducing the likelihood of the poor fellow ever reproducing.</i></span></div><br /><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-xTF3AXnTaSY/VGRmw7aJh8I/AAAAAAAAARw/Yg7ayChrGT8/s1600/Blood.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://3.bp.blogspot.com/-xTF3AXnTaSY/VGRmw7aJh8I/AAAAAAAAARw/Yg7ayChrGT8/s640/Blood.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>I added the blood last night. I'm not sure whether they'll allow this on the iStore though.</i></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b><br /></b></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-lkjhfPsMFd8/VGRm-lznfaI/AAAAAAAAAR4/wwZbSzyiDmE/s1600/Skeletons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://4.bp.blogspot.com/-lkjhfPsMFd8/VGRm-lznfaI/AAAAAAAAAR4/wwZbSzyiDmE/s640/Skeletons.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>The arena needs more work to really live up to it, but was inspired by Goro's Lair.</i></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Z5W1EoDK0_w/VGRnKh_O3dI/AAAAAAAAASA/8xzYwJefuFk/s1600/Battle%2BSetup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://3.bp.blogspot.com/-Z5W1EoDK0_w/VGRnKh_O3dI/AAAAAAAAASA/8xzYwJefuFk/s640/Battle%2BSetup.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><i>Battle Setup Screen</i></span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-54839585335157308922014-09-24T10:10:00.000-07:002014-09-24T14:57:12.123-07:00Facebook API Example with Unity<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I integrated one of my games (Death Arena) with Facebook today. I encountered a few difficulties along the way and, although there was information online, it took me a while to get it working properly. The code examples I found online didn't work without modification (I had to combine bits and pieces from various sources), so I thought I'd share my Facebook wrapper class in case others find it useful.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The class is pretty simple at the moment and only caters for the basics -- connecting to Facebook and posting a message to the user's wall / timeline. It takes in a heading string, a main message string as well as a placeholder name string.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">For example, one might choose to use 'Bob' as a placeholder name. When calling the&nbsp;PostMessageToFacebook() method you could pass in a message of the form&nbsp;"Bob kicked ass in xyz game" and then pass in 'Bob' as the placeholder name. Once it logs onto Facebook and retrieves the user's first name, it will replace all instances of 'Bob' with the real name.</span></div><br /><br /><script src="https://gist.github.com/anonymous/d50d02f25d8a366bf193.js"></script>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-91253454151673126012014-08-17T20:12:00.003-07:002014-08-17T20:24:43.816-07:00Zyrtuul Progress<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Progress on my real-time strategy game slowed down a bit in the last few months, so I decided to give it a bit of attention in the last week. It's at the stage where many of the core game mechanics are down -- it's fairly playable, but needs some more work for it to provide a genuinely good user experience.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I'm not sure where to take it from here. Initially this started as a fun creative outlet and as an artificial intelligence development testbed. It's grown into a full-fledged RTS game now. The removal of the multiplayer component still irks me a bit, though I still feel the scope reduction was necessary.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I've been considering toning the entire game down from a traditional RTS to something targeted more at the casual gamer. I've been playing Clash of Clans and was wondering if I shouldn't be moving in that direction -- it's easier to compete with the casual strategy games than it is to try put something out there that tries to compete with franchises like StarCraft or Command and Conquer (even if I was working full-time on it, it would take a loooong time to get it at a level where it could compete with games of that scope).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">On the other hand, I've already put so much work into bringing it to its current state that trying to force it into a casual Clash of Clans style game would be pretty tough (I'd probably be better off starting from scratch, though there would be a lot of re-usable code and art resources to speed up the process).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I recently taught myself PHP and was experimenting with the database / server side components of a framework for making games of that type (Clash of Clans, Boom Beach etc). But I'm too attached to Zyrtuul as it currently is to butcher it like that. It's something to think about though. I'm considering buying a Mac Mini in the next few days and deploying to my iPad to get a feel for it.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Anyway, it feels like I'm rambling now. Here is a recent screenshot.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-0n2sW-tyHXo/U_Fu_xyp3WI/AAAAAAAAARU/x-KcKpwW5DQ/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-0n2sW-tyHXo/U_Fu_xyp3WI/AAAAAAAAARU/x-KcKpwW5DQ/s1600/1.jpg" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-25333019519949681612014-08-17T19:52:00.001-07:002014-08-17T20:59:00.660-07:00Sim Engine Graphics Talk Images<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The company I work for requires some fresh meat, and so we invited some pending Computer Science graduates from UKZN to visit the company and gave some presentations so as to try lure them in. I've been maintaining the graphics engine for the last few years, and so I was asked to speak about that. On Friday I had to dig around for a few images for the talk. I quite like some of them and so I decided to upload a few (since I haven't posted anything in months).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div></div><div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-LmF31s77O8k%2FU_FqTXS02tI%2FAAAAAAAAAQw%2FZUQuOLmKWP8%2Fs1600%2F4.jpg&amp;container=blogger&amp;gadget=a&amp;rewriteMime=image%2F*" imageanchor="1" style="display: inline !important; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://4.bp.blogspot.com/-LmF31s77O8k/U_FqTXS02tI/AAAAAAAAAQw/ZUQuOLmKWP8/s1600/4.jpg" /></a></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-3rBkJDZ5lm8%2FU_FqTQEsK4I%2FAAAAAAAAAQ0%2F-JoH67BfgKs%2Fs1600%2F5.jpg&amp;container=blogger&amp;gadget=a&amp;rewriteMime=image%2F*" imageanchor="1" style="clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-3rBkJDZ5lm8/U_FqTQEsK4I/AAAAAAAAAQ0/-JoH67BfgKs/s1600/5.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-A4CKTQk-J-w/U_FqSdSncfI/AAAAAAAAAQo/VwsBdmatTug/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-A4CKTQk-J-w/U_FqSdSncfI/AAAAAAAAAQo/VwsBdmatTug/s1600/1.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-8YFBq4Niq3o/U_FqQkc2OiI/AAAAAAAAAQY/MwLkcDeW_NQ/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-8YFBq4Niq3o/U_FqQkc2OiI/AAAAAAAAAQY/MwLkcDeW_NQ/s1600/2.jpg" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-TbFuzR8Omz8/U_FqREFCb_I/AAAAAAAAAQc/hfbs2vU7m5c/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-TbFuzR8Omz8/U_FqREFCb_I/AAAAAAAAAQc/hfbs2vU7m5c/s1600/3.jpg" /></a></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-juSV7-ZuukY/U_FqVZq5RuI/AAAAAAAAARE/p1tQV_FQ5MI/s1600/6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-juSV7-ZuukY/U_FqVZq5RuI/AAAAAAAAARE/p1tQV_FQ5MI/s1600/6.jpg" /></a></div><div style="text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: justify;"><div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div></div></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-15904966397852110642014-03-22T14:43:00.001-07:002014-03-23T01:58:01.892-07:00Fractals With Shaders<div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;">I spent the last few hours experimenting with writing shaders to display fractals. I'm using the Julia Set (named after French mathematician Gaston Julia, who devised the formula). The Julia set requires a set of seeds to be fed in. I base mine on the sine of the application time (so the fractals shift and change over time). I also modify the ratio between the two components of the seed in a similar way, which varies the patterns quite a bit.</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;">A demo can be downloaded from here:</span></div><div class="separator" style="clear: both; text-align: left;"><a href="http://www.lunarpulse.com/Downloads/FractalsDemo.rar"><span style="font-family: Arial, Helvetica, sans-serif;">FractalsDemo.rar</span></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; text-align: justify;">Here are a few screenshots.</span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-e7V6I31NlLs/Uy4DSqfvGuI/AAAAAAAAAPk/9IUetHvxMaM/s1600/C.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-e7V6I31NlLs/Uy4DSqfvGuI/AAAAAAAAAPk/9IUetHvxMaM/s1600/C.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-T-TfM4xke8A/Uy4DR_bJuUI/AAAAAAAAAPc/p-QBqHLXXeg/s1600/A.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-T-TfM4xke8A/Uy4DR_bJuUI/AAAAAAAAAPc/p-QBqHLXXeg/s1600/A.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-DSeoSgtUxbM/Uy4DSMup26I/AAAAAAAAAPg/tygLY89bZNE/s1600/B.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-DSeoSgtUxbM/Uy4DSMup26I/AAAAAAAAAPg/tygLY89bZNE/s1600/B.png" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-76846191900412654262014-02-19T02:29:00.001-08:002014-05-26T05:36:04.161-07:00Loading Terrain Heightmap Data Via C# Script in Unity<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">For my real-time strategy game Zyrtuul I need to be able to load different landscapes at run-time. A fundamental part of this is loading terrain heightmap data from script. I implemented this last night. I noticed that many people have been asking how to do this online, but I did not see any complete solutions presented. It turned out to be significantly easier than anticipated. This implementation allows you to save your heightmap using any image format (I assume it is saved in Assets/Resources/Heightmaps). Simply attach this script to your terrain object and it will load up the specified heightmap automatically.</span><br /><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><br /><script src="https://gist.github.com/anonymous/9089628.js"></script>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-86433069840758443862014-02-16T04:21:00.002-08:002014-02-16T04:53:40.628-08:00Experimental Art and Design Work for Zyrtuul.<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Work has been busy at the moment and I was feeling a bit worn out, but I still felt like doing work on Zyrtuul. So I decided to take a break from programming for the weekend and focus on the artwork instead. </span><span style="font-family: Arial, Helvetica, sans-serif;">I started off searching for source material and looking for inspiration online, in an effort to settle on an overall look for the user-interface, splash screens and overlays of Zyrtuul.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">For a while I was attempting to take rendered images of various vehicles, super-impose them over a background and then modifying them in Photoshop to fake a hand-drawn / painted feel. I was initially happy with the results, but after comparing them to other games' splash screens I realized that, while they were okay, they weren't great.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-iz4z7Gxwxic/UwCnOdrU9AI/AAAAAAAAAOM/no4KWGADwCo/s1600/Zyrtuul+(5).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-iz4z7Gxwxic/UwCnOdrU9AI/AAAAAAAAAOM/no4KWGADwCo/s1600/Zyrtuul+(5).png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-7uwtwzqLvcY/UwCnNv0dd1I/AAAAAAAAAOE/sHikPgZm9fk/s1600/Zyrtuul+(6).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-7uwtwzqLvcY/UwCnNv0dd1I/AAAAAAAAAOE/sHikPgZm9fk/s1600/Zyrtuul+(6).png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">After that I decided to stick with my original plan, using more generic spacey images, which are much easier to make (there is a lot of good source material out there that you can combine to get a unique-looking, visually appealing final image). The image below is still experimental and not final, but gives some indication of what I'm thinking the overall look and feel of the splash screen will be.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-SnKGVQKzvRs/UwCoTHbVUjI/AAAAAAAAAOY/Pt5SKJuNThs/s1600/Zyrtuul+(3).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-SnKGVQKzvRs/UwCoTHbVUjI/AAAAAAAAAOY/Pt5SKJuNThs/s1600/Zyrtuul+(3).png" height="388" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif;">I had already designed the look of the mission select screen, but I wasn't 100% satisfied with its current state so I spent some time tweaking that as well. I still don't think it is perfect yet, but it will suffice for now. The current mission select screen can be seen in the image below. It may be too dark to see, but there is a square spot reserved for a top-down image of the map near the top right of the screen. I haven't implemented that yet though (the game is still in the rough early stages).</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-mbdS_fUztic/UwCpAwnkIlI/AAAAAAAAAOg/cKh6t1-dXFo/s1600/Zyrtuul+(1).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-mbdS_fUztic/UwCpAwnkIlI/AAAAAAAAAOg/cKh6t1-dXFo/s1600/Zyrtuul+(1).png" height="300" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">As the artwork starts to look more polished, elements that I previously liked no longer seem as good as they did. This was the case with the in-game overlays (which I put together sometime last year). These include the minimap border and the 'command panel' (that is, that panel where command buttons such as 'move', 'attack', 'stop' and 'patrol' would appear). In addition to that, I felt it was time to change the way resources are displayed (previously I just had placeholder text at the top-right of the screen). I have put all three in-game overlays into the image below to show what they currently look like.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">At the top is the minimap border. The minimap would appear in the square black region. Below that is the resource display panel. When in-game, a number will be shown for each resource type. Below that is the command panel. When in-game, if a unit (that is, a vehicle or building) is selected, buttons will be displayed in the command panel. These allow you to issue commands to the unit.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-3NtVHYeIfZw/UwCqMGbecqI/AAAAAAAAAOs/EcACBV_XhZs/s1600/Zyrtuul+(4).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-3NtVHYeIfZw/UwCqMGbecqI/AAAAAAAAAOs/EcACBV_XhZs/s1600/Zyrtuul+(4).png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I was happy with the way the terrain looked, but I felt that some textures looked better than others. I spent a few hours making new terrain textures yesterday. I wanted uber-high levels of detail, and so I composited various images together for the diffuse maps (I've had a lot of practice so I'm getting pretty good at it). I then manually constructed normal maps in Photoshop. Ordinarily, converting the diffuse maps to greyscale and then using that as a heightmap will, although a cheap hack, do the job when using it as input to construct a normal map. However, I wanted a very specific look, and so I instead (painstakingly) constructed the height and normal maps. It is difficult to clearly see the results from the screenshot, but they look very good when viewing the game at full size (especially when combat is occurring, due to the way weapon lights interact with the normal maps).</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-eMMCPUiSMUw/UwCutS0dz1I/AAAAAAAAAPE/lC83IokjIVc/s1600/Zyrtuul+(7).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-eMMCPUiSMUw/UwCutS0dz1I/AAAAAAAAAPE/lC83IokjIVc/s1600/Zyrtuul+(7).png" /></a></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The final bit of work on Zyrtuul for the weekend was done this morning. I wanted to settle on the game factions and their banners / logos. This took surprisingly long (it took me many hours to do the banners). This is what I'm sitting with at the moment (the logos at the top-right of the image).</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-wfrF7IbmtAM/UwCtGfHkVBI/AAAAAAAAAO4/0Lz4XPnRwV4/s1600/Zyrtuul+(2).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-wfrF7IbmtAM/UwCtGfHkVBI/AAAAAAAAAO4/0Lz4XPnRwV4/s1600/Zyrtuul+(2).png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Deciding what the factions would be was difficult -- it often feels like most of the good ideas are taken already, and so coming up with something genuinely original seems impossible. They say that most stories are just variations on a few common themes, and so I consoled myself with that thought and decided to just settle on something.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The idea of an empire vs rebels is very cliched for obvious reasons, but Star Wars wasn't the inspiration for that (although now that I have made that connection, I'm wondering if I need to change this).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">Anyway, I may end up changing this, but the inspiration for this was actually Spartacus</span><span style="font-family: Arial, Helvetica, sans-serif;">.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I thought the idea of designated slave planets would make for a good story -- entire planets whose populations are automatically born into slavery. Groups of slaves are periodically 'harvested' from these planets and brought to work on the elite planets. And, of course, such a situation would inevitably result in rebellion, which would then require those in power to quickly squash it to prevent other slave planets from joining in.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">As for the Smugglers' Guild, well they have no interest in such conflicts but occasionally get involved when it profits them. The Smugglers' Guild is amoral and neutral, but if they can get away with attacking either side so as to benefit from the spoils of war, they will not hesitate to do so.</span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-71602586609727629562014-02-11T12:15:00.002-08:002014-09-24T07:34:31.524-07:00Implementing Fog of War<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Last night I began implementing fog of war for Zyrtuul, and made some decent progress. Tonight I spent a few hours and got it working properly.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">My implementation uses render-to-texture functionality, and involves the following steps:</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- Create an orthographic camera that renders the scene from a top-down perspective. This camera does not render any of the usual objects. It will only render special objects called 'fog of war revealers'.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">-</span><span style="font-family: Arial, Helvetica, sans-serif;">&nbsp;Attach a quad to each unit in the game. This is simply a flat upward-facing rectangle positioned just above each vehicle or building. I call these 'fog of war revealers'.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- Map an image which will control the way fog of war is revealed for units. I initially used a simple black image with a blurred white circle in the middle, but then experimented and am currently using the image below (made it in Photoshop). This simply makes the fog of war boundaries more interesting. Basically, each unit will be surrounded by an area of 'transparency' with the following shape (completely arbitrarily chosen at the moment and definitely subject to change).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-kyEk-oNCR2w/UvqAoLYQc6I/AAAAAAAAAMc/F1C0oiy0Z7o/s1600/FogOfWarRevealer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-kyEk-oNCR2w/UvqAoLYQc6I/AAAAAAAAAMc/F1C0oiy0Z7o/s1600/FogOfWarRevealer.png" height="320" width="320" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- Create a render texture. This is a surface that the fog of war camera will render to. That is, instead of rendering to the screen, it renders to a separate image in memory.</span><span style="font-family: Arial, Helvetica, sans-serif;">&nbsp;Set the fog of war camera to render to this texture.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- The first time the camera renders it clears the image to black. It then disables its clearing behaviour so that for subsequent frames the image is not cleared. This allows the fog of war state to be permanent. If we wanted the fog of war to re-appear at locations where there are no longer any units we would skip this step and have the camera clear the render target to black every frame.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- Set the blend mode of the fog of war revealers to be 'additive'. This means that wherever the unit moves, the image above will be added to the black background. The following is a visualization of what the render texture might look like if there were four units in the scene.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-cfuFHiuS4qw/UvqGPNI8jcI/AAAAAAAAANI/f_Vs1PpTzpc/s1600/RenderTexture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-cfuFHiuS4qw/UvqGPNI8jcI/AAAAAAAAANI/f_Vs1PpTzpc/s1600/RenderTexture.jpg" height="240" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- Render a large plane at the height of the terrain. This will cover the entire scene. This plane will render in both the main view and the minimap view.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">- Map the render texture to this plane's material. What we are doing here is having the render texture control the alpha state of this plane. Thus, the white areas will be transparent but the black areas will be opaque.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">- Set the depth buffering behaviour of this plane's material to 'no z-test' and 'no z-write'. This will make the plane always render on top of anything (so that we don't have to concern ourselves with situations where objects are above the plane). Also modify the render order of the plane so that it renders after all objects that must be obscured.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Below are some screenshots of the game with fog of war enabled. The turrets do not currently have fog of war revealers attached to them (so they can currently be obscured by fog of war, which I'll fix later).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-C8Js81rx87U/UvqHJZl6vII/AAAAAAAAANQ/kTNTsSZ72Ek/s1600/UseMe2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-C8Js81rx87U/UvqHJZl6vII/AAAAAAAAANQ/kTNTsSZ72Ek/s1600/UseMe2.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-FRd-0k-HA6o/UvqDpZQmeeI/AAAAAAAAAM0/gfb4QUB5mD0/s1600/UseMe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-FRd-0k-HA6o/UvqDpZQmeeI/AAAAAAAAAM0/gfb4QUB5mD0/s1600/UseMe.jpg" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-5170524890959350962014-02-09T04:36:00.000-08:002014-09-24T07:34:48.767-07:00Zyrtuul Screenshots.<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I put a lot of work into a new pet project toward the end of last year -- a real-time strategy game that is currently going by the name Zyrtuul. I took a break for a few months but recently decided to do some more work on it.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I've added various new vehicle types. At the moment I'm focusing on getting the art in and looking good rather than on implementing specific vehicle capabilities. I quite like the new harvester. As it gathers red suphur (visible in one of the screenshots, the red stuff on the ground) a heap of red sulphur gradually grows on the back of the vehicle, until it is full.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I'm experimenting with a darker, more grim sci-fi look. I've taken out the trees and water and have put in rocks and lava instead. I've also removed the&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">grass terrain textures and replaced them with dark rock / dirt textures.&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">The look I'm going for is that of a barren planet. To further promote that atmosphere, I've subdued t</span><span style="font-family: Arial, Helvetica, sans-serif;">he lighting and given it a bluish tinge.</span><span style="font-family: Arial, Helvetica, sans-serif;">&nbsp;The vehicles themselves are quite detailed, and when combat happens there tends to be a lot happening on screen, so I thought it best to keep the terrain dark and unobtrusive.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-l0c7yMQBvvA/Uvd1_ePGhOI/AAAAAAAAALw/znGMuq7vh0U/s1600/Zyrtuul+2014-02-09+14-09-23-17.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-l0c7yMQBvvA/Uvd1_ePGhOI/AAAAAAAAALw/znGMuq7vh0U/s1600/Zyrtuul+2014-02-09+14-09-23-17.bmp" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-LnpK2X4rWRI/Uvd4V1WgzWI/AAAAAAAAAMM/moo5u54NR8Y/s1600/Zyrtuul+2014-02-09+14-11-34-63.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-LnpK2X4rWRI/Uvd4V1WgzWI/AAAAAAAAAMM/moo5u54NR8Y/s1600/Zyrtuul+2014-02-09+14-11-34-63.bmp" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-dvdXK9pdTVY/Uvd1_qf7f5I/AAAAAAAAAL0/zoaLIvjkFy8/s1600/Zyrtuul+2014-02-09+14-11-36-43.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-dvdXK9pdTVY/Uvd1_qf7f5I/AAAAAAAAAL0/zoaLIvjkFy8/s1600/Zyrtuul+2014-02-09+14-11-36-43.bmp" /></a></div><div style="text-align: justify;"><br /></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-30443578053197826382013-11-07T07:36:00.003-08:002014-09-24T07:34:57.470-07:00Implementing Path-Finding in Zyrtuul<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">In this post I discuss my implementation of path-finding in the real-time strategy game I'm currently building (the working title for the game is Zyrtuul, though I might end up changing that).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">A commonly used path-finding algorithm in game development is the A* algorithm (pronounced 'A star') which is an extension of the older well-known graph traversal algorithm called Dijkstra's Algorithm. I coded up a C++ implementation of various path-finding algorithms back in 2005 (as part of one of the demonstration applications that accompanied my CompSci master's degree), so I chose to re-use my old implementation of A* rather than re-inventing the wheel.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I started off coding the game as well as the game engine in C++ because, at the time, my main interest was in developing the underlying technology. But as it progressed I started wanting to focus on the actual game rather than the technology. Coding the engine and game simultaneously was simply taking too long (and I wasn't really learning anything new, having done so much engine work over the years already). So I decided to switch to the Unity engine for the game.</span></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-jRW6fHXgf4g/Unuy278SyjI/AAAAAAAAAK8/ubQqLRQuLoU/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-jRW6fHXgf4g/Unuy278SyjI/AAAAAAAAAK8/ubQqLRQuLoU/s640/1.PNG" height="345" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Unity doesn't support C++, instead you write scripts in C# or Javascript (edit: apparently Boo and their own language called UnityScript are also supported).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">I am therefore now coding in C# (simply because I have more experience using C# than the others).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Converting the code from C++ to C# was initially pretty straight-forward until I realized that C# does not provide a priority queue (a fundamental component of the path-finding algorithm) as part of its library. With my initial C++ implementation I was using the STL priority queue, but I now realized that I would have to find an implementation online or else write my own.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">A priority queue is a data structure that keeps its elements sorted based on some user-specified criterion, in our case based on the path node cost / distance when conducting a path-finding query. In short, a priority queue is the most efficient way of performing path queries because of the fact that it automatically keeps itself sorted when you add or remove items.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">It seems that the Microsoft C# team decided that a priority queue was too niche to be included in the .NET foundation library, so I was out of luck. Fortunately others had encountered this problem as well and so I was able to find a priority queue C# implementation online that, with some minor modification, suited my needs. Once the priority queue was done the rest of the graph traversal / path-finding code came together nicely. So I ended up getting a task that would ordinarily take a significant amount of time and effort done in about a day due to code re-use.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-A7iY_Ptd8lk/Unuy6th9NzI/AAAAAAAAALI/3C-u9iTU3tw/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-A7iY_Ptd8lk/Unuy6th9NzI/AAAAAAAAALI/3C-u9iTU3tw/s1600/3.PNG" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Path-finding solved the macro-navigation problem (navigation on a large scale), but micro-navigation was still a problem due to the fact that the pathing grid has limited resolution and also due to the fact that the grid is not static -- moving entities can invalidate previously valid routes. A vehicle could easily determine that to get from one side of the map to the other it needed to move around a lake or large obstacle that was blocking its way, but it still had issues on a smaller scale. For example, if vehicle A was told to find a path to some point and then vehicle B was instructed to move to a location that blocks this path, vehicle A would eventually encounter vehicle B and need to determine how to deal with it.</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">For this game I could get away with very simple collision detection and collision response based on bounding spheres and having vehicles 'pushed away' from one another when they are colliding. This partially solved the problem of vehicles coming into contact with one another (they would simply push one another out of the way), but was far from perfect as it could lead to 'jostling'. Also, it just made them look downright impolite. If two vehicles were headed directly toward one another, they would simply push head to head with neither able to get past. Alternatively, if you told many vehicles to move to a single location they would all mass together, jostling and pushing one another in an attempt to settle at that location.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-OQmQZ1CYikY/Unuyy_vjvAI/AAAAAAAAAK4/e-1F9T5COSk/s1600/4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-OQmQZ1CYikY/Unuyy_vjvAI/AAAAAAAAAK4/e-1F9T5COSk/s1600/4.PNG" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">One attempted solution was a "frustration factor"... when a vehicle was too close to another vehicle it had a frustration factor value that represented how 'frustrated' the vehicle was, with the idea being that it would eventually decide to simply find a new path to its destination it it became annoyed enough</span><span style="font-family: Arial, Helvetica, sans-serif;">. This was simply a floating point value that increased over time when the vehicle was too close to another vehicle, and decreased over time when it wasn't. If a vehicle's frustration factor rose beyond a certain threshold it would request a new route to its current destination. Unfortunately I spent far too much time trying to get this to give the desired results and I found it to be too unpredictable. Eventually I decided that the moment a vehicle encounters another vehicle, one of the two vehicles must immediately find a new path. I arbitrarily decided that in the case of path blocking conditions&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">the unit that was created first gets to keep its current path and the more recently created unit has to find a new path.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Quite a few other rules are also in place to handle various conditions and edge cases, but I think I've already written too much and so won't go discuss these here.&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">The navigation behaviour of the individual units is fairly solid at this point, but not quite perfect (it's close though, better than some commercial RTS games I've seen). However, it will suffice for now -- I can hone it further later on, when polishing the game up.</span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-27228792928199732362013-11-06T22:11:00.002-08:002014-09-24T07:33:42.172-07:00New Real-Time Strategy Game<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I've been working on a real-time strategy game for the last while. I've kept it quiet until now, but it is getting to the point where I actually have something worthwhile to show. It is still in the very early stages, but here are a few screenshots of what it is looking like so far. I have developed a mini-map but disabled it for these screenshots.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I've decided to go the open source route and so will be releasing the source code for the game eventually (I'll only be releasing the C# code itself, not the content).</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">I'll probably talk about the development of the game in a separate blog post later.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Note: some of the art content is just placeholder art that I threw in to make what was initially just a fun AI experiment easier on the eye. I just realized that it's about time to replace it (I have acquired 3D models and have a friend working on more, just need to put them in). R</span><span style="font-family: Arial, Helvetica, sans-serif;">ather silly of me not to think of that before posting screenshots.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Edit: I have modified the screenshots and blurred out the art that I know I'll have to replace. I'll post updated screenshots at a later stage.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-SJWswcCWTuo/UnuJdJ-qjfI/AAAAAAAAAKM/cPCXVAL-4LA/s1600/Zyrtuul+(1).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-SJWswcCWTuo/UnuJdJ-qjfI/AAAAAAAAAKM/cPCXVAL-4LA/s640/Zyrtuul+(1).png" height="480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-l6miME6OsIc/UnuJbmPfNjI/AAAAAAAAAKE/x-4ZMSCTR1E/s1600/Zyrtuul+(2).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-l6miME6OsIc/UnuJbmPfNjI/AAAAAAAAAKE/x-4ZMSCTR1E/s640/Zyrtuul+(2).png" height="480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-bEXkLtZs_5Q/UnuJdr13zjI/AAAAAAAAAKQ/lbdwQ2co1qw/s1600/Zyrtuul+(3).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-bEXkLtZs_5Q/UnuJdr13zjI/AAAAAAAAAKQ/lbdwQ2co1qw/s640/Zyrtuul+(3).png" height="480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-vEqLUIgF-Us/UnuJiioidyI/AAAAAAAAAKc/Upcc_KtaV8Q/s1600/Zyrtuul+(4).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-vEqLUIgF-Us/UnuJiioidyI/AAAAAAAAAKc/Upcc_KtaV8Q/s640/Zyrtuul+(4).png" height="480" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-uY2wVYA0BfE/UnuJi0PhYGI/AAAAAAAAAKg/fvcxwrSEvR8/s1600/Zyrtuul+(5).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-uY2wVYA0BfE/UnuJi0PhYGI/AAAAAAAAAKg/fvcxwrSEvR8/s640/Zyrtuul+(5).png" height="480" width="640" /></a></div></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-33938597706779935442013-08-02T02:59:00.000-07:002013-08-02T05:38:38.872-07:00Voxel Collision Heightmap<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">One of the unexpectedly challenging aspects of getting our voxel systems integrated fully into the engine is achieving stable and efficient collision detection and response, and decent vehicle behaviour when driving over portions of the world implemented using voxels.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Currently, the voxel system collision detection system I have in place works correctly. However, if you dig deep enough into a large voxel volume so that much of it has been eaten away, the optimization steps I can take to keep the number of intersections against individual voxels lessens. To put it another way, when you’ve dug into the voxel system sufficiently, the voxel data has been expanded a lot and so many calculations need to be performed. In my stress testing I had a vehicle driving through a large voxel tunnel where most of it had been dug away, with all of the vehicle collisions volumes / lines enabled (there are a lot). I encountered two problems.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The first problem was that the performance dropped significantly, to the point where I started to become very concerned about where to go next. However, I gave it some thought and have some solutions planned (and partially implemented). I am optimistic about these, and will elaborate further in a moment.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The second problem I had was that if we had pursued the more simplistic method I had in mind initially, the wheels would be moving over a relatively blocky surface when you’re digging up or down an incline (which we do need to do). This would give erratic behaviour, and we’d need to find a solution to this. Smoothing it out by using a greater number of smaller voxels helps the dynamics behaviour but would compound performance difficulties.&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">This got me to thinking that converting the 'ground layer' of the voxel system into a collision heightmap that you drive on top of would be a better alternative.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">What I mean by this is that when performing wheel collisions tests I sample a collision heightmap instead. This heightmap is constructed using the voxel data (it essentially reduces a 3D problem to a 2D problem so as to improve vehicle driving behaviour).</span><br /><br /><span style="font-family: Arial, Helvetica, sans-serif;">I have been hacking away and have a significant portion of the collision heightmap code implemented, though it is still a work-in-progress and so more work will need to be done before it is useable (I'm estimating a day or two). A benefit of this is that I can eliminate sharp jumps in height (i.e. the surface beneath the wheels will appear to the dynamics to be smooth rather than blocky).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I will achieve this via interpolation. So, for example, if you sample the collision heightmap beneath the wheel, I will also sample surrounding height values and filter the results. I have recently implemented exactly the same functionality in the D3D11-based engine / demo I have been working on at home (see previous blog entries), and so I can just bring in and re-use that code, which has been honed and works well. Basically it makes use of hand-coded bilinear interpolation.</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Note that this technique makes certain assumptions about the intended usage of the sim -- it assumes a single 'layer' of empty space. You couldn't, for example, construct a bridge out of voxels with this feature enabled and expect it to behave as expected. But for our current purposes the limiting assumption holds true, and so this is not a concern.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">To summarize, using a collision heightmap will give smooth, stable behaviour when driving over a surface or tunnel represented by voxels, and will also yield performance benefits.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Here is a screenshot of some debug lines used to visualize a small portion of the underlying heightmap data. It is difficult to see from this picture (perhaps I should use tiny boxes instead to show heights), but these lines extend from the base of the heightmap to the first section of empty space directly above them.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-zAtqAn2pKwU/UfuC-OnTMxI/AAAAAAAAAIU/a3L3xMPpos4/s1600/Voxels.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="392" src="http://4.bp.blogspot.com/-zAtqAn2pKwU/UfuC-OnTMxI/AAAAAAAAAIU/a3L3xMPpos4/s640/Voxels.jpg" width="640" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-49605793300157942142013-07-15T08:28:00.000-07:002013-11-08T03:45:13.175-08:00Voxel system update<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I've been working on adding a voxel framework to our engine for use in sims where we need destructible terrain / rock. The first project that will use this technology is a continuous miner simulation. Although the framework has been in place for a while, it has only become stable (bug free and efficient) in the last week or two. I've had to do a fair bit of profiling in order to eliminate bottlenecks and boost performance (I use a tool called Luke Stackwalker, which I quite like).&nbsp;</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I had a gloomy moment when I first integrated it into the sim because there was a noticeable frame rate drop, but it turned out to simply be some debugging / debug visualization code I had left in.&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">After commenting that out the framerate went right back up to a point that was actually better than anticipated considering (a) how much collision detection logic I'm running, (b) that the state of the system is being propagated through the system via state packets and (c) that I was running both dynamics and graphics on the same PC (so twice the load).&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">It cuts through the wall pretty smoothly and the framerate is currently above 60fps.</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"> <span style="font-family: Arial, Helvetica, sans-serif;">Update: a few months have gone by since I posed this. I thought I'd replace the old screenshot with a few more recent screenshots.</span><br /><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-hL8fnqEpLgs/UnzOU7dg1aI/AAAAAAAAALc/u4GjPpVLQOk/s1600/CM2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-hL8fnqEpLgs/UnzOU7dg1aI/AAAAAAAAALc/u4GjPpVLQOk/s1600/CM2.PNG" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-ncY0FPmM9a0/UnzOTjOcSRI/AAAAAAAAALU/YSH24aPX4Mc/s1600/CM1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-ncY0FPmM9a0/UnzOTjOcSRI/AAAAAAAAALU/YSH24aPX4Mc/s1600/CM1.png" /></a></div><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-87187392550502535532013-07-15T00:43:00.000-07:002014-09-24T07:42:16.378-07:00Minor Updates to Surreal Landscape Demo<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">This weekend I did a but of work on my surreal landscape demo. I re-modelled the jellyfish (more detailed and better looking) and re-worked their animation (I'm just doing it in the vertex shader via sine and cosine waves at the moment).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I added some basic trees to get a feel of what it will look like once I start adding more foliage. I also added a bit more vegetation (cycads). I'm using instancing for almost everything at the moment, and so I'm using texture atlases (multiple textures combined into one image, with each instance able to use any of them). When setting up each instance, I randomly choose a texture offset which controls which image in the texture atlas is used. Each instance also has a random rotation, scale and colour modifier, resulting in greater variety whilst still keeping the number of draw calls to a minimum.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-RW4uiYAhQSc/UeOnYx4UWHI/AAAAAAAAAHs/TZwXdLZBA9g/s1600/Screenshots1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-RW4uiYAhQSc/UeOnYx4UWHI/AAAAAAAAAHs/TZwXdLZBA9g/s1600/Screenshots1.png" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I also re-worked the way I handle bloom. Prior to this I had a very simple method in place, which I had hobbled together just as a placeholder until I had some time to do it properly. I was doing a Gaussian filter both vertically and horizontally in one pass as opposed to filtering first horizontally, and then vertically in a separate pass. I am doing it correctly now (separate horizontal and vertical passes) so as to reduce the number of filter samples required. Additionally, I wasn't performing the bright pass before passing them into the filter -- instead I was performing it at a later stage, in the final post-processing shader stage. This resulted in halos around dark objects, because the bloom buffer contained blurred parts of both bright and dark parts of the image resulting in darker parts 'bleeding' over into brighter parts of the image. This is now fixed (note that the screenshots accompanying this post were taken before the current fix, so there may still be minor colour bleeding present in these images).</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-epnNuctP3gw/UeOnuIlrMvI/AAAAAAAAAH0/MTr5-2zhmNY/s1600/Screenshots2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-epnNuctP3gw/UeOnuIlrMvI/AAAAAAAAAH0/MTr5-2zhmNY/s1600/Screenshots2.png" /></a></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I also decided to alter various post-processing parameters based on the time of day. I found that I could tweak the post-processing parameters to make the scene look good for certain lighting conditions, but that the lighting conditions differed significantly enough that no single collection of settings looked perfect in all conditions. I now have various sets of variables for use in different lighting conditions. These include parameters that control the bloom bright pass (bloom exponent and bloom multiplier), as well as parameters that control the very last phase of the post-processing pipeline -- contrast and saturation.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I find that after applying bloom some of the colours are over-saturated. Although I am going for a fantasy dream-world feel, I don't want it to look too cartoony, so in order to get the visual results I want I increase the contrast and reduce the saturation&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">of the final image&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">so as to give it a slightly more gritty feel.</span></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.comtag:blogger.com,1999:blog-929115819726191010.post-73183923475522711442013-07-11T00:53:00.004-07:002014-09-24T07:42:47.380-07:00More Surreal Landscape Screenshots<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I did a bit more work on my surreal landscape demo. Last night I added jellyfish-like creatures that float in the air.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The intention is to eventually have a full ecosystem which gives a genuine sense of being alive. I want all creatures to interact with other creatures and with the environment. I've implemented a flocking algorithm so far and it looks pretty good. I also have red alien plants (visible in the screenshot below) that emerge and grow at night (and glow subtly), and mushrooms that emerge as the camera draws near. But ultimately I'd like to have some creatures hunting other creatures, far more complex group movement behaviours, creatures feeding off plants or attracted to lights, more plants growing as you watch, and so on.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Ev7r90nzMEQ/Ud5hpWcGZNI/AAAAAAAAAG0/NXF72LU_vFk/s1600/Screenshot+(1).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Ev7r90nzMEQ/Ud5hpWcGZNI/AAAAAAAAAG0/NXF72LU_vFk/s1600/Screenshot+(1).jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-u_jetrAMAAo/Ud5hxjdG6pI/AAAAAAAAAHA/1AI1FD1yMqY/s1600/Screenshot+(1).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-u_jetrAMAAo/Ud5hxjdG6pI/AAAAAAAAAHA/1AI1FD1yMqY/s1600/Screenshot+(1).png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The demo already feels very alive -- grass sways in the wind, the clouds are somewhat volumetric and move across the sky, planets in the sky move in an (admittedly physically-inaccurate but nice-looking) orbit and water ripples. This combined with the various creature types wandering the landscape and plants growing / emerging in real-time, gives a very vibrant, dynamic feel to the scene. Still, I want much more, even if I have to only feature some elements at a time (it might end up feeling a bit overwhelming). I've also been considering having it support the Oculus Rift when my dev-kit finally arrives.</span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">The engine uses NVidia's Cg language for the shaders, a library called AssImp for supporting many mesh formats and a library called&nbsp;FW1FontWrapper for displaying text onscreen (a task that is surprisingly cumbersome in D3D11). Other than that, its just pure Direct3D 11 and standard Windows calls (oh, and also Direct Input 8). Eventually I'll bring across some of my sound code from other projects, which uses OpenAL and Ogg-Vorbis (which allows me to use the .ogg format, which has similar compression quality to mp3 but fewer useage restrictions).</span></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-4vkIKWHm6vU/Ud5hxnxw6PI/AAAAAAAAAG8/pl6SasGTA5c/s1600/Screenshot+(2).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4vkIKWHm6vU/Ud5hxnxw6PI/AAAAAAAAAG8/pl6SasGTA5c/s1600/Screenshot+(2).jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-6UUO5a6v61I/Ud5hzS8o31I/AAAAAAAAAHM/3BVla-Kaw1U/s1600/Screenshot+(2).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-6UUO5a6v61I/Ud5hzS8o31I/AAAAAAAAAHM/3BVla-Kaw1U/s1600/Screenshot+(2).png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">I've fixed my engine clock (it had a flaw in it that caused delta time to vary based on frame rate). I brought across some code from Transcendence (an old D3D9-based game engine I developed in 2008) to replace the timing code with older, more thoroughly-tested code.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">There are various different timing methods available, with the four most common being the functions clock(),&nbsp;timeGetTime(),&nbsp;GetTickCount() and the Microsoft-specific function&nbsp;QueryPerformanceCounter(). I support all four (I can alter which one I use at run-time), simply because I wanted to test for myself which one was most reliable. Strangely, although the general consensus is that&nbsp;</span><span style="font-family: Arial, Helvetica, sans-serif;">QueryPerformanceCounter() is the most reliable (albeit with some work-arounds required on multi-core systems to prevent glitches), I have found clock() to be just as sound (even more reliable than QueryPerformanceCounter() on some systems), and timeGetTime() pretty close as well.</span></div><div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-9FBrJ2NXppI/Ud5h9sp34MI/AAAAAAAAAHc/i2r0DvJeVDw/s1600/Screenshot+(3).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-9FBrJ2NXppI/Ud5h9sp34MI/AAAAAAAAAHc/i2r0DvJeVDw/s1600/Screenshot+(3).png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-6jv61849ZQ8/Ud5h5binB2I/AAAAAAAAAHU/WXGFvEXQJIQ/s1600/Screenshot+(4).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-6jv61849ZQ8/Ud5h5binB2I/AAAAAAAAAHU/WXGFvEXQJIQ/s1600/Screenshot+(4).png" /></a></div>Damien Classenhttp://www.blogger.com/profile/04967489750997735801noreply@blogger.com