Monday, December 31, 2012

After an unusually long period of no releases I'm finally back with a new Dweller release. I have been very busy at work, there's been the Christmas holiday to plan and enjoy and it's taken some time to set up the Dweller build environment on a Macbook Pro (I've used a PC up until now), but now it's pretty safe to say that most hurdles and road blocks for swift development of Dweller have been cleared away. 2013 will be a great year for Dweller with many exciting things planned! Happy new year everyone!

#569 Fix issue with quickslot indicator in inventory list not working for all items #584 Add Elven Quicksilver Blade #576 Try to clarify what the attack speed % means (ie is 80% better or worse than 120%) #571 Pathfinding should work across poison if you're poison resistant #583 Reduce casting time of spells to 100% (same as other actions) #582 Minotaur's Axe should not be enchantable #562 Add a way to distinguish named monsters from normal ones #579 zzZ not present over a sleeping monster Source and comments: http://www.dwellergame.com/2012/12/dweller-12213-happy-new-year.html

Monday, December 10, 2012

Some of you who are used to a very rapid release cycle may start to feel a bit worried about the lack of releases lately. Don't worry though, I haven't abandoned Dweller! I've simply had too much work to do at my day job. I recently got assigned to an iOS project and had to learn a whole new world of things... I'm starting to get used to the company Macbook Pro I borrowed. Objective-C isn't as terrible as before when I only had looked at code and never written a line myself. The iPhone is still a bit crap as is the horrible XCode IDE (yes, yes, my colleagues are nagging me to install AppCode).

All in all it's been a fairly good experience and it's even gotten as far as me ordering a Macbook Pro of my own (insanely expensive, but with monster specs). I intend to dual-boot it with Windows 8 and use it as my main development machine when on the move. A positive side-effect may be that Dweller for iOS is a little bit closer to a reality than before!

And when it comes to Dweller I'm actually getting closer to completing a version of Dweller that makes use of Libgdx to significantly improve rendering performance. It's still far from complete, but yesterday I got a version running with the correct graphics but with a few rendering artifacts.

I'll try to make an interim release with some minor changes and improvements that have been discussed on the forum.

Tuesday, November 13, 2012

I thought I should share my rather fuzzy development plan for Dweller for the coming few months. The plan is fuzzy because I find myself more and more unsure of what to do to improve Dweller further. I'm sure there's a ton of things I could do, but I've worked on Dweller for so long and that makes it hard to look at the game with fresh eyes (like a player who discovers Dweller for the first time). I've never meant for Dweller to be anything but a hobby project where I can experiment with different coding practices, technologies, platforms and have fun coding. At the same time it is pretty obvious that the average Android users expects a hell of a lot more of a game today than only one or two years ago. Anything less than a triple A title and you're required to be either very innovative to get player attention or be content with a much smaller group of brilliant gamers who can see beyond pretty pictures and enjoy a game because of other merits. You guys who are reading this are among the latter group, and I love you for it, but that doesn't mean I can't have at least a little bit of both, does it?

This is why at least part of my plans for the winter are about polishing the game in such a way to make it more attractive to "the masses". So, without further ado, here's the plan:

Add an intro screen. I'd like to have some pretty pictures to give a good first impression.

Improve the death/win screen. Currently it's something of an anti-climax to beat the game.

Add music and sound (at least for Android and desktop version, most likely not for J2ME). I'm in touch with a composer who is working on music for Dweller.

Improve rendering performance by switching to OpenGL using libgdx or similar. Tablet performance is total crap at the moment and low-end Android devices are also starting to struggle. Switching to hardware accelerated rendering will increase performance significantly.

Add player perks. I'd like to see something similar to talent trees (as seen in WoW, Torchlight, Diablo etc). It's going to be hard to balance, but I'd really like to allow the player to within each class come up with different kinds of character builds supported by talents/perks.

Add more dungeon variation with rare rooms, encounters and items.

I'm really interested in hearing your thoughts on the focus of Dweller in the months to come. In the words of House Stark, "Winter is coming", and I'd like to have a solid plan backed by the community to get it all done.

#553 Remove teleport traps from the labyrinth #554 Unique monsters/bosses should ignore hidden traps #555 Make sure that banishing a previously summoned ally when trying to summon it again never fails #556 Adjust message sequence to show trigger message before damage message when moving to a cell with a trap #557 Remove duplicate "You miss" message when the player misses a target #558 Periodic effects such as poison should trigger on any action, not just movement #559 Items that recharge when an enemy is killed should not have to be equipped to be recharged #560 Adjust delay of stun effect to be half the time it takes for the stunned creature to make a move #561 Make sure to not change position of an item in a quickslot if it is enchanted or recharged #552 Fix broken room where items can sometimes be generated in walls #544 Fix problem with item on the ground being destroyed when receiving a quest reward #531 Being disarmed while all neighboring tiles are filled with items should not destroy the dropped weapon #564 Player box does not properly update at all times #565 Chest traps should not prevent the player from opening chest using targeting mode #566 It should be possible to see if an item is in a quickslot from the inventory list

Tuesday, October 23, 2012

It took a while didn't it? Sorry 'bout that... but it's finally here, the new version of Dweller! The new version is shipped with a long list of changes. Some highlights:

Shields are now in the off-hand category and can have on-block effects. Check out the spiked buckler!

You no longer auto-gain a point of HP on level up. HP will be listed along with the rest of the stats that you're able to pick

The required skull for the Restless Ghost quest should now be spawned on only the level where you get the quest, not randomly at any level.

You will now find small status icons next to you HP bar if you get poisoned, slowed, disarmed or when you are levitating

