• Announcements

    • JoeW

      [UPDATED] Physical Megapack Disc Issues   04/16/2018

      We are now ready to accept claims for PS4 Megapack replacements.  Once again, our deepest appologies for this entire situation. We understand that your purchase of the Megapack was a show of support by our fans, many of which already owned the game. Please know that we have done our best to push as hard as we can for a quick and fair resolution to this issue. This has taken WAY too long to be resolved but we have done everything in our power to make sure our fans get what they purchased.   We are going to use the voucher codes we have been using to provide the digital version to claim the physical replacement discs. For North America, we are handling these requests directly through our own store with help from our friends at IndieBox. Claims will be handled at no cost to you. For claims outside of North America, 505 will be taking your information and processing your claims.  Those who purchased the Megapack after 4/26/2018 should have been given a voucher at the time of purchase on your receipt.  Those who purchased before 4/26/2018 or did not get a code otherwise can contact us for a voucher code that will entitle them to the digital megapack and can be used to claim the physical replacement discs. We have been handing those out for a while now, but if you are in this category and have not requested a code, you can do so here: http://support.kleientertainment.com/customer/en/portal/articles/2935839-physical-mega-pack-disc-support-information Once you have a voucher code:
      For purchasers in Europe (SIEE). To make a claim you will need to make file a claim through 505 here: https://docs.google.com/forms/d/e/1FAIpQLSckru65CWkXH5RZ_3j2f5_h1djNiAyrl8R0PCvdKPmGwItyvA/viewform For purchasers in North America (SIEA). To make a claim you will use our support site and use the voucher code to claim a replacement here: http://support.kleientertainment.com/customer/portal/articles/2952265-ps4-faulty-disc-claim If you have any questions or concerns, please let us know here on this thread or contact us at livesupport@kleientertainment.com Thank you.   

Search the Community

