Archive for February, 2014

Update: Maps and CAB

These took a good bit longer than expected, but the joy of a seven year dev cycle is that that’s okay :).


What’s a roguelike without a map?  7YRL players can now bring up a map of the current level by pressing ‘M’ or tapping on the minimap (more on that below).  The map supports dragging around or zooming in/out.  The cool thing techwise is that it’s using the same texture as the ‘memory’ map (which tracks what the player has seen) so it has a more realistic feel to it.  Here are a couple of shots:


And here’s zoomed in.  The map window also increases in size if the user resizes/fullscreens the game.



This update also adds a smaller version of the main map into the upper right corner of the screen.  Tapping on this brings up the main map.  I also moved the bufflist under the player to make better use of space.  You can see the minimap and new bufflist location here:



When I first started working on 7YRL, I was primarily targeting mobile devices.  On those devices, roguelikes tend to suffer when it comes to moving the character around; tapping on small tiles on a small phone can be hit-and-miss.  My solution is the ‘Contextual Action Bar’, or CAB – the intent of these is that they display the most common two actions that the user might want to perform.  When a mob appears, attacking that mob is the primary action; when an item drops, picking it up is the primary (upon picking it up, equipping it becomes the secondary action).

The most common action is sen in the picture above – Explore.  This is the command I use most often in DC:SS and I think it works wonderfully – it just does the exploring for you.  And that’s not a “Progress Quest“-esque experience; it just removes the extensive UDLR needs of a roguelike and gets you to the interesting content and interesting decisions without a bunch of walking from Point A to Point B.

The biggest challenge to getting the CAB right will be ensuring it’s consistent enough that players can build muscle memory to the point of knowing what will happen when they select primary or secondary even without looking at the CAB.  That said, I ultimately like the Primary/Secondary CAB slots so much that I’m bringing them into the PC/Mac experience as well.

Here’s the CAB right after you encounter a new mob.  The player’s “normal” action is to attack a mob so that’s primary; they may not care about it though so explore is the second action.  The game keeps a queue of objects-of-interest (eg in case 4 monsters appear at once) and does a good bit of work in the background to pick the one the player most likely wants.


The CAB’s not perfect; it can’t be – two actions can’t encapsulate all options available to a player.  This becomes most apparent when a lot is going on on the screen.  That said, it’s not supposed to be perfect – users will still tap around on the screen, especially when things get more strategic.  This is just intended to make it quicker and more enjoyable to get to those moments

Bug fixes

Lots of bug fixes this time around as well.  In particular, a bug slipped in last time that caused an intermittent crash when ascending/descending between levels.  That’s been squashed.

Next up

Phase 4 is all about getting 7YRL to that baseline “it’s a real playable roguelike” stage.  Maps and CAB stuff bring it closer.  The next couple are less interesting but important to have:

  • Ranged attacking, including ranged AoE attacks.  This will work for both weapons (bows, wands, etc) and skills (e.g. a targeted AoE poison cloud skill).  The latter will require a chunk of infrastructure work to the event/action system – e.g. ability to target a particular mob or a particular cell, max distance on AoE attacks, etc.
  • Stackable items in inventory.  Making items stackable is straightforward, but it requires some grunt-work UI to make it usable.
  • Fleshing out the character pane.  It’s very basic (and with placeholder UI for now).  I need to clean it up and also get stats and skills incorporated into it
  • Keyboard in itemgrids.  7YRL already supports keyboard in most of the UI, but not in itemgrids (eg when picking up multiple items or when looking at inventory).  I’d ship v1 without it, but I’d like to go ahead and get that done now if possible just to get it off the list.
  • Figure out mouse-over equivalent for tablets and phones.  On the PC or Mac you can mouse over items, mobs, or skills and see a tooltip with information about it.  I need to figure out the best approach to that for devices without mice.  Press-and-hold is the default answer which I’ll probably go with, but I’d like to find something more discoverable if possible.  Failing that, I’ll move forward with press-and-hold and have to figure out how that impacts the input systems.

Only a few more updates after that before Phase 4 is complete and I can move on to the more interesting stuff in Phase 5 – Skills, Professions, Proficiencies, and Crafting (oh my!)

v0.3 Demo Video


I’ve finished powering through the last set of v0.3 issues and have officially completed it and am ready to move on to phrase 0.4.  First though, a quick list of what was done in phase 3:

