March Builds – Faster Terrain, New Spells, Bug Fixes, QoL Improvements

This article is a bit overdue, it’s for the new Live Builds that dropped on March 03, which in turn is a slightly delayed February build. There’s even another round of March builds coming up with mostly bugfixes, so it’s long past time to write up the change log for early March.

Terrain Performance Enhancements (Hazelnut/Nystul)

This one started in January after Nystul backported some optimisations from his Distant Terrain mod into the default terrain generator. Then Hazelnut added multi-core support for terrain generation so that several computationally heavy tasks could be completed in parallel. That’s a short summary of what was an awesome collaboration with lots of ideas and work being bounced around. And for what turned into almost a complete overhaul of terrain generation, it didn’t cause any major issues, a testament to the skill and dedication of those involved.

Once everything was in place, time to generate each terrain tile dropped roughly in half. This means the world loads more quickly after travel, loading a game, or exiting a dungeon. It’s a huge improvement for overworld explorers and users of Tedious Travel mod (which also received some optimisations around the same time when Hazelnut spotted a timestep issue).

If you use a terrain mod (Distant Terrain, Mountains & Hills), you’ll need to update them for compatibility with March builds.

Sunset screenshot by King of Worms on forums

 

General Rumours (Allofich)

When speaking to NPCs around town, you might hear news of a ruler overthrown, a witch burning, or some other juicy rumour not related to any of your quests. This system goes a long way to making Daggerfall’s world feel more alive and as though things are happening even when player isn’t involved. Thanks to Allofich, this system is now up and running in Daggerfall Unity.

There’s a bit more to this system than just picking talk items at random. There’s a kind of rotating simulation under the hood that generates rumours about once per month. Allofich has also fixed a problem present in classic where these rumours would stop working after a while. Great work all around.

If you’re just updating to March builds now, it will take around one month of game time before the rumour mill starts generating news.

 

Spell Reflection/Resistance (Interkarma)

These two effects are vital in any spellcaster’s defensive toolkit. Spell Reflection allows you to bounce the effects of some other spell back to the caster. There’s nothing more satisfying than watching an Ancient Lich blow themselves up by reflecting their spells back at them. And Spell Resistance gives you a chance to shrug off whatever magical attacks come your way.

 

Create Item (Interkarma/Allofich)

This effect can be used to summon basic temporary items such as armour, weapons, and arrows. It’s most useful if one of your items break in the heat of combat and you need something to arm yourself with until your next visit to a smith for repairs. Additional credit goes to Allofich for implementing the back-end tracking of temporary items.

 

Charm (Interkarma/Allofich)

The effect works nothing like it says on the tin. It actually has nothing to do with reputation, and instead it’s just another Pacify effect for non-monstrous humanoids. These are the class-based enemies like Knights, Rogues, and Archers that you encounter around the world. The other side of implementing this effect is to fix Pacify Humanoid so it only works on monstrous humanoids as intended. A big thank you to Allofich for clarifying how classic works here and determining the enemy groupings to match classic.

Just like Pacify, a charmed enemy will remain that way until you decide to hit them again.

 

Classic Spellbook Import (Interkarma)

When importing a classic character, their spellbook is now imported as well.

 

Click SAVE# To Open Folder (Interkarma)

This one works for Windows users only at this time. If you click the SAVE# index displayed at top-right of screenshot in save/load UI, it will open the folder directly. This will help users find the save folder faster.

 

Highlight Recently Increased Skills (Pango)

After increasing a skill, it is now shown in blue on the character sheet when inspecting skills for first time after increase.

 

Messages Log (Pango)

Daggerfall’s text messages are shown for a moment then disappear, it’s very easy to miss some bit of information the game is telling you. With this QoL improvement, these messages are now written to the log so you can look back over them even after they scroll off the screen.

Speaking of scrolling text, Pango has also changed the text to smoothly scroll out the top of screen. The movement helps catch the eye and gives you an extra few moments to read the text before it disappears.

 

 

Enemy Strafing (Allofich)

This is an improvement to the Enhanced AI feature set. Enemies will now try to strafe and flank the player during combat. Allofich has made it fairly subtle and not too game-like.

 