Full list of changes:

#514 Change description of warrior ally to not use the same as the warrior class description #515 Change so that required quest items such as the Skull in the Restless Ghost quest are generated on the same level as the quest #517 Review item prices for standard items #520 Move Gold coins from Jewellery category #521 Change Shield category to an Off-hand category #522 Quiver of Elven Arrows (unlimited use) should always be generated with basic stats (no fine, worn etc) #505 Add option to toggle minimap rectangle on/off #524 HP and Energy (mana) should not automatically increased on level up #525 HP and Energy should get fully recharged on level up #526 It should be possible to increase Energy (mana) on level up #527 Named monsters should have higher stats to make them more of a challenge #528 Dropping an equipped item did not remove any on-remove effects (such as levitation) #529 Spiked bucklers should do damage to attacker when a block is successful #530 Fix crash when pressing center/use on an empty inventory section #532 Fix spamming quest complete message on loot quests when picking up more than the required number of items #533 Remove duplicate "You fall through a trapdoor" message #534 Change so that item cooldowns/auto-recharging on player action is triggered on the entire inventory and not only the equipment #10 Add visual feedback on buttonclicks #540 Add Czech translation #537 Do not show "you can not use this" message for Gold #541 It should be possible to assign items to the clicked on quickslot instead of first available quickslot #535 Fix problems with wands and tools being removed from the quickslot when used #538 Optimize inventory list #9 Show status icons in the character portrait

Friday, October 19, 2012

Once again has the Dweller community stepped up and provided a translation of Dweller to a new language! This time it's forum user Wendingo who has provided a translation of Dweller into Czech! The next version will be out in a few days and with the new release Dweller will support English, Swedish, Russian, French, Spanish, Polish and Czech.

If you would like to see Dweller translated into your own language then please join us at the forums, post here or send me an e-mail. Translating the game into your own language will not only give you the pleasure of playing in your native tongue. As a translator you will also be immortalized through an in-game item of your choice and design. Items such as the Magical Catnip, the Hell Cloak and the Celestial Armor are all created by translators of Dweller. Why don't you translate the game yourself and claim an item of your own?

PS Do you want an item of your own but don't want to go through the trouble of translating Dweller? Why don't you make a Donation instead?

Wednesday, October 3, 2012

This is mostly a game balance release with a few bug fixes as an added bonus:

#502 Merging oozes should reward more xp the larger they grow #503 Quickslot item count does not auto-increase when picking something up #504 Add random names to artifact items again #506 Decrease base HP of the Ranger's dog #507 Decrease base Magic and increase base Speed of Magical Cat #508 Increase chance of finding Thieves's Tools #509 Show item names in plural in inventory list if there's more than one of an item #510 Fix missing item effect descriptions #511 Adjust weight and attack value of some weapons to make them more useful #512 Add a cooldown on Magical Catnip, Dog Whistle and Horn of the Warrior #513 Increase defense on heavy armor

Saturday, September 29, 2012

I'm back from vacation and I've almost caught up with my e-mails. And more importantly, I have released Dweller 1.22.7. This version contains quite a few tweaks and some new stuff for you as well:

#480 Fix Scroll of Enchant abuse bug #481 Reduce sales price to one fourth of purchase price (previously one third) #482 Remove the Use menu option from Piles of Bones #483 Add a Miscellaneous item category in the inventory where Piles of Bones are listed #484 The last item picked up from a loot quest does not trigegr a message or scrolling text #485 Remove bogus "It is you!" message when using a Scroll of Enchant #486 Remove empty "You get:" message when completing quests that give XP but no reward #487 Remove small random variation in stats on some artifact items #488 Reduce chance of finding artifacts #489 Fix blocking "room" in the labyrinth #490 Reduce sensitivity of fling gesture to reduce the number of touch events that do not register properly #491 Elven Water should be sold by the Healer instead of the Merchant #492 Add new arrow types #493 Add a better arrow type sold by the Merchant #494 Add the unique rings 'Ring of Longevity' and 'Ring of Mobility' #496 Show on the minimap which part of a level is currently on screen #497 Nerf Pearlescent Soul Stone #498 Spell range no longer scale with magic stat #499 Add Restless Ghost quest #500 Add missing description to the Dungeon Atlas #501 Adjust item prices to take item immunities into account

It's been a little longer between releases than usual, but I've needed the extra time to expand existing functionality and develop new supporting functions that will lead to interesting item designs and quests in future versions.

Items can from now on have effects that trigger when a creature is killed. The current use of this functionality can be seen in the new donor created item Pearlescent Soul Stone. The Soul Stone increases it's charges each time the player kills a creature and when fully charged it's power can be released to provide the same effect as using a Scroll of Enchant. This new "on kill" trigger can be used to create a lot of interesting items, for instance weapons that heal when a creature is killed (as opposed to the drain ability that exists now and work while the target is alive), wands that recharge when a target is killed or items similar to the Pearlescent Soul Stone that charge and when fully charged provides an on-use effect of some kind.

An interesting change for room contributors is that pressure plates can be used to open the new and otherwise impassable Iron Doors. This can be expanded to unlocking gates and doors as well but it should be done in collaboration with the Dweller community. Oh, yes, pressure plates and dart traps are hidden now! And there might be something else that is triggered by pressure plates as well...

There's also two new monsters and two new quests, one of which gives a really nice reward!

And there's a whole bunch of bug fixes and tweaks. Give the new version a try and let me know what you think, either in the comments below or on the forum!

