Added initial groundwork for building dsrc and running gameserver

This commit is contained in:
seefo
2018-01-11 17:14:42 -05:00
parent b656234a74
commit b83218ba32
18 changed files with 409 additions and 5 deletions

6
build_dsrc.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
basedir=$PWD
# ensure that repo has been setup
$basedir/utils/initial_setup.sh

View File

@@ -2,7 +2,10 @@
basedir=$PWD
# ensure that repo has been setup
$basedir/initial_setup.sh
$basedir/utils/initial_setup.sh
# run the docker image and build the source
docker run -v $basedir/src/:/swg/:z swg-compiler
# copy bins to our gameserver folder
cp $basedir/src/build/bin/* $basedir/gameserver/bin/

3
gameserver/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
bin/*
data/*
logs/*

35
gameserver/utils/build_java.sh Executable file
View File

@@ -0,0 +1,35 @@
#/bin/bash
DIR="$( dirname "${BASH_SOURCE[0]}" )"
destination="data/sku.0/sys.server/compiled/game"
sourcepath="dsrc/sku.0/sys.server/compiled/game"
mkdir -p $destination/script
filenames=$(find $sourcepath -name '*.java')
spinstr='|/-\'
i=0
current=0
total=$(ls ${filenames[@]} | wc -l)
for filename in $filenames; do
OFILENAME=${filename/$sourcepath/$destination}
OFILENAME=${OFILENAME/java/class}
if [[ -e $OFILENAME && $filename -nt $OFILENAME ]] || [ ! -e $OFILENAME ]; then
result=$(${DIR}/build_java_single.sh $filename 2>&1)
fi
if [[ ! -z $result ]]; then
printf "\r$filename\n"
printf "$result\n\n"
fi
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rCompiling java scripts: [${spinstr:$i:1}] $perc%%"
done
echo ""

View File

@@ -0,0 +1,44 @@
#/bin/bash
DIR="$( dirname "${BASH_SOURCE[0]}" )"
destination="data/sku.0/sys.server/compiled/game"
sourcepath="dsrc/sku.0/sys.server/compiled/game"
mkdir -p $destination/script
filenames=$(find $sourcepath -name '*.java')
spinstr='|/-\'
i=0
current=0
total=$(ls ${filenames[@]} | wc -l)
compile () {
OFILENAME=${filename/$sourcepath/$destination}
OFILENAME=${OFILENAME/java/class}
if [[ -e $OFILENAME && $filename -nt $OFILENAME ]] || [ ! -e $OFILENAME ]; then
result=$(${DIR}/build_java_single.sh $filename 2>&1)
fi
if [[ ! -z $result ]]; then
printf "\r$filename\n"
printf "$result\n\n"
fi
}
for filename in $filenames; do
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rCompiling java scripts : [${spinstr:$i:1}] $perc%%"
while [ `jobs | wc -l` -ge 20 ]
do
sleep 5
done
compile $filename & done
wait
echo ""

View File

@@ -0,0 +1,8 @@
#/bin/bash
destination="data/sku.0/sys.server/compiled/game"
sourcepath="dsrc/sku.0/sys.server/compiled/game"
mkdir -p $destination/script
javac -classpath "$destination" -d "$destination" -sourcepath "$sourcepath" -g -deprecation "$1"

28
gameserver/utils/build_miff.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
filenames=$(find ./dsrc -name '*.mif')
spinstr='|/-\'
i=0
current=0
total=$(ls ${filenames[@]} | wc -l)
for filename in $filenames; do
ofilename=${filename/dsrc/data}
ofilename=${ofilename/.mif/.iff}
mkdir -p $(dirname $ofilename)
if [[ -e $ofilename && $filename -nt $ofilename ]] || [ ! -e $ofilename ]; then
result=$(./exe/linux/bin/Miff -i "$filename" -o "$ofilename" 2>&1)
if [[ ! "$result" =~ .*successfully.* ]]; then
printf "\r$result\n\n"
fi
fi
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rGenerating IFFs: [${spinstr:$i:1}] $perc%%"
done
echo ""

View File

@@ -0,0 +1,23 @@
#!/bin/bash
NODE_COUNT=
echo 'Generating node list...'
if [ ! -d ./exe/ ]; then
mkdir ./exe/
mkdir ./exe/linux
fi
read -p "How many nodes are in this cluster? " NODE_COUNT
echo "[TaskManager]" > ./exe/linux/nodes.cfg
# For each node, prompt for an ip.
for i in $(seq 0 $(expr $NODE_COUNT - 1))
do
read -p "node$i ip: (Try using what is specified for your hostname in /etc/hosts " CURRENT_NODE_IP
echo "node$i=$CURRENT_NODE_IP" >> ./exe/linux/nodes.cfg
done

View File

@@ -0,0 +1,54 @@
#!/usr/bin/env python
from os import walk, path, makedirs
from subprocess import PIPE, Popen
serverdir = './data/sku.0/sys.server/compiled/game/object'
shareddir = './data/sku.0/sys.shared/compiled/game/object'
def read_objects(objectdir):
files = []
for (dirname, dirnames, filenames) in walk(objectdir):
for filename in filenames:
if '.iff' in filename:
objfile = path.join(dirname, filename)
objfile = objfile.replace(objectdir.split('/object')[0] + '/', '')
files.append(objfile)
return files
def build_table(type, objs):
tabfile = "./dsrc/sku.0/sys.%s/built/game/misc/object_template_crc_string_table.tab" % (type)
ifffile = "./data/sku.0/sys.%s/built/game/misc/object_template_crc_string_table.iff" % (type)
if not path.exists(path.dirname(tabfile)):
makedirs(path.dirname(tabfile))
if not path.exists(path.dirname(ifffile)):
makedirs(path.dirname(ifffile))
crc_call = ['./tools/buildCrcStringTable.pl', '-t', tabfile, ifffile]
p = Popen(crc_call, stdin=PIPE, stdout=PIPE)
for obj in sorted(objs):
p.stdin.write(obj + '\n')
p.communicate()
serverobjs = []
sharedobjs = []
allobjs = []
serverobjs.extend(read_objects('./data/sku.0/sys.server/compiled/game/object'))
sharedobjs.extend(read_objects('./data/sku.0/sys.shared/compiled/game/object'))
sharedobjs.extend(read_objects('./data/sku.0/sys.server/compiled/game/object/creature/player'))
build_table('client', sharedobjs)
allobjs.extend(serverobjs)
allobjs.extend(sharedobjs)
build_table('server', list(set(allobjs)))

View File

@@ -0,0 +1,44 @@
#!/usr/bin/env python
from os import walk, path, makedirs
from subprocess import PIPE, Popen
def read_objects(objectdir):
files = []
for (dirname, dirnames, filenames) in walk(objectdir):
for filename in filenames:
filename = filename.replace('.iff', '')
objfile = path.join(dirname, filename)
objfile = objfile.replace("%s/" % objectdir, '')
files.append(objfile)
return files
questlistdir = './data/sku.0/sys.shared/compiled/game/datatables/questlist'
allobjs = []
allobjs.extend(read_objects(questlistdir))
allobjs.sort()
tabfile = './dsrc/sku.0/sys.shared/built/game/misc/quest_crc_string_table.tab'
ifffile = './data/sku.0/sys.shared/built/game/misc/quest_crc_string_table.iff'
if not path.exists(path.dirname(tabfile)):
makedirs(path.dirname(tabfile))
if not path.exists(path.dirname(ifffile)):
makedirs(path.dirname(ifffile))
crc_call = ['./tools/buildCrcStringTable.pl', '-t', tabfile, ifffile]
p = Popen(crc_call, stdin=PIPE, stdout=PIPE)
for obj in allobjs:
p.stdin.write(obj + '\n')
p.communicate()

34
gameserver/utils/build_tab.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
server=$(find ./dsrc/sku.0/sys.server/compiled/game/datatables -name '*.tab')
inc=$(find ./dsrc/sku.0/sys.shared/compiled/game/datatables/include -name '*.tab')
shared=$(find ./dsrc/sku.0/sys.shared/compiled/game/datatables -name '*.tab')
filenames=("${server[@]}" "${inc[@]}" "${shared[@]}")
spinstr='|/-\'
i=0
current=0
total=$(ls ${filenames[@]} | wc -l)
for filename in ${filenames[@]}; do
ofilename=${filename/dsrc/data}
ofilename=${ofilename/.tab/.iff}
mkdir -p $(dirname $ofilename)
if [[ -e $ofilename && $filename -nt $ofilename ]] || [ ! -e $ofilename ]; then
result=$(./exe/linux/bin/DataTableTool -i "$filename" -o "$ofilename" -- -s SharedFile searchPath10=data/sku.0/sys.shared/compiled/game searchPath10=data/sku.0/sys.server/compiled/game 2>&1)
if [[ ! $result =~ .*SUCCESS.* ]]; then
printf "\r$filename\n"
printf "$result\n\n"
fi
fi
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rGenerating Datatables: [${spinstr:$i:1}] $perc%%"
done
echo ""

View File

@@ -0,0 +1,42 @@
#!/bin/bash
server=$(find ./dsrc/sku.0/sys.server/compiled/game/datatables -name '*.tab')
inc=$(find ./dsrc/sku.0/sys.shared/compiled/game/datatables/include -name '*.tab')
shared=$(find ./dsrc/sku.0/sys.shared/compiled/game/datatables -name '*.tab')
filenames=("${server[@]}" "${inc[@]}" "${shared[@]}")
spinstr='|/-\'
i=0
current=0
total=$(ls ${filenames[@]} | wc -l)
compile () {
ofilename=${filename/dsrc/data}
ofilename=${ofilename/.tab/.iff}
mkdir -p $(dirname $ofilename)
[ -e $ofilename ] && rm "$ofilename"
result=$(./exe/linux/bin/DataTableTool -i "$filename" -- -s SharedFile searchPath10=data/sku.0/sys.shared/compiled/game searchPath10=data/sku.0/sys.server/compiled/game 2>&1)
if [[ ! $result =~ .*SUCCESS.* ]]; then
printf "\r$filename\n"
printf "$result\n\n"
fi
}
for filename in ${filenames[@]}; do
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rGenerating Datatables: [${spinstr:$i:1}] $perc%%"
while [ `jobs | wc -l` -ge 20 ]
do
sleep 5
done
compile $filename & done
wait
echo ""

8
gameserver/utils/build_tdf.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
basedir=$PWD
find $basedir/dsrc -name '*.tdf' | while read filename; do
echo $filename
$basedir/exe/linux/bin/TemplateDefinitionCompiler -compile $filename
done

29
gameserver/utils/build_tpf.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
filenames=$(find ./dsrc -name '*.tpf')
spinstr='|/-\'
i=0
current=0
total=$(find ./dsrc -name '*.tpf' | wc -l)
for filename in $filenames; do
ofilename=${filename/dsrc/data}
ofilename=${ofilename/.tpf/.iff}
mkdir -p $(dirname $ofilename)
if [[ -e $ofilename && $filename -nt $ofilename ]] || [ ! -e $ofilename ]; then
result=$(./exe/linux/bin/TemplateCompiler -compile "$filename" 2>&1)
if [[ ! -z $result ]]; then
printf "\r$filename\n"
printf "$result\n\n"
fi
fi
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rGenerating Object Templates: [${spinstr:$i:1}] $perc%%"
done
echo ""

View File

@@ -0,0 +1,40 @@
#!/bin/bash
filenames=$(find ./dsrc -name '*.tpf')
spinstr='|/-\'
i=0
current=0
total=$(find ./dsrc -name '*.tpf' | wc -l)
compile () {
ofilename=${filename/dsrc/data}
ofilename=${ofilename/.tpf/.iff}
mkdir -p $(dirname $ofilename)
if [[ -e $ofilename && $filename -nt $ofilename ]] || [ ! -e $ofilename ]; then
result=$(./exe/linux/bin/TemplateCompiler -compile "$filename" 2>&1)
if [[ ! -z $result ]]; then
printf "\r$filename\n"
printf "$result\n\n"
fi
fi
}
for filename in $filenames; do
current=$((current+1))
i=$(( (i+1) %4 ))
perc=$(bc -l <<< "scale=0; $current*100/$total")
printf "\rGenerating Object Templates: [${spinstr:$i:1}] $perc%%"
# Comment this loop out if you have a real fast system.(12Cores+, Fast SSD Storage)
while [ `jobs | wc -l` -ge 50 ]
do
sleep 5
done
compile $filename & done
wait
echo ""

View File

@@ -0,0 +1,3 @@
mkdir -p $ORACLE_HOME/network/admin
export TNS_ADMIN=$ORACLE_HOME/network/admin
echo 'SWG=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$ORACLE_DB_ADDRESS)(PORT=$ORACLE_DB_PORT)))(CONNECT_DATA=(SERVICE_NAME=SWG)))' > $ORACLE_HOME/network/admin/tnsnames.ora

View File

@@ -3,17 +3,17 @@ if [ ! -d "redist" ]; then
fi
if [ ! -f ./redist/oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm ]; then
wget https://bitbucket.org/seefoe/src/downloads/oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm -P ./redist/
wget https://bitbucket.org/seefoe/src/downloads/oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm -P ./redist/
fi
if [ ! -f ./redist/oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm ]; then
wget ./redist/ https://bitbucket.org/seefoe/src/downloads/oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm -P ./redist/
wget ./redist/ https://bitbucket.org/seefoe/src/downloads/oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm -P ./redist/
fi
if [ ! -f ./redist/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm ]; then
wget ./redist/ https://bitbucket.org/seefoe/src/downloads/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm -P ./redist/
wget ./redist/ https://bitbucket.org/seefoe/src/downloads/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm -P ./redist/
fi
if [ ! -f ./redist/IBMJava2-SDK-1.4.2-13.18.tgz ]; then
wget ./redist/ https://bitbucket.org/seefoe/src/downloads/IBMJava2-SDK-1.4.2-13.18.tgz -P ./redist/
wget ./redist/ https://bitbucket.org/seefoe/src/downloads/IBMJava2-SDK-1.4.2-13.18.tgz -P ./redist/
fi