Development

JRPG Class Suggestions

I’m assuming at some point that someone else may want to make a game with ZXodus. Therefore here are some alternate class suggestions.

  • Warrior — Ronin
  • Wizard — Shugenja
  • Priest — Gakusho
  • Rogue — Yakuza
  • Warrior-Priest — Samurai
  • Warrior-Rogue — Budoka
  • Warrior-Wizard — Artisan
  • Priest-Rogue — Shinobi
  • Priest-Wizard — Shaman
  • Wizard-Rogue — Merchant
  • Multi — Kyudoka

30 Years of Ultima III

Yes I know it was released in 1983. But the Atari ST version that I played didn’t arrive until 1986, and I didn’t play it until 1987. Anyway, I’ve decided to give myself a target deadline to finish U3.5. Not publishing it, but hopefully it will enable me to make some progress this year. To begin with, I’m rationalizing the number of groups and pages I’m involved in on Facebook. One side effect of this is that I’ll be moving some ZXodus][Engine documents to this blog. Happy 2017!

Timeline

I note that the Titans of Ether have a timeline. Here’s how U3.5 fits into it:

[71 P.B.]
The Stranger reappears in Sosaria and journeys with a party of adventurers on a quest to vanquish Exodus.

The lost island of Ambrosia is rediscovered.

The Stranger consults with the Time Lord for the first time and gleans the means by which he might destroy Exodus.

The Stranger and his companions destroy Exodus in his Castle. This triggers a violent series of cataclysms that rearrange much of the land, destroying several cities in the process. The destruction is likely the result of Exodus losing control over his transformation mechanisms, which he used to raise the Isle of Fire to the surface with earlier on. Due to his interface with the natural world being destroyed, most of the towns of the Lands of Lord British are utterly destroyed in this cataclysm, except for Fawn, Montor East, Moon, Yew, Paws and the capital town of Britain. The Tower of Knowledge and the Pillars of Protection are both destroyed. The cult of Truth disappears from history altogether from this point on.

General Jakher, commander of Lord British’s army, defeats the forces of Exodus in a massive battle on the Bloody Plains. Thousands of soldiers die on both sides, including General Jakher. Large catacombs are built beneath the Bloody plains to contain the fallen soldiers of both sides.

Nearly seventy years pass as the world recovers from the devastation and anarchy that Exodus had brought. Famine, plagues, rioting, and wars divide the city-states for decades. Lord British keeps the city-states together as best as he can.

It is noted that Lord British and many of his offworld associates do not seem to age.

Moon has become a despicable city full of unscrupulous wizards and dishonest mages. Erstam’s experiments have met with some success. He has barely aged since searching for the secrets of immortality. Erstam conducts shady deals with contacts in Montor East and Fawn. Both of these cities are crumbling economically and physically.

[0000 A.B.]
The current calendar begins.

City-states band together and form Britannia, electing Lord British as Sovereign ruler and Monarch. The Kingdom of Britannia is thus formed.

The system of virtues is established. Yew is given the representation of Justice, and Britain the representation of Compassion. Moon is cleansed of the corrupt mages inhabiting it, much to the dismay of Erstam, and the city is renamed to Moonglow, representing Honesty. Construction on five towns, representing a virtue each, commences.

The Council of Wizards is established, made up of surviving mages from the old Cult of Runes. The mages do away with the old system of magicka levels based on jewel types and embrace the eight circles of magic, expanding the usage of magery to its fullest extent.

Construction on the eight shrines of virtue begins by order of the Council of Wizards.

Azure, first of the great tinkers of Minoc, crafts the eight runes of virtue.

The Council of Wizards creates the eight coloured stones of virtue. Each stone is placed within one of the great dungeons. The wizards hope to stem the evil within the dungeons through the use of these magical stones.

Lord British commissions three Shrines of Principle to be built on the Isle of Fire, the former abode of Exodus.

“The Quest of the Avatar” is announced by Lord British. The quest is meant to offer a new way of life to the citizens of Britannia to find happiness through spiritual fulfillment.

Magincia loses sight of its embodiment of the virtue of humility and the city turns to decadence, materialism, and pride.

[0005 A.B.]
Fawn and Montor East are in near ruin and are abandoned. Erstam and the people of Montor East, Fawn, and many residents of Moon that lived there before its cleansing, protest Lord British’s system of virtues and leave Britannia for Serpent Isle after discovering the Serpent Pillars.

The three great keeps of the principles are erected: Empath Abbey, the Lycaeum, and Serpent’s Hold. Serpent’s Hold is built upon the ruins of Montor East.

Meanwhile, on the other side of the world, the gargoyles summon the spirits of Mondain, Minax, and Exodus to inhabit their three Shrines of Principle. Exodus’ summoning causes the Isle of Fire to sink under the sea, not to be seen again for over three centuries.

Sir Percy rids the islands near the Cape of Heroes of evil dragons and becomes the first member of the Order of the Silver Serpent. The Order of the Silver Serpent is officially established by Lord British, with Serpent’s Hold serving as the order’s headquarters.

Sentri is given the title of Baron and oversees Serpent’s Hold.

[0045 A.B.]
The town of Magincia is destroyed by daemons under the leadership of a powerful daemon known as ‘Virtuebane’, presumably due to the pride of its inhabitants.

Tile Set RC1

u35tileSet

Here’s the first release candidate of the U3.5 tile set. It’s closest to the EGA U4 set, but with some U3 (healing station, thief, cleric and serpent), U4 Upgrade Patch (demon, devil and text) and U5 (walls, floors, doors and ladders) influences. The tiles have 8×1 attributes (only two colors per 8×1 pixel block).

[Edit] For some reason this has the wrong version of the priest. It should feature an ankh, not a cross.

Situation Report

I’ve now listened to #SSSH 33.1. And here’s my response:

Thanks for all the nice things you had to say about my project (especially about the music). I’d just like to clear up a few things. U3.5 is an unofficial epilogue to U3 and prelude to U4. However you do not play the Stranger or the Avatar. You play a new character known as the Envoy. It’s not called Ultima for two reasons; 1) legal, 2) some people feel that calling it an Ultima is a bit presumptuous. It calls back as far as Ultima I and foreshadows events up to the end of Serpent Isle. Inevitably one or two things were missed in the summary. Here’s the status of the project:

