Jump to content

Improvements for the dedicated server


Alloc

Recommended Posts

Just looked at the involved code (it's even part of the .NET framework) ... it should be able to handle a way longer interval (more like in terms of years ;) ). Also there should be no way to get it in the negative area. So in the end I simply can't tell you what's going on there :(

 

 

Have no idea how its going negative and making such a big leap from 12960 to -16551 so no idea. I have no idea whats going on myself, Server was on a VPS I am switching to full dedicated as I write this so ill test on there and see if it was a VPS issue.

Link to comment
Share on other sites

Have no idea how its going negative and making such a big leap from 12960 to -16551 so no idea. I have no idea whats going on myself, Server was on a VPS I am switching to full dedicated as I write this so ill test on there and see if it was a VPS issue.

Actually VPS might be an issue for the timer depending on the used virtualization technology + its configuration. Well, let me know if it happens again :)

Link to comment
Share on other sites

Actually VPS might be an issue for the timer depending on the used virtualization technology + its configuration. Well, let me know if it happens again :)

 

Yea will do guy, Working on getting things switched over now, Hope the players don't get too upset but might take a hour longer then I thought... lol

Link to comment
Share on other sites

Have no idea how its going negative and making such a big leap from 12960 to -16551 so no idea. I have no idea whats going on myself, Server was on a VPS I am switching to full dedicated as I write this so ill test on there and see if it was a VPS issue.

 

I'm seeing the same thing. It's actually counting down to zero.. could it be some type of rollover when it reaches a number that's too high??

 

-733837.800 STATS: 3375.79,15.84,3690.3,5953.1,10175,210,11,28,61,1123,456
-733807.000 Time: 3376.29m FPS: 17.79 Heap: 3233.3MB Max: 5953.1MB Chunks: 9802 CGO: 205                                                                   Ply: 11 Zom: 42 Ent: 73 (1120) Items: 456

Edited by Soylent (see edit history)
Link to comment
Share on other sites

I'm seeing the same thing. It's actually counting down to zero:

 

-733837.800 STATS: 3375.79,15.84,3690.3,5953.1,10175,210,11,28,61,1123,456
-733807.000 Time: 3376.29m FPS: 17.79 Heap: 3233.3MB Max: 5953.1MB Chunks: 9802 CGO: 205                                                                   Ply: 11 Zom: 42 Ent: 73 (1120) Items: 456

 

What setup? VPS (technology?), real physical machine?

Link to comment
Share on other sites

Hm, ok, they could use about anything :D

 

 

Huh? What about that post then?

 

Im sorry I lost you there which post? I was using the VPS hosted by nfoservers which I was thinking is the reason zombies would freeze and the clock would count negative however today I am switching to a full dedicated machine so I will be the only user on the system. I am thinking its because of the VPS that I was having so many issues I just have to set things up on the dedicated and see if it still happens.

Link to comment
Share on other sites

Ok, by "a physical machine which had many users on it" you were probably referring to a VPS ;) (In the end any system runs on a physical system, but the thing that matters here is that it's not running directly on the physical machine but a virtual one).

Well, a misconfigured Xen could really be the problem for clock issues afair.

Link to comment
Share on other sites

Well, a misconfigured Xen could really be the problem for clock issues afair.

 

Gee now you have me wondering if that is what it was, I am paying much more for the Dedicated then the VPS, Don't get me wrong the Dedicated will be a way better system then the VPS was but I am tight on funds for this project. Anyway I will test the Dedicated and see what happens with it then post here to let everyone know.

Link to comment
Share on other sites

Ok, by "a physical machine which had many users on it" you were probably referring to a VPS ;) (In the end any system runs on a physical system, but the thing that matters here is that it's not running directly on the physical machine but a virtual one).

Well, a misconfigured Xen could really be the problem for clock issues afair.

 

Possibly, but I have two servers on the same host. One of them is fine. The only thing I can think of is that Blue Fang does not support the restart/shutdown console commands, because it "de-syncs" with their control panel. They tell me to do a saveworld and just kill the server from their page. That can't be good for it

Link to comment
Share on other sites

Shouldn't hurt the time in the log. This one's totally independent of anything but the duration of the current instance and as I said that's even basically just a .NET timer that is read and output to the log ... So either something going really wrong during runtime (like wrong (virtual) HW or memory corruption) or the steps to output the integer to the log have some error. Though I couldn't see one in there ;)

Link to comment
Share on other sites

I'm running render map on a server, and it's got 93,664 files to go... any way to optimize that? What happens when one player map has an older version than another (like if a base was built later)? Can you skip duplicates, like from all the players that log in and out immediately?

 

Also, when I open the website, I get these errors in the log:

 