#451 Increase number of sold Master Keys by the Merchant #452 Add a portal to the Rat King's Lair #453 All classes should start with a few Master keys #454 Fix melee combat shield blocks #455 Adjust melee combat dodge chance #456 Remove "Summon Ratling Elder" ability from Rat King #457 Items dropped by bosses should always replace any existing items on the ground #458 Pressure plates and dart traps start hidden #459 It should be possible to use lock pick on locked gates #460 It should be possible to target creatures standing on a secret door #461 Stairs should never be generated on the map edges #462 Purple oozes should not have a 100% chance to drop gold #463 Purple oozes should drop bones #464 It should not be possible to put Calvin's Imagination in a quickslot #465 Remove free teleport ability from Hell Cloak #466 Add firesweep ability (with a twist) to Hell Cloak #467 Reduced price of items when selling to a merchant #469 Remove chance of Scrolls of Enchant to grant magic resistance #470 Tweak the soft cap where Scrolls of Enchant start to become useless #471 Add Pearlescent Soul Stone (donor item) #472 Add Mouth of the King #473 Add Animated Armor #474 Add option to allow the d-pad to be moved to the right hand side of the screen

Friday, August 31, 2012

Dweller 1.22.3 continues to build upon the recently introduced Sewers side branch. There's now a second floor to explore, a really bad-ass Ratking end boss (BTW check out indie devs Rat King Ent.!) and a nice little reward for slaying him.

The new version also introduces properly locked doors that require either a) a key b) a set of lock picks or c) a heavy weapon.

The frequency of locked doors and the availability of master keys probably need to be adjusted. I am also a little concerned that the Sewers are too difficult and need to be introduced one dungeon level further down (or swapped completely with the Labyrinth). Please provide your feedback here or join the Dweller community at the official forum.

#439 It should not be possible to go beyond the carrying capacity when picking up a stack of items #436 Extend autopickup to everything that weighs 0 #55 Make locked doors more interesting #440 Add a message telling about losing an item when dropped in water (or similar terrain) #441 Improve quest completion message #442 Bookshelves should only create books #407 It should be possible to see if an item can be used when inspecting it #443 Add new creatures to the Sewers #444 Remove jammed doors #445 Add a second level to the sewers #446 Add a boss to the sewers

Tuesday, August 28, 2012

Ah, I shouldn't rush a release or make last minute fixes. When will I ever learn?! I did some minor adjustments to the Halls of the Goblin King but I accidentally lost the spawn point for the Goblin King himself, thus resulting in player's not being able to finish the game. Luckily it was spotted and reported fast so the number of affected players shouldn't be that high. Still, it's embarrassing... sorry guys!

Sunday, August 26, 2012

#423 Fix potential crash on new game after dying while having an "Equip/Put in backpack" dialog open #427 Bag of Treasure should generate better than average items #428 Fix bug which prevents resetting the key bindings #429 Prevent pets and immobile monsters from swapping places #430 It should be possible to inspect an item lying in an open door #431 Quiver of Arrows shows an amount of zero #432 Removed alternate key binding on keys where primary binding isn't locked #355 Add option to configure d-pad scale via settings menu

Friday, August 24, 2012

This release contains a few performance improvements and stability fixes that should speed up key areas of the game. The major performance bottleneck right now, especially on Android, is the actual rendering of graphics. I will have to look into switching to another graphics engine for Android, but it will have to wait a little while longer.

The new version also fixes some recently introduced bugs related to the Sewers and to poisons ans poison immunity.

#415 Improve performance #416 Doors and chests should be generated in the sewers #417 All undead should be immune to poison #418 Horned Helmet graphics is off by one pixel #419 Oozes should be immune to poison #420 Fix problem with poison immunity #421 Improve speed when changing orientation [Android] #422 Effects with a 1 cell radius incorrectly affected some targets twice

Wednesday, August 22, 2012

The bug reports have finally slowed down to a trickle and the ones left seem to be really rare. Please keep sending any crashes you may come across!

The new version fixes some issues with the quickslots, menus and it does some minor adjustments to some weapon stats. The monster and ally AI was also a bit too clever in recent versions since the AI was sniffing out monsters out of their line of sight and even behind walls.

Last but not least the new version contains a first version of the reintroduced Sewers side branch. The new branch is a bit empty now, but you can expect it to fill up with new monsters and fun challenges in coming versions. Enjoy!

#409 Improve bitmasking to work on cave walls as well #410 Adjust broadsword, longsword, great sword, battle axe, great axe and mace stats slightly #411 When scrolling in menus using a touch gesture you incorrectly select the menu item you touched when you started scrolling #412 The new monster and ally AI should not be able to "see through walls" while searching for a target #413 Fix issue with not being able to put items in quickslots #414 Add dungeon branch The Sewers

Monday, August 20, 2012

Ok, so there's been a very elusive crash bug in the Android version of Dweller and this release should mark the end of that particular bug. The thing is that I was looking in all the wrong places despite the excellent bug reports and game logs I received from users affected by the issue. It turns out that the problem was caused only when switching orientation while playing. If the game was started in one orientation and the phone's orientation never changed the bug would not happen. To make a long story short, I feel like a fool and it's a damn shame I didn't figure this out sooner.

So, beside this very nasty bug there's also a few fixes available:

#402 Wand effect descriptions are written twice #403 Don't show an "ally attack" message after the target has died #405 Quest details show the incorrect amount for quest rewards #404 If a creature dies and drops loot on a trap door it should trigger and the item should be removed #406 Android targeting crash bug occurs after changing phone orientation

Sunday, August 19, 2012

There's still at least one crash bug, but it's not very frequent and I have added some measures that I hope will prevent it from happening. I have not been able to reproduce the issue myself so I still rely on bug reports from you guys. Please keep sending them if you come across any crash bugs!

