Busy doing Nothing...


It's that time of the month again, or rather its a bit later than normal. It's time for the Tales of Yore round up of development this month. There's a fair bit to cover but as always, if you haven't already: 

Play Tales of Yore

(and support on Patreon if you like)

Confidence Levels Critical

I did manage to do another video dev log this month. If you can bear to listen to my voice then it's here for your viewing pleasure (or displeasure).

I'm expecting to do another one or two in the near future since there have been a couple of requests (among the many requests to STFU).

Page Turner

Sometimes it's the little things that really matter, in this case text. Tales is a very text rich world, there a lot of reading you're expected to do. Right at the start of the project I tried using some truetype fonts, only to find rendering of fonts in the HTML Canvas varies a great deal between browsers. It's like the last bastion of incompatibility. So, in my wisdom (read: rush to get something done), I decided to simplify and render the text myself. Simplifying the task further, supporting only upper case characters. And... its been fine, not really caused any issues at all but never "felt" quite right.


This month I started to think about translating the game into other languages properly. This will require a lot more letters along with some special symbols. Since I have to touch fonts anyway, I decided to try and get back to having a full character set. One of the guys over on the minifantasy discord pointed me at this font - Micro Chat - which they'd commissioned for their game Newcomer and subsequently released to the world. It's fantastically designed and still fits in my rather tight space constraints. 

I was shocked how much having different case letters changed the feel of the game for me. Of course many of the players immediately turned the feature off and went back to full caps everywhere!

Hardcore Henry

Something that players have been asking for was a way to play the game with the guard rails off. Strangely, Tales is generally seen by new players as quite harsh, when you die theres a chance that you lose anything you don't have equipped - and the chances of being killed are quite high. However, this hasn't stopped a decent percentage of players wanting a "hardcore" mode.


Hardcore (or Hardyore) mode was added this month and essentially means you're on your own and should you die, it's the end. That is - you can't trade, share or join a party with normal players. If you meet your death then it's game over, you have to start again. While this seems harsh players are taking great pleasure in playing this way.

Hark back to the past

Back in days of old (say about 10 years ago), a game I wrote (Legends of Yore) had an infinite dungeon. Every level of the dungeon was generated with more and more difficult monsters. Players have asked for this same experience to be replicated in Tales. As of this month we now have the "Challenge" dungeon. Each level introduces more monsters from the around a the world (including bosses) and so eventually you hit levels where the hardest boss in the world is around every corner. 

As you can imagine certain players have already been down to that level and reported back. What's kinda neat about this is that as the game grows the challenge dungeon will as well. New monsters in the world = new monsters in the challenge dungeon.

What really bakes my noodle? Some players have started combining hardcore mode with the challenge dungeon, daring to see how far they can take their perma-death characters through an ever more difficult dungeon. Nuts.

Whats going on?

A few months ago I started adding some functionality to let me analyse player behaviour and track how the content was being played. It made for interesting reading and helped me decide on a few next steps. This month I've added a stack more tracking.


The tracking comes in two forms. Static analysis of the data captured for players signing up, travelling the world and giving up (eventually) - and the more dynamic analysis of the events of the players existence (how many trees have they chopped, how many times have they banked). These secondary dynamic data are new additions this month to support achievements (see below) but have doubled up as new source of statistics and analysis.

Leading the Way

Also extended this month, the Leaderboards. It's been a source of great enjoyment for players to beat each other on the weekly and all time leaderboards on the main website. Adding in the 7 days vs all time option was a good move, it keeps it fresh and interesting. The first new addition was to show the leaderboards in the context of hardcore players. This gives another complete dimension to the game. 


I tend to think of this in terms of the programming paradigm AOP (Aspect Oriented Programming). When you're adding features to a game you're often adding a little bit of extra content for the players to absorb - lets say a new type of spell or similar. It's good to add these things but they don't grow the game that much. Wherever you can, adding "aspects" is a better value for your hard earned coding time. Aspects apply across the whole of the game's current content. For instance, adding Hardcore mode meant the whole of the game's content could be played and enjoyed in a different way. Likewise the Challenge dungeon, to a lesser extent, made use of all of the existing monsters - meaning that it grows with the game content. These type of additions give players much more to do without requiring so much effort on the development front. It's win-win baby!

The second piece of the leaderboard extension was to add tables for the challenge dungeon, number of player deaths (yes, really, players love to track that) and the number of boss kills (these get quite high while people are trying to get rare items). Again this aspect of tracking applies across the whole of the games current content and anything that gets added in the future - so has a high impact on player's enjoyment.

Gotta catch um all

Next up this month was achievements, something that I didn't really understand before, but Steam users expect to be in every game (it's a real down vote if you don't). As always I didn't want to leave anyone out, so the achievement system is baked directly into Tales - you can see achievements on your player page - and then mirrored over to the Steam achievements framework. Theres 30+ achievements now and the framework is nicely in place to let me add them easily with each content update.


The biggest thing to talk about here is the reminded how bad the Steam APIs are. Their web UI is really awful, but it's made to look almost decent as compared to their APIs (I'd call them REST APIs if they were even close). It's amazing to me that a business as large as Valve's still can't build (or replace) decent APIs for integration. I integrate stuff for a living, I see a lot of APIs, and Steam's have to be some of the worst.

