文章目录
- 准备工作
- 游戏服务流程介绍
- 搭建步骤
- 1. 服务端环境设置
- 2. 网站及数据库搭建
- 网站配置
- MySql数据库配置
- 3. 网站及服务端文件修改
- 网站配置文件修改
- 服务端配置文件修改
- 4. 启动服务端
- 5. 客户端文件修改
最近想玩个老游戏,官方玩的不爽,某宝入手一个单机版。使用单机一键端对于我这种爱折腾的人实在没什么挑战,必须得给他整成外网的。单机版一键测试可以顺利进游戏服务端没啥问题后,直接退出,开搞!经过大量尝试,不断更换服务器,最后形成当前版本
准备工作
- 游戏server端,包含数据库,网站文件(我从一键端剔除无用文件,最精简版本)
- 网站及数据库服务器(我使用的是腾讯云,基本1C1G就够用)centos腾讯宝塔面板
- 服务端服务器 windows7以上系统均可,最好是win7(我使用的三丰云,可直接装win7操作简单)
- 游戏客户端
链接:https://pan.baidu.com/s/1e1ztiEUw4uy8uGN8c_y_rQ
提取码:3gv8
游戏服务流程介绍
用户使用客户端登录器连接到网站,获取游戏服务端的ip及端口信息,登录器连接服务端,服务端通过与数据库的交互返回数据给客户端。
搭建步骤
1. 服务端环境设置
使用远程桌面登录装成win7系统的服务器,将服务端game文件夹复制到任意位置。
关闭win7防火墙。
2. 网站及数据库搭建
这部分我们使用centos7.5,一般数据库等敏感信息还是不要放在没有安全措施的服务器中(当然,不考虑安全因素也可以放在win7服务器中,包括网站。win7的数据库及php网站架设请自行度之),因为网站需要php环境,不是很熟悉,所以就直接用宝塔面板来自动化搞定了
安装完后,进入宝塔面板,一键安装php环境
网站配置
将网站文件压缩包上传至新建的网站的根目录,解压。测试是否搭建成功:http://外网ip:端口
比较简单,就不多赘述了,不会的度一下查一查。
MySql数据库配置
宝塔面板安装的mysql是不可用root用户外网访问的,这里需要做的就是ssh登陆服务器,给root增加外网访问权限,为了节省时间我直接放一个链接照做即可。
本地使用navicat链接数据库,创建四个数据库(可以在宝塔面板创建数据库)loong_db_1
、loong_dblog_1
、 loong_gmdb_1
、loong_login_1
并依次将四个sql执行导入数据即可。
3. 网站及服务端文件修改
这里是本文核心,其他的步骤很简单,大部分人都不需要多解释,要实现外网架设,必须要知道要修改哪些配置文件,我们假设:
网站和数据库服务器的ip为1.1.1.1
网站端口为88
,mysql
端口为3306
服务端win7的ip地址为2.2.2.2
端口都使用默认不修改,请自行替换成自己的ip地址
网站配置文件修改
找到网站目录下cpk
文件夹,修改
patchinfo.txt
[version]
latest_game =9.0.1.1
latest_launch = 1.0.5[patch_0]
from = 9.0.0.0
to = 9.0.1.1
url =http://1.1.1.1:88/cpk/9011.cpk
md5 =
serverinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<root><item name="倾城之战" worldid="200001" borogh="loong" boroughrank="0" ip="2.2.2.2" port="4200" state="90" recommend="1" worldrank="0" recorank="1"/>
</root>
找到网站目录下config
文件夹,修改注册账号连接数据库信息,因为数据库与网站为同一服务器,所以我直接填本机地址127.0.0.1
Config.php
<?php
$isREG=1; //是否开启注册 0关闭 1开启;
$isPin=0; //是否开启验证码 0关闭 1开启;
$isUP=1; //是否开启修改密码功能 0关闭 1开启;
$isFP=1; //是否开启找回密码功能 0关闭 1开启;
$SQLhost="127.0.0.1"; //mysql地址 本地填:localhost 或 127.0.0.1;
$SQLuser="root"; //mysql用户名;
$SQLPWD="password"; //mysql密码;
$DATABASE="loong_login_1"; //数据库名称
?>
服务端配置文件修改
game/server_config
文件夹下有三个目录db
login
world
分别为数据库配置、账号登录配置、服务端配置
db/world.ini
[section]
id = 200000[world]
id = 200001 ;游戏世界ID
name = 倾城之战 ;游戏世界名称
pet_packet_valve = 10 ; 宠物栏位个数[ip]
db_server = 2.2.2.2[port]
db_server = 5005[golden_code]
db_server = 90100891
game_server = 292[gm_server]
ip = 2.2.2.2 ;GMServerIP
port = 6600 ;GMServer端口[display]
width = 800 ;窗口大小
height = 600 ;窗口大小[ranking]
enable = 1 ; 排名开关
time = 6 ; 排名时间
pet = 1 ; 宠物排名开关
strength = 1 ; 实力排名开关
level = 1 ; 等级排名开关
equip = 1 ; 装备排名开关
fame = 1 ; 声望排名开关
db/倾城之战.ini
[world]
id = 200001 ;游戏世界ID
name = 倾城之战 ;游戏世界名称[db_game]
host_name = 1.1.1.1
user_name = root
password = password
db_name = loong_db_1
port = 3306[db_log]
host_name = 1.1.1.1
user_name = root
password = password
db_name = loong_dblog_1
port=3306
login/login.ini
[display]
width = 800
height = 600[version]
version = 9.0.1.1[section]
id = 200000[zone_server]
num = 1[zone_session] ;和ZoneServer通信参数
port = 5050 ;和LoongWorld通信的端口[player_session] ;和客户端通信参数
port = 4200 ;和客户端通信的端口[zone0]
id = 200001 ;游戏世界ID
name = 倾城之战 ;游戏世界名称
auto_seal = 1 ;反外挂程序是否自动封号
attachserver= ;附属world服务,多个用,隔开[database]
ip = 1.1.1.1
user = root ;用户名
psd = password ;密码
name = loong_login_1
port = 3306[world_state]
update_time = 5000; ;世界人数状态DB更新时间(毫秒)
insert_time = 3600000[sim_fatigueserver]
switch = 0[gm_server]
ip = 2.2.2.2 ;GMServerIP
port = 6600 ;GMServer端口[golden_code]
login_server = 300 ;LoginServer的金色代码
zone_server = 292 ;LoongWorld的金色代码[proof]
policy = 0 ;验证策略,0——普通策略 [fatigue_guard]
;海外:不模拟防沉迷服务器,不开启防沉迷
;外服:不模拟防沉迷服务器,开启防沉迷
;精英:模拟防沉迷服务器,开启防沉迷sim_server = 0 ;模拟防沉迷服务器
guard_switch = 0 ;防沉迷开关;下面选项是防沉迷服务器相关的设置,只有在开启防沉迷时有效
ip = 2.2.2.2 ;防沉迷服务器的ip
port = 9999 ;防沉迷服务器的端口
circle = 60 ;( 单位 秒)向fatigue_server发所有当前在线防沉迷玩家帐号的周期[quanquan]
;盛大圈圈都用,其他模式不需这个部分
billingip = 127.0.0.1
;UDP server IP
billingport = 5001
;UDP port
world/world.ini
[server]
port = 10086
golden_code = 292
open_mapping = 1 ; 是否使用映射的外网ip和端口
mapping_ip = 2.2.2.2 ; 外网网关ip
mapping_port = 10086 ; 映射端口[world]
id = 200001 ;游戏世界ID
name = 倾城之战
section_id = 200000 ;大区ID
section_name = loong
player_num_limit = 1500
save_num_per_tick = 1
role_level_limit = 120 ;人物等级上限
pk_runaway_ticks = 300 ;pk逃逸后,延迟下线时间[db_server]
ip = 2.2.2.2
port = 5005
golden_code = 90100891[login_server]
ip = 2.2.2.2
port = 5050
golden_code = 300[gm_server]
ip = 2.2.2.2 ;gmserver的ip
port = 6600 ;gmserver的端口[bill_server]
ip = 2.2.2.2 ;billserver的ip
port = 7123 ;billserver的端口[CA_info]
area = HK
black_list =
certificate = D:\game\server_config\world\200001.dat[CA_svrlist]
num = 2
ca_1 = 2.2.2.2
ca_2 = 2.2.2.2
port_1 = 7000
port_2 = 7000[window]
width = 800 ;窗口大小
height = 600 ;窗口大小[cheat]
lax_cheat_distance = 50 ;外挂距离检测
strict_cheat_distance = 10 ;外挂距离检测[quest] ;任务属性的相关路径
path = data\system\quest
list = data\system\quest\quest.xml
acceptQuest_NPC_relation = data\system\quest\accept_quest_npc.data
completeQuest_NPC_relation = data\system\quest\complete_quest_npc.data[loot] ;掉落属性的相关路径
creature_loot = data\system\attdata\loot_proto.xml
loot_item_set = data\system\attdata\loot_item_set_proto.xml
loot_quest_item = data\system\attdata\loot_quest_item_proto.xml[script] ;脚本目录
path = server_data\script[vip_netbar] ;金牌网吧路径
path = server_data\vip_netbar.xml[house_keeping] ;清理
max_recv_wait_unit_num = 64 ;客户端等待处理的包的最大数量,超过数量将被踢掉
max_send_cast_unit_num = 1000 ;发送给客户端但还没有收到响应的包数量,超过数量将被踢掉
max_send_cast_size = 2097152 ;发送给客户端但还没有收到相应的字节数量,超过即被踢掉[chat_log]
on = 1 ;开启聊天log
channelflag = 255 ;255(全开) 0(全关) 1(私聊) 128(除系统公告外,全关) 129(除系统和私聊外,全关)[worldinfo]
enableexpresspay = 1 ; 是否显示直冲按钮
expresspayurl = http://1.1.1.1:88 ; 直冲的url
loginmode = 0 ; 1为大陆,2为迅雷,0为新疆,3为台湾。
today_hot_activity_url = http://1.1.1.1:88 ; 今日热门活动URL[spirit]
on = 0 ; 精力系统是否开启
level = 40 ; 起效的级别
pointperminute = 1 ; 离线恢复速度 点/分钟
reward = 320 ; 领奖点数count = 4 ; 精力对应的加成百分比个数
upper_bound_0 = 360 ; 精力对应的加成百分比1
rate_0 = 120
upper_bound_1 = 300 ; 精力对应的加成百分比2
rate_1 = 100
upper_bound_2 = 120 ; 精力对应的加成百分比3
rate_2 = 75
upper_bound_3 = 60 ; 精力对应的加成百分比4
rate_3 = 50rewardcount = 2 ; 领取奖品
reward_0 = 1352002 ; 神龙鼎
reward_num_0 = 1 ; 数量
reward_quality_0 = -1 ; 品级
reward_1 = 1352003 ; 龙珠
reward_num_1 = 1 ; 数量
reward_quality_1 = -1 ; 品级strengthcount=2 ; 实力可兑换物品数量
strength_0 = 6 ; 实力值
strength_item_0 = 1000802 ; 道具ID
strength_1 = 12 ; 实力值
strength_item_1 = 1000803 ; 道具ID[pet]
packet_valve = 10 ; 宠物栏位个数[preventlost]
offline_reward = 1 ; 离线奖励开关1为开;0即为关
loonglessing = 1 ; 神龙赐福开关1为开;0为关[title]
title_num = 355 ; 称号的最大个数[arena]
on = 1 ; 0为关闭竞技场,1为开放竞技场[talent_show]
on = 0 ; 0为关闭新疆选秀活动,1为开放选秀活动[fabao]
on = 1 ; 0为关闭法宝相关处理,1为开[create_role]
max_role_num = 5 ; 创建玩家角色个数限制,防外挂[city_struggle] ; 城战
on = 1 ; 1为开启城战,0为关闭城战[soaring]
on = 1 ; 飞升开关[auto_fight]
time_interval = 1000 ; 单位为毫秒[meridian]
on = 1 ; 经脉开关
level_limit = 50 ; 角色等级最低限制,只有满足最低要求的角色才可以练习经脉技能[meridian]
on = 1 ; 经脉开关
level_limit = 50 ; 角色等级最低限制,只有满足最低要求的角色才可以练习经脉技能[guild_union] ; 公会相关
on = 0 ; 公会版本开启标志,1开启公会版,0关闭公会版[mall_grouppurchase] ; 商城团购
on = 1 ; 商城团购开启标志,1开启商城团购,0关闭商城团购[double_hit] ; 连击功能
on = 1 ; 连击功能开启标志,1开启连击功能,0关闭连击功能[wardrobe] ; 藏衣阁
on = 1 ; 藏衣阁功能开启标志,1开启,0关闭[duo_bao_qi_bing]
Sunday = 1 ;夺宝奇兵活动周日是否开放(0:关 1:开)
Monday = 1 ;夺宝奇兵活动周一是否开放(0:关 1:开)
Tuesday = 1 ;夺宝奇兵活动周二是否开放(0:关 1:开)
Wednesday = 1 ;夺宝奇兵活动周三是否开放(0:关 1:开)
Thursday = 1 ;夺宝奇兵活动周四是否开放(0:关 1:开)
Friday = 1 ;夺宝奇兵活动周五是否开放(0:关 1:开)
Saturday = 1 ;夺宝奇兵活动周六是否开放(0:关 1:开)[god_bid]
on = 0 ; 神之竞标系统开关(0:关 1:开)
FixedBidStartTimeCnt = 3; 每周固定竞标开始时间个数
FixedBidStartTime_1 = 12;
FixedBidStartTime_2 = 19;
FixedBidStartTime_3 = 22;
WeekendAddedBidStartTimeCnt = 2; 周末加开的竞标开始时间个数
WeekendAddedBidStartTime_1 = 14;
WeekendAddedBidStartTime_2 = 16; [egg_broker]
on = 1 ;砸金蛋系统开关[role_spreader]
on = 0 ;游戏推广员开关
4. 启动服务端
依次启动game/server
文件夹中的LoginServer
、LoongDB
、LoongWorld
三个exe可执行程序,当LoongWorld
为以下界面时即可
每个程序启动会有一个窗口,等到LoongWorld
窗口如下图所示即可
5. 客户端文件修改
下面是最后一步,也是最简单的一步:客户端登录器配置,将launcher
文件夹中Launcher.ini
文件修改一下位置
;更新文件URL
PatchInfo = http://1.1.1.1:88/cpk/patchinfo.txt;游戏服务器信息文件
ServerInfo = http://1.1.1.1:88/cpk/serverinfo.xml;主窗口URL
URL = http://1.1.1.1:88/Register.php
只需更改这三处为网站地址即可,前文我们说过patchinfo.txt
和serverinfo.xml
的修改,就是为了让客户端下载服务器配置信息到本地使用,启动登录器后,登录器会访问更新文件url
,下载游戏服务器信息文件
,主窗口url
为登录器界面的显示画面,我们将它设置为网站注册页面,其他url按需求自行修改即可。
启动登录器launcher.exe
即可进入游戏happy了