Tuesday, February 26, 2013

Arsenal

Here is a look at all 25 weapons. Knives and javelins are thrown; maces, swords, and hammers are swung. Each type is upgraded sequentially as shown.


I might add some goofy or epic ones that are unlocked.

Friday, February 22, 2013

Throwing javelins at zombies

I have drawn multiple layers of background art to create a parallax scrolling effect. Currently I have a desert and dark forest, with maybe two or three more to come. Despite the simplicity, this art style for backgrounds can be a challenge to pull off.

Javelins are working too. They impale and get stuck in the ground or an enemy's body part. I tested all this on a Samsung Galaxy to ensure the animations are smooth and the controls feel solid.



I want to finish all the art this month, and then do all the programming in March.

Meanwhile I have been testing and fixing my traffic game before opening it up to others for beta testing. I found a good soundtrack from Pond5.com: my usual source for royalty-free music.

Tentative icon


Friday, February 8, 2013

The cast

Introducing the cast of the next fantasy game, starring the paladin warrior on the left side...


Each enemy is introduced in their respective dungeon, discovered going deeper into Hell like the first of the Diablo series. For example, the ogre is found in the caves, and the mummy is found in the tomb. Probably there will be a final boss, and the entire game can be replayed at a more difficult setting using the same character.

I am still contemplating the design, attempting to strike a balance between innovation and simplicity. Perhaps weapons will be crafted using various pieces, versus the traditional design of linear upgrades of half a dozen types of weapons. Things are still up in the air.

Tuesday, February 5, 2013

Mobile bandwagon

It looks like I have returned to the mobile gaming bandwagon. Not only is the Ludum Dare port basically finished, but I have set my focus on a side-scrolling hack and slash game for handheld devices. Most likely it will be free to play, supported only by ads and sprinkles of virtual goods. Here is an early prototype screenshot...


First I want to get the underlying technology out the way. I license Corona, so that already gets me 99% of the way there. The two blue buttons on the left are for movement, and the right buttons will be for attacking and special abilities. 

Naturally I wanted to test the game with the keyboard in the simulator, but Corona does not support this. Playing just with the mouse in unmanageable because multiple buttons needs to be pressed simultaneously (normally two thumbs on the actual device screen).


My solution was to write a classic DirectInput application in C++ that records all current keys being pressed and saves the results to a file. Then in my game, I simply open and close the file each frame to handle specific key input. It is a complete hack! Yet it works!... And makes testing much easier. My chosen keys are on the number pad, so typing code does not cause the character to react annoyingly.

Secondly, Corona is bundled with a tool called Spriteloq for rasterizing a Flash movie clip SWF. This is great for most art assets, but I want my characters to have smooth paperdoll animation. I revised an algorithm I have written in Flash, that dumps rotation and translation from the transformation matrix of each body part as Lua code. In other words, I only need to import a tiny sprite sheet like this:


And use the dumped code for each body part, such as five frames of the warrior's back arm efficiently written as arrays instead of tables in Lua:

-- x, y, rotation
Anim_Warrior_armb = {
15.4,-31.35,-13.27, -- frame 1
15.35,-31.45,-13.27, -- frame 2
15.35,-31.65,-13.27,
15.35,-31.85,-13.27,
15.35,-32,-13.27,
etc,
}

Instead of monolithic sprite sheets like this:


It would not be feasible on memory constrained devices. I would need a whole new one just for a different weapon, and another at 2.1x the resolution for the HD version.

Contact me for any of this tech. I would post it now, but it really needs to be cleaned up first.