The next stage

Plenty of things have happened since my last post on this blog.

I have seen a reduced effectiveness of my facebook ads (to be expected) but sales are still ~ok.  But I certainly got continuous great fan interaction and feedback, and even some from industry veterans.  Very glad to see fans so happy with the game.

Chapter 3 expansion work is in FULL swing, after some slow periods because of the busy dayjob, and some tricky creative decisions I had to make, and which led me take a small break and work a bit on my evil spinoff app.

But I have since negotiated an extended career break with my boss, and am now for at least 16 months a pure game developer!  Very exciting for me, and also for my whole family because we decided to spend that time living in Spain.

Work on chapter 3 is well progressed, I created the creatively challenging chaos plane sequence, functionality to include levers so I can have dungeon puzzles/riddles, and am currently working on ARENA functionality, where a NPC gives out non-lethal fight challenges.  With opponents, restrictions on magic or items, several waves, allies and rewards can vary to create a vide array of settings.

I also started a fair few maps, but there is definitely a lot more work to be done.  Given the move to Spain is kicking off next week I would say chapter 3 is a May thing.  But beta testing of specific parts will start in April.

Many thanks to all my players and fans!  If you want to support me on my journey to create ever more great games, please consider becoming a Patreon (freshly set up earlier today based on fan request)!

 

 

MONSTER LIST

