github Lattymoy/daggerfall-js-source app-v0.1.4764

latest release: app-v0.1.4768
2 hours ago

Overworld Block

Built on the updated source. Covers the Overworld UI, the enemy sprites, attacking enemies from the map, a later start to the enemy slowdown, and the missing nearby-dungeon messages.

One compact block, bottom right

  • The Overworld's controls are one compact block in the bottom-right corner, so the rest of the screen stays free. From top to bottom: where you are, your journey, the Path switch and Map, the filters, and Return.
  • It is always shown while you are in the Overworld. Standing still, the journey section says "Not travelling". Travelling, it shows the destination, time left, the time controls, Camp and Exit.
  • The trip line under your location also shows "Travelling at ×N" while you travel with the movement keys.
  • The block has no compass of its own. The HUD's compass at the top of the screen already shows the heading.
  • The movement hints moved into a tooltip on the block's top line.
  • On touch screens the block sits at the top right, clear of the touch buttons.

No more flash of the old travel bar

  • Starting a journey while standing in the Overworld no longer flashes the old travel bar at the top of the screen for a moment before it moves into the block.

Notices stay clear of the block

  • While the Overworld is up, the notices on the right side stack upward from just above the block instead of being centred over it. On touch screens, where the block sits top-right, they start just below it.
  • A marker at the right edge under a notice fades while the notice is showing.
  • Outside the Overworld, notices are where they always were.

Roads or Free

  • The Path switch is remembered between sessions.
    • Roads (default) prefers road travel. Clicking near a town travels to the town.
    • Free walks across country and still goes around mountains and across water the same way. Clicks near a town go to the exact spot. If there is no free route, it takes the roads and says so.
  • In either mode, once you are next to a town, or while holding Shift or Alt, every click goes to the exact spot.

Filters

  • A Show section with Towns, Distant, Dungeons, Enemies and Travellers. Each switch shows how many markers it holds, and the settings are remembered.
  • Enemies covers roaming bands, camps and raiders.
  • Always shown regardless of filters: your destination, anything chasing you, and your party.

Markers at the screen edges

  • Markers held at the top or bottom edge now sit right at the edge. They only step inward where a HUD piece is actually in the way: the compass at the top, the hotbar and bars at the bottom. Before, the tallest piece pushed every marker along that edge inward across the full width.
  • A marker that would appear behind the hotbar or compass is held at its edge instead of being hidden under it.
  • A marker in view whose location falls on the compass or the hotbar is drawn faint there, so the compass letters and the slots stay readable. It is still clickable and returns to full strength once the camera moves it clear.
  • Markers on the side edges keep clear of the block, and of the quick-slot area if shown.

Enhanced Plus face for POIs

  • Under Enhanced Plus, the Overworld's place plates, labels and distances use the Plus pixel face with its hard one-pixel shadow, matching the block, the hotbar and the player names. The classic Enhanced look is unchanged.

Enemy sprites

  • Near a roaming band (inside about 420 m) its lead monster's animated sprite fades in over the land, sized like your own sprite. It is fully visible inside about 240 m. Hiding Enemies hides these too.

Enemy slowdown starts later

  • Fast travel still slows as enemies get close, but it starts much later. The game used to guarantee 5 real seconds before you reach an enemy's sight range; it now guarantees 2 (THREAT_WARN_S in systems/travelThreat.js, one number to tune).
  • A rider at ×40 now starts slowing about 1.3 km before a band's sight range instead of about 3.2 km. On foot at ×40 it's about 280 m instead of 700 m.
  • You still reach the enemy's sight range at walking pace.

Nearby-dungeon messages show again during travel

  • "You see a dungeon ... metres to the ..." (said once when you enter the map pixel holding a generated dungeon) now stays up for 5 seconds at any travel speed.
  • HUD lines count down in game time. The Overworld's other lines already stretch their time by the travel speed (AUDIT OW5 G2), but this one did not, so at ×35 it was on screen for about 1/35 of a second and, being said only once per pixel, was effectively never seen.