General Fixes & Improvements

  • Fixed freeze with no usable magic item after activating “use magic item” keybind (Pango)
  • Fixed “no item to activate” mid-screen message text (Pango)
  • Fixed ambient effects muting rain sounds (Pango)
  • Fixed classic sky blind spot (Pango)
  • Fixed improper wagon access via identify spell inside dungeons (Pango)
  • Fixed player spellbook returning after discarding it (Pango)
  • Add tooltips to spell icons in spellbook (Pango)
  • Allow fast travel and rest when only pacified enemies are nearby (Pango)
  • Grey out unavailable spells in spellbook that are too expensive to cast (Pango)
  • Increase time for modded sound clips to load, fixing first playback being dropped (Pango)
  • Warn player before taking back item not fully repaired (Pango)
  • Warn player when paid by letter of credit (Pango)
  • HUD text smooth scrolling (Pango)
  • Fixed typos in tutorial quest (Pango)
  • Fixed paying repair price multiple times (Pango)
  • Only allow trade popup if there’s something to do (Pango)
  • Fixes to several Random.Range off-by-one errors (Pango)
  • Hide icons in empty spellbook (Pango)
  • Fix list box row count for small font (Numidium)
  • Allow read-only texture flag for mods helper (TheLacus)
  • Support for TRAV0I00.IMG “travel map” texture replacement (TheLacus)
  • Support for FMAP*.IMG “region map” texture replacement (TheLacus)
  • Improvements to speed of asset injection (TheLacus)
  • Updates to mod builder window (TheLacus)
  • Initial support for custom doors for buildings (TheLacus)
  • Mod serialization now uses invariant culture for better multiplatform support (TheLacus)
  • Fixed temples selling spells to non-members (Hazelnut)
  • Fixed guild expulsion to match classic (Hazelnut)
  • Improvements to AI pursuit (Allofich)
  • Cleanup and fixes to enemy motor (Allofich)
  • Cleanup and fixes to enemy senses (Allofich)
  • Unify timers for classic update simulation (Allofich)
  • Implement “addartifact” console command for future artifact testing (Allofich)
  • Special enemy height handling for large enemies to fit through doors (Allofich)
  • Arrows now use colliders for hit checks (Allofich)
  • Fixed arrows and spell missiles colliding more than once (Allofich)
  • Fixed “mute npc” not rearming when parent task ends/rearms, correcting certain quest NPCs not talking to player (Interkarma)
  • Added “unmutequestnpcs” console command for any saves affected by above issue (Interkarma)
  • Fixed transition events when teleporting outside, correcting issues with blank sky and map exceptions (Interkarma)
  • Fixed text stylisation dropping text in A0C01Y03 “the riddle” quest (Interkarma)
  • Fixed entire Scourg Barrow exterior being considered a door (Interkarma)
  • Ignore swimming encumbrance when waterwalking (Interkarma)
  • Don’t show encumbered message when water walking (Interkarma)
  • Added vampire graveyard background on paper doll (Interkarma)
  • Prevent main story dungeon Direnni Tower from being remixed by smaller dungeons option (Interkarma)
  • Added “addspellbook” console command for adding a spellbook at any time (Interkarma)
  • Fixed quest offer presenting when a suitable location could not be found (Interkarma)
  • Fixed enemy groups for Pacify Humanoid effect, this should only operate on monstrous humanoids (Interkarma)
  • Additional fixes to being crushed improperly by environment (Interkarma)
  • Fixed arrow hits forcing player into a permanent crouch (Interkarma)
  • Fixed rappel state not being cleared when grounded (Interkarma)
  • Fixed classic keys not mapping to all variant effects (Interkarma)
  • Fixed tavern rest ejecting player into void (Interkarma)
  • Fixed “give pc” quest action improperly rearming (Interkarma)
  • Fixed spell debuffs from enemy casters not deserializing correctly from saves (Interkarma)

January Builds – Vampirism, Spell Icons, More Magic Stuff, New Quest Actions, and More!

It’s time for a fresh round of Live Builds for January 2019. The last month has seen a lot of progress across a wide variety of systems, so rather than waste time on an intro. let’s get right into it.

Vampirism