This article is most useful if you try to achieve the species count achievements (and/or assassin guild quest).  I will not add monster stats to this list, that would be too revealing.  The order is the same as they will appear in your FOE log so you can see if there is a gap by matching the counter each has in yours.  You will definitely be missing #49,#87 and #90 though as that is not currently in the game (as a mob).

  1. wolf
  2. giant rat
  3. orc
  4. orc mage
  5. skeleton
  6. skeleton warrior
  7. spider
  8. archer
  9. huge spider
  10. tzoahl the horrible (spider queen)
  11. ghost
  12. zombie
  13. undead wizard
  14. giant scorpion
  15. strange rat
  16. angry tree
  17. large bat
  18. vampire bat
  19. crusher
  20. giant ant
  21. orc warrior
  22. orc warlord
  23. spectre
  24. lich
  25. young dragon
  26. chaos worm
  27. worm spawn
  28. chaos kempa
  29. vortex
  30. apparition
  31. red sphere
  32. blue sphere
  33. green sphere
  34. troll
  35. ice beast
  36. ice demon
  37. hunter spider
  38. stone golem
  39. pestilent slime
  40. slime blob
  41. vampire
  42. fire drake
  43. fire acolyte
  44. minotaur
  45. cute bunny
  46. overlord
  47. mature dragon
  48. elder dragon
  49. headless knight [not in game]
  50. skeletal beast
  51. baby floater
  52. floater
  53. master floater
  54. ancient floater
  55. RYLD
  56. mercenary
  57. conjurer
  58. DELUON
  59. ember orc
  60. ember giant
  61. ember orc king
  62. mud corpse
  63. wight
  64. ghoul
  65. banshee
  66. dark wizard
  67. ogre
  68. winged evil
  69. gnome
  70. gnome mage
  71. gnome shaman
  72. KRATOS
  73. ancient dragon
  74. undead dragon
  75. undead draconic warrior
  76. wisp
  77. warrior ant
  78. ant queen
  79. ant guard
  80. shadow beast
  81. wyrm
  82. arctodus
  83. bloated zombie
  84. hissing bug
  85. shadow pixie
  86. frost zombie
  87. baby dragon [not currently in the game]
  88. shadow warrior
  89. golden dragon
  90. warrior angel (only appearing as an ally via divine favor skills)
  91. diamond dragonThe following were mostly added in the chapter 3 update:
  92. spectral vortex [chapter 2, summoned by spectral dragon]
  93. undead archmage
  94. skeleton champion
  95. arch lich
  96. lurker [appears in chapter 3 but cannot be fought. it acts as a teleporting hindrance]
  97. decoy [created by players]
  98. magic table [arena only]
  99. magic chair [arena only]
  100. magic chair [arena only]
  101. magic chair [arena only]
  102. magic chair [arena only]
  103. lightning vortex
  104. clay golem
  105. mithril golem
  106. diamond golem
  107. BEN [arena golem boss]
  108. MICHELLE [arena golem boss]
  109. fire lord
  110. asbestos wasp
  111. mammoth
  112. evil mammoth
  113. Trudie [mammoth boss]
  114. mutant wolf
  115. mutant ant
  116. dark orc
  117. mutant scorpion
  118. evil forest spirit
  119. ice titan
  120. fire titan
  121. fire spirit
  122. frost spirit
  123. rock titan
  124. steel titan
  125. earth spirit
  126. nether dwarf [axe variant]
  127. nether dwarf [hammer variant]
  128. lava pixie
  129. nether dwarf berserker
  130. vampire lord
  131. nether dwarf shaman
  132. succubus
  133. lesser demon
  134. Chris the crypt keeper
  135. undead knight
  136. Chaos Demon Lord [end boss]
  137. hellhound
  138. chaos fiend
  139. chaos larva
  140. demonic mist
  141. demon hive
  142. nether sphere
  143. Tzoahl’s mother
  144. lost soul
  145. small mimic
  146. mimic
  147. RAGHMAR (a possible ally)
  148. VANEDOR (a possible ally)
  149. demon
  150.  greater demon
  151. storm sphere
  152. ARIKA (a possible ally)
  153. NEGAN (a possible ally)
  154. jade turtle (strong variant)
  155. jade turtle (weak variant)
  156. bug queen
  157. crawler
  158. mother of bunnies
  159. undead Ryld
  160. war ogre
  161. undead giant
  162. Ramath the female necromancer
  163. fighter
  164. barbarian
  165. ranger
  166. archer
  167. rogue
  168. monk
  169. cleric
  170. mage
  171. lvl 200 druid
  172. lvl 200 cleric
  173. lvl 200 ranger
  174. lvl 200 rogue
  175. lvl 200 mage
  176. lvl 200 barbarian
  177. lvl 500 druid
  178. The007griz (a possible ally)
  179. OZOB (a possible ally)
  180. evil ranger
  181. frost acolyte
  182. WORSTELL the giant ice troll (a possible ally)
  183. Nosos the master of poison
  184. BRIM SHATTERSMASH (a possible ally)
  185. DRAVEN BLADESONG (a possible ally)
  186. ARTELAS (a possible ally)
  187. SAMIRACLE MAX (a possible ally)
  188. dwarf master barbarian
  189. dragonborn fighter
  190. SYLUS THE DARK WIZARD (a possible ally)
  191. dark invoker
  192. demonic warrior (poison)
  193. demonic warrior (fire)
  194. demonic warrior (magic)
  195. demonic warrior (frost)
  196. demonic warrior (lightning)
  197. demonic warrior (lifedrain)
  198. lvl 500 berserker
  199. MADOC the arena boss
  200. Traz the vile
  201. giant snake
  202. kelpie
  203. grey steed
  204. nightmare
  205. unicorn

The DARK SIDE (spinoff)

Taking a small mental break from my chapter 3 work after churning out a solid 12 pages of conceptual storyline.

During this mental break I will try and flesh out my ‘Dungeons of Chaos – the Dark Side’ spinoff (actual current working title is ‘Dungeons of Chaos – Agents of Death’).

UPDATE 13 JAN 2017

With the functionalities (minion creation, run, progression) working and alpha tested thoroughly, have now decided on the main game concepts to make it fun.  And designed the user interfaces for:

  • minion creation / breeding

ui-breeding

  • mission selection

ui-missions

  • main character rank / progress / status (you play the evil acolyte)

acolyte-status

UPDATE 31 DEC 2016:

Completed the randomised map routines.  Will now use core maps (outskirts, dunes, dwarven structure) and overlay with many randomised blocks of content/rooms/structures.  Should make for good replay value:

dwarves3 dwarves1 dwarves2 dwarves4

UPDATE 30 NOV 2016:

Completed the scaling hero-encounter routine.  Heroes will feel like normal enemies in combat, however in the maps themselves they don’t spawn like normal mobs.  Hero spawns will become more powerful over time and be the main reason why an evil minion run will end.  Their actions and damage and accuracy also scale with their level, and some of their actions are level dependent.  So a level 3 ranger can summon wolves, but a level 20 ranger can summon a more nasty nature ally…

And that ghost in the picture is not safe either, while the barbarians’ axes are useless and the rangers’ arrows don’t hurt, those fighters know to bring a ‘vs undead’ weapon to the fight.

6pl-party

2nd UPDATE 25 Nov 2016: party creation and display conceptually works now.  Next step: fight auto behaviour, and inventory item slot restrictions (each monster type can/can’t use certain slots. so zombies wear armor and jewelry but don’t use weapons or shields)

concept-1 concept-2 concept-3

UPDATE 25 Nov 2016: am mostly through the minion creation/party compilation section.

You have a certain amount of power (increases with long term achievements).
It determines how many minions, and which, and feats, you can combine to form a minion party.
Your boss (aka evil god of death) will let you know randomly where he needs you to cause a distraction/destruction this time ( e.g. The horsemen tribe) so you need to cater for what you will be facing.
Achievements also unlock new feats, minions, locations.
Each minion party will eventually die, so a ‘savegame’ is just representing one minion party which will eventually perish. So you can save but not load. No backup/restore.
The main progress will be stored in the playerprefs file but also be backed up as a file.
That black guy is ‘you’, a black acolyte. Aka career villain in the evil god’s ranks.

aod_chargen

UPDATE 22 Nov 2016: started to put together some of the visuals:

agents-of-death

It will use the same engine but play differently. Essentially you are minions of the ONE (evil God of death for lack of a more detailed bio). He sends you in to do as much damage in the realm as you can.

You pick starting mobs, out of 6 possible ones (3 more are unlocked later). Zombie, ghost, Orc, werewolf etc.  But you posible can only take 2 creatures at the start, and earn the right to start with bigger parties later via achievements.

As you start to wrack havoc in the human and elf world, you face very dangerous encounters as there are people defending their cities, as well as parties of heroes chasing you down. You known, assassins with ridiculous speed, clerics that heal all the damage you do, tanks that defy your physical damage.

You try to achieve a certain reputation score, which with each run of a new party accumulates to a figure that allows you to unlock new locations or starting mobs. You can also unlock a number of specific achievements to get more reputation.

Within a single run you earn the favour of your God and can ‘spend’ that at altars you find across the land. On simple small advancements, or a levelup (granting more health, mana or whatever is typical for your character), or for a lot of favour, transform your character.

Typical transform path:
Zombie > frost zombie > ice demon > frost titan
Or
Zombie > undead mage > lich > arch lich
Or
Zombie > skeleton warrior > skeleton knight > skeleton king

Transform are expensive (which means you weigh off not levelling up any other of your 6 characters), sometimes ask you to sacrifice one of your other 6 as well, and you need to find the right altar. Which are randomised so no 2 plays will feel the same.

Some mobs have immediate benefits (good health, decent damage), others have long-term powerful transforms. Some can equip items, others can’t. So an Orc is easy to play, straight forward brawler and you level him up, transform him up to Orc Warlord and give him the great loot to wear. But he is kind of limited thereafter. A fire imp is totally wimpy, but if he is transformed into a baby dragon, young dragon, mature dragon, elder, ancient, undead, …

And of course each mob at each stage has different skills and spells.

Hero parties (your main enemy to fear) scale over time so it is just a matter of time until your run is over. Unless of course you figure out a way to become Uber-powerful and unroot the world itself. Did someone say Draco lich?