Attack an enemy from the map

  • Double-click a band or camp marker in the Overworld to be asked: "Attack the Zombie band (2)?", "Attack the Orc camp (4)?", "Attack the Lich?"
  • The question appears in the Overworld itself, over the map; the view stays up. Its Yes / No buttons are the block's own (the same as Roads / Free).
  • Enter or Y answers Yes, Escape or N answers No. Clicking the map dismisses it.
  • Yes: you travel straight toward them at full travel speed. That enemy no longer slows you down (a band's chase included; for a camp, every member). Any other enemy along the way still does. Meeting them starts the encounter as usual.
  • No: nothing changes.
  • A single click on an enemy marker still walks to that spot, as before. Clicking anywhere else, or a town, cancels the attack.
  • As with any journey, you can't set out while enemies are already close and aware of you.

Free path walks straight

  • In Free mode a journey no longer bends at pixel middles on the way (it used to go diagonally, then straight, and read as being pulled toward the road or a place first). The route is pulled taut: it goes straight to the spot wherever the way is clear, and only bends where water or mountains force it to.

Enemies spawn closer

  • Roaming bands (the red markers) are now born in three cells out of four by day and nine in ten by night (BAND_CHANCE_DAY 0.45 -> 0.75, BAND_CHANCE_NIGHT 0.6 -> 0.9 in systems/travelBands.js), so the nearest one is about a quarter closer. The grid and life stay as they were, so the shared ids and the online law are unchanged.

Texture Mods (.dfmod) and Pack Removal

Add your own Daggerfall Unity texture mods. Settings → Mods → Replacement
packs
has a new Add texture mods button. Pick one or more .dfmod files
(DREAM 90s and mods like it); they are stored in this browser, listed with
their title and version, and each has its own Remove.

What a texture mod now drives:

  • world textures, flats, NPCs, commoners and monsters, with the mod's xml
    billboard sizes;
  • item icons and paperdoll pieces by dye and material, with helmet masks,
    placed by the mod's xml <rect>;
  • the paperdoll's backdrop, body and head;
  • talk-window portraits.

The bundle reader learned BC7 (the format DREAM's paperdoll uses). A mod's
bundle is read once when you add it; after that the game opens it only when one
of its pictures is needed.

Not supported yet: mod scripts (DREAM's time-of-day backgrounds and dungeon-exit
script), normal/height/emission maps, and terrain texture arrays.

Every pack can come off. Remove music pack, Remove sound pack, Remove
texture pack
and Remove all texture mods sit beside their Attach buttons
once something is attached, each behind a confirm. Removing textures takes full
effect the next time an area loads.

Big HD packs (DREAM's full-resolution set). A .dfmod is no longer read
into memory whole: it is read piece by piece from where it is stored, so a
multi-gigabyte bundle opens in moments. The game never waits on a mod on its
way in - a mod that still needs reading is read in the background - and no
area waits more than 20 seconds for one. Texture detail (256 / 512 / 1024 /
full, default 256) sets the largest size a mod picture is loaded at; HD packs
above 512 can run out of memory. If a mod ever stops the game from starting,
open the game with ?nomods at the end of the address and remove it from the
packs card.

Memory fixes from a player's log. Seasons of the Iliac Bay's loader used to
open every attached .dfmod whole to look for its own - with DREAM's
gigabyte bundles that alone ran the tab out of memory. It now reads only its own
bundle. A mod that cannot be read now says why on its row in the packs card, and
attaching two versions of the same mod (DREAM and DREAM 90s) shows a warning.
Handheld-weapon frames from a texture mod now reach the first-person weapon.

Out-of-memory fixes, round two. Every attached mod used to get its own
background worker, and each area sent all its picture requests at once - with
ten-plus HD bundles that was ten-plus decoders running full-size pictures side
by side. Now all mods share two workers, each decoding one picture at a time; a
request nobody is waiting for any more (older than 15 seconds) is dropped
instead of decoded. Mod pictures also have a memory budget (up to 1536 MB,
less on smaller machines): past it, the rest of the session draws the classic
art for new mod pictures instead of running out of memory.

PERF-2D warning while talking to an NPC. The talk window could leave a UI
2D run open across a tick, so a background pass (rain, sky, grass) that drew
while the window was up landed inside it and logged the renderer's PERF-2D
warning. The talk window now closes its own run at the end of every draw.

Weapons right way up, Diverse Weapons HD, DREAM ground.

  • Weapon frames from any .dfmod (Weapon Widget, Diverse Weapons, texture mods) were drawn upside down -
    "held overhead". The bundle reader already answers pictures top-first; the extra flip is gone.
  • Diverse Weapons HD (Handhelds I/II, Inventory) is accepted: its crunched textures now decode, it is read as a
    texture mod, and its frames replace the built-in Diverse Weapons sprites. Weapon frames keep at least 512 px.
  • DREAM's ground: the terrain tile sets a texture mod ships (302-TexArray and the like) replace the classic ground
    tiles - only while such a mod is attached, and only as a whole set. Reload once after updating: the ground keeps
    the set it was first built with for the session, and older mod indexes are re-read in the background.

HD paperdoll. With a texture mod attached the paperdoll is drawn at 4x (440x736 instead of 110x184), so DREAM's
paperdoll art keeps its detail instead of being squeezed to Daggerfall's size and blown back up. Classic layers are
scaled up pixel for pixel exactly as before; clicks, item placement and the other players' dolls are unchanged.
Without a texture mod the doll is drawn exactly as before.

Improved Interior Lighting (ShortBeard 1.0.5). Attach its .dfmod like the texture mods. While Enhanced Lighting
is OFF it takes over the lighting indoors, as its scripts do: every room light warm orange with its intensity and
range 10, flickering; a light on each fireplace; in dungeons the original lights replaced by one on every torch and
brazier billboard; the torch in the mod's colour. With Enhanced Lighting ON nothing changes. Not carried over: the
mod's shadows (the classic lighting has none), and the fireplace spotlight is a point light.

Water tiles with DREAM's ground. Town water, docks and puddles showed as brown mud under a blue sheen: the port
finds a puddle's shape by the water tile's colours, which works for Daggerfall's palette art but not for DREAM's
truecolour tiles. The shapes now come from the classic tiles and are laid over DREAM's.

Test switch: the mod's shadows. Add ?iil=shadows to the address with Enhanced Lighting ON and the mod attached:
the mod's lights then run on the Enhanced Lighting lane, which gives them shadows - soft light shadows and NPC /
enemy billboard shadows. Without the switch the rule above holds (the mod only replaces classic lighting).

Water at night (Gothway Garden). The water was lit by a torch or a lamp as if it were ground: the water tile's
blue ripples times a warm flame read as a field of brown mud with blue at its edges. Water now takes a quarter of
that light diffusely and shows each light as a moving highlight on the waves instead. Same with or without DREAM.

Modded lighting switch. Features > Sight has a new row, Modded lighting (Improved Interior Lighting):
Off / On (default) / With shadows. It only does anything with the mod's .dfmod attached, and it takes effect at
once. With shadows gives the mod its own shadows - lamps, people and monsters cast soft shadows indoors and in
dungeons - in Daggerfall's classic look, with Enhanced lighting OFF: the port's shadow maps under the classic shading
(no tonemap, no bloom, no highlights). Outdoors stays classic. With Enhanced lighting on, Enhanced lighting is in
charge as before.

Attach lighting mod. Settings > Mods > Replacement packs has its own Lighting mod section: an Attach lighting
mod
button (it accepts only Improved Interior Lighting - the original or BlazeBlue32's fixed 1.1.1 - and says so
if you pick something else), the attached mod with its Remove, and a pointer to Features > Sight > Modded lighting.
It is no longer listed among the texture mods.

(Housekeeping: line-number references in comments and docs that these changes shifted were re-aimed with the
repo's own citeShift tool, and the mutation-test records were updated to the new source.)

What's Changed

  • Overworld Block + Texture Mods (.dfmod), pack removal, Improved Interior Lighting by @Lattymoy in #437

Full Changelog: app-v0.1.4759...app-v0.1.4764

Don't miss a new daggerfall-js-source release

NewReleases is sending notifications on new releases.