我叫MT游戏服务器搭建详解


mt
最近有友人分享了一个手游的服务器端程序,我尝试在阿里云的服务器上搭建了一个游戏服务器,下面将搭建过程和大家分享一下:

0. 内容分析和环境要求:

此份手游的服务器端程序分为2个部分,http服务器和游戏服务器,需要同时工作才能保证游戏正常运行,其内容如下:

http服务器部分,http服务器部分主要包括:

1) 账号注册,修改密码,服务器端相应的服务端口和游戏服务器的地址获取等内容。
2) 游戏更新补丁及对应的内容
3) 游戏公告,攻略,充值等相关页面。

游戏服务器部分,游戏服务器部分主要包括:

1) public config 文件夹,用来配置游戏内各种卡牌和游戏配置的相关数据。
2) server config 文件夹,用来配置游戏内玩家相关配置的相关数据。
3) mt_a 及对应的cfg文件,用来启动游戏服务器和配置游戏服务器,其中mt.s.conf用来配置游戏服务器,mt.g.conf用来配置游戏参数。
4) chatserver 及对应的cfg文件,用来配置聊天服务器的相关内容。

搭建的环境要求:

操作系统: linux 推荐使用ubuntu 14.04 或者centos 6.5,必须为64位的系统。
数据库:mysql用来存储主要数据,redis用来交互数据,mongoDB用来配置聊天服务器。
php环境:必须使用php5.x,推荐使用php-fpm 5.x,由于http服务器内容较老,不兼容新的php版本。
http服务:推荐使用nginx,这里也是nginx作为例子进行说明。
注:若是没有linux 服务器操作经验,可先参考网络例子安装宝塔操作平台减少操作。

1. 环境搭建。

http环境搭建:

http环境和常规的http服务器搭建除php版本以外,没啥大的差异,这里简单的记录一些指令:

.安装mysql

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

注:安装过程中按照提示输入root用户的密码

.安装nginx 和php-5.x

sudo apt-get install nginx
sudo apt-get install php5-fpm

这里特别说明一下,若是ubuntu版本较高,无法找到php5-fpm,可以采用如下方式更新源来解决

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

.安装redis和MongoDB

sudo apt-get install redis-server
sudo apt-get install mongodb

环境配置文件的修改:

.mysql远程访问:

一般不需要远程访问修改数据库的可不做修改,若需要远程访问修改数据内容,按照如下步骤修改

1) mysql -u root -p 输入密码登录mysql操作界面.

2) use mysql; 切换到mysql本身数据库。

3) grant all privileges on *.* to root@’%’ identified by “password”; 修改外部访问权限和密码

4) flush privileges; 授权生效

.redis端口修改:

由于配置的默认端口使用的6379,占用了redis默认端口,需要修改redis的默认端口,修改/etc/redis/redis.conf的端口,重启一下redis就可以了。

.nginx及php5-fpm的修改:

主要是为匹配php和nginx的端口,保证nginx的端口转发正常,建议把php5-fpm的端口改成9000,修改/etc/php5/fpm/pool.d/www.conf中的listen为9000。

修改nginx的配置:

在/etc/nginx/sites-enabled/default 中增加如下字段:

server {
        listen 80;
        # 你的网站域名
        server_name xxx.xxx.xx;
        # http 服务器存放路径
        root /var/www/http-server;
        index index.php index.html index.htm;
        # php解析必须按照如下2个填写
        location ~ [^/]\.php(/|$){

                fastcgi_keep_conn on;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }

        location / {
                try_files $uri $uri/ /index.php?$args;
        }
    }

检查服务启动情况:

1) 用ps -a 查看相关的程序是否都已经启动,
2) 在外部电脑,通过浏览器访问你当前服务器的IP或者域名,看下是否能出现nginx的欢迎界面。
3) 按照路径访问对应的文件是否能访问,如:http://你的IP/api/getgameinformation.php,看下是否显示xml

2. 数据库的导入:

按照如下步骤新建和导入数据库

mysql -u root -p 输入密码登录mysql操作界面
create database mtdb; 创建mtdb的数据。
use mtdb; 切换到mtdb的数据库。
source mtdb.sql; 导入数据表格,注意选择好对应的路径。