The full loop of Daggerfall-styled vampirism is now in the game from curse all the way through to cure. Each time you’re mauled by a vampire, you have a 0.6% chance of contracting the disease that will transform your character into one of their kind. Some time after being infected, your rest will be plagued with bad dreams. Unless you like fangs and late-night shopping, this would be a good time to find a temple and cure yourself of diseases.

 

If you allow the disease to continue a few days, you will “die” and awaken two weeks later interred somewhere in the region. In classic Daggerfall, your death will also remove you from all guilds and reset your legal reputations. At this time, Daggerfall Unity doesn’t modify guild memberships or reputations, this will be implemented sometime in the next few months.

 

Becoming a vampire comes with some great perks. You can no longer be touched by weapons less than silver quality, you get +20 to most attributes, +30 to Climbing, Critical Strike, Hand-to-Hand, Jumping, Running, and Stealth, and unique vampire versions of spells including one specific to your clan. I should note that only Levitate and clan-specific spells are currently delivered to vampires. Charm Mortal and Calm Humanoid are not working yet, but will be added soon. You also get a nice set of fangs and some really bloodshot eyes.

 

It’s not all positive though. As a vampire, you will start taking damage from sunlight and holy place. But most pressing of all is the need to satiate your urge to kill at least once a day. If you fail to kill each day, you will find yourself unable to rest which can make things difficult. Fast travel will also make you arrive at night, so you will have limited time windows for shopping in cities before they close.

 

After playing for a while, you will receive unique vampire quest, starting with an introduction ques from your clan. There are 10 vampire quests in total, including one that will cure you of the infliction.

 

It’s probably worth mentioning that most of the back-end work for racial override effects is now complete, so lycanthropy won’t be too far away.

 

Continue reading

Daggerfall Unity 0.6.1 Stable & 0.7.2 Combined Releases

Happy New Year everyone! It’s great to be here in 2019 at last. This will be the year that Daggerfall Unity steps out of pre-alpha into alpha, and reaches feature parity with classic Daggerfall. If you haven’t seen the Roadmap page lately, it’s time to take another look. There aren’t too many items left now and no major systems remain to be developed. Everything that’s still to do is just a small part of an otherwise finished system. Even the Quest System and Effect System roadmap pages are looking very green these days.

With a busy end to 2018, I didn’t make time to put up change notes for the Live Builds released on 20 December 2018. I think its a good idea to address these changes before dropping the next release, or solid contributions from our developers aren’t going properly credited. Let’s start with the highlights of new features from 0.6.1 Stable and 0.7.2 builds. I’ve tagged anything introduced in 0.7.2 with [0.7].

Highlights

Hanging Mode for Advanced Climbing [0.7] [Meteoric Dragon]

Upgrades to the optional Advanced Climbing system allows skilled climbers to hang from ceilings and eaves, and climb around on ceilings. This rounds out the other Advanced Climbing features such as sideways movement on walls and climbing around corners.

direct link to gfy

 

AI Obstacle & Fall Avoidance [Allofich]

Enemy mobiles have learned a few new tricks, and it’s a bit harder to trap them on the environment now. In addition to moving around static and dynamic obstacles, they’re smart enough not to walk off high places. While this isn’t perfect yet, it’s still a big improvement over classic AI. In other news, enemy AI is now capable of bashing open locked doors to reach the player!

direct link to gfy

 

Personal Light Sources [Hazelnut]

If you enable “item based player torch” in startup settings > Advanced > Enhancements, you can finally make use of those lanterns, torches, and candles in General Stores. Lanterns and torches can be refuelled using oil, also found in General Stores. If you make dungeons darker with the ambient light settings on the same Enhancements page, this adds a nice RP touch to dungeon delving. It can be quite tense knowing you’re running out of lantern oil and about to be lost in the dark.

 

Potions [0.7] [Hazelnut]

This is a big one! All potion recipes and effects are now supported in game, along with the crafting UI to make them. As a Daggerfall Unity quality of life feature, like-kind potion will stack.

 

Continue reading

Creating SDF Fonts For Daggerfall Unity

Introduction

