Shape Quest

Shape Quest
Play online

Shape Quest

Help Mister Square save Shape Land by returning the super spinning power artifacts. Avoid touching all enemies.

Shape Quest Official Videos

Post Mortem

Ludum Dare 35 was my tenth time participating in the full Ludum Dare 48 hour game development competition.  The theme this time was “shapeshift”.  I knew fairly early that I wanted to make a game with controllable shape characters.  My original idea was to have three shapes that you could switch between, and each shape would have a unique ability or power.  I had envisioned having three playable shapes, which were the square, triangle, and circle.  The gameplay was going to be similar to Trine, where the player would need to switch between the three to solve puzzles.

I wanted to take a break from Unity and create a game in some other engine this time.  I had heard a lot about Godot, so I planned to use that engine for this competition.  Godot is a free and open source game engine that is very similar to Unity.  Before the weekend, I worked through some Godot tutorials, so I was able to move a simple sprite around on the screen.  In Godot, instead of GameObjects, it has Nodes which have similar properties such as position, rotation, and scale.  Godot can be used to make either 2D or 3D games.  It has a scripting language that is very similar to Python, where tabs and spaces are significant.  Unfortunately, I wasn’t ever able to fully understand the physics system.  In Unity, physics is fairly simple.  You attach a RigidBody component and one (or more) colliders to your GameObject, and then you are good to go.  In Godot, there are three types of physics objects (KinematicBody, RigidBody, and StaticBody).  Your object has to have a CollisionShape or CollisionPolygon as well, and everything has to be parented correctly under your main object.  It was very confusing, especially with the bounding boxes, and it just never did work correctly for me.

After about four hours into development, I knew I wasn’t going to have the time to successfully make a game in Godot.  Therefore, I fell to my backup plan which was to make a GameMaker game.  I had heard a lot of bad things about how GameMaker handles things like collisions.  Although, I have been impressed with some games that I’ve played recently, such as Crashlands, which was created in GameMaker.

Shape Quest GameMakerFortunately, most of my initial development was creating the vector graphics for the game characters, so switching to GameMaker didn’t sacrifice too much work.  I had worked through some GameMaker tutorials before, but this was my first time creating a full original GameMaker game.  The GameMaker development environment is very similar to Stencyl, which I used to create Dream World for Ludum Dare 30.

All of the graphics were created with Inkscape.  I made a simple tree, which was composed of the union of three circles for the leaves, and a simple path for the trunk.  I created other obstacles such as rocks (rounded gray rectangles) and water (curved blue bezier lines) I created a red square, green circle, and blue triangle characters, which all had two frames of walk animation.  I had originally envisioned the heroes to use an additive color model, while the enemies used a subtractive color model (magenta, yellow, and cyan).  I abandoned that idea, since a yellow circle looked much better like an emoji.  I created a purplish trapezoid as the first enemy.  I also had the idea of making the heroes parallelograms with sides of equal length, while the enemies would have sides of unequal length.

Shape Quest InkscapeWhen I first started designing the movement of the playable character, I used the default GameMaker actions.  The problem with this method, is that the character is stopped whenever one of the movement keys is released.  So the player could be holding two movement keys (such as up and right arrows), but the player would completely stop whenever either of those keys are released.  For instance, the character would expect to keep walking right if the up key was released.  Also, with the default GameMaker movements, the chacter would move when the key was initial pressed, and would pause for a moment before it would continue moving.  This is similar to typing into a text document, when a key is held down.  First it adds the character, then pauses, then repeatedly adds the character multiple times.

To resolve this, I found a tutorial on making a platformer in GameMaker, so I just modified that method to work with a game in overhead view with no jumping.  This method keeps track of a horizontal a vertical movement speed, and the speed values are modified based on which keys are held down.  Now, the movement controls felt much more accurate and responsive.

Now that I had everything necessary to create a level, there needed to be a goal.  I made a simple cyan diamond as a crystal.  To differentiate it from the other world objects, I made it spin and flash between cyan and white.  Adding custom scripts to GameMaker objects is fairly simple, and the GameMaker API is well documented.