Showing results for tags 'server'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Oxygen Not Included
    • Oxygen Not Included FAQ
    • [Oxygen Not Included] - Developer log
    • [Oxygen Not Included] - General Discussion
    • [Oxygen Not Included] - Suggestions and Feedback
    • [Oxygen Not Included] - Bug Tracker
    • [Oxygen Not Included] Art, Music & Lore
    • Community Challenges
    • [Oxygen Not Included] - Latest Content Update
    • [Oxygen Not Included] - Latest Animated Short
  • Hot Lava
    • [Hot Lava Beta] - General Discussion
    • [Hot Lava Beta] - Suggestions and Feedback
    • [Hot Lava Beta] - Bug Tracker
    • [Hot Lava Beta] - Strats and Records
    • [Hot Lava Beta] - Developer Log
    • Hot Lava Beta Latest Update
  • Griftlands
    • [Griftlands] - General Discussion
  • Don't Starve Together
    • Don't Starve Together FAQ
    • [Don't Starve Together] Developer log
    • [Don't Starve Together] General Discussion
    • [Don't Starve Together] The Gorge
    • [Don't Starve Together] The Forge
    • [Don't Starve Together] PS4
    • [Don't Starve Together] Xbox One
    • [Don't Starve Together] Bug Tracker
    • [Don't Starve Together] Trading
    • [Don't Starve Together] Server Bulletin
    • [Don't Starve Together] Dedicated Server Discussion
    • [Don't Starve Together] Mods and Tools
    • [Don't Starve Together] Tales of Life and Death
    • [Don't Starve Together] Suggestions and Feedback
    • [Archived Bugs]
  • Don't Starve
    • Don't Starve FAQ
    • [Don't Starve: Pocket Edition] iOS / Android
    • [Don't Starve] General Discussion
    • [Don't Starve] Mods and tools
    • [Don't Starve] Art, Music & Lore
    • [Don't Starve] Suggestions and Feedback
    • [Don't Starve] Videos
    • [Don't Starve] Bug Tracker
    • [Don't Starve] Trading
    • [Don't Starve] Testing Discussion (archive)
  • Klei Entertainment Games
    • Eets Munchies
    • [Invisible, Inc.] General Discussion and Strategies
    • Mark of the Ninja
    • Shank
  • Other Stuff
    • The Off-Topic Area
    • Forum Upgrade

Categories

  • Don't Starve
    • Custom Character and Skins
    • Game Modifications
    • Language Packs
    • Modding Tools, Tutorials & Examples
    • Custom Maps

Categories

  • Oxygen Not Included - [Early Access]
  • Don't Starve Together
  • Don't Starve Together: The Gorge
  • Don't Starve Together: The Forge
  • Don't Starve Together: The Forge (Archive)
  • [Don't Starve Together] PS4
  • [Don't Starve Together] Xbox One
  • Don't Starve: Shipwrecked
  • Don't Starve: Shipwrecked [archive]
  • [Don't Starve Together] PS4 (archive)
  • [iOS] Don't Starve: Shipwrecked

Categories

  • Oxygen Not Included - [Early Access]
  • Don't Starve Together
  • [PS4] Don't Starve Together
  • [Xbox One] Don't Starve Together
  • Don't Starve: Shipwrecked
  • Hot Lava - [Open Beta]

Categories

  • Hot Lava - Beta Reports


Biography


Location


Interests


Occupation


Modder


Chester Kickstarter


Chester Kickstarter


Chester Kickstarter


Chester Kickstarter


Chester Kickstarter


Klei Featured Artist


Early Supporter


Early Supporter


Don't Starve


Don't Starve Together


Oxygen Not Included

Found 15 results

  1. 1. Download and install SteamCMD: Click here to download 2. Create three data folders for your servers: \\Documents\Klei\DoNotStarveTogether\MyDediServer \\Documents\Klei\DoNotStarveTogether\MyDediServer\Master \\Documents\Klei\DoNotStarveTogether\MyDediServer\Caves 3. Start Don't Starve Together from Steam and click on the "Play!" button. 4. Click on the "Acct Info" button. 5. Click on the "Generate Server Token" button, and copy the token into a text editor. 6. Save the token file to: \\Documents\Klei\DoNotStarveTogether\MyDediServer\cluster_token.txt 7. Copy and save the following text to: \\Documents\Klei\DoNotStarveTogether\MyDediServer\cluster.ini 8. Copy and save the following text to: \\Documents\Klei\DoNotStarveTogether\MyDediServer\Master\server.ini 9. Copy and save the following text to: \\Documents\Klei\DoNotStarveTogether\MyDediServer\Caves\server.ini 10. Copy and save the following text to: \\Documents\Klei\DoNotStarveTogether\MyDediServer\Caves\worldgenoverride.lua 11. Copy and save the following text to: \\Documents\Klei\StartDSTServers.bat 12. Checklist of all the files you should have now: 13. Double-click StartDSTServers.bat to start your dedicated servers!
  2. I want to create a server in which spider queens don't spawn, but I don't know how to do this, any insight?
  3. Greetings everyone, I recently created a kind-of "proper" bash script which I use to start/stop/update my Don't Starve Together dedicated server and I wanted to share it with the rest of you. There some additional features. For example, you can pass commands to the server and there is a verification function which will check some basic settings before continuing. There are probably some bugs and there's probably people out there who know more about this than I do, so by all means: If you have suggestions/criticism -> I'm all ears (no, seriously, I am). Also, don't let my name fool you. This script is clean and won't install malware or whatever . #!/bin/sh ### BEGIN INIT INFO # Provides: dst_server # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: Don't Starve Together Dedicated Server # Description: Starts the Don't Starve Together Dedicated Server ### END INIT INFO ################################################################################ # HOW TO INSTALL THIS SCRIPT? # # 1. Copy the contents of this script and run commands: # # 2. echo "" > /etc/init.d/start_dst_server # # 3. nano /etc/init.d/start_dst_server # # 4. chown root /etc/init.d/start_dst_server # # 5. chgrp root /etc/init.d/start_dst_server # # 6. Right click to paste. CTRL + O to write, CTRL + X to quit. # # 7. chmod +x /etc/init.d/start_dst_server; exit # # 8. update-rc.d start_dst_server defaults # # # ################################################################################ ################################################################################ # OPTIONAL: CRONTAB: # #0 7 * * * /etc/init.d/start_dst_server restart --force > /dev/null 2>&1 # # # ################################################################################ ################################################################################ # CONFIGURATION: Needs to be completed by the person managing the server. # ################################################################################ # What user account should be used to run the dedicated server? RUN_AS_USER="steam" # What's the location of steam? STEAM_PATH="/home/steam" # What's the location of Don't Starve Together? GAME_PATH="/home/steam/steamapps/DST" # What's the location of the binary file? BIN_FILE_PATH="/home/steam/steamapps/DST/bin" # What's the name of the binary file? BIN_FILE_NAME="dontstarve_dedicated_server_nullrenderer" # What's the name of the cluster? DST_CLUSTER_NAME="Cluster_1" # What's the name of the overworld? DST_SHARD_MASTER_NAME="Master" # What's the name of the cave? (Optional: Leave empty if you don't use caves). DST_SHARD_CAVE_NAME="Caves" # Additional arguments for the overworld (Optional). RUN_ARGUMENTS_MASTER="-threaded_render -threaded_physics" # Additional arguments for the cave (Optional). RUN_ARGUMENTS_CAVE="-threaded_render -threaded_physics" ################################################################################ # SETTINGS: Don't touch these please! # ################################################################################ HUMAN_READIBLE_NAME="Dont Starve Together" BIN_FILE="${BIN_FILE_PATH}/${BIN_FILE_NAME}" RUN_ARGUMENTS="-console -cluster ${DST_CLUSTER_NAME} -shard" if [ -n "${RUN_ARGUMENTS_MASTER}" ]; then RUN_ARGUMENTS_MASTER="${RUN_ARGUMENTS} ${DST_SHARD_MASTER_NAME} ${RUN_ARGUMENTS_MASTER}"; else RUN_ARGUMENTS_MASTER="${RUN_ARGUMENTS} ${DST_SHARD_MASTER_NAME}"; fi if [ -n "${RUN_ARGUMENTS_CAVE}" ]; then RUN_ARGUMENTS_CAVE="${RUN_ARGUMENTS} ${DST_SHARD_CAVE_NAME} ${RUN_ARGUMENTS_CAVE}"; else RUN_ARGUMENTS_CAVE="${RUN_ARGUMENTS} ${DST_SHARD_CAVE_NAME}"; fi SCREEN_MASTER_REFERENCE="DST_M" SCREEN_CAVE_REFERENCE="DST_C" STOP_TIMEOUT=60 # Maximum time to wait for server to stop. Recommended value: 60 KILL_TIMEOUT=10 # Maximum time to wait for server to stop after kill command. Recommended value: 10 START_TIMEOUT=30 # Maximum time to wait for server to start. Recommended value: 30 FORCE_PROCEED=0 # Automatically proceed when prompted (1 for YES, 0 for NO). ################################################################################ # TEST: Please Ignore! # ################################################################################ # BIN_FILE_NAME="test.sh" # BIN_FILE_PATH="/home/steam/steamapps/DST" # BIN_FILE="${BIN_FILE_PATH}/${BIN_FILE_NAME}" ################################################################################ # RUN AS USER: This function will run commands with the predefined user. # ################################################################################ # Run command as the predefined user as configured in the settings above: as_user() { if [ `whoami` = $RUN_AS_USER ] ; then bash -c "$1"; else su - $RUN_AS_USER -c "$1"; fi } ################################################################################ # PID FUNCTION: This function will try to retrieve the PID of the process. # ################################################################################ # This function will return the process IDs of all related, running processes # of the game. pid() { pid="" if [ -n "${1}" ]; then pid=`ps ax | grep -v grep | grep -i SCREEN | grep ${BIN_FILE_NAME} | grep ${1} | awk '{print $1}'`; fi } ################################################################################ # STATUS: Checks whether or not the server is running. # ################################################################################ # Returns 0 if the server is running. # Returns 1 if the server is not running. status() { pid_of_master="" pid_of_cave="" pid ${SCREEN_MASTER_REFERENCE} && pid_of_master=${pid} pid ${SCREEN_CAVE_REFERENCE} && pid_of_cave=${pid} if [ -n "${pid_of_master}" ] || [ -n "${pid_of_cave}" ]; then # Correct: Master shard is running, and Cave shard isn't. if ([ -n "${pid_of_master}" ] && [ -z "${pid_of_cave}" ]) && [ -z "${DST_SHARD_CAVE_NAME}" ]; then return 0 # Correct: Both Master shard and Cave shard are running. elif ([ -n "${pid_of_master}" ] && [ -n "${pid_of_cave}" ]) && [ -n "${DST_SHARD_CAVE_NAME}" ]; then return 0 # Impossible: Cave shard is running, but Master shard isn't. # This should have been caught by the "verify" function! # If it isn't, then something went horribly wrong! elif [ -z "${pid_of_master}" ] && [ -n "${pid_of_cave}" ]; then # Even though this is a SEVERE ERROR, we can't halt the script at this point. return 0 # Anyting else is wrong, but we can't halt the script at this point. else return 0 fi else return 1 fi } ################################################################################ # COMMAND FUNCTION: With this function, you can pass commands to the server. # ################################################################################ # Sends commands to the active servers. # A shard can be specified to only send the command to one of the shards. # Commands themselves MUST be encapsulated with single quotes. # Example: ./start_dst_server command master 'c_announce("Example")' command() { local command="" local shard="" if status; then if [ -n "${@}" ]; then shard=`echo "${@}" | head -n1 | awk '{print $1;}'` if [ "${shard}" = "master" ] || [ "${shard}" = "cave" ]; then command=`echo "${@}" | cut -d' ' -f2-` if [ "${shard}" = "${command}" ]; then command=""; fi else command=${@} fi if [ -n "${command}" ]; then if ([ -n "${pid_of_master}" ] && [ "${shard}" = "master" ]) || ([ -n "${pid_of_master}" ] && [ "${shard}" != "cave" ]); then printf "\tRunning command \"\033[1m${command}\033[0m\" on the Master shard server.\n" as_user "screen -S ${SCREEN_MASTER_REFERENCE} -X stuff $'${command}\r'" fi if ([ -n "${pid_of_cave}" ] && [ "${shard}" = "cave" ]) || ([ -n "${pid_of_cave}" ] && [ "${shard}" != "master" ]); then printf "\tRunning command \"\033[1m${command}\033[0m\" on the Cave shard server.\n" as_user "screen -S ${SCREEN_CAVE_REFERENCE} -X stuff $'${command}\r'" fi printf "\n" else printf "\t\033[1mNo command argument provided for shard \"${shard}\". Please try again.\033[0m\n\n" fi else printf "\t\033[1mNo command argument provided. Please try again.\033[0m\n\n" fi else printf "\t\033[1mUnable to send command \"${command}\". Server hasn't been started yet.\033[0m\n\n" fi } ################################################################################ # KILL FUNCTION: This function will kill processes securely, if possible. # ################################################################################ # This function will attempt to kill one or multiple processes. kill() { local pid="" # printf %s "$*" | while IFS= read -r line || [ -n "$line" ]; do # printf "${line}\n" # done for pid in ${*}; do if ! [ "`echo ${pid} | egrep ^[[:digit:]]+$`" = "" ]; then printf "\t\tAttempting to kill process \033[1m${pid}\033[0m ... " # Attempt to gracefully kill the process: if [ `whoami` = "root" ]; then bash -c "kill -15 ${pid} > /dev/null 2>&1" else as_user "kill -15 ${pid} > /dev/null 2>&1"; fi local timeout=${KILL_TIMEOUT} # Give the process time to finish up: while [ `ps -p $pid | wc -l` -gt 1 ] && [ ${timeout} -ne 0 ]; do timeout=$((timeout-1)); sleep 1 done # If the above fails, aggressively kill the process: if [ `ps -p ${pid} | wc -l` -gt 1 ]; then if [ `whoami` = "root" ]; then bash -c "kill -9 ${pid} > /dev/null 2>&1" else as_user "kill -9 ${pid} > /dev/null 2>&1"; fi fi if [ `ps -p ${pid} | wc -l` -gt 1 ]; then printf "\e[1;31mFAILED!\e[0m\n"; else printf "\e[1;32mSUCCESS!\e[0m\n"; as_user "screen -wipe > /dev/null 2>&1"; fi else printf "\t\e[1;31mERROR\e[0m: Non-numeric process ID \"\033[1m${pid}\033[0m\" was passed to the \"\033[1mkill\033[0m\" function!\n" fi done } ################################################################################ # STOP: This function will try to stop the server, without killing the process.# ################################################################################ # This function will try to send a shutdown signal to the running screen # session. If that isn't possible, it will resort to killing to server # process instead. stop() { if status; then printf "\t\033[1mStopping the server\033[0m ..." # Send the shutdown command to the active server & announce the shutdown: command 'c_announce("Shutting down the '"${HUMAN_READIBLE_NAME}"' server!")' > /dev/null 2>&1 command 'c_shutdown(true)' > /dev/null 2>&1 # Give the server time to shutdown gracefully: local timeout=${STOP_TIMEOUT} local user_input="" while status && [ ${timeout} -ne 0 ]; do sleep 1 if [ $(( ${timeout} % 2 )) -eq 0 ]; then printf "."; fi timeout=$((timeout-1)) done # Verify and report the status of the server: if status; then if [ ${FORCE_PROCEED} -gt 0 ]; then user_input="y" else printf "\e[1;31m FAILED!\e[0m\n\tWould you like to try and kill process instead? (\e[1;37mY\e[0m/N) " read user_input fi if [ "$user_input" != "" ]; then user_input=`echo $user_input | cut -c1`; else user_input="y"; fi if [ "$user_input" = "y" ] || [ "$user_input" = "Y" ]; then kill "${pid_of_master} ${pid_of_cave}"; fi else printf "\e[1;32m SUCCESS!\e[0m\n"; as_user "screen -wipe > /dev/null 2>&1"; fi if status; then printf "\t\e[1;31mFAILED!\e[0m Unable to kill the process! Please try running this script again as \033[1mroot\033[0m!\n\n"; exit 1 else printf "\t\e[1;32mSUCCESS!\e[0m Stopped the server!\n\n"; fi else printf "\t\033[1mUnable to stop. Server hasn't been started yet.\033[0m\n\n" fi } ################################################################################ # START: This function will try to start the server. # ################################################################################ # This function will try to start the server. start() { if ! status; then # update printf "\t\033[1mStarting the server\033[0m ..." # Attempt to start the Master shard: as_user "cd ${BIN_FILE_PATH} && screen -dmS ${SCREEN_MASTER_REFERENCE} ${BIN_FILE} ${RUN_ARGUMENTS_MASTER}" # Attempt to start the Cave shard, if the DST_SHARD_CAVE_NAME variable is populated: if [ -n "${DST_SHARD_CAVE_NAME}" ]; then as_user "cd ${BIN_FILE_PATH} && screen -dmS ${SCREEN_CAVE_REFERENCE} ${BIN_FILE} ${RUN_ARGUMENTS_CAVE}"; fi # Give the process time to start: local timeout=${START_TIMEOUT} local user_input="" while ! status && [ ${timeout} -ne 0 ]; do sleep 1 if [ $(( ${timeout} % 2 )) -eq 0 ]; then printf "."; fi timeout=$((timeout-1)) done # Verify and report the status of the server: if status; then printf "\e[1;32m SUCCESS!\e[0m\n\n" else printf "\e[1;31m FAILED!\e[0m\n\tUnable to start the server! Exiting!\n\n" exit 1 fi else printf "\t\033[1mUnable to start. Server is already running.\033[0m\n\n" fi } ################################################################################ # VERIFIER: This function will verify the configuration & settings. # ################################################################################ # This function will verify if the configuration & settings are correct. # It is rather limited and will not be able to verify klei related settings, # folders or files! verify() { local error=0 printf "\n" # Verify if the user (RUN_AS_USER) is present on the system: if ! getent passwd ${RUN_AS_USER} > /dev/null 2>&1; then printf "\t\e[1;31mERROR\e[0m: The user \"\033[1m${RUN_AS_USER}\033[0m\" was not found on the settings!\n"; error=1; fi # Verify if the binary file path (BIN_FILE_PATH) exists: if [ ! -d "${BIN_FILE_PATH}" ]; then printf "\t\e[1;31mERROR\e[0m: Directory \"\033[1m${BIN_FILE_PATH}\033[0m\" does not exist!\n"; error=1; fi # Verify if the binary file (BIN_FILE) exists: if [ ! -s "${BIN_FILE}" ]; then printf "\t\e[1;31mERROR\e[0m: Binary file \"\033[1m${BIN_FILE_NAME}\033[0m\" does not exist!\n"; error=1; fi # Verify if SCREEN is installed on the server: if [ "$(which screen)" = "" ]; then printf "\t\e[1;31mERROR\e[0m: \"\033[1mSCREEN\033[0m\" is not installed on server! Please run the \"\033[1mapt-get install screen\033[0m\" command!\n"; error=1; fi # Notify the user in case errors were found: if [ ${error} -ne 0 ]; then printf "\n\t\e[1;31mThe script encountered errors during the verification of the configuration.\n\tPlease open the script a fix the aforementioned errors!\n\tExiting!\e[0m\n\n"; exit 1; fi local pid_of_master="" local pid_of_cave="" local user_input="" pid ${SCREEN_MASTER_REFERENCE} && pid_of_master=${pid} pid ${SCREEN_CAVE_REFERENCE} && pid_of_cave=${pid} if [ -n "${pid_of_master}" ] || [ -n "${pid_of_cave}" ]; then # Verify if multiple processes are running (which could never be the case, unless a user attempted to start processes manually): if [ "$(echo "${pid_of_master}" | sed -re '/^$/d' | wc -l)" -gt 1 ] || [ "$(echo "${pid_of_cave}" | sed -re '/^$/d' | wc -l)" -gt 1 ]; then if [ ${FORCE_PROCEED} -gt 0 ]; then user_input="y" else printf "\t\e[1;31mERROR\e[0m: More than one process was found running already!\n\tWould you like to try and kill these processes? (\e[1;37mY\e[0m/N) " read user_input fi if [ "$user_input" != "" ]; then user_input=`echo $user_input | cut -c1`; else user_input="y"; fi if [ "$user_input" = "y" ] || [ "$user_input" = "Y" ]; then # Kill the processes if the user agrees: kill "${pid_of_master} ${pid_of_cave}" pid ${SCREEN_MASTER_REFERENCE} && pid_of_master=${pid} pid ${SCREEN_CAVE_REFERENCE} && pid_of_cave=${pid} # Verify if the processes are still running and notify the user: if [ "$(echo "${pid_of_master}" | sed -re '/^$/d' | wc -l)" -gt 1 ] || [ "$(echo "${pid_of_cave}" | sed -re '/^$/d' | wc -l)" -gt 1 ]; then printf "\t\e[1;31mFAILED!\e[0m Unable to kill the processes! Please try running this script again as \033[1mroot\033[0m!\n\n" exit 1 else printf "\t\e[1;32mSUCCESS!\e[0m Killed all the processes!\n\n" fi else printf "\t\033[1mCannot continue without first killing the processes! Exiting!\033[0m\n\n" exit 1 fi # Verify if Cave is running while Master isn't (which could never be the case, unless a user attempted to start processes manually): elif [ -z "${pid_of_master}" ] && [ -n "${pid_of_cave}" ]; then if [ ${FORCE_PROCEED} -gt 0 ]; then user_input="y" else printf "\t\e[1;31mERROR\e[0m: Found a process for the Cave shard (\033[1m${DST_SHARD_CAVE_NAME}\033[0m), but not for the Master shard (\033[1m${DST_SHARD_MASTER_NAME}\033[0m)!\n\tWould you like to try and stop the Cave shard process? (\e[1;37mY\e[0m/N) " read user_input fi if [ "$user_input" != "" ]; then user_input=`echo $user_input | cut -c1`; else user_input="y"; fi if [ "$user_input" = "y" ] || [ "$user_input" = "Y" ]; then # Try to stop Cave shard process if the user agrees: stop pid ${SCREEN_MASTER_REFERENCE} && pid_of_master=${pid} pid ${SCREEN_CAVE_REFERENCE} && pid_of_cave=${pid} # Verify if the Cave shard process is still running and notify the user: if [ -z "${pid_of_master}" ] && [ -n "${pid_of_cave}" ]; then printf "\t\e[1;31mFAILED!\e[0m Unable to kill the Cave shard process! Please try running this script again as \033[1mroot\033[0m!\n\n" exit 1 else printf "\t\e[1;32mSUCCESS!\e[0m Killed the Cave shard process!\n\n" fi else printf "\t\033[1mCannot continue without first killing the Cave shard process! Exiting!\033[0m\n\n" exit 1 fi # Verify if the Cave shard is running and whether or not it should be running: elif [ -n "${pid_of_master}" ]; then # The Cave shard was found running and shouldn't be: if [ -n "${pid_of_cave}" ] && [ -z "${DST_SHARD_CAVE_NAME}" ]; then printf "\t\e[1;31mERROR\e[0m: The Cave shard was found running and shouldn't be.\n" # The Cave shard is not running but should be: elif [ -z "${pid_of_cave}" ] && [ -n "${DST_SHARD_CAVE_NAME}" ]; then printf "\t\e[1;31mERROR\e[0m: The Cave shard is not running but should be.\n" fi if ([ -n "${pid_of_cave}" ] && [ -z "${DST_SHARD_CAVE_NAME}" ]) || ([ -z "${pid_of_cave}" ] && [ -n "${DST_SHARD_CAVE_NAME}" ]); then if [ ${FORCE_PROCEED} -gt 0 ]; then user_input="y" else printf "\tWould you like to try and restart the server? (\e[1;37mY\e[0m/N) " read user_input fi if [ "$user_input" != "" ]; then user_input=`echo $user_input | cut -c1`; else user_input="y"; fi if [ "$user_input" = "y" ] || [ "$user_input" = "Y" ]; then # Try to stop Cave shard process if the user agrees: stop; start pid ${SCREEN_MASTER_REFERENCE} && pid_of_master=${pid} pid ${SCREEN_CAVE_REFERENCE} && pid_of_cave=${pid} # Verify if the issue is resolved and notify the user: if ([ -n "${pid_of_cave}" ] && [ -z "${DST_SHARD_CAVE_NAME}" ]) || ([ -z "${pid_of_cave}" ] && [ -n "${DST_SHARD_CAVE_NAME}" ]); then printf "\t\e[1;31mFAILED!\e[0m The issue wasn't resolved! Please try running this script again as \033[1mroot\033[0m!\n\n" exit 1 else printf "\t\e[1;32mSUCCESS!\e[0m Issue resolved!\n\n" fi else printf "\t\033[1mCannot continue without first restarting the server! Exiting!\033[0m\n\n" exit 1 fi fi fi fi } verify ################################################################################ # UPDATE FUNCTION: This function will try to update the server and mod files. # ################################################################################ # This function will try to update the server and mod files. update() { if status; then stop printf "\t\033[1mUpdating server files & mods:\033[0m\n" # Move the dedicated_server_mods_setup.lua to dedicated_server_mods_setup.lua.backup so that it does not get overwritten. as_user "mv ${GAME_PATH}/mods/dedicated_server_mods_setup.lua ${BIN_FILE_PATH}/../mods/dedicated_server_mods_setup.lua.backup" # Update and validate the game files. as_user "${STEAM_PATH}/steamcmd/steamcmd.sh +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir ${GAME_PATH} +app_update 343050 validate +quit" # Remove the dedicated_server_mods_setup.lua file and move the dedicated_server_mods_setup.lua.backup file to the dedicated_server_mods_setup.lua file. as_user "rm -f ${GAME_PATH}/mods/dedicated_server_mods_setup.lua" as_user "mv ${GAME_PATH}/mods/dedicated_server_mods_setup.lua.backup ${BIN_FILE_PATH}/../mods/dedicated_server_mods_setup.lua" # Update the mod files. as_user "cd ${BIN_FILE_PATH} && ${BIN_FILE} -only_update_server_mods" start else printf "\t\033[1mUpdating server files & mods:\033[0m\n" # Move the dedicated_server_mods_setup.lua to dedicated_server_mods_setup.lua.backup so that it does not get overwritten. as_user "mv ${GAME_PATH}/mods/dedicated_server_mods_setup.lua ${BIN_FILE_PATH}/../mods/dedicated_server_mods_setup.lua.backup" # Update and validate the game files. as_user "${STEAM_PATH}/steamcmd/steamcmd.sh +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +login anonymous +force_install_dir ${GAME_PATH} +app_update 343050 validate +quit" # Remove the dedicated_server_mods_setup.lua file and move the dedicated_server_mods_setup.lua.backup file to the dedicated_server_mods_setup.lua file. as_user "rm -f ${GAME_PATH}/mods/dedicated_server_mods_setup.lua" as_user "mv ${GAME_PATH}/mods/dedicated_server_mods_setup.lua.backup ${BIN_FILE_PATH}/../mods/dedicated_server_mods_setup.lua" # Update the mod files. as_user "cd ${BIN_FILE_PATH} && ${BIN_FILE} -only_update_server_mods" fi } ################################################################################ # ARGUMENT HANDLER: Call the correct function based on user provided arguments.# ################################################################################ # This case will call the right function based on user input. case "${1}" in 'start') if ! status; then update; fi start ;; 'stop') if [ "${2}" = "--force" ] ; then FORCE_PROCEED=1; fi stop ;; 'restart') if [ "${2}" = "--force" ] ; then FORCE_PROCEED=1; fi if status; then stop; fi if ! status; then update; fi start ;; 'update') if [ "${2}" = "--force" ] ; then FORCE_PROCEED=1; fi update ;; 'command') shift command "${*}" printf "\t\e[3;37mA list of commands can be found here:\e[0m \n\t\t\e[4;34mhttp://dontstarve.wikia.com/wiki/Console/Don't_Starve_Together_Commands\e[0m\n\n" ;; 'status') if status; then printf "\t\e[1;32mThe ${HUMAN_READIBLE_NAME} server is running!\e[0m\n\n" else printf "\t\e[1;31mThe ${HUMAN_READIBLE_NAME} server is not running!\e[0m\n\n"; fi ;; *) printf "\t\e[1;37mScript usage:\e[0m \n\t\e[1;33m Start\e[0m: Starts the server.\n\t\e[1;33m Stop\e[0m \e[3;33m(--force)\e[0m: Stops the server.\n\t\e[1;33m Restart\e[0m \e[3;33m(--force)\e[0m: Stops the server and then starts the server.\n\t\e[1;33m Update\e[0m \e[3;33m(--force)\e[0m: Stops the server and updates the game files and mods.\n\t\e[1;33m Command\e[0m \e[3;33m'command'\e[0m: Sends a command to both server shards.\n\t\e[1;33m Command master\e[0m \e[3;33m'command'\e[0m: Sends a command to the master shard.\n\t\e[1;33m Command cave\e[0m \e[3;33m'command'\e[0m: Sends a command to the cave shard.\n\n" exit 1 esac exit 0 Here's a short summary of the different commands: Start: Checks if the server is running. If it isn't, attempts to update the server files & mods before starting the actual server. Stop (--force): Attempts to stop the server if it is indeed running. First, the script will send a "c_shutdown(true)" command to the running screen session. If that doesn't work, a "kill -15" command will be issued. If that fails as well, a "kill -9" command is issued. The --force option simply enables killing the process without asking the user for permission (useful when the script is called from another script or from crontab). Restart (--force): First it does everything the stop command does. Then it does everything the start command does. Update: First the server is stopped, if it is running. Then the server files & mods are updated. The server is then started, if it was running before the update command was issued. Command (master/cave) 'command': Send a Don't Starve Together command (http://dontstarve.wikia.com/wiki/Console/Don't_Starve_Together_Commands) to the running screen session (master/cave are optional, if left empty, the command will be send to both screen sessions). The commands need to be encapsulated with single quotes! Let me know what you guys think!
  4. Emerville is back! The #1 endless server is here to reign once again and provide YOU with a friendly, economy and balanced place. For those of you who are not familiar with Emerville, we ask you to join our discord here: https://discord.gg/YqsnegQ where we post Updates, News and anything related to DST/DS. We currently have a community of 150+ members and we are rapidly growing as Emerville Classic returns. Each reset has an approximate length of 8k days+, so you don't feel like you've wasted your time. Unlike other servers where they reset basically everyday. About Emerville: Emerville is an endless, modded server that welcomes all players, whether new, experienced, or in-between. The server's name, Emerville was derived from the words Emerald and Village. Emerville first opened on October 29, 2015 and has since then closed and re-opened a few times. The server is always up to date, with additional items and structures that fit the art style of Don't Starve Together being added in occasionally. Please feel free to join our Steam Group here: https://steamcommunity.com/groups/Emerville ^Where you can find other information regarding the mods we use, our members/mods and in general get a feel of how Emerville operates. We hope to see you soon! Server Owner: Luis95R
  5. I use Windows, and under Klei folder I deleted anything that seemed like it was from the old server. I don't know why we have DoNotStarveTogether_EasyConfigOverworld and DoNotStarveTogether_EasyConfigCaves folders under there when it takes Cluster_1 from the list anyway (didn't last time, but idk what I did then). Any changes I apply won't work here. I even copied the Master files from the aforementioned folders into normal Cluster_1 save file after deleting everything there, and adding a new cluster token (the caves folder I mentioned before had Master, so I had to rename that to Caves). None of this mattered however, because this **** keeps happening: Wrong amount of players, only overworld generated, wrong name, no password enabled, WTF?! Is there a tutorial explaining what the folders I mentioned before are for and what the difference between that and the save files are? This is cluster_1 too, but I've had Cluster_1 taken up before by another server, yet I could still generate a new server WITHOUT overriding my hosted server file... as Cluster_1. What is this bollocks? Can we just have dedicated servers easily and understandably launched like the hosted servers? Because this **** doesn't make any sense to me, and to many other people too! So much hassle JUST so you can launch a server that won't shut down when you exit. Fantastic!
  6. I recently opened an online dedicated server that was supposed to have both the surface and caves enabled. However, upon mining a sinkhole I noticed it was covered in vines and I could not actually go down it. Is there a reason this happened, and is it fixable without restarting the world? I tried to google this issue, but found very limited results.
  7. Hi, I'm currently working on a mod and I am using some net variables, such as net entity, as described here: These are the facts: (1) The net variable is defined on both the client and server. (2) The net variable is set to a certain value after some event has taken place (netvar:set(X)). Because of extensive debugging, I know that on the server side the value of this netvar is nil before the update and set to X after the update (netvar:value()). (3) The client responds to changes on that net variable, but not in real time. It listens to the correct event, however it seems to ignore any changes to it. Interestingly enough, the client does register these events when leaving and rejoining. What could be the cause of this? Seriously, I have no idea anymore and the level of frustration is high. Thank you for your time. - Joachim
  8. I rent 7 servers and ever since The Gorge I cannot see half of them. I've reset everything on my end several times and some of the servers simply don't show on the list. Even when I manually attempt to connect the connection is refused. Many other people in my group can see the servers I can't and they can connect to it through the Don't Starve Client. Even if I try to join them through steam the connection fails. At the same time I can see and join servers other people cannot. What's going on? Is the Gorge too much stress for Klei Servers?
  9. Done everything as in this guide but when trying to run as ~/run_dedicated_servers.sh It drops after trying to create Nav Grid. I also tried starting `dontstarve_dedicated_server_nullrenderer` manually, and it actually said "Killed" in the terminal after showing creation of Nav Grid (whatever this means). I have attached logs for both caves and overworld. server_log_caves.txt server_log_master.txt Also it is run on Ubuntu 16.04.4
  10. Look at the slider bar on the image below (This is probably posted before but this situation makes me really upset about the game issue that I have to make sure this is posted) (Sorted by best latency) this is where the highest latency and unknown latency met, as you can see on the slider bar, almost 60-70% of the servers has unknown latency, and most of those servers with unknown latency has one player which is the host himself. This problem cause people not joining them because no one knows where they're hosting from or how bad the latency is. Some people who can host without the (???) latency bug doesn't want to host, and some people who has the (???) latency bug are willing to host (such as me), it's frustrating! When will this issue fixed? It's been 2 years since the game exit early access.
  11. Version 2.0.3

    698 downloads

    Shard configuration mod Shard configuration mod allows server admins to make migration links between their individual servers/worlds/shards. This mod is made for dedicated servers and has no use in standart Don't Starve Together worlds created in client. This mod is also not needed if your dedicated servers run only two worlds/shards in one cluster (default connections works fine for 2 worlds/shards). If you are server admin and you want more than 2 connected worlds this is mod for you! After all servers are set up and online and simulation on them is paused, when first player connects to any server and simulation is unpaused the mod will set up portals in the world to be linked to other worlds. This mod uses standart 10 sinkholes generated in the world. If you manually create more, they will be used after server restart. If you want more than 10 connections from/to one world you have to create new sinkholes/stairs. Sinkholes not used are turned off and plugged. Steam workshop Mod is available on steam workshop How to setup this mod I created default preconfigured cluster with 3 shards. You can modify it as you wish. Download it here: DefaultCluster.zip Since mod version 1.10 it is also possible to create single directional connections. New mod setting called "OneWayConnections" was created which contains world that should be connected unidirectionally. Example mod overrride settings below: ["workshop-595764362"] = { enabled = true, configuration_options = { ["Connections"] = { ["1"] = { "11", "12" }, -- bidiractional between 1-11 and 1-12 ["11"] = { "12" } -- bidirectional between 11-12 }, ["OneWayConnections"] = { ["1"] = { "12", "12" } -- two unidirectional connections from 1 to 12 } } } Since mod version 2.0 the slave shards can synchronize connection data from master. Slave shards will ignore connection data in their modoverrides.lua. This behaviour can be disabled by setting SyncWithMaster to false of all shards. Shard config util I created an util to create modoverrides.lua that configures this mod. Create shards, set their shard_id. Create connections between shards and set connection count. Save it and you have modoverrides.lua which will work with this mod. You still have to include other mods you want to use. Also supports one way connections. This util is running in .NET 4.0 and won't start without it! The util is available for download from these forums by "Download this file" on the right.
  12. This guide will help you set up a dedicated server on an Ubuntu machine (32 or 64-bit) 1. Install dependencies: 2. Install steamcmd. 3. Create your dedicated server folders: 4. Create your cluster_token.txt 5. Create your cluster.ini file. 6. Edit your cluster.ini file. 7. Create your Master server.ini 8. Create your Caves server.ini 9. Create your Caves worldgenoverride.lua 10. Create the script that will run the servers. 11. Give the script executable permissions 12. Run the script to start the dedicated servers:
  13. This guide will help you set up a dedicated server on Mac OS X. This commands in this guide must be entered in the "Terminal" application. The "~" at the beginning of directories and filenames is shorthand in the terminal for your home directory. 1. Install steamcmd. 2. Create your dedicated server folders: 3. Create your cluster_token.txt 4. Create your cluster.ini file. 5. Edit your cluster.ini file. 6. Create your Master server.ini 7. Create your Caves server.ini 8. Create your Caves worldgenoverride.lua 9. Create the script that will run the servers. 10. Give the script executable permissions 11. Run the script to start the dedicated servers:
  14. -persistent_storage_root Change the directory that your configuration directory resides in. This must be an absolute path. The full path to your files will be <persistent_storage_root>/<conf_dir>/ where <conf_dir> is the value set by -conf_dir. The default for this option depends on the platform: Windows: <Your documents folder>/Klei Mac OSX: <Your home folder>/Documents/Klei Linux: ~/.klei -conf_dir Change the name of your configuration directory. This name should not contain any slashes. The full path to your files will be <persistent_storage_root>/<conf_dir> where <persistent_storage_root> is the value set by the -persistent_storage_root option. The default is: "DoNotStarveTogether". -cluster Set the name of the cluster directory that this server will use. The server will expect to find the cluster.ini file in the following location: <persistent_storage_root>/<conf_dir>/<cluster>/cluster.ini, where <persistent_storage_root> and <conf_dir> are the values set by the -persistent_storage_root and -conf_dir options. The default is "Cluster_1". -shard Set the name of the shard directory that this server will use. The server will expect to find the server.ini file in the following location:<persistent_storage_root>/<conf_dir>/<cluster>/<shard>/server.ini, where <persistent_storage_root>, <conf_dir>, and <cluster> are the values set by the -persistent_storage_root, -conf_dir, and -cluster options. The default is "Master". -offline Start the server in offline mode. In offline mode, the server will not be listed publicly, only players on the local network will be able to join, and any steam-related functionality will not work. -disabledatacollection Disable data collection for the server. We require the collection of user data to provide online services. Servers with disabled data collection will only have access to play in offline mode. For more details on our privacy policy and how we use the data we collect, please see our official privacy policy. https://klei.com/privacy-policy -bind_ip <bind_ip> Change the address that the server binds to when listening for player connections. This is an advanced feature that most people will not need to use. -port <port_number> Valid values: 1..65535 The UDP port that this server will listen for connections on. This option overrides the [NETWORK] / server_port setting in server.ini. If you are running a multi-level cluster, this port must be different for each server. This port must be between 10998 and 11018 inclusive in order for players on the same LAN to see it in their server listing. Ports below 1024 are restricted to privileged users on some operating systems. -players <max_players> Valid values: 1..64 Set the maximum number of players that will be allowed to join the game. This option overrides the [GAMEPLAY] / max_players setting in cluster.ini. -steam_master_server_port <port_number> Valid values: 1..65535 Internal port used by steam. This option overrides the [STEAM] / master_server_port setting in server.ini. Make sure that this is different for each server you run on the same machine. -steam_authentication_port <port_number> Valid values: 1..65535 Internal port used by steam. This option overrides the [STEAM] / authentication_port setting in server.ini. Make sure that this is different for each server you run on the same machine. -backup_logs Create a backup of the previous log files each time the server is run. The backups will be stored in a directory called "backup" in the same directory as server.ini. -tick <tick_rate> Valid values: 15 .. 60 This is the number of times per-second that the server sends updates to clients. Increasing this may improve precision, but will result in more network traffic. This option overrides the [NETWORK] / tick_rate setting in cluster.ini. It is recommended to leave this at the default value of 15. If you do change this option, it is recommended that you do so only for LAN games, and use a number evenly divisible into 60 (15, 20, 30). Examples: The recommended way to run a two level server is with the following commands: dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Master dontstarve_dedicated_server_nullrenderer -console -cluster MyClusterName -shard Caves These two commands will run two dedicated servers using the following configuration files: <Your Klei Folder>/MyClusterName/cluster.ini <Your Klei Folder>/MyClusterName/Master/server.ini <Your Klei Folder>/MyClusterName/Caves/server.ini For the location of <Your Klei Folder>, see the explanation of the -persistent_storage_root and -conf_dir options above. For information on setting up a dedicated server, see one of the following guides: Dedicated Server Quick Setup Guide: Windows Dedicated Server Quick Setup Guide: Linux Dedicated Server Quick Setup Guide: Mac OS X