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

LypyL Action Enhancements – Updated

Below are the awesome improvements LypyL has made to the action system. Billboard actions and touch-based actions are now working. And for the first time we can teleport through those terrifying red doors. Great work man, great work.

Roadmap July 2015

Roadmap July 2015

With 1.3 freshly released, it’s time for me to update my roadmap again. While my overall heading remains constant, the beats and rhythm of my short-term goals are always in flux, constantly evolving as I converge on solutions and new priorities emerge. I find that right after a release is the perfect time to step back and consider my next move. So let’s take a look at where I’m up to and what’s on the horizon.

Maintaining 1.3

To start with, I’m wrapping up tutorials and fixing any bugs discovered in 1.3 release version. I plan to support the stable 1.3 branch right up to the next major release. Any minor bugs will be fixed quickly, followed by an incremental release. It’s possible some of the key features in 1.3 will be refined, but no major changes will be made at this point. Anyone waiting for 1.3 to settle down can confidently get started with it.

For those of you waiting on tutorials, Prefab Basics should be up in the next day, and Streaming World sometime next week. I’m hoping all the tutorials earmarked for 1.3 will be completed in next 2-3 weeks.

Work In Progress Branch

In case you missed it, there is now a work-in-progress branch on GitHub. New features will be added first to the work-in-progress branch and only promoted to the master branch once they become complete and stable. At which point, I go into maintenance mode for the new release and start work on the next major release. This is a much better workflow and should result in faster turnaround of fixes in maintenance releases. It’s very likely you will see a few more version points added to 1.3 before it’s done.

Developer Focus

Every major release (two betas, 1.0, 1.1, 1.2, 1.3) involved heavy changes to the underlying code. This often broke your work and was very frustrating for you. I’m sorry about that. Hopefully 1.3 marks the last major paradigm shift for some time (jumping to Unity 5 was a big one), and the new event and prefab systems help you create your projects without needing to modify the core tools.

I plan to continue this developer focus moving forward by adding more events, prefabs, interfaces, editor scripts, etc. to help you work, and make fewer breaking changes to the underlying code base. It’s obviously inevitable this will happen sooner or later, but hopefully not to the extent seen between 1.0-1.3.

Feature Focus

To date, I’ve worked very broadly across the entire spectrum of Daggerfall. This has been essential as much work was involved in setting up content readers, building a bridge into Unity, and seeing the entire game world up and running. Those system are huge, difficult, and take a mountain of work to pull off. And they are so interdependent that it’s necessary to build all of them before any of them really work. This is where most Daggerfall projects stall and fail. And guess what! We’ve pushed past that like a boss and still have plenty of steam out the other side. This is where the really interesting stuff kicks in and all that hard work pays off.

Starting with 1.4, I’m going to focus on a very specific set of features each release, plus some iteration on previous features. In this way, we climb the mountain one challenge at a time. The work becomes easier because the next goal is always in sight, then the next, and so on until the top.

Roadmap 1.4

Work on 1.4 has already begun. The only thing I haven’t shared with you are my plans for this release. Here’s a list of everything I have either already started work on, or plan to include. And the good news? From here on, everything is geared to helping you add real gameplay features.

  • Daggerfall save game import. Yep, the ability to read vanilla Daggerfall save games and import this data.
  • Unity save games. The foundations of a Unity save-game system will be implemented for new demo titles. You can use this, ignore it, or extend as needed.
  • Real player scripts. With stats, special advantages, special disadvantages, reputations, etc.
  • Real monster scripts. With all their properties read straight from the game files.
  • Real combat formulas. For real melee combat. Spellcraft will be added later.
  • Item and loot table support. Play with real Daggerfall items and their properties. Custom loot tables for monsters and dungeons.
  • Starting work on effects system.  At first this will only be complete enough to support player and monster scripts, and melee combat. Spellcraft will be added later.
  • Demo character sheet UI. With inventory and paper doll support.

