The Roguelike Celebration is happening again this year, October 6 and 7. I will be flying to SanFran to assist and also give a talk about the History of Roguelikes.
Had an idea running on my head for a while to make a “trailer” for the event (no one asked me for it). At first, I thought of creating a playable classic roguelike using my JSRL roguelike template. I actually did create the foundations for it (as in walk in a predefined map), but it lacked the cinematic potential for a short trailer. In any case, I integrated the “torch” effect from the unicodetiles.js example into JSRL, which may be useful. You can check out the integration here.
Then I had another idea and I just couldn’t be at peace until I implemented it. I think it occurred to me a day while driving and listening to the Mega Man III OST. I thought I had found the perfect tune for it. So, even in a busy week with lots of work, I just had to do it.
The trailer features the awesome speakers’ lineup in a “robot-masters” NES Megaman stage selected style.
Of course, there’s little structure to the project since it was meant to be a quick job (and is also pretty simple). Most of the relevant logic can be found in a single Object, the Game state. I set up a stage with a black background and the gray strip, as well a Sprite object for the character and 4 text fields. I used a Megaman 10 font (I had found another one for Megaman 2 but for some reason, it could not be loaded as a web font), I performed a simple centering function based on each line’s character count to keep the characters as sprites in the grid (thus getting a bit close to being a NES “background sprite”?).
There was also a simple “particle” animation in the background, instead of stars they were small @ signs because, you know, roguelike. I used the same color palette used on the Roguelike Celebration logo for them.
Of course, the most fun part was doing the pixel art for the speakers. I used a bunch of Mega Man 2 robot masters as a base and then I proceeded on tweaking them for each speaker. The ones I know in person where easier, for the others I had to do a bit of stalki Internet research, I hope I managed to capture their likeness.
Finally, I reused the “Retro TV with scanlines” from Cat Cafe.
I agree words should evolve based on their usage, but I think it’s important not to forget what they were originally used for. Lots of people just fall for “roguelike” games being “like Rogue” and stop there, leaving room for a lot of ambiguity. That’s also the reason why I proposed a “Traditional Roguelike” definition to make it easier to find games that better keep the spirit of the originals.
So far, the section has survived for about half a day with some minor edits, let’s see how long it survives!
Here are the references I used, for historical purposes:
Panitz, Aliza. (June 18, 1993). “Time for a new level of heirarchy?”. Newsgroup: rec.games.moria. Usenet:email@example.com. Retrieved May 17, 2018. It seems to me that we’d do a lot better taking all of the dungeon-adventure games, including ones that don’t have their own newsgroups like larn and omega, and reorganizing them under rec.games.dungeon – recognizing the intrinsic similarities of all these games. It would make it a lot easier for people who like one of these games to find newsgroups about other, basically similar games, and would finally provide a home for all those random posts about Larn and other games of the same genre that keep popping up in rec.games.hack and other inappropriate places.
Grabiner, David. (March 9, 1998). “RFD: rec.games.roguelike.development”. Newsgroup: news.announce.newgroups. Usenet:firstname.lastname@example.org. With the large number of Roguelike games and variants in existence and in development, there are occasional discussions about programming problems such as dungeon-generation algorithms which are of interest to designers of several games.
This is the fourth edition of The Kramora Times, you favorite and more reliable source for all Ananias-related information. You can now subscribe to receive this newsletter in your email too!
Ananias Version 1.76 released!
It’s been over two months since the last release of Ananias. I had set myself the goal of the next version going straight into Steam.
Alas, I have to change plans again… I jumped into some projects and I don’t feel I can handle the workload of the release and all that is related to it while responding to these other projects responsibly.
However, I have to say this is very close to the scope I have planned for Steam. May be next version will finally be it? I have been saying this for months now.
There were some important internal changes, specially in the packaging system (Using Cordova and Crosswalk without passing thru cocoon.io for much quicker development and release). They are likely to break things so I hope players are patient.
I also added an in-game manual (also accessible from the website, here). Bits of it are generated directly from the game source code, in order to keep it up to date! The wiki was also updated, with data generated from the game.
Another big thing is that you can now also generate tombstones for your characters and share them with your friends. See this one for example!
So, with all the work that went into this one, and given that I won’t be able to work back on the game for the following one or two months, I’m releasing this version. Check out the list of exciting changes below!!
Any Device via the Official web version, just point your browser there and you’ll always get the latest version.
Add Zinc potion to recover from paralysis, blind, confusion and hallucination
Grant upgrade bonuses if 100% level explored
Make deep level enemies stronger
Tweaks on fleeing AI
Add Sir Glenn NPC, guaranteed crossbow at level 7
Generate tombstone page with player info on death
Allow sharing tombstone page on twitter and facebook
Add in-game manual you can check anytime, including bestiary
Change UX for mixing reagents
Play random dungeon music instead of tied to level
Remove Dungeon Crawl Stone Soup title
Make better use of space in dialogs in small screens
Prevent unselecting pet when cycling thru shepherd
Added extended title theme
Add option to Exit Game on desktop
Show stats when dying or winning
Show level summary on completion
Mouse movement in desktop with invisible arrows
Prevent issue when throwing potions only 1 shot spent
Prevent keyboard actions when modal dialog present
Generate manual and wiki text automatically
Added build scripts for web, android and desktop, including different level of audio quality.
Pending things for the release:
Detailed GFX for weapons and armor. May be important, not sure if I’ll be able to get an artist for it.
Adding more plot and may be even random stories. After talking with Thomas Biskup on the Roguelike celebration, I have reconsidered this and I think I should invest a bit on it.
Stealth mechanics, make it so that monsters not always notice players (add fov) may be even add fov for players?
Berserk tactics, extreme attack bonus when naked for some classes.
Also pending for this is the new trailer, preparing promotional material and setting up a Thunderclap campaign (probably). All these will require money so I hope I can get support for it from the hardcore Ananias believers!
Roguelike Celebration 2016 – A missed chance?
As described on a previous post, I went to this unique event on San Francisco last month. It was a great chance to meet roguelike developers and players.
Sadly, I missed this chance to promote the game in what was possibly the best targeted event in the world for Ananias’ potential players. I should have brought some info about it or pitched the game more… however time was pretty short, and I’m glad I got to share time with the amazing devs there at least.
Dumeril Sage statues: production halted
There have been some issues with the production of the Dumeril Sage statues… the process is just too hard for me to handle, I don’t have a partner who can take of all of it to deliver finished products and at a good pace. May be it’s not time yet for this. At least I have managed to deliver some of the statues to people I really esteem and I hope they are enjoying them.
An alternative I’m considering is having smaller statues and using 3d printing instead. It’s a bit expensive but may be much easier to handle.
For the t-shirts I am thinking on having an alternate design that can be printed on higher quality shirts (more durable). Thanks to all who already pre-ordered for your patience, I’m hoping to deliver a good quality product.
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!
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.
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!
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!
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.
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.
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.