Binary aggro – mobs hate player, mobs don’t hate each other
melee weapons
Mobs attack/defend
Basic attack/defend flow in place (attack/dodge/block/parry/hit/dodamage/takedamage)
Attack takes E/As into account and stacks multiples as needed”
Basic AI.  Mob visibility. Basic aggro (see player; hate them and go after them)
Monsters are read from xlsx
Monsters are placed in the appropriate dungeon level and rarity
Emoting (aggro, damage, fear etc)
One player class implemented (int/str/dex)
XP and leveling infrastrucutre in place (but no rewards for levels).
Dialog for leveling.
Mob-level-specific XP rewards (+ % for uncommon/rare/unique0
Player death (no animation)
3 initial skills for one player class added to support UI.
Primary stats: Int, Str, Dex, HP, MaxHP
UseSkill action
Real (but basic) dungeon layout
Items are placed at appropriate level
Movement with CAB
AI movement (tap on space with wall in the way – moves around wall)
Potions and Scrolls from event/action system
Explore (AI movement to nearest unexplored space)
mouse-over on entities (mobs, items) in the tilemap to get details
mobs and items metadata pulled from spreadsheet
Text.Write added.  Wraps. Monospace 8bit font. Colored
Some mob idle animatons in place
Some mob walk animations in place
ActorTalk and ActorEmote animations
Mobs obey partitioning (drop from active list if path to player is > their max ‘follow’ path length.
Tiles loaded from full spritesheets
Buttons properly handle focus in-out (on press & drag-out)
All interfaces present but empty – ready to fill out
Skill buttons (RGB) are usable (but are limited to 3 fake skills – don’t change)
CAB state machine complete and in place
CAB is interactive and updates
Character sheet, item inventory, etc implemented in mockup form
Ability to delete gameslots (X buttons under slot buttons)
A couple of menu pages have mockup art
Particle/Light editor
Vault editor
Settings UI with placeholder
Multi-select pickup (when multiple items in cell)

New demos uploaded!

I’ve uploaded new demos for both PC and Mac and will update the links over there –> once they’re accepted.  Check back soon!

Phase 4: A real roguelike

I do love starting a new phase as it lets me do a bunch of fun stuff up front.  That said, this particular phase will be the most grudging as it consists of me paying down tech debt I’ve been building up, and turning 7yrl into a real (albeit unbalanced)  roguelike.  There are a bunch of things to do, but I’ll be glad once they’re done and behind me so that I can start focusing on Phase 5 where I get to extend beyond ‘vanilla’ roguelikes and bring in less common features; Crafting, Professions, and Skills.

Tons of updates

The real world continues to rudely intrude upon my 7yrl’ing time, but that hasn’t stopped a slew of updates over the last few weeks.  In no particular order:

New landscape & PC/Mac UI

The previous UI is optimized for mobile/small screens.  That remains a key target, but I also want a UI that feels more natural on a PC, Mac, or larger tablet.  In that vein, here’s the new UI for those devices:


Particle effect improvement

Particles can now have a bloom effect that can be seen in the picture above.  I also enabled a number of other effects (e.g. custom blend modes).  More impactfully, I also created a particle editor tool which allows me to tweak particle effects on mobs, items, celleffects and more on a very granular level.  This will be hugely helpful later on when I focus energy on fleshing out the game’s universe.  Here’s a pic of the particle and light editing tools:

Screen Shot 2014-02-14 at 9.15.04 PM

Although I haven’t started really leveraging this yet, it’ll make it far quicker to create tons of different effects to help differentiate monsters from each other, items, rarities, and so on.

The particle editor uses the actual game engine to render particles so I can see them as they’ll really look.  The editor loads from and saves to both xlsx and dat (serialized binary, read by the game) so that I can still use Excel to do more complex or bulk editing tasks if I wish.

As another nice touch, I tweaked the game itself to watch the definitions file at runtime and reload it if it changes.  This way if I’m playing the game and see something that doesn’t look quite right, I can fire up the particle editor, tweak it, save it, and a moment later it updates in the game without having to leave/restore it.  Result: much quicker iteration time.


For fun I added particle effects for damage-taken effects; now when a mob (or player) is hit, there’s a chance they’ll spew blood.  Here’s a small example:


Thanks to the particle system, the blood effect sprays out and even bounces a bit on the ground.  The effect isn’t perfect yet, but it’ll do for now.

Vault Editor

I also created a custom editor to allow me to easily create Vaults.  Vaults are pre-created rooms that are used to give a bit more variety to dungeon levels; at dungeon generation time I’ll swap out empty square rooms with these prefab rooms randomly.  To avoid it seeming incredibly repetitive, I’ll need a ton of these vaults – thus, the editor.  Here’s a pic:

Screen Shot 2014-02-14 at 9.44.14 PM

As with the particle editor, this is using the actual rendering engine, so I can click a button and see what it’ll look like with the actual lights, particles, etc:

Screen Shot 2014-02-14 at 9.44.47 PM

Settings UI & Fidelity settings

There are now multiple fidelity settings to support lower-powered devices.  I’ve also added the start of the settings UI along with a few other settings controls (e.g. hide/show blood effects):

Screen Shot 2014-02-14 at 9.46.30 PM

160 mobs added

I took the ~200 mobs I had defined and alloted them out between the 20 dungeon levels, moving some out to ‘v2’.  I also chose about 120 different mob images from the Oryx set and prep’ed them in the spritesheets so the mobs are now ready for balancing, skill-setting, animating, and adding normals in a few months.

Player XP and Leveling

Players now gain XP from killing mobs and can gain levels.  They aren’t given any awards yet however (skills, stats).


Mana is now a part of the game; all classes have 100 MP – skills have mana cost and mana potions can restore them.  No more infinite health skills for you! 🙂

Potions and Scrolls

Potions can now be drunk and scrolls can now be read.  The cool part is that in both cases the effects are defined through the Event/Action system which means that very unique effects can be crated without touching code.  Here’s the Excel definition for a Renew potion:

Screen Shot 2014-02-14 at 10.09.25 PM


Items, mobs, and skills now display info in a tooltip.  On the PC/Mac they appear on mouseover; on phone/tablet they’ll appear on press-and-hold.  Here’s and example:

Screen Shot 2014-02-14 at 10.13.28 PM

Multi-item grid pickup UI

When the user tries to pick up more than one item in a Cell, it now displays a grid with all of the items in it and allows the use to pick up some or all of them. The grid autosizes to the number of items, and has previous/next pagination if there are too many to display on the screen:

Screen Shot 2014-02-14 at 10.15.21 PM

The same grid is also used in the character’s inventory display

Character sheet/inventory redone

I’m still iterating on the best way to display the various panes (character info, inventory, stats, tomes, professions, …).  As an interim step, I’ve combined character stats, inventory, and skills into one pane, and plan to have all cross-game info (tomes, professions, etc) in another.  Here’s the start of the placeholder char/inventory pane:

Screen Shot 2014-02-14 at 10.18.19 PM

And lots more…

Tons of bug fixes, quality-of-life coding updates, and tweaks.  It’s been a busy few weeks!