The latest update for Daggerfall Unity is now available on Live Builds page. If all goes well, this will be the last release under the Alpha tag and there will be a minor update soon into Beta. That’s right! Daggerfall Unity is feature complete and I marked off the final items on Alpha roadmap the other day. This release is a pre-beta test just to catch any last minute showstoppers before rolling over.
Does that mean Daggerfall Unity is done and dusted? Not quite yet, but it does mean work on new features is now at an end. From this point the only changes will be bug fixes, minor refinements, and incremental progress to modding/localization support. This is the real final stretch to 1.0, which I hope to reach in 2021 once I’m happy with overall state of game.
For the last year or so communicating where DFU is up to has been a challenge, as it’s a really a couple of projects in one. The core goal of the game has always been to recreate classic Daggerfall with some refinement and quality of life features. Then we have loads of features unique to DFU like epic mod support and some wild and wonderful core features that emerged along the journey (such as personal torches and advanced climbing). This means DFU is a also a superset of classic Daggerfall, and is why I often refer to it as Classic Daggerfall Plus. It’s the same game, with more.
This led to a situation where the core game has been essentially complete and very playable for over a year while these superset features continued development. We stayed in Alpha because DFU as a whole still wasn’t done. This in turn created confusion as people wondered how finished the game could be if it was still considered Alpha. This undermined what an incredibly functional and playable bit of software Daggerfall Unity really is. So it gives me great pleasure to finally tear off that Alpha bandaid and give this game the credit it deserves after so many people have worked so very hard to bring it into existence.
Let’s take a look at what’s in this release.
For some Daggerfall players, the large HUD represents a tiny piece of its soul. The large buttons and compass help us recall our early days playing Daggerfall and provide a big visual connection to the past. So this feature is best summarised with a few screenshots. Here’s Daggerfall Unity running with Retro Rendering 320×200, palettization, and large HUD. The only “modern” feature I left enabled is shadows.
Of course, it’s not just for retro modes. You can enable the large HUD at any time by deselecting the Fullscreen box on pause menu. And in typical Daggerfall Unity fashion, this feature can be tuned to fit a wide variety of displays so most people will be able find a setup they like when choosing to play with this HUD. Let’s upack this thing.
Docked or Undocked?
By default the large HUD works just like classic. That means it shrinks the rendering viewport to area above the HUD and the crosshair position will be raised to become centred in smaller viewport. The HUD itself will scale to fit entirely along bottom of display, which might entail some stretching if you have an ultra wide display. In this state, the large HUD is considered docked to bottom of display.
If you jump into settings.ini and set LargeHUDDocked=False then your large HUD will instead sit on top of a fullscreen render without shrinking the viewport area. Crosshair position will remain in the same place as fullscreen mode. When undocked, you can adjust the scale of large HUD by changing value in LargeHUDUndockedScale. This is best for very wide displays where the large HUD might otherwise become too stretched.
Other than docked/undocked, you can tweak the HUD in a few ways in settings.ini. I’ll list all the new settings here and what they do.
LargeHUDDocked – Set True to be docked and False to be undocked as above.
LargeHUDUndockedScale – Sets your undocked HUD scale between 0.25 and 2.0 depending on preference. Only works with undocked HUD.
LargeHUDUndockedAlignment – Set 0 for default (which is centred), 1 for left-aligned, 2 for centred, 3 for right-aligned. Only works with undocked HUD.
LargeHUDUndockedOffsetWeapon – Set True to offset weapon position above undocked HUD height and False to draw weapon against bottom of screen. Depending on your HUD scale, you might prefer to raise weapon above HUD or not. It’s not recommended to enable this setting with small scale HUDs or weapon will appear to be floating. Only works with undocked HUD.
LargeHUDOffsetHorse – Set True to offset horse above HUD height or False to draw horse against bottom of screen. This is True by default to match classic, but you can set this one for both docked and undocked HUDs. The horse takes up a lot of screen estate and it’s nice to drop it below the HUD to clean up the view some more.
Using Large HUD
For some people this will be their first time using Daggerfall’s large HUD, so it’s worth going through what all the buttons do. But first, how do you click those big juicy buttons anyway?
Just as in classic, use the Activate Cursor keybind to toggle cursor active/inactive while playing game (i.e. not paused). By default Activate Cursor is bound to the Enter key. While the cursor is active, you’ll be able to mouse over the large HUD and click buttons with either the left or right mouse buttons, which sometimes initiate different actions. When the cursor is active, you can also click on world objects like doors, levers, and NPCs using the mouse cursor rather than activating under crosshair as usual. To get back to mouselook, hit the Enter again to make the cursor inactive.
Now that you can click on the HUD, here’s what all the various bits do.
Vital Indicators. Displays your current health (green), fatigue (red), and spellpoints (blue).
Spellbook. Opens spellbook UI.
Interaction Mode. Cycles interaction mode through steal, grab, info, dialogue. Left mouse will cycle to next, right mouse will cycle to previous.
Inventory. Opens the inventory UI.
Ready Weapon. Raises or lowers the weapon in your equipped hand.
Use Magic Item. Opens the use magic item UI (if you have any usable magic items). This uses a popup list for consistency rather than fitting inside HUD area like classic.
Change Transport Mode. Opens transportation UI to set transport mode between foot, horse, cart, and ship.
Automap / Travel Map. Opens local automap or travel map. Left mouse click to open automap, right mouse click to open travel map.
Rest. Opens rest UI. Careful resting in town!
Big Spinny Compass. This is the real deal, made from the finest magnetic pixels. Click to open info status pop-up.
That covers everything about the large HUD for now. Just something worth mentioning, this HUD isn’t related to Cursor Mode movement (i.e. move by pushing mouse around screen) and classic’s View Mode with mouselook will remain the only control scheme into foreseeable future. With that said, all the work on large HUD recently has laid the groundwork for Cursor Mode, so this is likely to be added as a Beta stretch goal in the future. I’ll add this item to roadmap when confirmed.
Movement Review and Jumping Skill
Not so much a new feature as an attempt to better match movement (Walking/Running, Jumping, Falling) to classic Daggerfall. Part of this review was to implement the effects of Jumping skill on jump height.
Because classic Daggerfall itself doesn’t have well-defined movement elements, and CPU speed can change the speed and “feel” of these elements, it’s not really possible to match these perfectly with classic. So instead, I approached this with the mindset of ensuring that low-level characters always have functional running and jumping (e.g. run from trouble and jump low obstacles) while high-level characters still feel powerful and acrobatic. What this means in practise is a level 1 can jump onto the throne lift in Privateer’s Hold and run from that skeleton, and a fully buffed character at 100 SPD with max Jumping, Enhanced Athleticism, and spellcraft will run like the wind and be able to leap from rooftop to rooftop with ease. Here’s a summary of changes.
Walking – Carefully measuring walk speed in classic vs. DFU found that characters in DFU walked faster than in classic. This was tuned to match classic within a small margin of difference at various SPD levels. Interestingly, walking in DFU still feels faster as the framerate is smoother. But timing over long distance walks yields very similar timings to classic.
Running – This had received some tuning previously and already closely matched classic. Further tuning brought this into a smaller margin of difference. Again, running can feel faster in DFU due to smoother framerates.
Jumping – The largest difference is to jumping. The jump height in pre-beta DFU had received no tuning and was unaffected by Jumping skill. This means all characters were making huge leaps regardless of their skill at jumping. Now a character with a low Jumping skill will make smaller jumps than one with a high skill. You’ll always be able to jump onto low obstacles, but you’ll need to skill up to truly make those epic leaps. Athleticism will give player a +10% to jump height, Improved Athleticism another +10%, and Jumping spell will give you +60%. These all stack together so that a fully buffed character can leap onto low rooftops with ease. As an added bonus, the Jumping spell now grants air control. Rather than propel yourself helplessly past your target, you’ll be able to move slightly while airborne when the Jumping spell is active. This just makes it a bit more fun and magical, not to mention useful.
Falling – Measurement found that falling speed in DFU was marginally faster than classic – about 20%. But due to the effect of smoother framerate, a faster falling speed just feels better. Sticking with the classic falling speed makes falling and jumping feel floaty, something that isn’t so apparent in classic due to the clunky framerate giving it a heavier feel. For that reason, gravity and falling were left unchanged in DFU.
General Fixes & Improvements
- Fix several errors in TEXT.RSC data via localization tables (Ferital)
- Fix guild greetings for unique NPCs (Ferital)
- Correct “Bhoriane” spelling everywhere (Ferital)
- Remove %2com as not implemented in classic (Ferital)
- Show RunInBackground setting in launcher, enable run in background by default (Pango)
- Adjust dungeon micromap resolution and use square pixels (Pango)
- Fix backstabbing transforming Seducers, they are now always considered facing player (Pango)
- Apply bank loan default reputation loss only once (Pango)
- Publicize parts of PlayerActivate and DaggerfallBaseWindow.NativePanel (jefetienne)
- Publicize CurrentRestMode (jefetienne)
- Remove SetupDefaults and add autofill parameter to ResetDefaults (jefetienne)
- Ensure models with registered actions are not combined for RMB and interiors (Hazelnut)
- Fix exploit for Knightly Order armor service (Hazelnut)
- Fix “potion of <LocalText-NotFound>” and support localization of potion name (Interkarma)
- Fix potion recipe name being blank or displaying “<LocaleText-NotFound>” (Interkarma)
- Fix null exception when no rumours available (Interkarma)
- Fix variant count of Formal Eodoric (Interkarma)
- Fix Short Shirt variant counts (Interkarma)
- Fix active spell tooltips not working when cursor active (Interkarma)
- Fix texture cracking in vertical scroll thumb (Interkarma)
- Fix inventory crash against certain corrupted/modded items (Interkarma)
- Chance-based potion effects now always succeed to be consistent with other magic items (Interkarma)
- Fix LocalScale in Panel fill texture (Interkarma)
- Store DFU version in quest state to help identify version quest compiled under (Interkarma)
- Implemented “add potion” console command (Interkarma)
- Use “target at range” not “touch” for action object spells to fix null exception (Interkarma)
- Start groundwork of book localization – not yet ready in game (Interkarma)
- Disable camera recoil when cursor active (Interkarma)
- Use available snow textures for swamp castles (Interkarma)
- Use smaller dungeon state as set when quest compiled to prevent target ending up in void (Interkarma)
- Groundwork for further refinements towards full smaller dungeon support (Interkarma)
I hope you enjoy this release!