Patch Version1.74.8160
Patch release date (PC)2018-02-23
Patch release date (Others)
Patch release noteshttps://store.steampowered.com/newshub/app/704450/old_view/1654381705278992547

Summary

Toolset fixed, MP relays.

Patch Notes

Fixes

  • A memory leak was fixed in the Toolset that would exhibit every time after a script was compiled.
  • We now compile the Linux binaries with 64-bit-only filesystem API support (so that nwserver runs properly inside docker-on-mac/windows).


Regression Fixes

  • Fixed a crash in the Toolset when trying to static-light a mesh with zero vertices (as seen by some custom tilesets, and the humongous bell).
  • A fix to Steam thumbnails to update properly on changes, not just on initial upload.
  • We fixed the Toolset crashing on Intel GPUs.

Features

  • Relays! We added experimental support to carry your connection over authenticated relays, hosted on our end. This is fully automatic and transparent for both players (a relay connection will be chosen if all other attempts fail) and server hosts (servers and scripting will still “see” the actual client IP), and is meant to take care of all remaining connection issues that cannot be handled with UDP hole punching.
  • We added support for the material file format (.mtr) as described in last weeks’ patch notes. Find those here: http://blog.beamdog.com/2018/02/nwnee-8159-patch-notes-and-steam-beta.html
  • Per-vertex static lighting now works properly when normal mapping is enabled: we use a stream that indicates the direction of the brightest light from the location of the vertex, and approximate normal mapping using that information.
  • Clicking on “Join Game” in the Steam friends list while already connected to another server will now be handled more gracefully.
  • History/Favourites now displays server data from the masterserver list to avoid connection issues.

New script command

// Get if oPlayer is currently connected over a relay (instead of directly).
// Returns FALSE for any other object, including OBJECT_INVALID.
int GetIsPlayerConnectionRelayed(object oPlayer);