45186.930 Error in Web.HandleRequest(): No handler found for path "/favicon.ico"
45189.650 RenderMap: 18256/93664 (19%)
45192.320 Error in StaticHandler.HandleRequest: System.IO.IOException: Write failure ---> System.Net                                                                          .Sockets.SocketException: An existing connection was forcibly closed by the remote host.

 at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags)                                                                           [0x00000] in <filename unknown>:0
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 --- End of inner exception stack trace ---
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00                                                                          000] in <filename unknown>:0
 at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in                                                                           <filename unknown>:0
 at AllocsFixes.NetConnections.Servers.Web.StaticHandler.HandleRequest (System.Net.HttpListenerRequ                                                                          est req, System.Net.HttpListenerResponse resp, System.Net.HttpListenerBasicIdentity user) [0x00000]                                                                           in <filename unknown>:0
45192.890 RenderMap: 18272/93664 (19%)
45196.480 RenderMap: 18288/93664 (19%)
45197.120 Error in StaticHandler.HandleRequest: System.IO.IOException: Write failure ---> System.Net                                                                          .Sockets.SocketException: An existing connection was forcibly closed by the remote host.

 at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags)                                                                           [0x00000] in <filename unknown>:0
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 --- End of inner exception stack trace ---
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00                                                                          000] in <filename unknown>:0
 at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in                                                                           <filename unknown>:0
 at AllocsFixes.NetConnections.Servers.Web.StaticHandler.HandleRequest (System.Net.HttpListenerRequ                                                                          est req, System.Net.HttpListenerResponse resp, System.Net.HttpListenerBasicIdentity user) [0x00000]                                                                           in <filename unknown>:0
45197.120 Error in StaticHandler.HandleRequest: System.IO.IOException: Write failure ---> System.Net                                                                          .Sockets.SocketException: An existing connection was forcibly closed by the remote host.

 at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags)                                                                           [0x00000] in <filename unknown>:0
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 --- End of inner exception stack trace ---
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00                                                                          000] in <filename unknown>:0
 at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in                                                                           <filename unknown>:0
 at AllocsFixes.NetConnections.Servers.Web.StaticHandler.HandleRequest (System.Net.HttpListenerRequ                                                                          est req, System.Net.HttpListenerResponse resp, System.Net.HttpListenerBasicIdentity user) [0x00000]                                                                           in <filename unknown>:0
45197.120 Error in StaticHandler.HandleRequest: System.IO.IOException: Write failure ---> System.Net                                                                          .Sockets.SocketException: An existing connection was forcibly closed by the remote host.

 at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags)                                                                           [0x00000] in <filename unknown>:0
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 --- End of inner exception stack trace ---
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00                                                                          000] in <filename unknown>:0
 at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in                                                                           <filename unknown>:0
 at AllocsFixes.NetConnections.Servers.Web.StaticHandler.HandleRequest (System.Net.HttpListenerRequ                                                                          est req, System.Net.HttpListenerResponse resp, System.Net.HttpListenerBasicIdentity user) [0x00000]                                                                           in <filename unknown>:0
45197.620 Error in StaticHandler.HandleRequest: System.IO.IOException: Write failure ---> System.Net                                                                          .Sockets.SocketException: An existing connection was forcibly closed by the remote host.

 at System.Net.Sockets.Socket.Send (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags)                                                                           [0x00000] in <filename unknown>:0
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 --- End of inner exception stack trace ---
 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x0000                                                                          0] in <filename unknown>:0
 at System.Net.ResponseStream.InternalWrite (System.Byte[] buffer, Int32 offset, Int32 count) [0x00                                                                          000] in <filename unknown>:0
 at System.Net.ResponseStream.Write (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in                                                                           <filename unknown>:0
 at AllocsFixes.NetConnections.Servers.Web.StaticHandler.HandleRequest (System.Net.HttpListenerRequ                                                                          est req, System.Net.HttpListenerResponse resp, System.Net.HttpListenerBasicIdentity user) [0x00000]                                                                           in <filename unknown>:0

Link to comment
Share on other sites

Hi Alloc,

 

I've been working on some mods to the dedicated server, but have been doing so by hacking the .il directly, which is a pain. I thought, instead, I'd take your route through deobfuscation, building, and patching the assembly. I thought it a good start to build your server improvements solution, and was elated to find a source tree for it just above the release directory form your link.

 

However, I'm not getting through deobfuscation using the Deobfuscate pre0.3.1 release. It says "success" and produces an Assembly-CSharp.deobf.dll, but the result still has the scrambled unicode chars. The mainlog.txt shows that it's not able to load any of the .dll's in the sub-tree, or one of their dependencies.

 

ERROR : Unable to load the patcher NamePatcher :

ERROR : System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Users\tdriscoll\Documents\7 Days To Die\dllmod\Alloc_build\binary-improvements\deobfuscate-7d2d\patchers\NamePatcher.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)

File name: 'file:///C:\Users\tdriscoll\Documents\7 Days To Die\dllmod\Alloc_build\binary-improvements\deobfuscate-7d2d\patchers\NamePatcher.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.

at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)

at System.Reflection.Assembly.LoadFrom(String assemblyFile)

