NMRiH Networking Update (1.15) Released
2026-09-01An update to No More Room in Hell has been released. The update will be applied automatically when you restart No More Room in Hell. The major changes include: Source Engine upgrade • Added 64-bit support, 64-bit binaries will automatically be launched on systems with a 64-bit OS • Added a borderless window option to video settings • Added bicubic lightmaps (from Half-Life 2: 20th Anniversary Update) • Added radial fog (from Half-Life 2: 20th Anniversary Update) • Added Steam Networking, port forwarding is no longer required • Added UI scaling for high-resolution screens • Added Vulkan renderer, which is now enabled by default on Linux • Fixed a prediction bug where if the player was moved on the client, their input-based movement for that tick was not taken into account in non-player actions
Read the full notes
• Fixed an issue where certain variables like position would not be updated correctly to match the server in certain situations • Fixed certain breakable props not gibbing correctly • Fixed player hull being mis-predicted in certain instances causing rollbacks every frame when e.g. crouching or against a wall • Fixed the player's base velocity (e.g. conveyors, moving items etc.) getting subtly out of sync from client/server • Improved networking precision for local player positions, resulting in less prediction errors and better game-feel • Improved prediction for walking on props and other entities • Made the game launch in native resolution by default instead of 640x480 Additions • Added a menu in the Create Server dialog that selects a server type for Steam Networking, allowing public / friends-only / unlisted servers without port forwarding • Added ability to pause the game when playing in Single Player mode Changes • Active Workshop map is now distributed to connecting players on local servers • Certain HUD elements such as player names are now hidden during suicide blackout • Changed default server name to " 's server" • ConVar "viewmodel_fov" is now saved to user config • Difficulty is now displayed in the server browser game description • Flashlight shadows are now independent from "High" shadow quality, and can be enabled in the advanced options (off by default to reduce engine crashes) • Improved native Linux support for significantly better performance • Optimized network bandwidth on player and zombie movement • Optimized zombie performance even further on crowded maps • Overhauled rich presence to support connections for Steam Networking, both Discord and Steam will now recognize such servers for joins and invites • Removed warning dialogs for NAT connection and Steam Deck compatibility as those are no longer relevant • Revised voice status icons over player heads to be more readable in darker maps • Updated FMOD Engine to version 2.03.12 • Voice commands from muted players are now blocked by default, this can be controlled with cvar "cl_voicecmd_ignore_muted_player" • Updated the localization files: • With thanks to community translators: Atheist, grobinho, Klowby, MakinDay, marcielcps, Plazehorta, RicecakeHuman • Want to localize NMRiH to your own language? Visit our localization repository on GitHub. Fixes • Fixed extracted players occasionally appearing as "deceased" on the scoreboard • Fixed false spawn notifications (i.e. sound plays and window flashes while "waiting for spawn point") • Fixed ironsights not being turned off when contemplating suicide • Fixed particle rain collision, contributed by BigHatMarley (#1579) • Fixed several issues when restoring saves on maps that utilize level transition • Fixed supply crate and keypad panels not properly resizing on resolution change • Fixed zombie idle vocalization cutting short on longer moans Changes for mappers and modders • Added custom zombie model pools, which can be controlled by cvars prefixed with "sv_zombie_models" • Added cvar "tonemap_debug", helps visualize active tonemap controller and its params • Added "ent_minsmaxs" command, prints entity bounding box in a MapHack friendly format • Added entity "npc_nmrih_basezombie", base class for a generic zombie, useful for custom zombies • Added entity "skybox_swapper", swaps 2D skybox material • Added entity "trigger_tonemap", changes tonemap controllers for players touching the trigger • Added game event "inventory_box_item_taken", fired when the player picks up an item from a supply crate • Added game event "player_voice_command", fired when the player uses a voice command, incl. automatic calls (pain, bleed, etc.) • Added "HeadSplit" input for zombies (#1569) • Added hull override keyfield to zombies • Added input "RevertAllMapCvars" to entity "logic_ruleset", it reverts all cvars that were changed by an active map to a base value (when available), or default, it doesn't revert difficulty / script / mutator changes • Added inputs "ForceRespawnPlayer" and "ForceRespawnAllPlayers" to entity "nmrih_game_state", forcefully respawns players by skipping the valid spawn point check • Added keyfield "Despawn Ignore Population" to entity "func_zombie_spawn", by default, zombies only despawn when zone population is over the maximum, even when they're unseen; when set to 'No', it uses classic behavior where visited zones keep max. zombies, when set to 'Yes', it always despawns unseen zombies • Added keyfield "Hide TAKE Button" to entity "item_inventorybox" • Added keyfield "HUD Style" to entity "logic_progress", changes visual style of the progress bar, with new addition of a circle that is drawn in clockwise direction at the center of the screen • Added keyfield "Ignore Grease" to zombies, when true, the zombie will not swap between NPC assigned collision groups to phase through each other • Added keyfield "Ignore Wind?" to dust particle brush entities • Added keyfield "Ignore Zombie Rules" to zombies, when true, game rules will treat them as a generic NPC • Added line break support to entity "point_message_multiplayer" • Added missing spawnflags to entity "point_viewcontrol_multiplayer" • Added outputs "OnBarricade" and "OnBreak" to entity "nmrih_barricade" • Added support for barricade prop model override • Added support for filtering model rendering on specific clients • FGD: Customized "base.fgd" is now shipped with "nmrih.fgd", to replace class overrides and dependency for base SDK • FGD: Restored missing "Mark" and eyedropper buttons on Hammer when editing "Filter Name" keyfields • Fixed dynamic "logic_progress" always completing on "StopProgress" • Fixed entity "logic_script_proxy" calls not working on global scope when using instances • Fixed entity "logic_script_proxy" not accepting null for input "SetTargetEntity" • Fixed entity "player_weaponstrip" removing items improperly (#1588) • Fixed map localization files within the BSP not being loaded • Fixed parented model attachments on NPCs being misaligned • Fixed "player_spawn" event being incorrectly fired when spawn points aren't available • Fixed runners spawned via BecomeRunner not randomizing their collision groups • Fixed sparks sound on buttons not playing • MapHack: Fixed collision bounds on spawned brush entities • NMRObjective: Added ability to drag-select nodes • NMRObjective: Added scrollbars when nodes go outside the workspace • NMRObjective: Misc. optimization and improvements • VScript: Added CAI_BaseNPC functions CanLagCompensate(), and SetCanLagCompensate() • VScript: Added CBaseAnimating functions SetPlayerDrawFilter(), and DrawFilterAllPlayers(), when set to true, this model won't be visible for the given player • VScript: Added CBaseEntity function IsZombie(), returns true if the entity is considered a valid zombie by game logic • VScript: Added CBaseEntity hook OnTakeDamage, this hook is designed as a mutable replacement for filter_script's PassesFinalDamageFilter, incoming damage info can be modified before it's applied, returning 'false' will discard received damage • VScript: Added CBaseEntity hook TraceAttack, called when the entity is about to receive an attack trace, incoming damage info can be modified before it's applied, this hook is called *before* damage filters are checked, returning false will discard the trace • VScript: Added CBasePlayer function IsHLTV(), returns true if the player is SourceTV • VScript: Added CBasePlayer functions SetTonemapScale(), SetTonemapRate(), SetAutoExposureMin(), SetAutoExposureMax(), SetBloomScale(), UseDefaultAutoExposure(), UseDefaultBloomScale(), and ClearTonemapParams() • VScript: Added CItem_InventoryBox functions IsTakeButtonHidden(), and SetTakeButtonHidden() • VScript: Added CLogicProgress function SetCircle() • VScript: Added CNMRiH_BarricadePoint function SetModelOverride() • VScript: Added CNMRiH_BaseZombie functions IsRecognizedByGameRules(), SetIgnoreZombieRules(), and SetIgnoreGrease() • VScript: Added CNMRiH_Player function DidGunshotSuicide() • VScript: Added CNMRiH_Player function ForceTransmit(), sends network update to all clients even when the player is dormant for them (filtered by PVS) • VScript: Added CNMRiH_Player function SetForcedRespawn(), flags next respawn as forced and skips valid spawn point check, then reverts on spawn • VScript: Added CNMRiH_Player function SetVaccinated(), directly sets vaccinated state, and skips the chance of partial blindness • VScript: Added CNMRiH_Player functions HasJumpAbility(), HasDuckAbility(), SetJumpAbility(), and SetDuckAbility(), overrides whether player can jump/duck or not, predicted on client • VScript: Added CNMRiH_Player hooks OnWeaponDrop, OnWeaponEquip, and OnWeaponSwitch • VScript: Added consistent rand() and RAND_MAX across platforms • VScript: Added constants for NMRiH button masks, collision groups, and damage types • VScript: Added CScriptNavArea functions GetAdjacentAreas(), and GetAdjacentCount() • VScript: Added enum "VoiceCommand", lists available player voice commands, incl. automatic calls (pain, bleed, etc.) • VScript: Added functions TraceEntity(), and TraceHull() • VScript: Added recursion support for CScriptKeyValues functions TableToSubKeys() and SubKeysToTable() • VScript: Added support for reading KeyValues from BSP pak lump via function KeyValuesRead() • VScript: Added support for trace filter hit entity callbacks on TraceLineEx(), TraceHull(), and TraceEntity(), via "callback" value that expects a function with single argument for params, e.g. "function ShouldHitEntity(params)" where 'params' have keys: entity, contentsmask; returned value filters the hit entity • VScript: Class CScriptNavArea now has string representation (i.e. " Area") • VScript: Entity input "RunScriptCode" now converts backticks to quotes (i.e. ` -> ") • VScript: Fixed CNMRiH_Player function IsTalkingWalkie() always returning 'false' • VScript: Fixed crash when passing null values to TraceLineEx() function • VScript: Fixed dangling entity script instances in some cases, which caused crashes (e.g. "prop_physics" with a script scope being deleted early due to a bad model) • VScript: Fixed function SetActivity() allowing ACT_INVALID, which caused a crash • VScript: Fixed hooks NPC_TranslateActivity and NPC_TranslateSchedule not checking invalid return types • VScript: Fixed script scope leakage on entity deletion • VScript: Updated with latest changes from Mapbase Changes for server admins • Added ability to modify zombie model pools, controlled by cvars "sv_zombie_models", "sv_zombie_models_kid", "sv_zombie_models_ng", and "sv_zombie_models_runner", models are set with ',' delimiter relative to models/nmr_zombie/*.mdl (or direct filename) • Added cvar "ov_despawn_ignore_population", by default zombies only despawn when zone population is over the maximum, set to 0 for vanilla behavior where visited zones keep max. zombies, or 1 that always despawns unseen zombies (#1562) • Added cvar "sv_ammobox_entity_legacy", for map compatibility when changes to ammobox_ entities cause problems • Added cvar "sv_friendly_fire_ignore_infected", when set, don't apply forced friendly fire against infected players • Added cvar "sv_gamedesc_override", to let server owners change game description without plugins • Added cvar "sv_runner_randomize_collision_group", runners always switch collision groups (grease) on spawn, when 0 and paired with BecomeRunner, this emulates bugged behavior pre-v1.15.0 • Added cvar "sv_sprint_with_held_item", allows players to sprint while holding an item • Added cvar "sv_tree_sway_update_time", when 0, it disables tree sway server-side (useful for map compatibility) • Added cvar "sv_zombie_brainstem_dmg_scale", zombies take this factor of brainstem hitbox damage (if sv_brainstem is set to 1) • Added cvars to tweak zombie vocalization, "sv_zombie_moan_freq_angry_only", "sv_zombie_moan_freq_limit", and "sv_zombie_moan_freq_random" (vanilla behavior unchanged) • Added new method of randomizing zombie models by shuffling a model pool and pulling entries from it, this can be controlled with cvar "sv_zombie_shuffle_models" • Fixed Steam Workshop downloads on a dedicated server (#1581) • Game state commands (such as "respawnplayer") now support SteamIDs and partial name matches as arguments • Game state commands can now forcefully respawn players via switch, e.g. "respawnplayer -force PlayerName" Maps nmo_asylum • Attempted to fix body parts going through the ritual floor • Fixed leg part softlock (#1565) • Fixed weird glitch artifact on a ceiling brush nmo_boardwalk • Fixed godspots (#1605) nmo_broadway2 • Added clips for smooth movement in the last ladder extraction area • Little visual fixes • Tweaked escape rope "ladder" brush to be less confusing (#1533) nmo_cabin • Reduced damage time from the canister explosion nmo_chinatown • Fixed fade distance value being too close on a Gun Shop extinguisher prop nmo_cleopas • Added glow for lever base • Added power box prop in one of the houses to hide a seeping tree through a wall • Fixed music manager not playing the correct playlist for tension state (#1604) • Fixed softlock when lever is dropped into the electric puddle (#1537) • Fixed softlock when objective items are thrown out of reach (#1548) nmo_fema • Fixed reflections on the plaster wall next to the initial spawn point • Tweaked zombie navigation nmo_quarantine • Fixed barricade spots at the end of the map not working (#1561) • Fixed godspots (#1605) nmo_shelter • Fixed godspots (#1605) nmo_shoreline • Disabled zombie respawning around bedrooms in the upper floor of the cabin (only on Casual and Classic difficulty) • Fixed being able to go under the extraction zone by standing on the rear ramp of the boat • Increased first aid kit spawn rates • Small tweaks to make navigating the map easier nmo_toxteth / nmo_toxtethdark • Fixed missing X mark on the brick cemetery wall nms_arpley • Fixed fade distance value on some props in the house being too close nms_midwest • Fixed ability to block zone entrances with military crates • Fixed visual bug on barricade prop at zone A nms_northway • Fixed fade distance value on extinguisher prop being too close