The first enemy that I created was the purple trapezoid.  It simply just moves vertically on the screen until it collides with an object, then it reverses direction.  When the player collides with an enemy, the player is returned to the starting position.  If I had more time, I could have added a health meter so the player wouldn’t have to restart after being hit just once.  I gave the enemies angry faces with two frames of animation, which reminded me of the boxer profiles in Mike Tyson’s Punch-Out!!.

The second enemy that I created was the yellow circle, which was modified from my previous green circle hero.  I just had to remove the arms and legs.  The yellow circle just moves in a random direction for two seconds and then changes to a random direction and moves for another two seconds.  This behavior is very easy to create in GameMaker, and I had remembered implementing the behavior in the “Catch the Clown” tutorial that comes bundled with GameMaker.

The third character I created was the green triangle.  I wanted this to be a water dwelling enemy that shoots projectiles at the player.  This behavior is similar to the Zora in the original Legend of Zelda.  If the player stands in one position for too long, then they will be shot, so the player has to keep moving to stay out of the line of fire.  The third level becomes more difficult with four green triangles shooting at the player at once.

The final enemy that I created was the orange pentagon.  Originally, I had made the pentagon cyan, but I thought that would be too confusing with the cyan crystal goal, so I changed the color.  The orange pentagon shoots in four directions at once and randomly changes location after every shot.  These characters are similar to the Wizzrobes in the original Legend of Zelda, except they shoot in four directions.  Their projectiles can be easily avoided, as long as the player doesn’t stand directly horizontal or vertical from one of the orange pentagons.

For the music, I used GarageBand again on my MacBook Pro.  A few weeks ago, I had read an article on Gamasutra about music theory, and to watch the number of steps and skips, so hopefully my music sounds a little better for this game.  I usually try different instruments until I find something that sounds good.  I use the command + left mouse button to add new notes to the piano roll.  I’ve found that it is much easier to modify the lengths and positions of the notes in Piano Roll editor than the Score editor.  I used the C major key, so I just made sure I just stuck with all of the “white keys”.  Overall, I think it took about an hour to create the music.  Like I’ve done with my previous games, the title screen music is just the game music slowed down with some of the instruments modified or dropped.

Shape Quest audioI used BFXR for creating the sound effects when the player is hit or when the crystal is collected.  I used Audacity for touchup work.  I also recorded my voice again for the title screen and game complete screen.  I used Audacity to add a bit of an echo sound.  Unfortunately, my voice sounded a little faint against the background music, and I never found a way in GameMaker to make it louder.

There are many ways the game can be improved.  First, I would like to give the player a method for attacking the enemies.  I would also like to have a way to move from room to room, instead of collecting crystals.  I would also like to have various items, money for purchasing new equipment, and many more enemies.

Finally, I played the game MANY times to ensure that all five levels were completable and also not too easy to finish.  I made both Windows desktop (EXE) and HTML5 (web) builds, and uploaded to Itch.io and GameJolt.  I think the Windows build is the better experience, but I know some people only prefer playing the web version.  It just seems like there is more lag and dropped frames in the web version.

Overall, I was happy with the simple game that I was able to make in GameMaker.  I really appreciate everyone who has played it already.  It already has over 60 votes, which is by far the most votes of any of my Ludum Dare games have received.

 

Let’s Play Videos

 

Released

Setting the Bar

More Rank Generation

Spent time tonight playing through each level three or four times to get better values for the S ranks.  I want to ensure that the player can get S ranks in all three categories in one play of each stage.  For instance, I don’t want players to have to use a lot of pieces to get the S rank in time, then have to replay it again to get the S rank in pieces.  However, the player can get a better rank in any category by replaying the level, and specifically focusing on that specific category.  This means that each rank category of each stage is considered independent of the other rank categories as far as the records go.

When going for the best times, I found that the optimal strategy is having the most possible LEDs fill at the same time.  There should always be a piece filling, and the more pieces filling simultaneously the better (as long as it doesn’t impact the number of pieces used).  The LEDs that require the most distance should be completed first, filling in the shorter routes after.  It really is a bottle neck problem to solve to get the best time ranks.  Maybe its because I’ve played my own game so much, but getting the S ranks for pieces and luminosity is really simple, so the only challenge will be getting the S ranks for time.  On the other hand, if the player isn’t good at subtraction, then the luminosity scores will be difficult to obtain.