Anyway... achievements all work now. It was nice to add all the event tracking for achievements since it means I'm capturing more and more information about the player experience - which hopefully leads to me understanding more and improving more.

Cheaters Never Win

Last month I had a rather insulting interaction with a couple of players. One felt that their opinion was more important than everyone else, acted like a total ass, then got upset when they received the same treatment back. The other just backed the wrong side and then couldn't back down. In general it was pretty upsetting to have to deal with, but trying to take whatever you can from every interaction, what they were initial being opinionated about was "botting" or "autoclicking". 

Some players get to a point where they want to have all the resources without actually having to play the game, so that when they do play they can just get on with the active bits. Other players get upset about this because they feel like the people using bots or macros of whatever are cheating. Personally I think thats the wrong reason to get upset, in Tales no one really gets ahead of other by doing this, but I can understand the sentiment. What bothers me about it is that when you want to build a positive community, having players wandering around that seemingly ignore chat messages leads to conversations stopping - why try to chat if you never get a response? 

One of the things I really want Tales to be is a community based place. So, while I don't agree that a player can turn up, say someone is botting and then stamp their foot until they get the other player banned, I do agree that botting isn't positive to Tales. So, how can it be stopped objectively and fairly. The crux is the system needs to automatically determine who is likely to be botting then check them in some non-intrusive way (as not to upset false positives).

Enter Hopkins, my witch/bot finder general. Hopkins is my own bot code, that looks at players and find repeating patterns of actions. If doing the same thing over and over - and you're doing it very consistently - then you might be a bot. Hopkins knows this and detects it. He then presents a challenge to the player (but not too often as to avoid getting annoying). The player has to simply respond to Hopkins with one of 5 emotes. Match the emote that Hopkins requested and he'll leave you alone for a while. 

Don't match it in time? He'll send you a random warning. Don't respond to the warning? Then you're kicked off (and soon to be banned!). So far so good, Hopkins picks them up, and kicks them off - false positives are rare and justified for the most part. 

Nip Tuck

I keep wondering how I can make money from Tales. I don't want to try and rinse people for money by adding pay to win features, or punishing people who don't pay. I keep getting told "cosmetics" are the way to go - originally I was like, what, make-up? It turns out people meant items that you put on your character for fun but have no impact on the gameplay.


This month added the Tales of Yore Cosmetic Framework - or as I call it, dress up time. Cosmo the merchant has arrived in several towns and sells the first two cosmetic packs - the angel and devil outfits. These packs are free to subscribers and patrons and cost $2 per pack for everyone else. So far there have been a few sales but I guess we'll see in time how it pans out. 

I'm intending to add a new cosmetic pack each month and retire an existing one. This means that there will generally be two packs available and some packs will only be available for a short time before being gone forever!

Change as Good as a Holiday

I've been getting a bit distracted recently where code is concerned. The problem with being as in love with technology as I am, is there is always something new to play with. Staying focused on the same project for a long time is really really difficult. The other downside is that the skills required at the start of a project are very different to those further down the line. If you stick with one project for a long time you don't exercise certain bits of your coding brain. All of this is of course justification for me to have a little bit of fun writing something different.


Mini-Fantasy released a new scifi asset set, and given my love of all things Space Hulk, I just about had to go write a quick and dirty space marine based tactics game. Guide your marines around, shoot the aliens, enjoy the dumb sound effects. You're welcome to give it a go:

Player Salvage Rights

More than anything it was great to exercise the "super speed hack mode" that building a little project like Salvage Rights is. It took about 15 hours of build time all in. It also found a few bugs in my common code (the Gute library) which, of course, fixes some stuff in Tales by proxy.

Wiki Wiki Wild Wild West

Phew, thats a lot of stuff. Final thing for this month's update is the Wiki. Now this was an interesting realisation for me. Players of MMORPG these days expect to find a Wiki (normally on Fandom) for any game they pick up. They use this as a backstop for getting stuck on quests or finding rare items or whatever. I've had quite a few reviews that talk about getting stuck as though it's the worst thing in the world (I've always quite liked the challenge) and I think this is down to Tales not having a complete Wiki.

When you think about it though, it's quite the chicken and egg story. New players want a Wiki so they can use it when they get stuck. If they have a wiki they'll stay around longer. Wiki's are written by players that stay around longer. So which comes first, the Wiki or the Players? 


To remedy this situation (and to stop the infinite loop in my brain) I've updated the Tales release process to have the option of producing Wiki pages that cover items, locations, the map and quests based on the game data itself. First, this means it's accurate. Second, it means it gets updated regularly. Finally, the quest guides are based on the static analysis I talked above in previous devlogs - the engine actually reverse engineers the steps required to complete the quest from the game scripts. This acts as yet another validation step in making sure things are possible and complete. Neat-o!

The generated pages are indexed over on the Tales of Yore Wiki.


And thats a wrap! This month was pretty good in terms of progress and I'm really looking forward to doing a bit a marketing push now that so much of the new player support infrastructure is in place. As always, thanks for reading, congratulations if you got this far, and let me know if theres anything you want to know about in the comments...

Leave a comment

Log in with itch.io to leave a comment.