The ZXodus][Engine that underpins the project has had a major overhaul as a result of me reading Jason Gregory’s “Game Engine Architecture”. The code is in the best shape it’s ever been in.

Things that are complete:
* Plot
* NPC list
* Tile graphics (2D top down and 3D dungeon)
* Music (engine and 11 tracks)
* Maps (world, settlement, encounter)
* Display systems (top down, dungeon, mini-map, cut-scene)
* World navigation (overview and mini-map)
* High-def character generation graphics
* Mechanics (classes, combat, magic, etc.)
* LOS algorithm
* LZ77/LZSS decompression
* Load/Save parties
* Pseudo-random number generation
* Feelies (manual, reference card, box art, trinket design, etc.)
* Console (keyboard in/text out)
* Character generation gypsy dialog
* Virtue/anti-virtue card graphics
* 3D dungeon engine
* Monster scaler (for dungeons)
* Player reference card
* Weapons and armor list
* Wizard and priest spells
* Moon phases.

Things that are close to completion:
* Character generator
* The four dungeons
* The sound effects
* The scripting engine

Supported platforms:
Yes, it’s written for the ZX Spectrum, but there is a ZX Spectrum emulator available for almost any machine you care to name, including (as mentioned in the podcast) the Nintendo DS, which gets its own U6-themed U3.5 skin for the ZXDS emulator (which uses the touch screen as a keyboard).

ColdSnap Audio

As part of the development of the ZXodus][Engine, which underpins U3.5, I’ve built an audio engine. ColdSnap Audio is a cross-platform music engine for Z80-based computers with AY-3-8910 (and derivative) sounds chips (as used by the Mockingboard for the Apple ][). In fact a friend of mine is looking at doing a 6502 port for the Oric, which might eventually lead to an Apple ][ version. The engine comes in at around 1.8KiB of code. It features ADSR envelopes based on real instruments (brass, choir, flute, guitar, harp, marimba, organ, piano, and strings). Note tables are generated accurately based on the clock frequency of the AY chip in each machine. This ensures that when you listen to the U3.5 music on the real machine (or an emulation of it) it sounds the way it does on the SoundCloud site.

[Edit] ColdSnap Audio is now available to purchase separately: https://zx.itch.io/coldsnap

Podcast

Happy new year!

If you haven’t heard it already, I strongly urge you to listen to episode 31 of the Spam Spam Spam Humbug podcast (http://podcast.ultimacodex.com/e/spam-spam-spam-humbug-31-the-dark-unknown/) which features Adam Burr talking about his Ultima-like tile-based cRPG: The Dark Unknown. Adam has made a heap of progress this year including a successful Kickstarter to provide new assets and art for the project. He’s also in with a good chance of picking up the 2015 Ultima Fan Project of the Year prize (http://ultimacodex.com/2016/01/vote-for-your-favourite-fan-project-of-2015/). I was particularly pleased to hear some positive feedback that also applies to some of the design choices I’ve made for U3.5. I also thought the questions were a pretty good generic set for anyone developing a game like this, so on that basis, if I’d been asked them about U3.5, here’s the short version of how I would have answered them.

What was the moment when you decided you wanted to make your game and what was the catalyst for that decision?

I had created my own 8-bit computer derived from the popular British microcomputer, the ZX Spectrum. I had even persuaded someone to add support for it to a popular cross-platform ZX Spectrum emulator. I wanted a game that would show off what it was capable of doing and I thought Ultima IV was a good fit. Somewhere down the line the plan changed to support the more commonly available but less powerful ZX Spectrum +2B and to do an original game rather than a port.

Was there an initial design document, and has the project exceeded your expectations of its initial scope?

There wasn’t what would commonly be thought of as a design document, just a lot of notes, although over time they have evolved to more closely match a traditional design doc. In terms of the scope, it’s entirely dictated by the hardware platform, the main limitations being RAM, the memory paging system, and the lack of a disk system. The advantage is there’s not much room for scope creep.

Were there specific design elements you wished to celebrate with respect to previous Ultima and Ultima-like games, and if so, why?

The top down view, because it lends itself to attribute-based graphics. The conversation system, because I also like text adventures. The fully realized dungeons from U5, because I also like dungeon crawlers. The music from the Apple ][ versions, because the Spectrum has an AY chip (as does the Mockingboard). The non-linearity and lack of a big boss from U4. The references to other episodes from Serpent Isle.

What are your favourite Ultimas?

Exodus, Quest of the Avatar and Serpent Isle.

Are there other early CRPG’s beside Ultima that have influenced your design and if so, how?

The early Ultimas are populated with real world and historical NPCs and I wanted to reflect that, while at the same time not make it quite so jarring to the player. Because U3 gave you the option to import parties from Bard’s Tale and Wizardry I got the idea that perhaps these games all inhabited a common universe.  But you’ll also meet characters from Bloodwych and Gauntlet, just because I happen to like those games. Bloodwych also contributed staircases to the dungeons which are used in place of ladders for practical reasons to do with the way U3.5 is coded.

What are your least favorite features from the early Ultimas and ones you are attempting to either improve on or completely avoid in your game?

Space travel, end of game bosses, per-party member food levels, reagents, shepherds, and schedules.

If you had limitless time and money, what features would you like to see added to your game?

Ports to other 8-bit platforms, including a Japanese version on the MSX.

What features that are not currently in the game are you planning to add?

I have a plan for what I think can be achieved on the hardware. It has some elements like a dating sub-game that I’m willing to cut out if the rest of the content overruns. Avoiding feature creep is essential to finish large scale projects.

What do you think it is about this particular class of RPG’s that makes them so memorable to people and what would you say to other gamers that may not give them a chance simply because the graphics look outdated or are not 3D?

The problem with photorealistic worlds is that they rob you of your imagination, which is infinitely better than anything even the best artist can come up with. It’s the reason text adventures are still popular. However, unless you were raised on these kinds of games when there weren’t any alternatives, it’s a hard sell.

Many would-be game developers have misconceptions about the actual time and resources it actually takes to finish even a 2D tile based RPG’s such as yours. It’s not hard to find countless other CRPG’s in this class that have been started by other passionate individuals, but that never get completed. Could you share some of the misconceptions you originally had about the development of your game and offer some practical advice to other game developers that may be thinking about embarking on a similar journey?

I think I actually avoided most of the misconceptions. Before I got going I’d read a blog on developing this kind of game for the TI99/4 and so I knew it was going to be a long slog. Here are some tips I’d offer:

  • Read Jason Gregory’s Game Engine Architecture.
  • Know your target platform(s) and design accordingly.
  • Don’t write your own engine unless there’s a really compelling reason to do so.
  • If you’re a lone coder, use Unity. If you have a team, use Unreal.
  • Use scripting for the game logic.
  • Write the plot first.
  • Use placeholders for as many assets as possible.
  • It’s ok to work on final versions of assets when coding is getting you down.
  • Involve the community.

What were some of the challenges you faced?

Predominantly the challenges were the constraints of the chosen platform. The other big challenge is just to keep going with it when it feels like it will never be finished.

What proved to be harder than expected (and/or easier than expected)?

I suspect the hardest bits are still ahead of me. Although it took quite a while to get it fully tested, the dungeon display system, which uses tiles and groups, was actually fairly easy to write.

After you complete Pax Britannia, what can we expect next from Zedex Dragon and Source Solutions?

I’ll be trying to encourage other people to use the ZXodus][Engine to create their own cRPGs. And I’m interested in doing something with virtual reality.

Creating a Game Engine

Apologies for the lack of development blog updates. Hopefully that’s going to change in 2016. I’ve now completed my first year as a video games industry insider and I’ve learned a lot that I hope to be able to apply to the development of my game engine and the Pax Britannia game. One book I read this year that has had a major influence on the project is Jason Gregory’s Game Engine Architecture which I wholeheartedly recommend to anyone looking to develop video games. One tool that is going to be invaluable in making the engine accessible to third-party developers is Bogdan Drozdowski’s asmdoc Perl script which uses JavaDoc style tags to generate API docs from assembly source. It’s CPU agnostic so it’s great for retro-projects. I’m also incredibly grateful to Klaus Jahn, author of many modules for the ZX Spectrum, who has graciously offered to write some asset processing tools for getting original content into the format used by the ZXodus][Engine. So where is development at? Well I’ve been doing the occasional bit of work on different parts of the project over the course of the year. The big announcement was getting the world map working, although I still haven’t hooked it up to the rendering engine. A minor update was the increase in the color resolution of the character generation screens (from 8×8 attributes to 8×2 attributes). Most of the work has gone into restructuring the source code to make it easier to manage. Along the way I added support for a devkit version of the target machine with an additional 32K ROM that can store debug code (invoked by an NMI switch). As neither this ROM not the NMI switch are present on the real machine, there’s no need to have separate debug and release builds. I’ve now been developing an Ultima-like game for seven years so I think it’s time I set a delivery date. And I have. But I’m not going to announce it, because allegedly 70% of projects that announce before they are complete never ship, and this one has already been announced so I don’t want to make things worse. I’ve also recovered a few stray bits of code that I wrote and then forgot to put in the main project folder. Which means I’m finally in a position to hook up the keyboard reading code to the screen printing code. When that’s done I’ll implement the talk system. And when that’s done the game should be playable from start to finish, because currently the “win” scenario of Pax Britannia can be achieved through talking alone. This has the added advantage that the story can be play tested while I work on other things (like an updated version of the character generator). So with that in mind I may actually be looking for play testers at some point next year. However, I want to keep the number small, because although those players will be getting early access to the full plot, it will be an entirely text based experience and potentially much less rewarding than the final fully polished version. But if you want to register your interest, please do so.