I will keep it very simple in terms of story, so the game is probably tailored toward those that played DoC and want something fun to continue.  Here are some of the transformation paths I have designed, including started mobs that are available right away as well as those you unlock later when you have ticked enough in-game achievements:

mobs7 mobs6 mobs5 mobs4 mobs3 mobs2 mobs1

Time to focus on chapter 3

I have still been adding content (spells, skills, tweaks, mobs) until recently, but will now focus on putting chapter 3 in place.  I have scribbled up a dozen A4 and A3 sheets of storyline paths and options.  Now that enough detail is there, I will start building it out which means I will not make further changes to chapter2 except bug fixes and maybe trying to get iOS cloudsave to work.

If you want to be involved in the next couple of months, there are kickstarter reward tiers that allow idea sharing, NPC creation, monster naming and many other things.  If you missed the kickstarter, message me over facebook and we can still get you in to the pledges at the same prices.

Thanks for your support and please spread the word, leave a review on the app stores and maybe gift this app to your buddies for birthday or Xmas!  On iTunes that works directly, and on Google Play you personalise a gift card with instructions for this app and it should also make for a great gift!  Beats most gifts guys usually get!

 

Thanks, Volker

DoC – looking back and looking ahead

It has been almost 3 months since I launched the Unity edition of Dungeons of Chaos.  About 10,000 sales, exactly 10,000 facebook likes on the page today, and about 400 ratings on Google and Apple store combined, average 4.8.

So what is my verdict on the experience so far?

Let’s look at what I meant or hoped to achieve:

1. Create a game that re-ignites the feeling I got when exploring and adventuring in Ultima 4 or 5, or Phantasie 3.  Those games from the early 90’s basically.

Well, I can’t really be the judge of that and have to look at the fan feedback.  This is a typical facebook comment I got a few minutes ago:

Jared Eleson Purchased and +10hr in. I love it! Reminds me of such great games from the 90s like the Exile series and Realmz. I love the exploration of the world and the customization of my team of adventurers. What a gem of a game.

So I think I nailed it.  VERY happy about that.  It is one thing not to disappoint people that I lured to buy this game making claims that it would, it is another to demonstrate that this type of games can work and hopefully start something here.  If a hobby developer like myself can do it, hopefully this inspires more talented people to make games like these.  Because I want to play them!  Yes, sadly, even though I enjoy playing my game myself once in a while, it is obviously not giving me any enjoy in terms of exploring or finding secrets and puns.  I like the combat challenges and I find playing it soothing after a long day of work.  And I LOVE the music. But to date everyone that wants to relive a retro RPG on mobile has a chance through my game.  Except one person.  Me.  So here is the challenge to all game makers out there, can you make one like this so I can play it?  Much appreciated.

2. Make it work on phone-sized screens.

This was tricky.  I shied away from that in Dec 2014 and released an earlier more clunky game version on iPad only.  and for valid reasons: the user interface for iPads has a known large physical surface, and known dimensional ratios.  So I knew what button size needs to be because I could tell how big fingers will be.  sounded good, did not fully work.  Looked odd on high resolutions, and I forgot about iPad mini.

So after hearing the pleads from iPhone and Android users I started the Unity build.  Main focus was solving that UI challenge, but I also had to port from XCode to Unity so 90% of code was re-written.  Which helped clean it up actually.  I have playtested it on various iPhones as well as on slightly bigger HTC One and GS3.  I find it ok, the main map has a zoom function which resolves issues there, leaving the main problem in the fight arena where you can occasionally miss the right tile with your fingertip.  Overall I have not suffered a fight loss from it yet, so I hope same is true for others.  A tactical fight arena needs to have a certain size, and I debated with myself for a long time what minimum size I should have.  I think it is acceptable.  Have gotten 2 bad reviews because of the phone size usability, that is it.  Everyone else probably also finds it challenging on smaller phones, but the overall excitement drowns that problem out.  And on bigger phones and of course tablets, it works quite nicely now.