Platform Specific Exception

Noticed another difference between PC and XBox 360.  On the XBox 360, a runtime error will be generated if a try/catch statement isn’t placed around the game loading functionality to catch the System.InvalidOperationException exception.

More Level Design

Spent time creating ten more levels.  These use up to the 7 value battery.

 

SEO for Game Designers

First of all, I don’t claim to be an expert in SEO (search engine optimization), but I do know that there are things that can be done to improve your site’s ranking on the search engines.  I’ve been specifically researching how to improve SEO for game data.  Recently, I’ve had the problem of other sites pushing down my site in search engine rankings when doing searches for my games.  I decided to start working on driving more traffic to my game pages on my own site, instead relying on other sites to be the “homepage” of each of my games.

I’ve been doing some research over the past few days, and found that domain authority plays a big role when determining where your site appears in a search.  Your site may have superior content on a certain search topic, but it may not rank highly in a search if your site does not have a good domain authority value.

From what I’ve read, there are multiple factors that play a role in your site’s domain authority.  First is the age of the site or domain.  My levidsmith.com domain is 8 years old at the time of this writing, according to an online domain age checker.  However, the first domain that I ever used was gitcommand.com, which was my site when I was in college.  I recently reclaimed that domain, after letting it expire years ago.  According to the same tool, the age of that domain is 16 years 11 months old.  So I updated the DNS settings in my hosting account to do a 301 redirect for anything that lands on gitcommand.com to send the traffic to levidsmith.com.  Will this help search engine rankings?  Probably not since my old domain most likely gets zero traffic, but it definitely doesn’t hurt to have it redirect the traffic to my “new” domain.

SEO for games - Moz Open Site Explorer toolsThere is a good tool at Moz called the Open Site Explorer, which checks back links and gives your site an overall domain authority rating.  The free version only lets you see a limited number of sites in your link profile.  It isn’t the official source that search engines use to grade your site, but it provides a good picture of how your site scores.

Another factor is what is called back links.  Having links to your site from another site of higher domain authority will supposedly raise your site’s authority.  One problem I’ve had in the past is posting content to multiple sites.  For instance, I would post a game jam post mortem article on both my site, other game developer sites (which will remain nameless), and on the Ludum Dare site.  I always thought that if I posted a link back to the original article on my site at the top of the article, then my site would “get credit” for being the originator of the article.  However, from my research I’ve found that really isn’t correct.  Linking back to the original site may give my site some domain authority since it is getting a link from a site higher authority, but searches for my article will return the site of higher authority first.  On some search engines, it will only display the site of higher authority, and not show my site on the search results listings at all!  This is probably because the search engine thinks that my site is the one with the duplicate content.  So I’ve basically spent hours on an article that I’ve given away to another site for free.  That may not be a bad thing if you’re just starting out and want to get your name and content noticed, but I’m at the point where I’m finished giving away content and want the traffic directed directly to my site.  Supposedly, you can add a canonical link meta tag  to specify the originator site, but it only works when it’s located in the head tags, and most sites don’t give the user any ability to modify what’s in the head tags.

One option is to remove the duplicate content from the other site.  I’m assuming that this will result in a domain authority hit on my site, since I’m losing the back link.  However, this may not be so bad if the search engines think that my site has the duplicate content, which results in my site not being shown in the search results at all.  Hopefully if the search engine is smart enough, it will see the content gone from the other site, and then recognize my site as the true originator of the content.  The other option would be to remove the content from the other site, leave the link, and maybe just provide a snippet of the content.  Then just provide a link to “read more” at my site, and hope that the search engines rank the other site lower since a majority of the content is now missing on their site and still remains on my site.

Another factor that I didn’t know about is the linking text.  Apparently, having the text of the link match the search terms increases the likelihood of it showing up higher in the search results.  That’s a good reason to not just post plain link, where only the URL displays in the content.

