Character Creation – Part 1

I want players to really connect with Daggerfall Unity from the start. Rather than dump you into Privateer’s Hold with a random starting character, my first order of business is to code up character creation and importing existing save games. This means you will be using your characters (new or existing) to experience the project as it grows. The below video shows progress far.

It will take several releases before character creation and importing saves gets to where I want them, but I’m iterating quickly over the problems. Once everything is working, I hope it will help you form a personal connection to the project. The other huge advantage in a save/load system is that you will be able to send me your save games with bug reports. This should cut down on time required to reproduce and resolve any bugs you find.

A lot of work was required just to bring things this far, and that doesn’t even include the big stuff you’ve already seen in action like the streaming world. To give you some idea of what’s happening above, here’s a rundown of new systems packed into that short video. Some of these systems are visible, others are ticking away under the hood.

  • An entirely custom state-driven UI system to render and properly scale Daggerfall’s 320×200 UI at any target resolution. This includes stuff like panels, buttons, outlines, text labels, message boxes, and so on.
  • A custom bitmap font system to render glyphs directly using Daggerfall’s native font files.
  • A messaging and event system for handling opening and closing windows, clicking buttons, etc.
  • ITextProvider interface and support classes to handle extracting native text resources from TEXT.RSC, book files, etc. This also forms the basis of translation features, which can implement ITextProvider in conjunction with a translation asset.
  • Extraction of native video streams and playback in Unity engine with all correct timings.
  • Initial race definitions. This is incredibly basic right now to keep development flowing. The goal is for final race definitions to be read from text files to simplify creation of custom races. Same goes for custom classes when the time comes.
  • Initial entity and effect systems. This covers stuff like player (and monster) resistances, immunity, special abilities, and weaknesses.
  • Real-time export of audio from DAGGER.SND into a Unity AudioClip for playback.
  • Started implementing an importer for importing vanilla Daggerfall save games.
  • Started integrating a serialization system for Daggerfall Unity save/load game.

I hope to have the first release available within 3-4 weeks with at least partial character creation working. New features will just keep being added from there. It’s obviously still early days, but that’s the shape of things to come.

Remastering Daggerfall

Less than 12 months have passed since I began work on Daggerfall Tools for Unity. In that time, my little project has grown substantially and attracted a lot of attention from around the world, including articles on Kotaku AU and Rock Paper Shotgun.

As word about Daggerfall Tools for Unity has spread, a lot of hopeful Daggerfall players have visited looking for word on a remake – only to find a set of development tools not aimed towards players. While everyone seems excited about the potential Daggerfall Tools for Unity offers, there’s a lot of latency between new developers coming on board and getting up to speed before they can offer their contributions. So as a developer community, we may be climbing a steady ladder towards remaking Daggerfall, but there’s very little for non-developers to experience and no clear direction from which a remake will come. I’m contacted by passionate Daggerfall fans almost every week and it breaks my heart that I don’t have more for them.

I want that situation to change. I want the average Daggerfall player to be able to experience progress and have a clear sense of direction that Daggerfall Tools for Unity can be used for remaking Daggerfall, and then some.

What this means is that I can’t just create a toolset. Raw building blocks aren’t enough. I also need to create a scaffold for remastering Daggerfall that includes everyone, developers and players alike.

So let’s get this out of the way. I will shortly release a burgeoning Daggerfall remake, proudly using the Unity engine and Daggerfall Tools for Unity.

For players, this means you will be able to download regular builds to experience the project as it grows. You will become part of the process, able to offer your feedback and constructive criticism to the betterment of the project. Developers win out as well, because you get a functioning Daggerfall remake – completely open source – to build on and change as you desire. For the first time we can all, developers and players alike, come together and contribute.

So where does this leave Daggerfall Tools for Unity? Nothing changes at all. My remake project will be built on the same Daggerfall Tools for Unity that everyone has access to. If anything, this will only improve Daggerfall Tools for Unity by creating a proving-ground for new features and increasing the number of testers.

I will soon release a new web site, solely for distributing the latest playable build of my Daggerfall remake. Daggerfall Workshop will remain as the hub of social activity and development news.

And the best news for players is there’s a swag of new features coming in Daggerfall Tools for Unity 1.4 and 1.5, all aimed at creating playable systems and filling in those blanks between a toolset and a game.

Feel free to leave your comments on this post, or head over the forum post where I’ve kicked off the conversation.

Daggerfall VID Playback

I’m going all-out in Daggerfall Tools for Unity 1.4. You will also be able to play Daggerfall’s VID movies right inside Unity to any texture you like. I’ve even provided a VID player panel for the native UI discussed in my previous post.

This is just a prototype, currently without audio or correct timings. I’ll show this off in a YouTube clip sometime in the future once its properly integrated.

Native User Interface Intro

The portable UI being developed for Daggerfall Tools for Unity 1.4 is coming together. Rather than use a uGUI simulacrum of the Daggerfall interface, I decided to re-implement Daggerfall’s native UI screen by screen, making it as true to Daggerfall as possible.

StartScreenUI

 

 

This has involved a fair amount of work to ensure everything is rendered at true native resolutions and scales proportionately to any screen size. Here’s an early test clip where I’m playing with the scaling, which runs in real-time.

Another challenge was pixel-perfect text rendering. The internal UI in Daggerfall Tools for Unity uses Daggerfall’s pixel fonts exactly, which required a custom text renderer. Below is the book reader UI flicking through The Real Barenziah. The formatting codes from Daggerfall are followed so precisely that badly formatted text even overflows in the same places it does in game.

Behind the scenes, the GUI runs on a state machine stack where windows can be pushed and popped as required. Each window is a hierarchy of components (panels, buttons, labels, etc.) that all follow the same consistent layout behaviour and handle fundamental UI tasks like firing messages when clicked. Everything is rendered and hit-tested internally at Daggerfall’s native 320×200 resolution.

Communication between windows uses a custom messaging system that runs independently of platform. The messages themselves can even work a bit like command strings in that they’re able to pass parameters directly inside the message.

And the best news is that you aren’t bound to using this GUI in your projects. It exists inside the Demo namespace, which means that nothing in the core library or API has any dependency on it. You’re free to use this GUI or ignore it completely to implement your own interface using whatever UI platform you’re most comfortable with.

There’s still a lot of work to do before it’s ready for Daggerfall Tools for Unity 1.4, but everything is taking shape very quickly.

Prefab Basics Tutorial 1.3

The Prefab Basics tutorial is now live on the Daggerfall Tools for Unity Tutorials page. This tutorial covers the following topics:

  • A summary of prefabs in Unity and how they are used in Daggerfall Tools for Unity.
  • Changing behaviour of dungeon lights by creating a custom prefab.
  • Creating a custom dungeon by instantiating a random block from a pre-made pool.
  • Placing a custom enemy prefab into scene.

If you haven’t downloaded the latest version of Daggerfall Tools for Unity yet, head over to the Download page and grab it now. This guy is waiting for you.

 

DFTFU Prefab Basics