Rise of Kramora, now available for Android (phone)

Well,  I just felt like I had to make the game available for phones as well because:

  • … not many people has Android Wear smartwatches these days
  • … specially, wanted the 7DRL jurors to be able to play.
  • … wanted to create a native android app
  • … wanted to test how hard it’d be to create an app to run in both type of devices.

This mean you can play the game now in your Android Phone! have in mind that this is STILL the original 7DRL edition. I haven’t made any enhancements to it! You can find more info about the 7DRL release here. Basically, don’t expect a revolutionary game, but I hope you can find it entertaining: The main goal (game-design-wise) was making something you could play any time, without any commitment, but still find challenging.

Play now for free!

onphne

In order to make it happen I had to move some things around, creating an Android Library module on Android Studio, moving all the generic code and resources into it and linking the wear and mobile modules with it. This module contains the game classes (the “model”), the sprite “engine” (i.e. the library for sprite management and tweens) and the generic view (based on an android.graphics.Canvas, and thus compatible with both the wear and mobile modules) and controller.

Screen Shot 2016-03-21 at 7.53.42 PM

The wear module was then left with just the WatchfaceService (wired to the Game, View and Controller); since it has built-in messaging-based timing functionality, it could easily be wired to the sprite engine, to provide animations at a given frame rate (24FPS).

The mobile module, on the other hand, had none of this…. Fortunately I stumbled upon this tutorial, which was very helpful on creating a simple rendering engine backed by a SurfaceView, which in turn was wired to the game, view and controller. Lastly, there was a simple Activity which set the SurfaceView as its ContentView.

The hardest part however was memory management… because of its 7DRL nature I was pretty sloppy, loading all bitmaps (AND their scaled version) into memory. For some reason it went well on the initial Android Wear version, but the bitmaps on memory were just too big for the phone.

The first change I had to make was no longer storing the scaled versions, but rather using methods to scale them on the fly while drawing. It’s a balance of processing power vs. memory, but it seems to be able to handle it pretty well. However there’s still room for improvement, I may revisit this if I find out it’s a big problem.

After this, and adding a “wristwatch” border, the phone version  was almost working, then I wanted to double check the watch version and, weirdly, tons of memory errors happened.

Oddly, I spent lots of time just trying to get the Wear version working back again…  I did lots of changes, including loading bitmaps on request instead of caching them, but I did it on the main thread because I needed them available immediately (bad idea). It worked, but was pretty choppy so in the end I discarded that, and settled for manually downscaling all the game graphics from a 512×512 base to a 320×320 one, which made sense since in any case that’s what most Android Wear watches are up to now. (and in any case it should upscale for newer devices).

In any case, I hope you enjoy it! Please let me know if you run into any issues running it!

Rise of Kramora, 2016 7DRL Victory!

Yay! I managed to finish! many thanks to Giovanny Ramirez (artist for the project) for his outstanding work and commitment to the challenge deadline…

20160313_225033-1

The results are much better than I thought they would be! I aimed for a simple game derived from the design of my roguelike in a tweet. What I ended up doing keeps the same spirit, but I added quite a bit of animations and simple 2D effects, as well as great artwork. In order to do so, I had to create a simple library for sprite management, animation and tweens for Android Wear. I hope you guys enjoy it!

Download now from Play Store! It’s a Watchface so you have to install it in your phone, then it’ll sync automatically to your watch and you can select it on the watchface selector.

You can check a video of it working ->here<-

So, I proudly present you, The Rise of Kramora

Months of meditation in the darkness of the Pits of the Dead have at least provided enlightenment: There is only one way to save this decadent world from itself: summoning the Great Serpent Kramora to exterminate all life, and let new life arise…

All of your life, you have studied scrolls of magic and ancient history which now point you towards your fate: You must climb the Tower of Sephira, the stronghold of the Holy Order of Ananias which relentlessly guards the Ancient Tome of Kramora. Will you be able to overcome the defenders of Order?

20160314_000805

Rise of Kramora is a lightweight roguelike designed to be played on Android Wear smartwatches. Explore the Tower of Sephira finding weapons, armor and potions, and vanquish your enemies in melee combat or using magic spells.

As you climb the tower, enemies get more and more difficult but you’ll also get stronger. Can you reach Floor 25 and create a new world?

I only managed to work 5 days this year, this is what I did over the last day:

  • Added a simple and depressive endgame sequence. (Can you win the game?)
  • Added Spells (Fire/Thunder/Paralysis)
  • Adjust stats for item and monster generation
  • Adjust stats for items and monsters
  • Implement Magic points, and magic potions to recover them
  • Implemented vertical tweens when climbing the tower (check out the moon!)
  • Added 3 new different background shamelessly derived from the first and only one I had from Gio
  • Added explosions for Magic Spells (less than 2 hours before the deadline :|)
  • A lot of stuff over the last hour

 