So I am quite happy that I have managed to bring this type of RGP to phones.

3. Prove that turn-based 2D is not boring.

It isn’t.  It is befitting for mobile because you need to be able to put it away when you get that scorning look from your wife, and get it back out when you made it to the toilet to finish that battle you started.  And I also find it soothing that I don’t have to pay constant attention to something.  Everything is screaming for attention nowadays.  Every. Bloody. Thing.  TV ads all have musical emphasis added as if you are watching the end scene of star wars or the exorcist.  My game just says ‘hey, you are back. welcome. have a play if you want. remember that lich you need to kill? oh, don’t feel offensive today? fine, look for that mysterious bedroom of the mage that is said to be on this island’.

4. Let people play it the way they want to play it.

Success feels good.  So the game let’s you win quite often.  And does not punish you (too much) for dying, or carrying tons of stuff.  I don’t try to impose realism where realism is not fun.  People can grind, minmax, even cheat.  If that is what makes you happy, fine.  I created long trails, 3-wide, of chests in Ultima 3 which monsters cannot walk on just so I could traverse the land with monsters to the left and right of me.  It was fun.  Took me ages, but it was ages of dedication and then success.  And success = fun.  So why not spend 20 hours building that exorcist with +400% vs. undead from intrinsic ability as well as equipment, letting him fight unarmed (for the fun of it and also because it increases vs. undead damage!), use holy chant, cast holy smite, use determination skill (he was a monk in his previous life), just to see if the resulting powerpunch you can deal 5,000 damage to an undead dragon?  Heck, and make a video of it and post it to the community!  It is called a sandbox.  My game does not look like a sandbox because you cannot alter your surroundings like in Minecraft, but it nevertheless is a sandbox in a lot of respects.

5. Show people that games can be made and monetised without IAP and ads.

Apart from the few “why is it not free?” comments the vast majority really likes this approach.  Coupled with my level of responsiveness I think it creates a good proposition.  When people have posted that they saw the ad but are hesitant to invest US$4, I pointed them to the user feedback and reviews and all of them ended up buying it.

For various reasons sometimes people did not end up liking it, in which case I refunded them.  They really appreciated that.  Works quite well, as I am not trying to make money from people that don’t enjoy the game, and the good feedback probably fuels sales as well.

Now to ‘monetise’, this is tricky.

The only reason this game gets attention is because I pumped a lot of money into facebook advertising, and to a lesser extent Google Adwords (universal app campaign).  A few days ago I scaled both down to a trickle, because I don’t want to overspend and because I was never really sure how effective they were.

Overall, from every $1 of sales the app stores get 30% share and there is another 20-50% spent on advertising.  Hard to say the exact figure.  Have also paid for a sponsored podcast on toucharcade which did not cause as big a spike as I hoped, and tried to be mentioned in various game websites, to almost no avail.  Which is the part that I am kindof angry about.  When my earlier game version came out in Dec 2014 it got a bit of press here and there, and each time it caused a nice jump in sales (though nothing major, +100 or so).  This time, almost nothing of that.  The professional part of the gaming community is ignoring new RPGs like this.  Which saddens me.  And they are not looking out if any of the ones they ignored become worth mentioning later.  At present I have 10,000 sales and a 4.8 star rating.  Coverage? NIL.  That makes me mad.   I understand game websites also need ad dollars, but not having any journalistic ambition to see what is happening around them?  Speachless.  I was in the top 5 selling RPGs in the US and Canada for weeks. Still, no-one from these journalistic circles seems to browse that for good games they missed.

