{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "type" : "object",
  "properties" : {
    "enableUdp" : {
      "type" : "boolean",
      "description" : "Is udp enabled? If not, the server will only use TCP"
    },
    "physics" : {
      "type" : "object",
      "properties" : {
        "iterations" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "Sets number of iterations per sub-steps used by Krunch"
        },
        "lodDetail" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "The detail of the collision LOD of ships, higher values are more detailed but heavier to compute"
        },
        "maxDePenetrationSpeed" : {
          "type" : "number",
          "format" : "double",
          "description" : "Limit the max collision de-penetration speed so that rigid bodies don't go flying apart when they overlap"
        },
        "physicsSpeed" : {
          "type" : "number",
          "format" : "double",
          "description" : "How fast the physics is running. 1.0 is full speed, 0.5 is 50% speed, etc."
        },
        "solver" : {
          "type" : "string",
          "enum" : [ "GAUSS_SEIDEL", "JACOBI" ],
          "description" : "Sets the constraint solver used by Krunch"
        },
        "subSteps" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "Sets number of sub-steps used by Krunch"
        }
      },
      "additionalProperties" : false,
      "description" : "All related settings to the physics engine"
    },
    "pt" : {
      "type" : "object",
      "properties" : {
        "physicsTicksPerGameTick" : {
          "type" : "integer",
          "format" : "int32"
        },
        "synchronizePhysics" : {
          "type" : "boolean",
          "description" : "Synchronize the physics thread and the game thread"
        },
        "terrainBakingThreadPriority" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "Thread priority of terrain baking threads. 5 is default priority, higher is higher priority, lower is lower priority."
        },
        "terrainBakingThreads" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "Number of terrain baking threads, more is good for preventing stutters when flying fast ships. However, too many will overload the cpu which will lag the game."
        },
        "terrainDeletionThreadPriority" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "Thread priority of terrain deletion threads. These are used to clean up memory, so they can be lower priority than."
        },
        "terrainDeletionThreads" : {
          "type" : "integer",
          "format" : "int32",
          "description" : "Number of terrain deletion threads. Typically just 1 is fine."
        }
      },
      "additionalProperties" : false,
      "title" : "Physics Thread Settings"
    },
    "shipLoadDistance" : {
      "type" : "number",
      "format" : "double",
      "description" : "Ship load distance in blocks"
    },
    "shipUnloadDistance" : {
      "type" : "number",
      "format" : "double",
      "description" : "Ship unload distance in blocks"
    },
    "udpPort" : {
      "type" : "integer",
      "format" : "int32",
      "description" : "Port to attempt to establish UDP connections on"
    },
    "$schema" : {
      "type" : "string"
    }
  },
  "additionalProperties" : false
}