SEO for games - IndieDB has high Domain AuthorityWhen I publish a new game to my site, there are a few sites that I use to create an online presence for my game.  Most of these sites provide the option to specify a back link to the game’s page on my site.

  • IndieDB – This site appears to have one of the highest domain authorities, and seems to be the IMDB of indie games.   I believe games previously had to be reviewed and approved to be included on IndieDB, but now it appears that games are approved by an automated process.  This site requires five screenshots and basic metadata for your game like genre and platforms.  I’ve noticed that when I post a game to IndieDB, it is included in some search engines within the hour after being posted, so it is crawled very frequently.  The content is also mirrored on ModDB, so your game may show up in searches on ModDB as well.
  • Unity Connect – This is another good place for posting your game.  It’s primarily for Unity games, but I think they allow all games, since there is a check box to specify whether or not your game was created with Unity.
  • Cartrdge – I was using this site when it first launched.  Back then, the site owners were very finicky about what content they allowed on the site.  I remember they deleted one of my games, because they said that their site was only for games that were in development.  However, it seems like they’ve  changed their policy and now allow all games.
  • Game Platforms – Probably the most important is having a link back to your site on the game platforms that are actually hosting your games.  Microsoft provides linking back to your game site from the game’s page.  This is something that can be easily missed, since it is not a required field.  Similarly, Google Play allows you to specify a link to the game’s page as well.  I don’t have games published on iOS, Playstation, or Nintendo, so I don’t know how their game pages work.

Here are some other sites that you can use as a game developer to build your site’s domain authority.  These are sites than rank highly when I search for myself (“Levi D Smith”) in search engines.

  • Channel Nine at MSDN – I’m still not sure what this site is supposed to be.  There are developer forums, shows, and events.  I think it’s supposed to be video service by Microsoft to provide updates to developers.  I created a profile on the site, which has a link back to my home domain.
  • CreateTN – This is only for artists in Tennessee, but appears to rank highly by search engines.  Unfortunately, it only allows links to their predefined social media sites.  It also asks for an address, which is will display on a map next to your profile, which seems a little intrusive.
  • Patreon – Having a Patreon site isn’t just for making money.  It will also help boost your site’s profile.  Be sure to put a link back to your site on your About you section, so that a link back to your site is on your front Patreon page.
  • Game Jam Sites – My profiles for the old Ludum Dare site and the new Dream Build Play site rank high in search results.  The Ludum Dare site link seems to no longer work, so it would be nice if they would 301 redirect the old author page to my profile on the new LDJam site.  The Dream Build Play site does not technically allow me to link to my site, but it does allow me to link to my developer diary, which is hosted on my site using the dream-build-play tag.  GM48 is another game jam that I’ve done a few times, and it allows linking back to my personal site on my developer page.
  • Game Hosting Sites – I primarily focus on Itch and GameJolt, and I have my site linked on my profile page on both sites.
  • Social Media Sites – Twitter, Instagram, Pinterest, and YouTube allow linking directly to my site.  I have not found a way to link to my site on LinkedIn yet, but I can put it in the text of my bio.  Tumblr doesn’t allow linking to my site in the profile, but I can put links to my games on my site in my posts.  Pinterest provides a way to validate your site to display a link on your Pinterest page.  YouTube also provides a way to validate your site, allowing you to create links directly to your site from a video Card or an End Screen Annotation.  I’m currently in the process of creating links to my game pages from the corresponding game videos on YouTube.  It’s a long monotonous process, but it seems like starting with my most popular videos (the ones that will get the most potential traffic) provides the best value.  A few days ago, I added a link to my Creating My First NES Game article from the End Screen Annotation for my Programming the Nintendo Entertainment System video, and I can already see some traffic coming to my site from the video.
  • GitHub – Provides linking back to my site on my profile.  I’ve put some of my projects that I’m fine with being public on GitHub.  However, I feel like I’m giving away traffic for my content again.  However, the hosting is free and I currently don’t have my own git repository on my site.
  • SoundCloud – A great site for hosting soundtracks for your games, and it provides a link back to your main site.  The only downside is that the free version only allows storage of about two hours worth of music, but that’s still a lot for free.  I’ve had difficultly building a following on SoundCloud, even though I regularly post my music to the site.  It seems like the only traffic I get is when I embed one of my game soundtracks into another site.
  • Reddit – I found that I can get lots of traffic on Reddit, especially with YouTube videos, but there can be backlash for not following “Reddiquette” so I try to promote my work sparingly.  I did create my own sub-reddit specifically for posting information about my games, but it doesn’t appear to get any traffic.