Because here is the deal: I would love to drop my well-paying dayjob and create games for a living.  But the attention-depriving metrics at play in the wider industry and community make that impossible.  Which is sad.  So this will have to stay just my hobby.  You know I care about this hobby, and will develop DoC in the near future, but if there was a more sustainable curation and publication of games, then I would be doing much more than that: I have plans for a DoC-themed true roguelike, I had started “RPG city” (Sim City meets Fallout shelter meets Heroes of Might and Magic ??), so many more games I would like to make.  Alas, not sure they will make it in this decade.

To leave on a happy note, I am very excited about what enjoyment people have gotten out of DoC so far.  Was never thinking that someone would try and make a party of 6 druids and try to learn the unlock skill.  Or farm elder dragons.  Or reach the end of the chaos rift. Or reach a skill level of 130.  People are enjoying it, and that makes me happy.

If you are interested in getting DoC expanded, please check out the Kickstarter campaign, it is the most imminent way how to support this game and what it can become.

Glimpses before completion

With all technical challenges finished (last one was area-effect attacks), I am now creating a few visuals to show how it all looks.  Below are animated gif’s that hopefully will work fine, about 2MB each, I will add more over the course of today.

These are captured on a Samsung GS3 running KitKat 4.4, and with touch tracing enabled so you can see the clicks made.

 

DRAGON throwing fire ball

PARTY finds some cool items

SECRET PASSAGE full of chests

new:

player casting fireball at enemies

 

Some still images, icon-based map buttons now and the final sizing of main character screen:

main character view zoomed in map view

Journey to bring Dungeons of Chaos to everyone

Normally I post little updates in the SNEAK PEAK section, but I think it is time to give a full rounded update on how the Unity port is going.

For those not yet across this, I am developing a Unity version of Dungeons of Chaos, which allows me to deliver it to all Android and iOS devices.  It will be a new App because otherwise it will overwrite the old App and people’s savegames there (the savegame files are not compatible unfortunately).

In the process, which I was expecting, I am taking a fresh approach on many of then data structures and fight mechanics, and making everything a lot less bug-proof (I hope).

As of today (4th Feb 2016), the game is in full beta on my own iPhone and tablets.  It plays very well and has 95% of the functionality established.

I won’t list the many things I have replicated, you can check out the SNEAK PEAK section for that.

Overall, I think the game will hit the App Stores in 4 to 5 weeks, with the following yet to be done:

  • replicating the random-dungeon routine.  Should take me 2 days to get this done. It is a vital factor for replayability and I have great plans for it for the future.  In the old DoC version, it was only the random orc hideouts that were really required to be explored.  the castle depths and random mines were optional and I am not sure how many people have dived deep into them.  Going forward I plan to put a few more in and make it worth the while a bit more as well.
  • replicating guilds.  This is a matter of designing a good User Interface.  Should take 1 day.
  • replicating content.  All the maps have to be re-done unfortunately, but at the same time it allows me to expand them so it should be good fun for people that have played the old DoC to explore the new one as some things will be different along the way.
  • testing all there is to test in terms of Android.  Not looking forward to this.  Have yet to install the SDK and test it out on a Samsung GS3.  Won’t be able to test many Android versions and devices for obvious reasons, so have to embark on some sort of external playtesting request.  To be confirmed.
  • replicating the opening cinematic scenes.
  • implementing more monsters.  so far have replicated about 20 of the 60, which covers most but not all possible monster actions.
  • implementing more skills and spells. have replicated half so far.
  • defining all the tile properties.  What can you walk through, look through and what does it say when you look at something closely.  a whole day of meticulously looking at pixelated art ahead.
  • ADDING new monster or skills and spells.  Trouble is time here, I may not add new ones in the first release.  Would still be as fun as DoC on iPad was with up to 50h gameplay, so this is something for a future release I think.
  • Lighting.  was not really a feature I got a lot of positive feedback for.  Realism is sometimes no fun.  But given I have a day/night influence to monster spawning, and a daily skill reset, I need to put something in to indicate the time of day.  If the atmosphere it creates is not outweighing the negative feedback in terms of not seeing enough, I may obmit this.
  • ADDING animations for certain tiles.  to be confirmed.  takes a bit of time to look nice.
  • replicating all the NPC dialogue data.  time-consuming as I am cleaning it up structurally in the process.  2 days of work in there.
  • I really want to ADD TRAPS.  But so far have to decide on how it will work without interfering with the casual play feel I like about my game.
  • CURSED ITEMS is high on my list to add.  the functionality is now there (you can’t remove it once worn. ) but I need to decide on the likelihood of when these are found, and what avenues to offer to rid of the curses, as well as what does an uncursed item is like (still have negative attributes??)

