• 泰拉瑞亚Linux主机打造指南


    image.png

    最近玩了泰拉瑞亚,一个2D版的我的世界,但苦于steam的联机太过不靠谱,经常会出现和朋友之间联机失败的问题,所以我把服务器放到了部署我博客的服务器,这样就可以通过IP直接让好友加入游戏了!

    首先是购买服务器,因为我们需要一个大家都能访问的公网IP,所以...

    Vultr最近服务器在做活动,冲10美元送50美元,而且服务器你除了用来放泰拉瑞亚的服务,还可以给自己搭建Vxx。

    新用户注册才有的福利,随便搞一个邮箱注册就可以了。

    http://bwg.yiqimaila.com/vt/

    前置准备

    首先要解决的一个问题是服务器内存问题,为了支持数百人加入,需要较高的内存配置,但是服务器内存太贵了,启用swap倒是不错的选择。

    确认下SWAP设置了多少

    free -m
    

    如果足够1GB则跳过这一步直接开始搭建游戏!

    删除SWAP分区

    swapoff -a
    

    新增SWAP分区

    dd if=/dev/zero of=/root/swapfile bs=1M count=1024
    

    格式化交换分区文件:

    mkswap /root/swapfile
    

    启用swap分区文件

    swapon /root/swapfile
    

    添加开机启动

    vi /etc/fstab
    

    在最后一行添加

    /root/swapfile swap swap defaults 0 0
    

    重启下是否生效

    reboot
    

    重启后输入指令查看下SWAP是否增加

    free -m
    

    搭建服务

    首先下载需要用到的工具库。

    # yum install wget
    # yum install screen
    # yum install unzip
    

    因为泰拉瑞亚需要用到7777端口,所以我们要让防火墙允许。

    # firewall-cmd --permanent --add-port=7777/tcp
    success
    # firewall-cmd --reload
    success
    

    创建一个用来存放泰拉瑞亚服务器的文件夹

    # cd /opt/
    # mkdir terraria
    # mkdir terraria/{bin,downloads}
    # chown -R root:root terraria
    

    下载泰拉瑞亚官方提供的服务器包。

    $ cd /opt/terraria/downloads
    $ wget http://terraria.org/server/terraria-server-1353.zip
    

    解压软件包。

    $ unzip terraria-server-1353.zip -d /opt/terraria/bin
    

    然后需要一个配置文件。

    $ vi serverconfig.txt
    

    文件内容如下:

    world=/opt/terraria/Worlds/世界的名字.wld
    autocreate=2
    worldname=世界的名字
    difficulty=0
    maxplayers=4
    password=设定一个密码
    worldpath=/opt/terraria/Worlds
    

    具体世界的名字和密码自定。

    autocreate 是没有发现世界自动生成世界的大小 1、2、3分别对应小、中、大

    difficulty 对应的是0为普通,1为专家

    maxplayers是最大人数

    给运行文件设置权限

    $ cd /opt/terraria/bin/1353/Linux
    $ chmod 744 TerrariaServer.bin.x86_64
    

    启动服务器

    $ ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt
    

    初次运行因为要创建世界需要一定时间当看到

    Terraria Server v1.3.5.3
     
    Listening on port 7777
    Type 'help' for a list of commands.
     
    :
    

    表示生成成功!

    此时可以在游戏的多人模式通过IP进入游戏看看是否成功。

    确认成功后退出服务器

    : exit
    

    重新编辑配置文件防止重新生成世界

    $ cd /opt/terraria
    $ cp -p serverconfig.txt serverconfig.txt_yyyymmdd
    $ vi serverconfig.txt
    

    将三个配置注释掉

    autocreate=2
    worldname=世界的名字
    difficulty=1
    

    改为

    # autocreate=2
    # worldname=Terraria
    # difficulty=1
    

    再次运行一次看看是否成功。

    优化体验

    每次启动都要输入这么多文件夹路径很麻烦,所以我们可以制作一个自动启动的脚本:

    $ vi terra_script.sh
    

    内容如下:

    #!/bin/bash
    USERNAME='root'
    SCNAME='terraria'
    TERA_VER='1353'
    BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/"
    SERVICE='TerrariaServer.bin.x86_64'
    CONFIG='/opt/terraria/serverconfig.txt'
    
    
    ME=`whoami`
    
    if [ $ME != $USERNAME ] ; then
       echo "Please run the $USERNAME user."
       exit
    fi
    
    start() {
       if pgrep -u $USERNAME -f $SERVICE > /opt/terraria/logs/start.txt ; then
           echo "$SERVICE is already running!"
           exit
       fi
    
       echo "Starting $SERVICE..."
       screen -AmdS $SCNAME $BIN_PATH$SERVICE -config $CONFIG
       exit
    }
    
    stop() {
       if pgrep -u $USERNAME -f $SERVICE > /opt/terraria/logs/stop.txt ; then
           echo "Stopping $SERVICE "
       else
           echo "$SERVICE is not running!"
           exit
       fi
    
       screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "15'
       sleep 10
       screen -p 0 -S $SCNAME -X eval 'stuff "exit"15'
       exit
    }
    
    save() {
       echo 'World data saving...'
       screen -p 0 -S $SCNAME -X eval 'stuff "say World saveing..."15'
       screen -p 0 -S $SCNAME -X eval 'stuff "save"15'
       exit
    }
    
    status() {
       if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
                    echo "$SERVICE is already running!"
                    exit
       else
           echo "$SERVICE is not running!"
           exit
            fi
    }
    
    case "$1" in
       start)
           start
           ;;
       stop)
           stop
           ;;
       save)
           save
           ;;
       status)
           status
           ;;
       *)
           echo  $"Usage: $0 {start|stop|status|save}"
    esac
    

    这样就分别有了「启动」「关闭」「保存」「重启」了。

    分别对应:

    服务器启动 
    /opt/terraria/terra_script.sh start
    服务器停止 
    /opt/terraria/terra_script.sh stop
    服务器重启 
    /opt/terraria/terra_script.sh restart
    确认状态
    /opt/terraria/terra_script.sh status
    保存世界存档 
    /opt/terraria/terra_script.sh save
    

    给文件提升权限

    $ chmod 744 terra_script.sh
    

    确认下启动

    $ sh -x ./terra_script.sh start
    

    通过「screen -ls」确认下是否开启了窗口

    $ screen -ls
    There is a screen on:
            883.terraria    (Detached)
    1 Socket in /var/run/screen/S-terraria.
    

    确认下关闭

    $ sh -x ./terra_script.sh stop
    

    确认关闭是否成功

    $ screen -ls
    No Sockets found in /var/run/screen/S-terraria.
    

    这样就算是完成了,世界的存档就在Worlds目录中,如果你用了MobaXterm这种支持文件传输的工具连接服务器,可以直接把游戏存档拉出来保存到你自己电脑上,还可以上传你自己单机玩的存档。

    image.png

  • 相关阅读:
    网络流初步——增广路算法(EK)模板
    求大组合数
    RMQ问题
    欧拉函数
    [LintCode] Minimum Path Sum
    [LintCode] Unique Paths II
    [LintCode] Unique Paths
    [LintCode] Flip Bits
    [LintCode] O(1) Check Power of 2
    [LintCode] Count 1 in Binary
  • 原文地址:https://www.cnblogs.com/LexMoon/p/taila.html
Copyright © 2020-2023  润新知