The Big Short
Well, let me start by saying it's been fun, but I'm really tired now and I've lost all interest in Tales of Yore - I've decided to take the hard but brave step of moving away from it and look for a new hobby. It's been a fun ride....
No, not buying it? It is April Fools day of course. Let's start on this months round up of development activities on Tales of Yore. I'd like to say it's been a controlled, measured burn of a month but as has been the case so far it's been incredibly hectic. As always, if you haven't checked the game, go:
Players, Player, Players
This has certainly been the biggest growth month for Tales so far. The extra push on social and the release on steam, that I'll talk about below, has driven a lot of new players towards the game. At the start of the month we celebrated hitting the 4000 registered users mark. I always remind myself thats people that have tried the game, not people who are actively playing. A lot of players come in for an hour and decide it's not for them. I also keep in mind that includes any test accounts I make - which doesn't seem much but the growth between 3000 to 4000 accounts was quite slow and steady so they may have had an effect. Then this month we hit 5000. Then we hit 6000.
It's been excellent motivation for me to login to the game, to my home town of Aria and see players running back and forth getting on with their business.
I don't know who you guys are and most of the time I don't know what you're doing but I really think its awesome!
Dialects and Dwarfs
The Dwarf dialect is now learnable in game. It's quite a quest to find out how to learn and then another to go and actually learn it but players have been finding their way through (even if I did assign the wrong helmet initially! doh!).
Dialects in the game will unlock sections of the world as we go through. The game already makes mention of a couple of more races (The Bagu, and Halflings) and expect more to follow up.
If you do play the game, take a moment just to appreciate the animation that fades between dwarf and english when you learn the language. That's something that will be missed but it was really fun to get right.
The "small" Update
Yet again I did it to myself. Make a small update I said, keep it simple, do a few little updates it'll be easier. No, of course not. The update this month increased the land to explore by an additional 50% and nearly doubled the quests. It also more than doubled the number of objects configured in the game.
The Dark Forest Update introduces the wisps, the elves, a hermit and of course the actual Dark Forest. It also introduced the first of the procedurally generated dungeons which is a 2 boss, 10 level romp through dark rooms filled with new powerful monsters. It's also the first time I tried to "hide" something in the game and it worked. Several players reported wandering round simply trying to find the dungeon entrance, let alone completing the beasty!
The dungeon generation is pretty primitive, it's basically the same dungeon generator I used in Legends of Yore a long time a go. If anyone wants some details I'll write up another blog entry on that too.
Dungeon generation threw up its normal irritations, but especially because these dungeon generations have to be synced between servers and any players that are partied together. Since they're seeded it's pretty easy to generate the same dungeon and share that around. However, debugging a failed generation (where there is no exit, or a door is blocked) is a real pain. The game server is now recording all seeds it's used so I can regenerate the dungeons as needed for debug.
I think I'm going to need a more general dungeon validator to run locally as a unit test of dungeon generation. I'm not normally a big fan of unit tests but I think this would be a really good case to have them.
Well it actually happened, after a couple of months of planning and a few days of coding, my electron based web app got published through Steam for all platforms!
I have to say after the release went out I couldn't actually remember why I'd decided or been convinced to add it there. It just seemed like the "thing to do". Having released on Steam I can now tell you:
- It has a significant impact, this should come as no surprise. The number of additional players this month is due to 5 days of visibility on Steam. Thats not something tiny.
- Steam/Value will let you publish an Electron based games quite happily. Theres really nothing you absolutely have to change to make your game available on Steam, not even their APIs are a requirement.
- You can do purchases through Steam without using their native APIs, I go straight through their Web based APIs with the down side that the user has to login again through a steam web portal.
- Steam/Valve have a terrible web app. Steamworks is a big pile of dung surrounded by devils. It's terrible. They don't look to have updated it since roughly 1998.
- The process itself is not hard. It is not scary. You can "just do it".
Swap the Palette
A very smart cookie on the Discord for Minifantasy (the graphics I use) came up with the great idea of apply palettes to Krishna's graphics. The original art doesn't have a fixed palette, Krishna prefers the creative freedom of being able to use any colour. However, palettes can give a graphics set a vibe. After a bit of work (and help) I managed to replicate the work which essentially does the following:
- Take source colour pixel colour
- If we have already decided on a palette colour that matches, use that.
- If not, find the closest colour in the palette to the source colour and record it. Then use that.
It's brute force, it's not perfect, but it gives really interesting results as shown below:
Got the Look
A highly requested feature from existing players was the ability to use items cosmetically so they could get their style/look right while still wearing game affecting weapons and armour. Enter the cosmetic tab:
This tab lets you select items, which are visually equipped but not but in your equipment slots. This turned out to very easy to implement (it's essentially just another equipment list that is ignored for calculations) but had some annoying side effects on the website where the player's card is generated. Took a lot longer than I would have liked.
Somewhere to Call Home
I've also started on player housing though with everything else going on I didn't get it done like I'd planned this month. The plots are in game though so you can start working out which one you want to buy. Theres a Patreon perk here that allows them to buy plots within the grounds of towns.
I realise this approach of having plots may not scale too well, so I can imagine adding lots of additional zones for housing as time goes on. This isn't finished yet so I'll post more about it next month.
Static Analysis and Simulation - Too Geeky?
Finally one for the geeks out there. The game itself tries to be self validating. So when the server starts up (in dev mode) it runs a whole series of static analysis and simulation to cross check the games function.
What the static analysis comes down to is building a whole series of graphs representing recipes, items, places, NPCs, mobs, skills, stats and everything else that makes up the game. The analysis code then attempts to cross check that it's possible for a player to progress through the different levels of skills, be able to beat different monsters and different levels and be able to reach all locations in time.
The simulations are run to cross check combat and levels. As with most RPGs everything about progression of skills and mobs is based on a series of curves that are configured in the game. In theory this makes the progress comfortable and natural. However, you can never really tell until players actually come and try it out. To try and shortcut this process the game server runs a series of simulated players through the game on start up (in dev mode again of course). These simulated players fight monsters and progress their skills, using different weapons along the way. If there are cases where the player gets stuck or even have to spend undue time getting up a the levels of the game it reports it out clearly on startup.
I tend to think of these as unit tests for the game design, rather than the game code. The code is, for the most part, changing very rapidly so unit tests turn stale quickly. The test I run in simulation are more about design intent than functionality of the game - though they're still not yet system tests, in that they don't really black box the system - they test internal components.
As cool and technical as all the above sounds it didn't stop me finding a bug earlier this week where no mob could ever have hit points greater than 30. The players were saying the big bad guys were too easy and I was sure my simulations would have caught that - but no, the simulations weren't effected by the bug, only the true runtime was. Wonderful, lots of discussions and rejigging of statistics only to find the design was already right!
Anyway enough for now, thanks for reading and continuing to take an interest in the game. Let me know what you think in the comments
Leave a comment
Log in with itch.io to leave a comment.