I spent a lot of time tracking two elusive bugs:

  1. Sky background would randomly scroll out of view forever: caused by an issue with 0 frame tweens moving sprites to infinity.
  2. Entering into combat randomly doesn’t show action buttons: caused by a 4th “Climb Stairs” action being added, where the engine only supports 3 (so it showed none)

The last hour was particularly interesting, my most awesome feat was implementing the animation for the doors in less than 15 minutes… that’s the sort of thing that makes you feel alive 🙂

Victory for the 13th time!

Rise of Kramora, Day 4 7DRL 2016

Oh gosh, I did so many things today!

I started with a Huge refactor breaking the monolytic Watchface Service into a View and Controller model, in order to be able to send UI update commands from the Game and fire tweens and stuff.

I implemented a simple tweening library for Android Wear, and using it I added animations for combat as well as for exploration. Of course that brings a lot of life to the game, in exchange for higher CPU usage. I think it’s still OK, but of course I’d have to do a bit of optimizations for production deployment.

20160313_015331

Giovanny finished drawing all the enemies and player graphics, they are awesome! He also managed to do the sky background and another one with a window for the tower… hopefully he’ll be able to do some more tomorrow.

I also worked hard implementing a parallax effect and added overlays for the weapons; right now it uses about 27MB of RAM, and quicks the CPU in 30% usage peaks

Should I add sprite group and group tweens? I doubt I have enough time inside the 7DRL timeframe, but if any further development should be pursued, it’s a no-brainer to keep the code simpler.

Check out the video on twitter.

Pending:

  • Winning Condition
  • Spells
  • Fix Bug with some battles making the game hang
  • Fix Bug with parallax failing after a while.
  • Definitive data for enemy and item spawns. (Balance)
  • Playtesting

Rise of Kramora, day 3 7DRL 2016

Well, this is getting interesting 🙂

Looking forward to add simple animation, I am creating a simple sprite management engine for Android wear. I refactored the code and also changed the interaction model to be able to handle up to three actions per state.

image

Giovanny has been hard at work too illustrating the enemies (so far we have 4). They are looking great.

image

As you can see, I’ve also redesigned the game so there are more interactions now; in battle you will be able to use mind and elemental magic as well as doing basic attacks. The engine is flexible enough to add new actions as needed.

Things are looking for the release. This is a rough plan:
– Implement magic spells
– implement tweens for damage values, combat and movements.
– Add balanced content.
– Add pending graphics.

2016 7DRL – Rise of Kramora, Day 2

We have a new name and a new theme:

After much pondering you have come to a conclusion… there’s only one solution to save this decadent world: Summoning the Great Serpent Kramora to exterminate all life on the planet, and let new life arise…

Decades of studying scrolls of magic and history point you towards the path of your fate: You must climb the Tower of Sephira, battling the holy knights guarding the Ancient Tome of Kramora Summoning. Will you be able to overcome the defenders of Order?

12776866_10153205474312563_606495102_o

In the small amount of time I managed to scrap today, I added support for graphics. It’s almost working.

The graphics are being drawn by Giovanny Ramirez, my cousin, who’s also done some quality Ananias work in the past. I hope we manage to have all required assets on time!

2016 7DRL, Relojiah Day 1

Legend of Relojiah is a lightweight roguelike designed to be played on smart watches. Explore the labyrinthine Tower of  Time, battling monsters and finding powerful artifacts.

Today I managed to implement all basic interactions for the first iteration of the game, there’s a playable game already!

20160308_175057

You play by tapping on the screen, depending on your current mode you’ll either continue exploring the current level (looking for more powerful weapons and armor), or attack the enemy you are fighting. Once you find the stairs to the next floor you can decide if you continue exploring the current level, or climb to the next one. The design is based on the roguelike in a tweet I made some months ago.

2016-01-16 18.57.13

There are no graphics yet. I’ll get to that tomorrow with my provisional art, but I’m also looking for an artist to work with. What would be required would be some low resolution illustrations for the background, items, monsters and the player.

2016-01-16 18.58.26

After graphics are implemented I’ll play a bit with the content to make it balanced. In the unlikely event I’ve got more time to work on it, I may add some simple tactical options for battles.

I also plan to make it available for other devices; I’m still wondering whether doing it on JavaScript so it can be played anywhere, or creating a native Android app (the watchface would come bundled with it)