Age of Yore

A web and mobile RPG at a low resolution

Play the Game | Forums | Twitter | Dev Plan

Development

Development related posts

Validation of Quests, Items etc

- Posted in Development by

One of the many time sinks in Legends of Yore was making sure everything was consistent across all the different data files and that everything worked. Basically, QA.

While QA is always going to be important, with a game the size of Legends (and the bigger size I'm aiming at for Age) the best possible thing would to have as many automated tests and cross checks as possible.

Enter VSCode - I'm lucky enough to now be writing in Typescript inside VSCode which among other amazing features is extremely configurable. Using the most basic of extensions are now have my data files being cross checked in real time as I define them. It's a wonderful sense of confidence that I can't make any obvious mistakes because the system will catch me.

This works essentially by running a Bash script that in turn runs some Javascript files through Node.js. Why do it like that? Well the benefit of coding it all in Javascript is I can make use of the main game code to validate things and load data files - simply by bringing in the output JS from the main game. This means not only my data files are getting check but the core code gets exercised at the same time. Triple win!

What sort of things do I check now?

  • Is the Javascript in the quests and actors valid? This is done by actually executing the scripts against the main code.
  • Are all item references in loot, shops and quests actually defined as items (theres a catalog for items and identity references linking those items)
  • Are all quest variables that are checked, also set somewhere?
  • Are all items that are checked for in quests also able to be obtained somewhere?
  • Does every actor put onto a tile map have associated definition and scripting?
  • Does every sign, gate etc in the game have associated messages etc?

Now remember this is all checked as I save files, so it's really like working with a full IDE - even to the point where issues that are detected appear in the problem panel and get red-lined in the file editors.

This approach is also now running automatic translations for all strings in the game code and data files - so everything is being translated (although poorly via Google Translate) in real time.

And there's one more thing.. where these validation scripts do find issues and where it's possible they generate placeholder data structure with TODOs for me to fill in.

So for instance, if while writing a quest script I just reference an item thats part of the quest - if it doesn't already exist a place holder item gets created and problems prompt me to fill in the associated name, description and tile.

It really is rather neat. Next up - how to template quests so I don't have to hand type the boiler plate every time.

Release 187 - Big One

- Posted in Development by

Just pushed version 187. This includes a bunch of new content and some new features.

  • Great wood completed
  • Out into the new area
  • More monsters
  • More dungeons
  • More quests (6 in total at the moment)

Go explore and let me know how it goes!

Art Board

- Posted in Development by

Requested to get some art work done to support the out of the game experience (videos, articles etc). Need some source material so knocked together this quick art board.

It's been 7 years since I worked on Legends of Yore and the technology world has changed - especially for me. I've had to learn a lot more tech and infrastructure in my day job and as I enter into the development of Age I'm applying what I can.

  1. It's all in Typescript. I love Java, I really do, I still use it every day but Typescript is just way easier for deployment. Tooling has moved from rubbish to amazing, and the language has developed so well it's like Java in Javascript. I built a very simply game engine in a few days (something I should probably blog about) and thats made everything so very quick.
  2. VSCode - again, I still use Eclipse everyday (and even JetBrains if I have to) but VSCode is really showing it's power as I'm moving through this project. From it's inbuilt excellent typescript support to its speed, to its astounding configurability. I really can't imagine using anything else now.
  3. Art - believe it or not I'm still using GIMP. It does everything I need but I'd love to find something that is more tailored to my spritey needs.
  4. When I built maps for Legends it was long winded and time consuming. The dynamic dungeons of course are all generated but the overworld that became more and more important was all handcrafted in text files. Enter Tiled - it used to be a bit of pain to work with - now it's fantastic. Kudos to the developers.
  5. Script/Configuration for everything. VSCode lends itself well here. I've always loved a good IDE that checks content as you're typing - now I can have that for all my game specific assets. From automatic translation of all strings in the game (as I'm typing), to validation that data is consistent, to pre-checking of the JS scripts that run the quest specific logic.
  6. Server side and error catching I'm still using PHP however. I went Node for a bit and hated it. PHP is cheap, easy and very well supported these days. I've yet to feel the need to move to anything else.
  7. Release Process is very simple. Since I'm focused on Progress Web Apps (something else I should probably blog about) my process is one script - run it and every version of the game on all platforms is instantly updated. Only those running in Offline mode will have to wait until they're online again - but then immediately be cached through ServiceWorkers in the Javascript.

Generally I'm super impressed how far things have come. Developing Age is a joy compared to Legends, I'm left with the only real problems that I want - creativity and game design.

Version 184 Pushed

- Posted in Development by

Just pushed a light release, Alpha 184. It has however got some good bits in, specifically

  • Shops are now enabled, though limited at the moment.
  • Quests are now in, a single quest focused on a vegetable is now available at a certain level.
  • Fixed up some of the areas where translations weren't being applied properly (signs etc)
  • Filled in some of the missing text and messages around the current world.

On the internal side my mapping continues, I now know for sure what flags are for and will be building out more of the world over the next week or so.

Have a go, let me know how you get on over on twitter.

I pushed v180 up to the main site yesterday and so far no error reports! :) It's been a long slog to get this version done since it contains so many fundamental things. The game is still very much alpha - just a thing to play around in at the moment, but here's some of the things that got added:

  • Ranged Combat - this includes arrows and magic. Wizards and Archers now make sense to play. Magic points and arrows get used up with the later being recoverable from the dead bodies.
  • Item Effects - Equipping weaponry, armour and items now contributes to the combat. Hitting someone with your hands isn't as good as hitting them with a sword.
  • Item Constraints - The game now checks whether your character is the right class and the right level to be using items. Nothing has a restriction outside of class at the moment.
  • Class Specific Statistic - Added the concept of Rage (for Warriors) and Focus (for Archers) in to the game. These will give you specials skills as you progress
  • Level Up - You can now gain experience and levels by killing monsters and exploring.
  • Automagic Translations - Following on from my translations work I've made the process automatically translate strings as I go along development. Google translate right now, so not exactly perfect!
  • Quick Slots - It's so important for the speed of play to have quick access to weapon switches and potions. You can now have 3 slots on the main screen with specific items in.

It's taken a few days to get all this stuff in and ship shape for release but it should all now be live on the main site. I've still got a stack of fundamental stuff to do before I can start building out the game world but progress feels good right now.

Finally I also made my game development plan public over on trello so you can see what I'm working on at any given moment:

https://trello.com/b/Rx0WuQqh

Hope this is of some interest to you guys, please let me know on twitter what you want to hear about.

Translations

- Posted in Development by

In Legends I got a long long way before anyone mentioned other languages. This made it really hard to add and as such community mods appeared to add different language. I hadn't how import it is to people to have their own language in RPGs - I guess it makes sense, I mean there is a lot of text!

This time I'm getting in early. I've spent my last couple of days of game dev time sorting out some way of getting a light process that means I can code and design everything in English (my native language) and have the tooling work out what needs to be done and prompt me to get it done.

There are 3 levels of processing that happen before I get anything out.

  1. Static strings I "just know" know need to be there. Most of this is the core website stuff.
  2. Scanning of the code looking for calls to my text processing methods. This is all the system messages.
  3. Scanning of the data files that drive everything in the game from names, to speech, to item descriptions.

Once that's complete I get a big chunky list of every string that needs to be translated. Then the interesting bit starts. I don't really have the money to have translations done at the moment and I certainly don't have enough interested parties to do it manually, so..

I wrote some Node scripts that process that list, create language specific versions (German and Spanish for now). They then compare these lists to the already created language files and work out what's new. So I end up with a small JSON file with just the new strings that need translation. Since these files are pretty small I can use the free services out there to do auto translation at zero cost.

No these translations aren't perfect but they are understandable.

Translated text

tl;dr You want to have a go, its at https://www.ageofyore.com

I've decided to make the game available as early as possible, to the point where it's not even quite a game yet. If anyone has time or interest I'd appreciate trying this early alpha out to get rid of any fundamental issues before the game starts to get bigger and I have to focus on content.

What you can do so far:

  • Wander around
  • Talk to People
  • Get Loot
  • Explore Dungeons
  • Fight hand to hand
  • Use items and equip
  • Local saves
  • Mobile Installs (be really interested to know how this works out)

Whats not really there yet:

  • Magic/Range combat (play as the warrior)
  • Loads of stuff
  • Cloud Saves
  • Quests
  • Shops
  • Levels/Experience
  • Did I mention loads of stuff

Anyway, if you have time, visit the game site on your browser (Chrome on Android, Safari on iOS) to have a go. It's at https://www.ageofyore.com

I found the coast!

- Posted in Development by

Development has been slow today since I have to make sure I'm doing my day job right as well as getting bits of game dev done wherever I can.

Lots of fiddles and fixes and server side stuff to make the game experience and debugging maintainable going forward.

I did however find time to go to the beach. Thats it, right at the bottom there.

enter image description here