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