The new version does also contain some new features, items and minor bug fixes. Enjoy!

#394 Pressure plates should not be triggered while flying #395 Calvin's Imagination is not working while flying #397 Update Swedish translation with recently added texts #398 Allies should not summon more creatures #391 Add Great Helm and make it only available to warriors #392 It should be possible to summon creatures on more floor types #358 Creatures that do poison damage should be immune to it #348 Add flag to mark certain items as unenchantable #399 Items that are picked up and used via the "Use/Put in backpack" menu should be put in a quickslot as well if appropriate #400 Armor and weapons can have activated effects #321 Create teleport spells that transport a group of creatures

Judging by the bug reports last release seems to have solved the two known crash bugs. There does however seem to be one remaining bug related to targeting and using ranged attacks. The crash does not seem frequent, but it's of high priority nonetheless. I have uploaded a new Android release, 1.21.5, with some additional debugging to help me find this bug. Please keep sending the bug reports!

Thanks to all the players who submitted bug reports I finally found the cause of two relatively frequent crash bugs. I have not been able to reproduce the bugs myself, but the debug info that I had at hand makes me confident that they are solved. Still, if you happen to come across a crash bug please send the bug report to me!

Some minor changes along with the bug fixes:

#386 Fix crash bugs #387 Allies should not be able to swap places with NPCs #389 Some creatures should never start as passive #390 Update graphics for Training dummy and Prismatic band

Thursday, August 16, 2012

I still have one very hard to reproduce bug that seems to occur quite randomly. I believe that this version should provide me with the all the logging information needed to find it. If you do come across a bug please make sure to send the save game to me via the in-game option.

#369 Improved logging when sending a save game to help with bug tracking #383 Fix problem when using the look command without a visible target #384 Keybinding names are not translated when changing language #385 Equipment categories are not translated when changing

Wednesday, August 15, 2012

I'm happy to say that one of the two identified crash bugs have been found and solved. Along with said bugfix this version also contain improved logging that will help me find the cause of the second crash as well. Thank you to everyone who has sent me crash reports. Keep 'em coming!

Tuesday, August 14, 2012

It's time for another Dweller release, bringing Dweller to version 1.21.0. Please note that this release has an increased minor version (ie the second number has changed) and this means that old save games are not compatible with this version. Please make sure to finish any active games before upgrading.

In a recent poll a lot of votes were made to improve the AI in Dweller. This release contains a first version of the new AI, but it will require a few more versions before I'm really happy with it. Monsters will pick their targets a little more intelligently and you should also notice that monsters will try to surround you a bit more than before. The new version also contains a first version of the Polish translation by long time Dweller fan and dungeon design contributor Mateusz. Since Mateusz finished the translation he was also entitled to design an in-game artifact, and artifact that you'll be able to come across in this version.

There was also a rather severe bug in previous versions that negatively impacted the Ranger's ability to use a bow if a powerful melee weapon was wielded at the same time.

Here's the list of changes:

#368 Ranged weapons that are better than average should have a prefix to their name #369 Improved logging when sending a save game to help with bug tracking #370 Damage calculations from ranged attacks is incorrectly affected by wielded melee weapon #253 Add a base stat cap of 100 but allow items to modify it beyond the cap #371 Gradually reduce effectiveness of merge as the attacker grows bigger #372 Fleeing monsters that become cornered will stop fleeing and fight until dead #373 Monsters should avoid lava #375 Add Polish translation #112 Cyrillic encoding wrong when changing language #75 Tweak monster fleeing code #377 All text should change when you switch language #378 Mushrooms could sometimes increase your max HP #325 Don't reveal power of Potion of Change via the price of the potion #379 Add The Magical Catnip of Mateusz

Tuesday, August 7, 2012

This is mainly a bugfix release to solve some semi-critical bugs from 1.20.6. In 1.20.6 the charm spell was given a time limit and this unfortunately caused the ranger's dog to sometime become hostile. There was also a problem with the "Send Character stats" option in the Character screen. There are also a few minor changes and improvements to monster AI and creature behavior. Enjoy!

#362 Merging oozes should merge with any weaker creature #363 Fix bug with Send Character Stats in the Character screen #296 Water should slow down movement #364 Orcs should not flee #365 Show in targeting mode the time it takes to move from the targeted cell (only if it takes longer than usual) #366 Ranger's dog should never turn hostile as other charmed creatures do #367 Adjust monster AI spell casting to make the AI use defensive (eg heal, teleport) and neutral (eg summon, clone, merge) spells more often

Several bugfixes and improvements were made in this release. One of the major changes is that the Charm spell and charmed allies aren't permanent. There's a small chance every turn that a charmed monster will turn against you so you better make sure to not have too many around at any given time! Another bug change is the addition of a proper character equipment screen with a full list of all equipment slots and which item is being used in each slot. Clicking on a slot in the equipment list will bring you to a filtered version of your inventory only showing items that can go into the clicked slot.

#350 Items with unlimited charges (normal quivers) does not properly show stacks in the inventory #347 Show gold in character dump #346 Allow character dump on win/death screen #352 Do not show "Add to quickslot" option for items with no use #354 Increased casting cost of Charm spell #345 Nerf charm spell #351 Prevent rats from spawning in traininggrounds #353 Show which creatures are allies #65 Add a proper character equipment screen #356 Items that modify HP when worn should increase max HP #357 The cursor should change when specialized arrows run out while in targeting mode #292 Add pushable bookshelves #360 Move "Send Character stats" option from the main menu to the bottom of the Character screen #361 "Buy cleansing" from the Healer should not cure poisons

