Please enhance the "Trying to Cheat" logmessages

LordTylus shared this feedback 3 months ago

Hello there,

currently I am facing a 1GB big logfile on our community server that is filled with:

11:33:24.1251 [DEBUG]  Keen:  was trying to cheat!
11:31:04.0335 [DEBUG]  Keen:    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Sandbox.Engine.Multiplayer.MyMultiplayerServerBase.ValidationFailed(UInt64 clientId, Boolean kick, String additionalInfo, Boolean stackTrace)
   at Sandbox.Game.Entities.MyCubeGrid.BuildBlockRequestInternal(MyBlockVisuals visuals, MyBlockLocation location, MyObjectBuilder_CubeBlock blockObjectBuilder, Int64 builderEntityId, Boolean instantBuild, Int64 ownerId, UInt64 sender, Boolean isProjection)
   at Sandbox.Game.Entities.Blocks.MyProjectorBase.BuildInternal(Vector3I cubeBlockPosition, Int64 owner, Int64 builder, Boolean requestInstant, Int64 builtBy)
   at Sandbox.Game.Entities.Blocks.MyProjectorBase.BuildInternal<>VRageMath_Vector3I#System_Int64#System_Int64#System_Boolean#System_Int64.Invoke(MyProjectorBase& this, Vector3I& cubeBlockPosition, Int64& owner, Int64& builder, Boolean& requestInstant, Int64& builtBy, DBNull& arg6)
   at VRage.Network.MyReplicationLayerBase.InvokeLocally[T1,T2,T3,T4,T5,T6,T7](CallSite`7 site, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7)
   at VRage.Network.MyReplicationLayer.DispatchEvent[T1,T2,T3,T4,T5,T6,T7,T8](CallSite callSite, EndpointId recipient, Nullable`1 position, T1& arg1, T2& arg2, T3& arg3, T4& arg4, T5& arg5, T6& arg6, T7& arg7, T8& arg8)
   at VRage.Network.MyReplicationLayerBase.RaiseEvent[T1,T2,T3,T4,T5,T6,T7](T1 arg1, T7 arg7, Func`2 action, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, EndpointId endpointId, Nullable`1 position)
   at Sandbox.Game.Entities.Blocks.MyProjectorBase.Build(MySlimBlock cubeBlock, Int64 owner, Int64 builder, Boolean requestInstant, Int64 builtBy)
   at SpaceEngineers.Game.Entities.Blocks.MyShipWelder.<>c__DisplayClass27_0.<Activate>b__0()
   at Sandbox.MySandboxGame.ProcessInvoke()
After Talking to Inflex we figured out that its likely related to a ship welder either trying to build an unresearched or DLC block. Unfortunately there is not really any information about that to pinpoint it.

Furthermore this log message in this case doesnt even output a playername that is causing this issue.

So since we are assuming a bug in the client requesting to build stuff that is not allowed to, I really would like to enhance the quality of the log messages there:

1. Please add the steam ID of the person sending the invalid messages so its easier to pinpoint. We dont have a player without name on our server, so I am certain theres something wrong.

2. Please add a line that shows which validation rule actually triggered. Currently I can only guess.

3. it would be very cool if we could somewhat bundle the messages so the log doesnt get spammed. In this case there I get about 30 of these messages per tick. That fills up the log waaaaay to fast.

Thank you