Sunday, May 31, 2015

Anguna New Level

Ok, I promised I'd share, so here you go.

For the upcoming cartridge release of Anguna by Piko Interactive, we decided to add an additional dungeon level to Anguna, to sweeten the deal for anyone who might buy one. So the past couple weeks I've working like mad to try to add the new content before production of the physical carts starts.

Today, I finished the first draft of the Ice Dungeon, with slippery ice on the ground, a new Golem boss, and a new inventory item (a ring of teleportation):

Fighting the fearsome Ice Golem

For now, this dungeon is going to be exclusive to the physical carts you'll soon be able to purchase from Piko Interactive, to try to help them sell these things.

The process has been interesting -- first I had to just get the silly thing to build properly on a modern development environment, then I had to go through and fix a bunch of bugs that originally existed in the game, but somehow never manifested themselves on the older versions of the compiler/toolchain.  Once that was finished, it was a pretty straightforward process to start adding content. It definitely brought back memories of 10 years ago when I started this project!

In other Anguna news, if you have a windows phone, check out My Boy, a gba emulator that features and bundles Anguna.

Monday, May 18, 2015

Anguna Teaser

I've been quiet recently, but working hard. Working on some stuff related to the original Gameboy Advance version of Anguna.  I'll go into more detail later.

The fun part has been re-installing all the tools needed to build and edit Anguna, and realizing that there were a number of bugs that "worked by coincidence" with the older versions of devkitPro, but don't work anymore.  I spent longer than I anticipated just getting everything working again.  It brings back weird memories, looking at this old code. And geez, I don't know how I ever got this game finished, with how difficult it is to debug code on the GBA.  Fun times.

Ok, enough being mysterious for one night.

Friday, May 1, 2015

Playfield editor and Green Toady

Today was an Atari Anguna day.

First, I was working on some new room layouts, and got a little frustrated with the room editor I had been using (Kirk Israel has an incredible 2600 Sprite Editor on his website but his playfield editor leaves a bit to be desired. (mainly, that I couldn't drag to paint, instead had to click each cell, also that I couldn't paste my code into the tool to modify already-existing rooms).

So I decided to rewrite it. The end result isn't perfect, but seemed worth the time. (about an hour and a half). It fixes those issues and a few other minor niggles from Kirk's editor. It's posted at http://www.tolberts.net/pf.html and the code is fully contained in that one page, (other than pulling in dependencies from google) in case anyone wants to take it and improve upon it.

I also started on the next enemy, the Green Toady (the first difficult enemy from the first dungeon in GBA Anguna). I've got him working, but now realized that I don't have a mechanism for enemies sprites to flip horizontally depending on their direction. It didn't look too strange for the slimes, but it looks dumb for this guy to always face the same direction.

The 2600 has a register to flip sprites horizontally, but because I'm reusing the player-2 sprite for all the enemies on the screen, I have to update that register in the display kernel. In other words, it has to be fast, and fit somewhere in the kernel where I have unused cycles. So that's the next challenge waiting for me....

Those are supposed to be pillars, but I've been told it looks more like "The Illini Room"

Looking at that screenshot, I really need to go back and rework the top header bar. It's a mess of brokenness right now.

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 'com.android.support:appcompat-v7:21.0.3'
        compile 'com.google.android.gms:play-services:7.0.0'

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!

NES Anguna

Well, I had a little bit of time still, while Frankengraphics is finishing up her game Project Blue, to have a little downtime on Halcyon, s...