Saturday, August 4, 2012

"Ok, so, I have a pretty long list of small and big things that I could do with Dweller, but I'd like to be sure that I'm focusing on the most important stuff first.

There's a lot on that list, but I'm sure there's other stuff as well, and I'd like to hear you opinion. Here are some of the main areas I could focus on:

* Improve AI. The AI isn't that smart at the moment. It basically has three states: idle, attack, flee. The AI could be made a lot more interesting. Casters should keep their distance. Casters should pick spells to use more wisely. Packs of monsters should really try to surround the player better. Fleeing monsters should not be as easily cornered. Fleeing monsters should sometimes turn and fight, especially if close to other monsters. And so on, and so on....

* Make the rooms even more thematic. The system currently doesn't properly support placement of specific monster and/or items on the rooms you're able to create via the online mapper. It would be great if you could place Dark Wizards in rooms filled with bookshelves, tables and braziers to make such rooms feel more inhabited. Or if you could put gold or other valuables in treasure rooms instead of only putting chests. Or if you could create a Worg kennel room. Or if you could create a room filled withe purple oozes. And so on...

* More quests. Especially quests found in the dungeon. For instance you could come across the bones/ghost of a dead adventurer and you could get a quest to bring the remains to the surface. Or if you could find an imprisoned adventurer and get a quest to find the key to unlock the prison. Or if you could find a necklace that starts a quest. Or any other of the million or so possible quests...

* More dungeon branches. The Caves? The Sewers? The Mines? The Lava Pits? The Underground Lake?

* More spells

* Character perks or skills (as was discussed about warrior and ranger skills elsewhere)."

Please head over to the forums and make your voice heard there or in the comments below.

Tuesday, July 31, 2012

It's not far between releases at the moment. Tonight it's time for Dweller 1.20.5:

#338 Prevent scrolls which require a target from being used any number of times as long as targeting mode is active #339 Remove Scroll of Healing #340 On-hit effects on single target attacks will not be applied if the initial attack is missed #335 Remove "already at max health" spam from 'Calvin's Imagination' #342 Increase weight of Crossbow from 9 to 12 #343 Pushing a monster into a portal should teleport instead of kill the monster #344 Fix tile scaling issue on low resolution devices #76 Add a merging ooze variant

Tuesday, July 24, 2012

A minor release but with one important fix: The Speed stats impact on how long it takes to perform an action was broken and did in no way work as intended. This is how it should work:

First of all, there is no real concept of turns in Dweller. If it takes x units of time for creature A to move one cell it could take 1.3 times longer (ie 30% longer) for creature B to move.

All monsters and the player are put in a priority queue where they are ordered based on when they are allowed to take a turn next.

All actions (move, open, attack, cast spell etc) in Dweller have a defined base time it takes to perform that action. For all actions except spell casting the base time is 100, while spell casting is 250 (this may need to be adjusted in accordance with what is discussed in another thread)

The time it takes for a creature to perform all actions except melee and missile attacks use the following formula: ACTIONTIME * 10 / SPEED

Thursday, July 19, 2012

I haven't had much time lately to work on Dweller which means that this release is mostly a bugfix release. Something worth mentioning with this and the previous release is the huge amount of new rooms added by Mateusz! Two thumbs up and a big thank you Mateusz!

#316 It is possible to exceed carrying capacity if picking up a stack of items #317 Character screen now show if you are Slowed #318 Rewarded questitems should always be added to the inventory, even if they weigh too much #300 Allies killing monsters don't reward XP #319 Make allies follow the players target better, even at range #322 Flying creatures are no longer damaged by lava #323 Amount of hitpoints gained if chosen at level up should be higher (+3) #324 Adjust bonus/penalty given by Potion of Change #326 Using a stack of wands with identical amount of charges incorrectly reduce charges on all wands #327 Killing through use of a wand of poison without doing any other damage should reward xp #288 Tutorial quests not always available #328 Some spells show the wrong range

A new version of Dweller was released today. The new version contains quite a few new rooms for you to discover, a lot of them with nice hidden parts. The community has been really great and they've contributed a lot of new rooms. Thank you guys! If you want to contribute new rooms yourself then check this post.

The new version also has an increased difficulty. Previous versions have been way too easy, and hopefully this new version is a step in the right direction. Please provide me with feedback on the difficulty level of the new version.

Tuesday, June 19, 2012

Introduction

The content of this post was originally intended to be presented during the International Roguelike Developers Conference 2012 in London. Due to me finishing the talk in the evening after the first day and the second day of IRDC being primarily focused on a roguelike showcase I never got a chance to present this. So here it is in a version suitable for a blog post, my thoughts on roguelikes for mobile.

The mobile use-case

I’m gonna start all this by introducing the mobile use-case. It seems to me that everywhere I look people have phones in their hands. Be it on the train, bus or god forbid in the car. I see them in the hands of people in cafes, restaurants and in the park. In the local grocery store and in the waiting room at the dentist. I also read somewhere that 75% of American mobile phone users admit to using their phones while on the toilet. And according to this ad we even bring our phones when we take a bath:

People seem to find many opportunities each day to use their phones, although often in short sessions, in-between doing other things.

Everyone has a smart phone

In 2011 there was an estimated 1.08 billion smart phones in use and if you include feature phones you triple that number. According to Google an astounding 700 000 Android devices are activated every day. That is a mind boggling number. Now, it’s not as if the active number of smart phones increase at a rate of 700 000 devices per day. People swap out their old phones regularly, some even do it several times a year. And we use our phones in so many different ways that we almost forget that they can be used to do regular voice calls as well.

