Dedicated Server Bug with Interactive Foliage

If you are using regular Listen servers, then this does not apply to you!

It has come to my attention that running the Foliage System on Dedicated Servers causes the server to crash.

Assertion failed: Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:Runtime/Core/Public\Containers/Array.h] [Line: 634]
Array index out of bounds: 3530 from an array of size 0

I have a simple solution for this, all you need to do is change a few lines of Engine code to fix it, this is because the Dedicated Server doesn’t consider the Instance array valid since they are not being rendered on the server.

Open up “C:\UnrealEngine\Engine\Source\Runtime\Engine\Private\HierarchicalInstancedStaticMesh.cpp”

Go to line 2394 (UE Source 4.17.2)

Inside the function UHierarchicalInstancedStaticMeshComponent::BuildTreeAsync()

 

Old code

const bool bMeshIsValid =
// make sure we have instances
PerInstanceSMData.Num() > 0 &&
// make sure we have an actual staticmesh
GetStaticMesh() &&
GetStaticMesh()->HasValidRenderData() &&
// You really can’t use hardware instancing on the consoles with multiple elements because they share the same index buffer.
// @todo: Level error or something to let LDs know this
1;//GetStaticMesh()->LODModels(0).Elements.Num() == 1;
}

New code

// Verify that the mesh is valid before using it.
bool bMeshIsValid =
// make sure we have instances
PerInstanceSMData.Num() > 0 &&
// make sure we have an actual staticmesh
GetStaticMesh() &&
GetStaticMesh()->HasValidRenderData() &&
// You really can’t use hardware instancing on the consoles with multiple elements because they share the same index buffer.
// @todo: Level error or something to let LDs know this
1;//GetStaticMesh()->LODModels(0).Elements.Num() == 1;

if (GetNetMode() == NM_DedicatedServer)
{
bMeshIsValid =
// make sure we have instances
PerInstanceSMData.Num() > 0 &&
// make sure we have an actual staticmesh
GetStaticMesh() &&
// You really can’t use hardware instancing on the consoles with multiple elements because they share the same index buffer.
// @todo: Level error or something to let LDs know this
1;
}

Adding new resources to the Foliage System 1.2

In the latest version of the Foliage System, I’ve made it super simple to add new Resources!

All you have to do now is open up DT_Resources data table and sets the mesh(es) for your resource, and you’re done!

 

 

You can now have an array of meshes for the same resource, if they have the same rewards & uses, you no longer have to have multiple entries and blueprints for each actor/resource!

TSA Dedicated Server Setup

Required Firewall Ports

Port: 7777-7778 [udp]
Port: 27015-27016 [udp]

Linux: Ubuntu/Debian

Install steamcmd, unless you already have this installed
sudo apt get install steamcmd

This will install the dedicated server files into your home directory, eg /home/user/TSAServer
steamcmd +login anonymous +force_install_dir ~/TSAServer/ +app_update 713970 +quit

That’s it for installation of the server files, next I’ll give you some command line examples:

WINDOWS

For windows users, the server software is located under your “Tools” section, in your Library.

Once you’ve installed the dedicated server software, you can put a Shortcut to TSAServer.exe on your desktop.

You can also use steamcmd for Windows, but you MUST have the steam client running in order for the server to be registered as a steam Game Server.

https://developer.valvesoftware.com/wiki/SteamCMD#Downloading_SteamCMD

PARAMETERS

Linux:

./TSAServer.sh Level_01?SERVERNAME=MY_AWESOME_SERVER?MAXPLAYERS=6?Game=COOP -log -server

Windows:

“C:\Program Files (x86)\Steam\steamapps\common\TSAServer\TSAServer.exe” Level_01?SERVERNAME=MY_AWESOME_SERVER?MAXPLAYERS=6?Game=COOP -log -server

SERVERNAME = The Servers name, without spaces!
MAXPLAYERS = 2-6, max players for the time being is hard-coded to 6 players max per server
GAME = Which game mode to run

 

Valid game modes

DM
COOP
CIV
ZBRAWL
ROYALE

Valid level names

Level_01 (Abandoned City)
Level_02 (Trailer Park)

In case you want to run multiple servers on the same machine, or if you’re already hosting another game server on the same machine, you can use these prefixes

?Port=7778?QueryPort=27016

Example:

./TSAServer.sh Level_01?SERVERNAME=MY_SERVER?MAXPLAYERS=6?Game=COOP?Port=7778?QueryPort=27016 -log -server

which will allow the game server to use alternative ports, remember to open these in your firewall!

Categories all

TSA Beta Patch Notes v0.6

Patch notes for TSA v0.6

Bug Fixes

  • FIXED* Zombies would sometimes not respawn in Protect the Civilians game mode
  • FIXED* Players would sometimes spawn next to another player in Deathmatch
  • FIXED Friendly player names not showing in Zombie Brawl Game Mode
  • FIXED Players could still control a vehicle after being killed
  • FIXED Removed can respawn timer if deaths >= player lives
  • FIXED Players could enter buildings when “inside” another building, now only allows you to enter a building if you are actually on the ground
  • FIXED Death animations sometimes ending up in a T-pose when animation was finished
  • FIXED Removed spawned item physics state
  • FIXED You can no longer join games that are in progress for game modes: Simple Royale and Protect the Civilians
  • FIXED Dead state not properly set/reset on player death causing player being unable to respawn in rare occations

New features

  • Added Aim sensitivity
  • Render scale in video options
  • Added in game “Scanner”, you now have the ability to scan for nearby items and enemies (NPCs only), they will highlight for a few seconds, making it easier to find Zombies in COOP game modes etc.
  • Added player health bar
  • Added player stamina bar
  • Added player scanner cooldown bar
  • Added the ability to invite steam friends to your game session
  • Added 33 Steam Achievements**
  • Added HIT Indicators to player hud when taking damage, including hit direction
  • Added player sprinting & stamina
  • Added more enterable buildings
  • Added game music
  • Added game localization***
  • Added whiskey bottles that will give you a stamina boost

Weapons

  • Added Melee Weapons, also the option to set game modes to melee only
  • Added muzzle flash to weapons
  • Added weapon ammo & Weapon ammo counter to HUD
  • Added weapon reload animations & sound
  • New melee weapon: Fire Axe

Simple Royale

  • New game mode: Simple Royale, a simple “Battle Royale” game mode
  • Added Battle Royale shrinking ring, if you are outside of this ring, you take damage

Vehicles

  • New vehicle: Garbage Truck, has 400 HP and a Machine gun, slow attack speed
  • Increased Tank torque, making it.. less clunky

Changes

  • Zombie Brawl game mode is now a Melee only game mode
  • Zombie Brawl game mode now has random spawn points instead of all players starting at the same location
  • Removed 3d health widgets from ALL players and vehicles, only enemy NPCs have them
  • Disabled the ability to enter some buildings in death match mode
  • Assault Rifle boosted damage
  • Rocket Launcher lowered damage, added more inaccuracy when shooting
  • Sniper Rifle slightly increased fire rate and boosted damage
  • Lowered player base walk speed, you will walk slower then Zombies but you now have the ability to Sprint

*Needs more testing
**Still working on achievements
***Language localization is still work in progress, mostly for testing at the moment

Categories all