So, because TNet has to work with everything the server is very "dumb" by default. It has no knowledge of Unity, what's going on in the game, or where objects are in the game. It doesn't even know what game objects are. The server functions as a relay. It receives a packet from a player and sends it to (an)other player(s). So if you want the server to control loot spawning and all that, you'll need to build onto the server. It's a complicated process, but thanks to TNet being very extensible it's made a lot easier. Still, it requires in-depth knowledge of networking, Unity, and TNet as a whole. However, if you're okay with settling for something much easier but less server-sided, you can have the host of the channel control loot spawning. For that it's as simple as checking TNManager.isHosting. So your loot spawn function might look like:
void SpawnLoot()
{
if (!TNManager.isHosting)
return;
TNManager.Instantiate(params go here);
}
Moving on, the server name is available when retrieving it from the lobby server. It's contained in the ServerList.Entry class. Seems you can access it from TNLobbyClient.knownServers as well. You could also set the name of the server in the channel data, or the serverOptions, or send it as a custom packet. Possibilities are limitless.
TNServerInstance shouldn't even be available if you're connecting as a client to a remote server. If you're trying to get the name of the server AS the server, then TNServerInstance.serverName should work, otherwise you can access it directly through an instance of GameServer.name.
The high ping sounds like an issue with your VPS host. Try opening up command prompt (or terminal) and pinging your VPS. If it's high then complain to your host. Note that distance effects ping.
I don't know about the lobby server issue - that string doesn't even exist in TNet2 (I haven't upgraded to TNet3 yet

) - so Aren or someone else will have to answer that one for you