We e-mail and send text and picture messages. We browse the web and at the current rate mobile web browsing will overtake desktop traffic in 2014. In many developing countries where access to internet via fiber or ADSL is very limited peoples first encounter with the internet is via mobile phones and not computers. One third of smartphone users use social networks on their phones. We also consume music and video content with YouTube having 200 million views per day made from mobile phones.

On top of all of the above we also use a whole lot of apps and play games, but not a lot of roguelikes. Why is that and what can we do about it?

Why are there so few roguelikes for mobile?

This is an interesting question. We’ve clearly seen that people take every opportunity they’re given to whip up their phone and start using apps or internet services. My personal opinion is that traditional roguelikes aren’t suited for mobile. Here’s why:

The space shuttle manual

Most traditional roguelikes have a manual several pages long and a list of commands more suited for controlling a space shuttle. Angband and Crawl have more than a hundred commands listed in their manuals. A hundred! Try to get that to work on a devices that doesn’t even have a proper keyboard...

Long game sessions vs coffee break roguelikes

Game sessions in traditional roguelikes are often very long, measured in days and weeks, not minutes or hours. Another related property of most traditional roguelikes is that they require a lot of concentration with even the smallest mistake being punished by death. Neither of these properties work well with the “in-between” use-case. We should look more to what is often referred to as “coffee break roguelikes” when we think of how to design a roguelike for mobile. Games that are quick to pick up and play and last for not much longer than a few hours.

Roguelikes for non-roguelike players

Relating a bit to the accessibility of coffee break roguelikes is the whole discussion about how to design a roguelike for players who have never heard of the term roguelike. Mobile phones are mass market devices and in many ways even more so than computers. People who did not own a computer or maybe wasn’t even born when roguelikes were the most popular now have devices in their pockets that outperform what people used to play roguelikes on 15 to 20 years ago. Put these people in front of a roguelike when they are used to playing Angry Birds, Diablo or Modern Warfare... Darren Grey recently posted a very interesting write-up of his thoughts on how to design roguelikes for non-roguelikers. It’s a very interesting read and it really puts forward a lot of good arguments for how to make roguelikes more accessible for players new to the whole genre. Coincidentally a lot of the stuff makes playing roguelikes on mobile devices a lot more bearable as well.

Programming languages and cross platform complexity

Finally there’s another limiting factor in that the choice of programming languages differ a bit from what roguelike developers usually prefer. On iPhone you use Objective-C, on Android you use Java and on Windows Phone you use C#. A lot of roguelike projects still use C/C++ and some kind of terminal/curses/libTCOD output and that doesn’t make them particularly easy to port to mobile. Now you could target mobile only or write in a language that offers cross platform functionality from the start (more on that later), but you would still be forced to deal with the complexity of writing cross-platform games. This leads us to the final impediment for writing apps and games for mobile, namely device fragmentation.

Device fragmentation

Device fragmentation is a bit of a buzzword and something that Apple fans usually like to throw as fuel on the fire when they discuss iPhone versus Android. For me device fragmentation is “the ability to write once and run anywhere” and it’s caused by both software and hardware diversity.

Software diversity

When it comes to software diversity you have the obvious phone OS diversity with Android and iOS being the most common and several others such as Windows Phone, Blackberry, J2ME, Symbian and WebOS.

To make matters worse each OS comes in many flavors and there are many versions in use at any time. Writing for Android forces you to take into account at least a handful OS versions to cover the most common ones in use today. iOS also comes in several versions but it’s a less daunting task to write for iOS since the hardware diversity is much smaller compared to Android.

Fragmentation visualized

If you want a good visualization of exactly how diverse the Android landscape is then have a look at the OpenSignalMaps survey. During a 6 month period they gathered statistics from around 700.000 devices and found almost 4000 unique Android devices with a wide variety of Android OS versions and screen resolutions.

Ok, ok, I get it. The mobile landscape is fragmented. What can I do about it?

There are several languages and tools that have a “write once, run anywhere” offer. Here are some of the more well known:

Doing it on your own

If you don’t want to use one of the languages and platforms listed above you can do a lot of the work by hand. If you separate your engine from the platform specific stuff like drawing to the screen, doing file I/O and handling input and if provide a layer of abstraction for these things it becomes a matter of rewriting the platform specific stuff while reusing the engine. This is what I do in Dweller, but it has its disadvantages. First of all you need to pick a language that is available on all platforms. I chose Java a long time ago and this does prevent me from porting to some platforms. C would have been a better choice, as Jeff Lait did with POWDER. At IRDC 2012 Jeff gave a very interesting talk on how he goes about porting POWDER. Jeff talks about the concept of bedrock programming and finding the right level of abstraction to make porting as simple as possible.

Designing a touch friendly UI

A finger is not a mouse pointer

The first thing you need to accept when you’re designing a touch UI is that a finger is not a mouse pointer. Don’t ever expect the same kind of accuracy from a touch and a click. What this means is that you can’t clutter your UI with tiny buttons as the user most likely will misclick a lot. What you also need to do is to make sure that the physical size of UI elements is the same regardless of screen resolution or screen size. Don’t ever set buttons and other UI elements to absolute pixel sizes. Android has a concept of “density independent pixels” mapped to the “dp” unit. If you specify a button to be 50dp high it will be of more or less the same physical size on all Android devices, it doesn’t matter if it’s a 3.3” or 4.7” or 10” display with a resolution of 320x240, 800x640 or 1980x1080 pixels. You should use the same kind of scaling of UI elements in your roguelike.