Hope that provides some insight.  If anyone is keen to playtest, send me an email or reply below and I will see if I am going down that path in the next weeks.  Below are also some screenshots taken from an iPhone 5C.  The first one is map view without zooming in.  Zoom is what most people will use on phone-sized screens though, but I prefer a wider view myself.

Kind Regards,

Volker

DoC Unity map view DoC Unity party view

DoC for everyone!

** UPDATE.  Below is a post I made in October 2015 when I decided to make DoC available to Android and all iOS phones and tablets.  Since then, Android app has been released on 1 June 2016 : GOOGLE PLAY STORE LINK **

 

Well, almost everyone.  I have exciting news: I am now in the process of porting Dungeons of Chaos to the Unity5 engine.

Which will mean DoC will be available to all iOS and Android devices (*insert boring disclaimer about old operating systems here*).

I had a few other game projects running but have concluded that DoC is where both my passion and my expertise lies, and I have just got so much positive feedback from fans that I think wideing the fan base by making it cross-platform is the way to go.

There are obvious challenges in doing so, which I was aware of before, and here is the latest take on them:

(1) User interface, how can I make it work on devices with screens as small as a smartphone?

This was my biggest concern.  In the existing build under XCode, it was always the question what would prevent an iPhone port.  Answer was the UI challenges.  Now, through gaining more expertise in Unity5 via my other 2 projects, I think I am comfortable finding a way.  There are still about a dozen buttons that are relevant while wandering around or fighting mobs, but I will probably make some dynamically disappear and reappear as relevant.  Bars with available fight spells and skills will probably slide in and out of the right side, so I can retain enough space for the fight arena.  The issue under XCode was that I did not even use buttons, I just used layers in the Tilemap and registered the clicks on the respective Tiles.  So this main obstacle is now theoretically resolved as I know what to do.

(2) Fight arena and map display, how can you accurately click the tile you want to click on a screen as small as a smartphone?

 Several solutions, all are technically possible I just need to make a decision: in overland map mode, I will introduce a zoom function.  problem solved.  everything you need to see from a distance you can still see when zoomed out, everything you need to interact with would be close by so zoomed-in view will be fine for that.

In fight mode, the issue is more complex.  In fact, the reliance on click-to-bash actions may be something I need to rethink.  I know the auto-fight option is everyone’s darling now so a zoomed out view would be fine since you hardly ever need to hit a specific tile accurately at all.  But for those boss fights where you use specific / daily / powerful skills and spells, I will need to think of a way that you can see a lot of the arena while still being able to select a target.  I don’t want to introduce target lists etc, that would be a major deviation of how the engine was built and take too much time to change.

So I will now go full steam into the Unity development, and hopefully in a few months many more people can enjoy Dungeons of Chaos.  Since I don’t want to remove the current DoC App from the App Store, I will probably give it a new name like “Dungeons of Chaos – next generation”, which will also hint at the Chapter3 development of having a bunch of adventurers trying to find out what happened to the initial set of heroes…

Volker

this is how the main inventory screen will look like for example, feels nice and readable on my iPhone:

(ignore the character pictures in lieu of items etc., I just put dummies into the images)

Unityprototype_inventory

Dirty coding (or: how performance issues turn into bugs who turn into nightmares)

I think it is only fair that I keep the community up to date on what these funny performance issues are that I keep mentioning in my release notes, and why there are comments around about some people experiencing crashes and odd issues.  It makes for a good read if you have a slight interest into coding as well, as it shows you how little things can have big impacts.

The background, bear with me this is going to be important:

In the very early stages of my game, I captured information about what monster spawners have used up how much of their monster count.  Each spawner emits a monster group, and if the party engages with that and wins, the spawner needs to check if it is allowed to spawn another one.  So this is saved in the savegame as each new game will start with zeroes.  Because the world was simple and small, I just captured the MAP, the spawnerID and the COUNT.  in a dirty way: I kept each in a separate array.  so the 3 arrays always have the same length, and the 1st entry in each will give you the number of monster groups that spawned and got killed from a certain spawner in a certain map.

A boss monster for example comes out of a spawner with the MAX_EVER setting of 1.  Skeletons near the undead tomb come out of a spawner with the setting MAX_EVER 100000 (never runs out) and MAX_AT_ONCE of 2.  Which means there can be 2 skeleton groups walking around at any time, if the ones walking around plus the ones killed in the past are not >100000.

Here is where the trouble starts:

Every time the party walks one tile in a map, all spawners check if they could be spawning something.  In order for spawner #3 in map #1 to check how many of its previous spawns got killed, it needs to go through the ENTIRE array to check if there is an entry with this map and spawnerID.  No problem early in the game, the maps were hand-crafted and had a maximum of maybe a dozen spawners.  But as of now, the game has 60 maps and some random ones can have >250 spawners.  So EACH step walking through such a large random dungeon, 250 checks are performed and each check goes through the entirety of all 3 arrays.  8^(

Performance wise, that is B*sh%t coding.  When people complained about performance issues recently, I noticed that.  2.0.5 kept the original data in its awkward form but on entry into a map creates an easy to search array with just the pieces of data relevant for this particular map.  That is what the “Loading” screen is about that got introduced with 2.0.5.  However even this could take >10 seconds for some people and that got me thinking something may not be right.  So I finally said this morning, let’s replace the awful array structure I had with a clear 2-dimensional array of MAP x ID where you can quickly query the right piece of data, and overwrite it as well. Because this means saving a new piece into savegames, I handled this very carefully.  On savegame load, my new 2.0.6 version creates a new array out of the old data.  I thought, for an advanced savegame there are maybe 2,000 spawner data pieces there, should not take long even if I let the game print out the number at each step.  I should see it ticking down from 2,000 to 1 pretty quickly.  I took a savegame that behaved slightly slow-ish, but not as slow as what some players reported, and loaded the game.  The ticker started at 180,000 and going down… I stopped it.

It became clear now that the performance issues people experience are the outcome of two things extrapolating each other:  a data structure that was sub-optimal, and a super large data set to start with.  And I had no clue why it was so large.  If you kill a monstergroup from a spawner that you killed one before, it would overwrite the COUNT, not add a new data set.  So 180,000 is far more than all the spawners in all my maps together (which is about ~3,000).  so there was something seriously wrong.  The arrays collected garbage data and it clogged up everything.

To cut a long story short, there is one other instance where data is added, other than when you kill a monster group.  When I created the undead wizard quest VERY early in the development of this game, I wanted to make it feel like something more than just killing a particular monster.  I wanted to make the skeleton spawners outside the tomb stop spawning, as if you had stopped a source of evil power.  By adding three data sets with count of 999999.  When I analysed my 180,000 entries I found that 99% of them were copies of these entries.  I have re-written that bit now.

I have now also replaced all bits of my code that used the old data arrays, so now there is only one [MAP x ID] array and the performance issues should disappear, as well as the odd long loading times, and even the odd long save times.  I saw that with this 2.0.5 issue some also experienced crashes when it says “saving”.  that is odd, I will need to see if I can reproduce it.  I can only imagine that maybe the file size became too much.

As with all such bugs, apologies for the inconvenience.  Hang in there, I will fix them as they come up.

Kind Regards,

Volker