此时数据库就已经完成创建和导入。

3. http服务器的配置修改

需要修改mysql的登录账号和密码,主要修改http服务器目录的如下文件:

config.php
Account/changepasswd.php
Account/register.php

修改服务器配置,主要修改api/getgameinformation.php,此处根据实际情况修改即可。

4. 游戏服务器的配置和修改:

游戏服务器主要修改的mt.g.conf,mt.s.conf,用来配置游戏运行的主要mt.s.conf,另外一个不做说明。

mt.s.conf主要修改内容如下:

1) 搜索 mysql,修改mysql的db,账号和密码,注意本地数据一般使用127.0.0.1
2) 搜索 use_redis ,修改使能redis,目前看到不使用redis是无法启动游戏的,检查端口和数据库名称,一般不需要修改。
3) 根据需要,搜索open_chat_server 看是否需要开启聊天服务器。
4) 游戏服务还有更多内容,由于没有深入研究所有暂时不建议修改。

5. 游戏更新的配置:

有时需要在远程修改游戏的配置和资源文件,目前的服务器是支持在线升级,需要按照如下方式配置:

resourceMap.txt — 完整的数据map,根据原有的map文件增加新的内容。
file.list — 更新文件的表单,内容包括:文件名,MD5码
resouce 文件夹 — 需要更新的文件。
VERSION — 更新后的版本号

将所有内容放到http服务器路径下的版本号对应的文件夹中。

6. 服务器管理:

有时为了方便管理服务器,特意编写了脚本管理游戏服务器的启动和相关,具体如下:

  #!/bin/bash
    # 游戏服务路径
    server_path=/xx/xxx/server
    case "$1" in
    init)
        echo -n "Init game-Server"
        cd $server_path
        ./chatserver mt.chat.conf mt.g.conf&
        sleep 50
        ./mt_a mt.s.conf mt.g.conf&
        sleep 30
        ;;
    restart)
        pid=`pgrep mt_a`
        if [ ! -n  "$pid" ];then
            echo "MT-SERVER not start yet, It will start Soon !"
        else
            kill -9 $pid
        fi

        cpid=`pgrep chatserver`
        if [ ! -n  "$cpid" ];then
            echo "Chatserver not start yet, It will start Soon !"
        else
            kill -9 $cpid
        fi

        cd $server_path
        ./chatserver mt.chat.conf mt.g.conf&
        sleep 50
        ./mt_a mt.s.conf mt.g.conf&
        sleep 30
        ;;
    stop)
        pid=`pgrep mt_a`
        if [ ! -n  "$pid" ];then
            echo "MT-SERVER not start yet, Stop none !"
        else
            kill -9 $pid
        fi

        cpid=`pgrep chatserver`
        if [ ! -n  "$cpid" ];then
            echo "Chatserver not start yet, Stop none !"
        else
            kill -9 $cpid
        fi
        ;;
    *)
        echo -n "Usage: /opt/MT-server/run {init|restart|stop}">&2
        exit 1
        ;;
    esac

    exit 0

这样子在实际操作中只需要执行脚本就可以启动和重启服务器了。

8. 客户端的修改:

客户端必须要和服务器端匹配,但是客户端修改的内容不多,主要是:

1) 获取游戏服务器配置的路径,需要反编译客户端,具体路径为:src/com/locojoy/comm/WelActivity.java,一般反编译到samli文件即可修改。修改的具体内容为:getServerList 接口的String str ,大约在326行。
2) 用工具修改库文件的路径。

9. 注意事项:

1) 网上修改的版本较多,config文件和资源文件需要匹配修改,所以需要服务器版本和客户端版本对应,不然会出现资源找不到的异常。
2) 服务器端是来源于网络,因此版本内容还有部分不全,并非所有内容都完备,但是配置文件相对独立,还是可以做很多的修改。
3) 服务器端的tab文件是明文,客户端的tab文件是加密,所以若是要修改还需要解密。

10. 总结:

这是一个老旧的游戏服务器端,内容设计现在看来是有些可取的内容,包括程序和配置分离,游戏和服务器程序分离等等,可快速移植和换皮。其他游戏的服务器端,我也看过一些,这一个服务器端还是属于比较优秀的设计。

版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/mymt-server-build.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注