Adaptive user interface

You should create a user interface that adapts to the users screen size and orientation. Rearranging UI elements when the device goes from portrait to landscape mode and vice versa is a good idea. On low res screens you should also consider hiding UI elements that aren’t critical or possibly have UI elements change how they are rendered depending on screen resolution.

One handed design

In my opinion you shouldn’t expect players of mobile games to have both hands available. They may be standing on the bus or train and need the other hand free to either hold on or carry a bag. A lot of mobile games aren’t playable with one hand and with the current trend of screen sizes of 4.3 inch or more it’s also becoming physically difficult to reach everywhere on the screen with only one hand. Still, I think it’s a good ambition to aim for.

Streamline interaction design

Minimize amount of UI interaction needed

You should try to reduce the number of interactions needed to reach important or often used functions within your game. A touch interaction is a lot more expensive for the user compared to a mouse click.

Automatic actions

It might also be a good idea to automate some things to remove the need for user interaction. Darren Grey suggests that the use of stairs is an automatic action. This is a good idea, but it requires stairs to be put out of the field of play, typically in walls, especially if you have stairs in one cell wide corridors. Automatic pickup of some/all items should also be considered.

Another thing that can be automated is targeting when using missile weapons and spells. If the player doesn’t have a previous target it makes sense to automatically target the closest enemy.

Optimize your mobile application

Even if some of the high end devices out there are capable of some really amazing stuff graphics and performance wise there really is not other way around it than to optimize and be smart about what you do and when if you want to offer a good experience for all your users, even the ones with a phone two or three years old.

With this in mind you shouldn’t redraw everything every frame. Use bitmap caching to speed up drawing of rarely modified but complex graphical elements.

You should also beware of object creation as it is costly in many languages. This should of course be a best practice everywhere, not only on mobile, but its effects become more obvious on low end mobile devices. Roguelikes usually have extensive use of textual information with verbose message logs, inventory, character screens and so on. Building these strings can be costly as it often involve a lot of string concatenation. On low end devices, especially J2ME, this can be devastating to performance and memory use.

Test on device!

I’m going to end this rather lengthy post with a few words of wisdom regarding testing. First of all, test on device as much as possible! Emulators only take you halfway as they rarely emulate actual device behavior and performance accurately. It is my experience that things like file I/O speeds are often way slower on device than in an emulator. Rendering performance is another place where an actual device often is much slower than an emulator. The Android emulator is probably the one closest to a real device, but even then tests on device should be preferred.

Also keep in mind that testing a touch UI using a mouse is not the same as with your finger!

If you think a room could be improved in some way please click on it and it will load in the map editor. If you have ideas for new rooms you can head over to the map editor straight away using this link:

Sunday, June 10, 2012

I'm trying to get the balancing of monsters and items in Dweller just right, but it's not at all an easy task. I'm fairly certain that the game needs to become harder, but I don't want it to become too hard. I've started exporting the game data into formats that make them easier to share and explore. The first thing I started working on was a simple HTML output of the datafiles. The idea is to have something wowhead, but with static content generated at build time. Check out a first non CSS styled version of the monsters (SPOILER ALERT!) here.

When it comes to balancing the game I've taken that data and exported it to graphs to try and find monsters that stand out from the rest, either by being too hard or too easy. I calculate some kind of perceived power of the monster, the amount of XP you get from the monster and at what depth they are encountered:

I've managed to get perceived power and XP rewarded to be aligned, now I also need to make sure that you encounter the monsters at the appropriate depth as well. Things get a bit complicated though due to the side branches, but I think I'll manage to get it right eventually.

Friday, June 8, 2012

#285 Buff Elven Water #286 Fix impassable room #282 Shambling corpse has the wrong description #280 Automatically discover secret doors when you stand on them #279 Treat unknown cells as empty when calculating the bitmask #276 Bookshelves can generate books that should not be available to the player #275 Automatically switch to 'Disarm?' when moving cursor to a trap #283 Ranger's dog gets targeted first #281 Shooting by tapping on a target also incorrectly moves you #277 Empty bookshelves should be a lot more frequent than ones with books in them #274 Auto-close targeting mode when all targets are dead #289 On low-res screens to the top of the tutorial text isn't visisble #290 Blurry monster graphics on some screen resolutions

Thursday, May 31, 2012

This is a minor release to fix some issues with 1.19.0. Here's the change-log:

#267 Standing on stairs to training grounds incorrectly shows "Standing on stairs to the dungeon" #265 Add tutorial message about perma-death #268 Add tutorial message about risk of triggering traps when disarming them #269 Minor graphics glitch on kill animation #270 Never show +0xp messages or animations #271 Reduced chance of finding enchanted items #272 Unsellable items should not show a value when selling items to a merchant #273 Do not add items to portals

Wednesday, May 30, 2012

Ok, so I was playing the new version of Dweller on my way to work and my first observations was that a) the tutorial quest givers didn't actually provide any quests at all and b) the frequency of enchanted items is way to high. Please post your thought on the new version as well either here, in the original announcement post or on the forum.

Dweller 1.19.0 is here! I'm taking a bit of a chance releasing now since I have a feeling that new version will need a bit of balancing before it's stable. I do hope that as many of you as possible will send me feedback on the new version. I will probably release a few minor updates in fast succession once feedback starts to pour in.

The new version features a lot of changes to data formats, especially how levels are defined. This unfortunately means that save game compatibility is broken (1.x.0 to 1.y.0 denotes incompatible save game versions).

Here's a full list of changes. Enjoy!