All the way back in September, I upgraded font rendering in Daggerfall Unity to support Signed Distance Field (SDF) fonts. This enabled smooth high-resolution font replacements which can operate under the same “layout rules” as classic Daggerfall’s pixel fonts, with a substantial improvement to reading comfort as this comparison screenshot demonstrates.

 

Rather than storing individual display pixels of a text glpyh, SDF fonts store a distance value that can be turned into display pixels later at any resolution using a custom graphics shader. Unlike regular pixel fonts that become quite pixelated at high resolutions, SDF text can use those distance values to generate sharp detail even at UHD resolutions and beyond. If you’re interested in the inner workings of Signed Distance Fields, there are loads of great resources out on the web. This tutorial doesn’t look very deeply at SDF concepts, only the process of creating new SDF fonts for Daggerfall Unity.

 

Resources

There are a few resources you will need to work through this tutorial.

You can use whatever font or tools you like to generate your SDF font atlas. This is just the process I’m using that will generate known-good output for Daggerfall Unity. If you do use a different toolchain, the only thing that matters is the output image is a proper SDF texture and the glyphs are laid out in a specific way.

 

Continue reading

Notebook, Enemy Spellcasting, And Bug Fixes

To cap off a great month of progress, we have one more round of builds for October. This was going to be a solely bug-fix build, but amazing work kept on rolling in and I’ve decided to get these new features out to you now rather than wait until November.

 

Enemy Spellcasting (Allofich)

Building on top of my work on the magic & effect system, Allofich has wired up foes to hurl spells back at the player. This means ancient liches and vampires are serious threats again, imps are more than just a nuisance, and scorpions and spiders will just wreck your happy feelings with paralysis.

A lot of work was required in enemy AI to select spells based on touch or range. Enemies might stand their ground and hurl a fireball, or approach and attack player with a touch spell. And unlike in classic where the monster’s entire payload of spells are released instantly, they now make more intelligent decisions and release spells at sensible casting intervals. I can’t put into words just how amazing Allofich’s work on this has been. Magic in Daggerfall Unity suddenly doesn’t feel quite so one-sided, and magical encounters have become very dangerous again.

Here’s a short video where I pick a fight with some denizens of Mannimarco’s lair. Everything goes about as well as expected.

direct link to gfy

 

Continue reading

Daggerfall Unity October 2018

New Builds for October 2018

New builds are available on the Live Builds page now. This has been another huge month for Daggerfall Unity. We’re quickly closing the gap towards major parity with classic Daggerfall and exiting pre-alpha. The magic system has taken another big jump forwards this month with the number of implemented spell effects crossing the 90% complete mark.

I’ve also updated the main Roadmap and shifted a few magic-related items out of 0.5 into 0.7. This is so I can create a stable 0.5 build and start the downhill run towards exiting pre-alpha. I don’t think we’ll spend very long in 0.6, 0.7, and 0.8. These milestones have become more a formality at this point.

Alright, let’s unpack what’s new in October!

 

Automap SDF Fonts (Nystul)

The new SDF font system is now functional in automap UI. Now the fonts look smooth whether you’re zoomed all the way in or out of the map.

 

Advanced Climbing System (MeteoricDragon)

Daggerfall Unity isn’t just about reproducing classic 1:1 with quality of life features and mod support. We’re also adding depth to parts of the game that needed a bit more love in classic. If you’re the type of Daggerfall player who enjoys the Acrobat class, you probably want to make sure this option is enabled at Advanced > Enhancements.

 

The Advanced Climbing System allows characters with a high Climbing skill to not only scale walls, but to move in any direction, wrap around corners, cling to the wall, grab walls in the air, and leap off walls. A Khajiit with a high Climbing skill and magic can scale over practically any surface in the game. You can even climb out of water now, rather than face certain drowning.

direct link to gfy

In latest builds, you can rappel down walls by walking backwards off the top. I remember looking everywhere for that rope mentioned in Daggerfall’s manual, only to discover it wasn’t in the game. Well, who needs ropes when you can rappel?

direct link to gfy

If you’re a classic purist who prefers just scaling walls, all of these features are optional. Simply disable the Advanced Climbing System in settings and things are back to classic. The Advanced Climbing System is currently enabled by default for testing – and because it’s really fun to play with.

 

Continue reading