{"id":80,"date":"2007-06-21T19:50:15","date_gmt":"2007-06-21T09:50:15","guid":{"rendered":"http:\/\/www.doolwind.com\/blog\/?p=80"},"modified":"2007-06-21T19:50:15","modified_gmt":"2007-06-21T09:50:15","slug":"1-day-game-1","status":"publish","type":"post","link":"https:\/\/www.doolwind.com\/blog\/1-day-game-1\/","title":{"rendered":"1 Day Game #1"},"content":{"rendered":"<p><a href=\"http:\/\/www.doolwind.com\/images\/blog\/game1%20screenshots.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.doolwind.com\/images\/blog\/game1%20screenshots.jpg\" alt=\"\" width=\"39\" height=\"153\" align=\"right\" \/><\/a>Over the weekend I had a little spare time and decided to try out <a href=\"http:\/\/hge.relishgames.com\/\">Haaf&#8217;s Game Engine<\/a> (HGE).  After spending the last year working on BSG and as long as I can remember on CIC I decided to make a small game that would take less than a day.  The finished product came in at 13 hours and is a &#8220;<a href=\"http:\/\/en.wikipedia.org\/wiki\/Geometry_Wars\">Geometry Wars<\/a>&#8221; style of game with a bit of a twist.  I&#8217;ve aptly called the game &#8220;<a href=\"http:\/\/www.doolwind.com\/Game1\/Game1.zip\">Game1<\/a>&#8220;.<\/p>\n<p>Below is a breakdown of the hours it took to create:<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td>Description<\/td>\n<td>Hours<\/td>\n<\/tr>\n<tr>\n<td>Initial setup of core, engine, game and entity<\/td>\n<td>1.5<\/td>\n<\/tr>\n<tr>\n<td>More initial setup, movement, firing with bounding<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>Player, Bullet, Collision detection<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Player dir and enemy<\/td>\n<td>0.5<\/td>\n<\/tr>\n<tr>\n<td>Enemy moving and firing on enemy<\/td>\n<td>0.5<\/td>\n<\/tr>\n<tr>\n<td>Reflect bullets based on angle<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Random level generation<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Fixing bugs<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Adding gameplay and ui<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Leaderboard, more gameplay<\/td>\n<td>1.5<\/td>\n<\/tr>\n<tr>\n<td>Encryption<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Finalising and preparation for launch<\/td>\n<td>1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>I&#8217;m quite impressed with HGE&#8217;s ease of use and will be looking to do a few more small games like this in the coming weeks.  The features of note are:<\/p>\n<p>&#8211; Dynamically generated levels using a seeded random number generator.  This means that there are an unlimited number of levels that play the same way for every player.<br \/>\n&#8211; Online scoreboard.  Your scores are uploaded at the end of the game and you can compare with other players.  Simple encryption was used to stop abuse.<\/p>\n<p>If anyone is really interested in the source code please add a comment and I may look at releasing it in the near future.  I&#8217;d be interested in any comments or bugs.  My main aim was to keep the development short so I missed out a few features I&#8217;d like to have added.  These include audio and animations when the objects die.<\/p>\n<p>Download the game below and let me know what you think.<\/p>\n<p><strong><a href=\"http:\/\/www.doolwind.com\/Game1\/Game1.zip\">Game 1<\/a><\/strong><\/p>\n<p>Controls:<br \/>\nwasd &#8211; movement<br \/>\nLMB &#8211; fire<br \/>\nRMB &#8211; shield<br \/>\nAll enemies are red.<br \/>\nReflected bullets become change to the reflectors team.<br \/>\nThe uploaded score simply uses your computer name.<\/p>\n<p>Thanks to Drealmer&#8217;s comments there are now a few more keys:<br \/>\narrows &#8211; also for movement<br \/>\nzqsd &#8211; also can be used for movement on AZERTY keyboards.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the weekend I had a little spare time and decided to try out Haaf&#8217;s Game Engine (HGE). After spending the last year working on BSG and as long as I can remember on CIC I decided to make a small game that would take less than a day. The finished product came in at <a class=\"more-link\" href=\"https:\/\/www.doolwind.com\/blog\/1-day-game-1\/\">Read More<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[33,5,7],"tags":[31,37],"class_list":["post-80","post","type-post","status-publish","format-standard","hentry","category-game-development","category-games","category-personal","tag-game-designer","tag-game-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgEc5-1i","_links":{"self":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/80","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/comments?post=80"}],"version-history":[{"count":0,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/80\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/media?parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/categories?post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/tags?post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}