The big question that I have, is whether or not my site is negatively impacted if it links back to a site of higher authority.  I doesn’t seem like I would be losing any authority, but I could be validating that their site is the official game site.  I’ve heard that link position in the article is a factor, so I put my external links at the bottom of my game’s page.  That would make sense, as Wikipedia always places their external “See also” links at the bottom of the page.

Another thing I checked was old social media sites.  I had a Facebook page called Levi D. Smith Software, which is different from my primary Levi D. Smith Games page.  Facebook provides a tool to merge pages if the names or something are close enough, but for whatever reason Facebook couldn’t merge my two pages.  Therefore, I just set the former page to private so that traffic is no longer split between the two.  I also had a Google Plus business page called Levi D. Smith Software which was splitting views from my regular Google Plus page.  Apparently, I used up all of my tries for changing the name, so I just removed the page all together, so I can just focus on the personal page.

Supposedly page load speed also plays a factor in how well your site ranks.  The two sites that I use for testing my page speed are GTMetrix and WebPageTest.org.  I also use the WP Super Cache plugin for WordPress.  The plugin generates static HTML version of requested pages, but the page still has to be generated on the first access, unless the cache is preloaded.  I’m currently evaluating the settings for preloading the cache.  The first time I tried it, the plugin got hung during the cache generation.

To put it bluntly, some of my games just have bad names.  Two examples are Archaeology and Free the Frog.  My Archaeology game will never be found in a search result, unless someone specifically types “archaeology levi d smith”.  Free the Frog is bad because the word “the” is typically ignored, so it returns results for everything related to “free frog”.  On the other hand, search engines do take the URL into consideration, so it was a good decision when I made my custom Game content type in WordPress, so that every one of my games automatically contain the word “games” in the URL, in the format https://levidsmith/games/<game name>.

One issue with my SEO is that for many of my old accounts, I used my handle and gamertag, which is GaTechGrad.  If I had to do it over again, I would have made everything LeviDSmith, to avoid splitting the traffic between the two names.  Unfortunately, I’m not going to go back and recreate all those social media accounts at this point just to change the name.

Google Webmaster tools is good for seeing where your site ranks for given search terms, and how many people clicked on your site when it appeared in search results.  WordPress Jetpack statistics also shows how many people who have viewed your site and how they found your site.  Bing also has it’s own version of webmaster tools.

SEO for games - Search Engine Results for Blocks of NibiruEach search engine seems to be a little different.  Based on a search for my game Blocks of Nibiru, Google seems to favor IndieDB, Itch.io, and YouTube before listing the game on my site.  The same search on DuckDuckGo lists my site after YouTube and ModDB, but only if I put the search words in double quotes.  Witout the quotes, DuckDuckGo does not return my site at all.  However, it seems like DuckDuckGo’s results are very volatile, and the same search may return different results at different times.  Bing lists the game on ModDB first, then YouTube videos of the game, then IndieDB and Itch.io, but it does not list my site at all, unless I add “levi d smith”.  Bing seems to heavily favor domain authority, so it seems to be hard to appear in the search rankings unless your site is a part of a major corporation.  On the bright side, all of the search results are pages that I control, so I do have the ability to tweak the content on both my site and the other site.  Unfortunately, making changes may not effect the search results until the sites are crawled again, and it is nearly impossible to know when that will happen.

To ensure that search engines are crawling all of your content, it is important to specify a sitemap in the Bing or Google webmaster tools.  Sitemaps are used to give search engines essentially map of your site, which includes a list of all of the pages and media on your site, along with when each was last updated.

Adding links from the previously mentioned sites to your own domain probably won’t help increase your search rankings over night.  I believe the SEO for game rankings is improved by based on people visiting those sites first.  It’s all about creating the potential for people to click on the link to your site from those other sites.  Consistent branding and making a game that people want to see more plays a huge role as well.  I also suspect that money plays a role as well.  If you pay enough in ads, your game will pop to the top of the rankings.  However, most search engines will display a notice about which links are promoted.  Who knows, maybe I will write my own game search engine some day.