#245 Summoning traps are undetectable #241 Do not show the value of items that cannot be sold #237 Unique items should never be enchanted from the start #243 Monster spell casting was broken when mana was introduced #236 Nerf stun on weapons #248 Remove cast speed and have all spells take equally long to cast #249 Add a new creature to the maze #247 Dragon's Breath spell still show targets too far away as valid #225 Axe hitting multiple targets not working properly #250 Wands are not depleting their charges properly #242 Double "It can damage enemies" in some descriptions #217 Add a hunter pet #251 Show mana/energy cost of spells in quickslots #252 Improve the way the name of items in quickslots are shown #63A dd a one-way portal back to the main dungeon from a dungeon branch #157 Add a tutorial dungeon with tutorial quests #254 Nerf levitate #255 No exp gained when killing a monster using poison #244 Pushing stone into brazier toggles it #256 Remove minor healing from Antidote potions #220 Do not show "Use until full health" on consumables that doesn't heal you #219 Add the new side-branch The Crypt #261 Cancel auto-travel on user input #258 Crash when moving cursor outside the map #235 Increase difference in spell costs #260 Trying to enchant a normal quiver forces you to re-equip it #259 Moving cursor over a non-discovered chest trap shows "Disable?" #263 If you run out of special arrows you need to drop and requip your normal quiver to use it #19A dd bitmasking to walls #266 Add promo and feature graphics to Google Play #257 Pets should increase in power over time

Thursday, May 24, 2012

I recently added something called bitmasking to smooth out the walls and make them look like proper walls and not separate blocks of stone laid out to next to each other. Personally I like the bitmasked version better, but who knows, maybe you guys prefer the old way? Have a look at this before and after picture and let me know what you think:

Monday, May 21, 2012

Roguelike Radio #35 is out. In this episode Darren Grey, Ido Yehieli, Andrew Doull and Keith Burgun discuss Diablo and Diablo like games and how they relate to roguelikes. It's a really interesting episode and there's some really good discussions in the comments section.

Friday, May 18, 2012

I've been convinced to finally get a Twitter account, both for me personally (@bjornritzl) and for Dweller. In case you're a Twitter and Dweller user you may want to follow @dwellergame since I'll cross post there as well.

Tuesday, May 15, 2012

In Dweller there's a Bag of Monsters that you can come across while exploring the dungeon. When opened a charmed monster will pop up and fight along side you. It's the same as using a Book of Charms on a monsters, but it gives the warrior and ranger a chance to get an ally. Yesterday I added a Dog whistle and gave that to the ranger as a part of the starting gear. The whistle has an unlimited number of uses and when used it summons a dog (although you can only have one dog summoned at a time). The dog will work as any ally and it will try to attack targets adjacent to the player.

I am now contemplating if I should give the wizard the ability to summon elementals, but I'm afraid of the difficulty balancing this. The wizard is already powerful as it is.

There's a lot going on with Dweller and it will take a couple of more days before I can release a new version. I thought I'd share some of the things you'll come across in the next version:

The Crypt This will be a new side branch of the dungeon, filled with all kinds of undead. At the bottom of the crypt there will be a new mini boss for you to fight. There's going to be a new kind of undead, Ghouls. Ghouls will be fast and come in large packs so you better watch out and don't get caught in the open.

More goblins The main branch of the dungeon will host more goblins now that the undead are moving into their own side branch. Goblin Captains and Shamans will be among the new dungeon denizens.

The Ranger's best friend As was mentioned earlier the ranger will now have a fierce dog to fight along his side.

Tutorial dungeon New players will be able to visit a small tutorial dungeon to learn some of the basic concepts in Dweller. The tutorial dungeon will be accessible from the forest.

And of course a whole bunch of bugs have been squashed since the last release...

Saturday, May 5, 2012

I have released a new version of Dweller with a lot of fixes and new features. One of the main changes in 1.18 is the return of the mana stat. The wizard will from now on use mana to cast spells. Mana is regained each turn and fully replenished on level up. Chose your spells carefully and don't spend mana on costly spells if a more efficient spell does the job equally well. Players who prefer to play Wizards will either love me or hate me due to this change. The game will be harder as a wizard, but then again, the wizard was the easiest class in previous versions.

Other notable changes is a lot of tweaks to item probabilities. In general it has become easier to find some of the rarer items. The game does from now on also offer a full screen mode that can be enabled from the settings menu.

#221 Add mana/energy as a stat used by the wizard when casting spells #222 Add Mana Potions #223 Add melee thrust attack to Halberd #218 Add a length parameter to the Line area of effect #149 Remember position in lists when selling #109 Getting multiple books from bookshelves overwrites previous book #224 Add a thrusting attack to Halberds that hit two targets in a straight line #60 Add a fullscreen option #229 Increase probability to find enchanted items #230 Increased probability to find some rare items #227 Adjust chance to find enchanted bows #228 Evaluate chance to find Dwarven Mining Helmets #226 Book of Sleep graphics wrong #231 Fix freeze when leveling up while handing in a quest and getting a reward of an item type that is not yet equipped #232 Fix performance degradation when message box gets flooded #203 Rats do not move on the forest level when starting a new game #128 Make sure that artifacts are only generated once per game #130 Adjust out-of-depth monster generation #233 Adjust random artifact names

Dweller

Dweller is a fantasy roguelike for Java enabled cellphones. A version for desktop computers also exist, but the main focus of development is for mobile platforms. Dweller is designed to run on any MIDP2 or Android OS 1.5+ enabled handset.

Dweller is free to download and play, but it is also a one-man effort to bring a full featured roguelike to cellphones and other mobile devices. If you like the game please consider sending a donation: