Wasn’t able to participate in these thru the year, but there were many interesting entries… check them out!
Last September 17 the first ever “Roguelike Celebration” was held in San Francisco, California. Over 200 roguelike-likers and developers from all around the world met on a day-long journey to celebrate roguelikes.
There were 18 main talks plus some other fun roguelike-related events. They were all recorded and you can find them over the Roguelike Celebration YouTube channel.
My talk, “Get your game done: Experiences through the development of 13 roguelikes” was pretty well received. There were two parallel tracks for talks so I shared my time slot with the developers of Dwarf Fortress! even then I had a decent audience of people, some of which told me they found it useful. You can find the slides here
This event was a great opportunity to get more people to know about Ananias!
As usual, I missed the opportunity… forgot to bring any kind of informational material or merchandise, didn’t even print a page with the game website URL… At least Glenn Wichman, one of the creators of Rogue, mentioned my game as his favorite roguelike during the event’s main talk 🙂
An exciting part for me was finally having a chance to meet people from far regions of the world with whom I have shared this passion for so long…
Josh Ge, developer of Cogmind
Some other awesome people which unfortunately I didn’t get to interact much with, hopefully next time:
- Nick Montfort – Author of Twisty Little Passages
- Brian Walker – Developer of Brogue
- Nicholas Feinberg – Developer of Dungeon Crawl: Stone Soup
- Zack Johnson – Creator of Kingdom of Loathing
- Jason Grinblat – Designer of Caves of Qud
- Kate Compton – Creator of Tracery and loads of generative art
- Jim Shepard – Creator of Dungeonmans
- Drew Streib – Operator of NAO
- George Moromisato – Creator of Transcendence
- Alexei Pepers – Presenting academic research on accessibility and Nethack
- Erik Osheim & Robert Au – Members of the Angband dev team
Looking forward for the next Roguelike Celebration!
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.
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.
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!
Yay! I managed to finish! many thanks to Giovanny Ramirez (artist for the project) for his outstanding work and commitment to the challenge deadline…
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?
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:
- Sky background would randomly scroll out of view forever: caused by an issue with 0 frame tweens moving sprites to infinity.
- 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!
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.
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.
- Winning Condition
- 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)
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.
Giovanny has been hard at work too illustrating the enemies (so far we have 4). They are looking great.
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.
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?
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!