Some of you may be wondering about the text & translation features I had originally planned for 1.3. Unfortunately the Unity 5 release dropped a huge spanner in the works and a great deal of effort was involved bringing everything up to par with the new paradigm. In that time, I have rethought my approach toward text and translation based on feedback from other developers.

Obviously this remains an important consideration, but I no longer believe it prudent to add a locked-in translation system to core tools. The problem with this approach is it limits options for other developers who may wish to use some other translation system, or a different approach entirely.

The original system as planned would also have added some complexity for developers who just wanted to get stuck in for their own amusement, and are not concerned about targeting multiple languages. Obviously larger projects that want to localize have a plethora of options available in the Unity landscape alone. There is simply no need for me to re-invent the wheel here.

So I’m going to keep doing what I do best, which is provide hooks back to the game files and the means for other developers to easily suck out the data they need. This data obviously includes text, and will have everything a developer needs to pair with their preferred translation system. This set of features are now part of the 1.5 update, which includes quest file support.

Conclusion

That’s everything for now. As usual, Daggerfall Tools for Unity is a constantly evolving beast and this is all subject to refinement. However the journey remains the same. I may not be remaking the game personally, but by Julianos I’m going to create all the moving parts needed to help that become a reality, and with your help it’s practically inevitable.

So if you’re a developer who loves Daggerfall, get started today and help show the world what can be accomplished!

Daggerfall Tools for Unity 1.3.31 Released!

Release1331

Daggerfall Tools for Unity 1.3.31 release version now available!

Key features of this version are:

  • Full Unity 5 compatibility.
  • New material and texture system.
  • Using Standard shader everywhere possible.
  • Simplified custom shaders for tile maps and billboard batches.
  • Significantly improved batching and performance when using new Deferred path.
  • Improved billboard batching using geometry shader, now supporting animation.
  • Event system.
  • Started using prefabs for layout of non-static items such as doors, lights, and enemies.
  • Many bug fixes and improvements.
  • New Feature Gallery.
  • New Tutorials.
Download Daggerfall Tools for Unity - 1.3.31

New Tutorials

As part of the 1.3 release, I will be refreshing all existing tutorials and writing some new ones to round everything out.

The manual has now been retired and rolled into a brand new tutorial called Getting Started which covers the extreme basics of setting up a new project. This will be the new starting point for any Basic and Intermediate tutorials. I was covering a lot of the same ground at the beginning of each tutorial, and from now on I can just reference beginners to the Getting Started tutorial instead of repeating steps. Follow-on tutorials will be a bit leaner as a result.

Following is a list of the tutorials coming online for 1.3 release. Links will be added as each tutorial becomes ready.

Basic Series 1.3

Intermediate Series 1.3

  • Streaming World (expanded)
  • Distributing Builds

Advanced Series 1.3

  • Using Events

The above will keep me busy for a few weeks. If you think a tutorial is missing from the lineup just let me know. Depending on complexity, I can add it to the lineup now or some time after 1.3 launches.

Also please let me know of any problems you find with the documents.

DFTFU Developer Preview 1.3.29

Edit: Release version 1.3.31 now available.

Daggerfall Tools for Unity 1.3.29 is now available to developers for testing. This is a close-to-final version that still has a few kinks to iron out. However it should be close enough for developers to start testing and migrating their work.

The key new features of this version are:

  • Full Unity 5 compatibility.
  • New material and texture system.
  • Using Standard shader everywhere possible.
  • Simplified custom shaders for tile maps and billboard batches.
  • Significantly improved batching and performance when using new Deferred path.
  • Improved billboard batching using geometry shader, now supporting animation.
  • Events at key locations.
  • Started using prefabs for layout of non-static items such as doors, lights, and enemies.
  • Many small bug fixes and improvements.

I did mention there were still a few kinks to iron out, so I value any feedback on this version prior to full release.

I am also working on a full documentation refresh and new tutorials for some of the new features (like events and prefabs). This will take a few weeks to complete. I am planning full online API documentation starting from release 1.3.

Happy testing! If you have any feedback, please use the following forum thread.

http://forums.dfworkshop.net/viewtopic.php?f=7&t=74