mirror of
https://github.com/SWG-Source/client-tools.git
synced 2026-01-15 22:04:32 -05:00
245 lines
6.3 KiB
Bash
245 lines
6.3 KiB
Bash
#!/bin/bash
|
|
|
|
CLUSTER_NAME=DesignGalaxy
|
|
CENTRAL_SERVER_ADDRESS=$HOSTNAME
|
|
GAME_SCENE=tatooine.trn
|
|
LOGIN_SERVER_ADDRESS=swo-dev6.station.sony.com
|
|
EXE_DIR=/swo/swg/current/exe/linux
|
|
CENTRAL_PLANET_PORT=44475
|
|
CENTRAL_GAME_PORT=44471
|
|
|
|
kill_servers()
|
|
{
|
|
killall CentralServer_r &>/dev/null
|
|
killall CentralServer_d &>/dev/null
|
|
killall addr2line &>/dev/null
|
|
}
|
|
|
|
get_free_port()
|
|
{
|
|
PORT=(RANDOM + 1024)
|
|
((PORT=$PORT+1))
|
|
AVAIL=`netstat -aut|grep $PORT`
|
|
while [ -n "$AVAIL" ];
|
|
do
|
|
{
|
|
((PORT=RANDOM))
|
|
AVAIL=`netstat -aut|grep $PORT`
|
|
};
|
|
done
|
|
echo $PORT
|
|
}
|
|
|
|
run_central()
|
|
{
|
|
cd $EXE_DIR
|
|
echo "** Starting CentralServer at " $(date +"%Y%m%d-%k.%M.%S") >> /swo/swg/CentralServer.log
|
|
./CentralServer_d -- \
|
|
-s CentralServer \
|
|
loginServerAddress=$LOGIN_SERVER_ADDRESS \
|
|
clusterName=$CLUSTER_NAME \
|
|
gameServicePort=$CENTRAL_GAME_PORT \
|
|
planetServicePort=$CENTRAL_PLANET_PORT \
|
|
>> /swo/swg/CentralServer.log 2>&1 &
|
|
}
|
|
|
|
run_connection()
|
|
{
|
|
cd $EXE_DIR
|
|
echo "** Starting ConnectionServer at " $(date +"%Y%m%d-%k.%M.%S") >> /swo/swg/ConnectionServer.log
|
|
./ConnectionServer_d -- \
|
|
-s ConnectionServer \
|
|
clusterName=$CLUSTER_NAME \
|
|
loginServerAddress=$LOGIN_SERVER_ADDRESS \
|
|
centralServicePort=44482 \
|
|
clientServicePort=44483 \
|
|
gameServicePort=44484 \
|
|
>> /swo/swg/ConnectionServer.log 2>&1 &
|
|
}
|
|
|
|
run_dbprocess()
|
|
{
|
|
cd $EXE_DIR
|
|
echo "** Starting DBProcess at " $(date +"%Y%m%d-%k.%M.%S") >> /swo/swg/dbprocess.log
|
|
./SwgDatabaseServer_d -- \
|
|
-s dbProcess \
|
|
centralServerAddress=$CENTRAL_SERVER_ADDRESS \
|
|
centralServerPort=$CENTRAL_GAME_PORT \
|
|
useTemplates=1 \
|
|
databaseProtocol=OCI \
|
|
databaseUID=designcluster \
|
|
databasePWD=changeme \
|
|
DSN=swodb \
|
|
>> /swo/swg/SwgDatabaseServer.log 2>&1 &
|
|
}
|
|
|
|
run_gameserver()
|
|
{
|
|
cd $EXE_DIR
|
|
echo "** Starting GameServer at " $(date +"%Y%m%d-%k.%M.%S") >> /swo/swg/SwgGameServer.log
|
|
./SwgGameServer_d -- @../../exe/shared/servercommon.cfg @combat.cfg \
|
|
-s GameServer sceneID=tatooine \
|
|
centralServerAddress=$CENTRAL_SERVER_ADDRESS \
|
|
centralServerPort=$CENTRAL_GAME_PORT \
|
|
groundScene=terrain/$GAME_SCENE \
|
|
clusterName=$CLUSTER_NAME \
|
|
useTemplates=1 \
|
|
javaLibPath=/usr/noScriptsOnBaseServer \
|
|
scriptPath=../../data/sku.0/sys.server/plt.shared/loc.shared/compiled/game \
|
|
useRemoteDebugJava=0 \
|
|
javaDebugPort=0 \
|
|
-s SharedFoundation \
|
|
frameRateLimit=4 \
|
|
warningCallStackDepth=0 \
|
|
-s SharedDebug \
|
|
lookupCallStack=1 \
|
|
>> /swo/swg/SwgGameServer.log 2>&1 &
|
|
}
|
|
|
|
run_planetserver()
|
|
{
|
|
cd $EXE_DIR
|
|
echo "** Starting PlanetServer at " $(date +"%Y%m%d-%k.%M.%S") >> /swo/swg/PlanetServer.log
|
|
./PlanetServer_d -- \
|
|
-s PlanetServer sceneID=tatooine \
|
|
clusterName=$CLUSTER_NAME \
|
|
centralServerPort=$CENTRAL_PLANET_PORT \
|
|
centralServerAddress=$CENTRAL_SERVER_ADDRESS \
|
|
>> /swo/swg/PlanetServer.log 2>&1 &
|
|
}
|
|
|
|
fatality()
|
|
{
|
|
CRASHDIR="/swo/swg/CRASH-"`date +"%Y%m%d-%k.%M.%S"`
|
|
echo ""
|
|
echo "**********************************************************************"
|
|
echo "** !!FATAL WARNING FATAL WARNING FATAL WARNING FATAL WARNING!!"
|
|
echo "**"
|
|
echo "** $1 "
|
|
echo "**"
|
|
echo "** Server is no longer running. It failed to properly start."
|
|
echo "** If this is an unknown bug, advise the server development team."
|
|
echo "**"
|
|
echo "** A crash directory called $CRASHDIR"
|
|
echo "** is being created, logs and the core file will be placed in "
|
|
echo "** $CRASHDIR"
|
|
echo "**"
|
|
echo "**********************************************************************"
|
|
echo ""
|
|
echo -n "Killing servers ..."
|
|
mkdir $CRASHDIR
|
|
cp /swo/swg/*.log $CRASHDIR
|
|
cp /swo/swg/current/exe/linux/core $CRASHDIR
|
|
kill_servers
|
|
echo "done."
|
|
|
|
}
|
|
|
|
#-----------------------------------------
|
|
#-- parse options
|
|
#-----------------------------------------
|
|
|
|
show_usage ()
|
|
{
|
|
|
|
echo "Options:"
|
|
echo " -h help"
|
|
echo " -s <scene> scenefile (default: $GAME_SCENE)"
|
|
echo " -x <exe dir> executable dir name (default: $EXE_DIR)"
|
|
echo " -n <nbname> nbname dir (default: $NBNAME)"
|
|
}
|
|
|
|
while getopts "hs:x:n:" arg
|
|
do
|
|
case $arg in
|
|
"s")
|
|
GAME_SCENE=$OPTARG
|
|
echo "Setting Game Scene to: $GAME_SCENE"
|
|
;;
|
|
"x")
|
|
EXE_DIR=$OPTARG
|
|
echo "Setting Executable Dir to: $EXE_DIR"
|
|
;;
|
|
"h")
|
|
show_usage;
|
|
;;
|
|
*)
|
|
show_usage;
|
|
;;
|
|
esac
|
|
done
|
|
|
|
#-----------------------------------------
|
|
#-----------------------------------------
|
|
|
|
echo -n "Killing all servers you own... "
|
|
kill_servers
|
|
echo "done"
|
|
echo
|
|
echo "Checking database setup..."
|
|
cd /swo/swg/current/exe/linux
|
|
make -f database.mak
|
|
echo
|
|
echo "Port selection:"
|
|
|
|
echo " Central Server: game=$CENTRAL_GAME_SERVICE_PORT planet=$CENTRAL_PLANET_SERVICE_PORT"
|
|
echo " Connection Server: central=$CONNECTION_CENTRAL_SERVICE_PORT client=$CONNECTION_CLIENT_SERVICE_PORT game=$CONNECTION_GAME_SERVICE_PORT"
|
|
echo ""
|
|
|
|
echo -n "Starting central server ... "
|
|
run_central
|
|
echo "done."
|
|
sleep 3
|
|
echo -n "Starting connection server ... "
|
|
run_connection
|
|
echo "done."
|
|
sleep 2
|
|
echo -n "Starting database process ... "
|
|
run_dbprocess
|
|
echo "done."
|
|
sleep 2
|
|
echo -n "Starting planet server ... "
|
|
run_planetserver
|
|
echo "done."
|
|
sleep 2
|
|
echo -n "Starting game server ... "
|
|
run_gameserver
|
|
|
|
# Check for problems during startup
|
|
sleep 2
|
|
#if [ -z "`ps --User $USER | grep centralserver`" ]; then
|
|
#{
|
|
# fatality "Central Server";
|
|
#}
|
|
#elif [ -z "`ps --User $USER | grep connectionser`" ]; then
|
|
#{
|
|
# fatality "Connection Server";
|
|
#}
|
|
#elif [ -z "`ps --User $USER | grep dbprocess`" ]; then
|
|
#{
|
|
# fatality "DB Process";
|
|
#}
|
|
#elif [ -z "`ps --User $USER | grep gameserver`" ]; then
|
|
#{
|
|
# fatality "Game Server"
|
|
#}
|
|
#else
|
|
#{
|
|
echo "done"
|
|
echo ""
|
|
echo "**********************************************************************"
|
|
echo "You may now connect to your game cluster [ $CLUSTER_NAME ]."
|
|
echo "Your client configuration should have an entry "
|
|
echo "loginServerAddress=$LOGIN_SERVER_ADDRESS "
|
|
echo ""
|
|
echo "If you are connecting to a different login server"
|
|
echo "ensure that servercommon.cfg in your depot reflects the"
|
|
echo "alternate server address, and that your client config"
|
|
echo "matches."
|
|
echo ""
|
|
echo "Contact Justin Randall or Chris Mayer if you are having trouble"
|
|
echo "**********************************************************************"
|
|
#}
|
|
#fi
|
|
|