Neverwinter Nights: Enhanced Edition Patch 8162
Neverwinter Nights: Enhanced Edition Patch 8162 is here and it brings all kinds of multiplayer goodness! Thanks to all our Steam players for trying out builds 8160 and 8161 in the new Development branch.
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).
- 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.
- A huge shadows-related memleak was fixed in the toolset that would happen when loading areas.
- “Input player name” is no longer covered by the Direct Connect UI.
- LAN “Connect” button now works as expected.
- Toolset now remembers window position between starts.
- Servers displayed in the History/Favourites panel now grey out properly when they are unknown to the masterserver.
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; reproduced below for your convenience.
- 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.
- LAN enumeration has been slightly improved to find multiple servers on the same host.
- Server listing speed has been improved.
- Toolset performance when loading/accessing placeable-related functions has been improved.
Toolset performance when working with the object tree in area view has been improved.
- Rendering performance has been improved. (This is not the Skybox issue; we’re still looking into this).
- Windows game and server will now use UPnP to automatically attempt a port map.
NWScript
New script commands:
// 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);
What follows is a sample material file that includes examples for all currently supported fields:
customshaderVS vsSkinned
// Specifies a custom vertex shader: vsSkinned.shd
customshaderFS fsFancyNew
// Specifies a custom fragment shader: fsFancyNew.shd
texture0 myDecal
// Specifies a texture that will be bound to texUnit0 in the fragment shader. Will override bitmap/tetxure0 in the model
texture1 myMask
// Binds to texUnit1 in the fragment shader. We support up to fifteen of these textures: texture0 - texture14.
parameter float vDiffuse 0.8 1.0 0.65 1.0
// Creates a 4-float parameter that will be bound to a shader uniform of the same name (if it exists)
parameter float fModulator 0.5
// Creates a float parameter that will be bound to a shader uniform of the same name (if it exists)
parameter int iCount 2
// Creates an int parameter that will be bound to a shader uniform of the same name (if it exists)
To use a material like this one on a mesh, simple add the following line in the .mdl file: materialname myNewMaterial