at DeobfuscateMain.Deobfuscator.Main(String[] args)

 

The deobfuscate tree has the config.xml, Deobfuscate-Main.exe, mailog.txt, Mono.Cecil.dll,Mono.Cecil.Rocks.dll and the patchers subdirectory containing the three .dlls that don't want to load.

 

Is there a dependency that's missing from the release tree, or is it likely encountering an execution permissions issue?

 

Thanks in advance for any direction you might provide.

Edited by leadingzero (see edit history)
Link to comment
Share on other sites

I'm running render map on a server, and it's got 93,664 files to go... any way to optimize that?

Nope, if the uncovered map is so big and you run rendermap it will have to do all those parts (btw, it's not directly files and also not necessarily linear in time during those steps).

 

What happens when one player map has an older version than another (like if a base was built later)? Can you skip duplicates, like from all the players that log in and out immediately?

I don't use any player maps. The rendering is done directly from the chunks as they are in the game so it will always be up to date and just contain anything that has ever been rendered by the game.

 

Also, when I open the website, I get these errors in the log:

I would assume they don't hurt. Do you see any problems when those errors appear? Do they appear when you tried to open the page while rendermap was running?

 

 

/EDIT: Ignore that very last question, the log shows that it was during rendermap ;)

I assume the engine just wasn't fast enough to reply to the browsers request as it is quite busy with rendering during that time so the browser probably closed the connection for a timeout.

 

 

@leadingzero:

First of all I just made an updated release package for the deobfuscator which contains the entity.position field used by my mod so you should switch to that one if you want to also apply my mod ;)

 

 

Is there a dependency that's missing from the release tree, or is it likely encountering an execution permissions issue?

I suppose it indeed is some kind of permission or access problem. Wonder why it tries to open the files by an URI (file:///) instead of just a local path. You could try for example to put the deobfuscator in a simpler path, e.g. (at least for trying) in C:\deobfuscate.

Edited by Alloc (see edit history)
Link to comment
Share on other sites

I've been using your tool on a pretty busy server, and it's been amazing. I was wondering if you could add a list of players to the webserver map? Currently I have to click each individual dot to see who it is, and if someone is much further out, I had to scroll the map around look for them.

Link to comment
Share on other sites

That was exactly it! I was able to deobfuscate, compile 7dtd-server-fixes.dll, compile the assembly-patcher, invoke 7dtd-fixer.exe and produce an Assembly-CSharp.patched.dll -- which totally works.

 

Is "7d2d-server-fixes" on github somewhere, or is there otherwise a way to download the whole source tree recursively? I click-save-as'd it from the download link one file at a time, creating directories on my end to match your tree.

 

Thanks so much for your generosity in sharing you expertise and efforts!

Link to comment
Share on other sites

Gee now you have me wondering if that is what it was, I am paying much more for the Dedicated then the VPS, Don't get me wrong the Dedicated will be a way better system then the VPS was but I am tight on funds for this project. Anyway I will test the Dedicated and see what happens with it then post here to let everyone know.

 

After getting my dedicated setup and leaving run for some time I have noticed a lot of improvements on the server side. One being my zombie no longer go out of sync with the server/clients so they no longer freeze and get bugged out, Also the negative times seen in my logs in the past I have yet to see any longer.

 

Seem running a 7DTD server on a VPS is a bad thing and I would suggest no one do it, Better to just pay the few extra few bucks and get a dedicated.

Link to comment
Share on other sites

@Alloc

 

Is there a way to add a custom command in game that players can type in chat like /url and it will open the players default browser to the link set in the command??

 

Also a /rd or /removedebuff command so if a Admin breaks their leg while helping a player they can remove it and walk normal again :p

Link to comment
Share on other sites

When I try compile 7dtd-server-fixes I get the below 3 errors...

 

F:\7dtd\binary-improvements\7dtd-server-fixes\src\CustomCommands\ListPlayersExtended.cs(22,22): Error CS1061: 'EntityPlayer' does not contain a definition for 'fd008e' and no extension method 'fd008e' accepting a first argument of type 'EntityPlayer' could be found (are you missing a using directive or an assembly reference?) (CS1061) (7dtd-server-fixes)

 

F:\7dtd\binary-improvements\7dtd-server-fixes\src\CustomCommands\ListPlayersExtended.cs(22,22): Error CS1061: 'EntityPlayer' does not contain a definition for 'fd00b1' and no extension method 'fd00b1' accepting a first argument of type 'EntityPlayer' could be found (are you missing a using directive or an assembly reference?) (CS1061) (7dtd-server-fixes)

 

F:\7dtd\binary-improvements\7dtd-server-fixes\src\CustomCommands\TeleportPlayer.cs(38,38): Error CS1061: 'PackageQueue' does not contain a definition for 'Send' and no extension method 'Send' accepting a first argument of type 'PackageQueue' could be found (are you missing a using directive or an assembly reference?) (CS1061) (7dtd-server-fixes)

 

What am I missing?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...