Monday, April 27, 2015

Boss Fight

I'm starting to make progress on the Boss Fight.

Like many games, this fight moves through a few phases, alternating between times where you just have to survive, and times when you actually try to attack back.

The first phase involves lots of jets of fire filling his room that you have to avoid. From the top, the sides, etc. It's tricky, but not too bad, really. I've just about got this phase finished. Next will be a part where you can fly up and try to get a shot off with your laser before he starts shooting fire at you again.
Geez, in this picture, you can't even SEE Dr. Squidbrain because of all the fire.

Friday, April 24, 2015

And 2 MORE bytes ram

And today, while the baby was napping, I managed to remove 2 more variables from ram (associated with enemy missiles, that I realized were no longer needed). That frees up TWO MORE ADDITIONAL BYTES.

I now have 14 unused bytes of ram.  That's awesome. I might even be able to support a 4th enemy per room, at this rate.

This post needs a subject

Been slowly chugging away, but not much to say.  Other than a big THANK YOU to Tim Dudek for doing some serious testing of Robo-Ninja. He's helped me fix a number of bugs, performance issues, and a few map issues.

Mostly, I've been setting up the overall structure of the game so that each build (android/desktop/etc) can specify more of the behavior specific to that build. That let me add the Google Play Games integration into the Android version but still have everything else work correctly. I'm also planning to add some help text to non-touchscreen versions (desktop, web, and my new plan to use Google's Arc Welder to make a Chrome App as well) to make it more obvious how to play with a keyboard.

Then, now that I started that, it made sense to finally break Aaron's mode out into a separate build, to remove it from the "real" build. (if you recall, he started making his own levels (Geesh, that was more than 2 years ago. That's an eternity in a kid's life))

I also need to actually finish the final boss fight. I made the story cutscene that shows when you enter his room. Now I need to actually script the fight itself. I've come up with the idea of how I want the fight to work, but it's going to take a bit of work.

I've mostly pushed Atari Anguna (and my Bot-Box tutorial for Chris) to the backburner for now, trying to get closer to finishing Robo-Ninja. But I did finally sit down with Atari Anguna today and give it at least a little love, getting the next major chunk of the game engine working: enemy missiles. Well, that should really be missile singular -- I'm only supporting one missile at a time. But it only took about an hour to get them in place, so my orange slime can now shoot blobs of goo. Well, you have to use your imagination. It looks more like a dot....

Thursday, April 9, 2015

Play Services

After a lot of work trying to figure out issues with Google and Android SDK libraries, I've got the Google Play Games API working! (by "a lot of work" I mean maybe 3 or 4 hours....I guess that's not so bad)

Based on the results of the votes, the answer sounds like I should go ahead and use the games services to their full potential. Here's a test run of unlocking the first achievement!

This tutorial was super helpful in figuring out how to get started. Although there were a few hiccups that I'll document here in case the answer is helpful to anyone (or myself next time!)

First, I got all sorts of errors with not being able to find the right libraries. As many forums have mentioned, the dependencies specified in the build.gradle file have to match the SDK version that you download using the Android SDK manager. The working combination that folks are recommending as of today (Apr 2015) is the following in build.gradle:

        compile ''
        compile ''

With that, you need to download the v21 (Android 5.0.1) SDK in the Android SDK Manager. Also, you have to scroll ALL THE WAY TO THE BOTTOM of the SDK Manager, and find "Google Play Services" in the "Extras" folder:

Once that is done, I'd either need to recreate the IDEA project file (using the "idea" task in gradle), or manually add the jars for those files to the classpath in IDEA. (I'd recommend recreating the IDEA project file -- I tried adding them manually, which worked for development, but not for deploying to my phone, so I ended up having to build/deploy from the command line).

Also, the example code from the tutorial linked above is out of date for making calls to the games service. As this forum post discusses, instead of trying to use gamesHelper.getGamesClient(), you need to make static calls using the Games class:

   Games.Achievements.unlock(gameHelper.getApiClient(), "(your achievement id)");

Once I did that, I was almost there! The only other thing I had to do was go back and sign my apk with the same production key that I used to create and push the app on the play store. Once that was done, everything just worked!

Monday, April 6, 2015

Google Play Games API

I need some input from y'all ("y'all" meaning all two of you who read this!)

I'm debating adding Google Play Game Services integration into Robo-Ninjua. Primarily for an online leaderboard (to track who beat the game with the fewest deaths), but it also adds achievements (I'd limit these to mostly how well you did when beating the game, ie "beat the game with < 500 deaths") and online saves via google drive.

So, opinions, please: how do you feel about games that connect to google's game api? Annoying? Cool?

I'm also considering, when I finally get around to releasing the game, releasing it for free, but having a "donate" version for $1 that adds a couple minor things (like a slightly harder difficultly option with 1.2x the speed, etc). I could put the play services integration only in that version, so a leaderboard would be a special feature for that.

I'm curious what people think? If you have any suggestions, please let them in the comments below, or vote/comment on the poll I set up on google+: