地狱已满服务器搭建教程-1 服务器安装篇 NMRIH Dedicate Server
简介:Windows / Centos 系统搭建 地狱已满(NMRIH)私人服务器教程
服务器搭建篇:地狱已满服务器搭建教程-1 服务器安装篇(本文)
网络配置篇 : 地狱已满服务器搭建教程-2 网络配置篇
可行性已证实:在
Win11 21H2
、Centos 7.5
系统,端口映射
、内网穿透
多方案组合搭建成功教程无任何 私货 / 后门 夹杂,请放心食用
本文主要为个人自学所写,如有错误或值得改进的地方,欢迎留言指出,不胜感激
一、硬件配置推荐(可跳过)
处理器 (CPU) + 运行内存
结论:NMRIH 服务器对硬件性能要求不高,大部分情况 阿里云低配云服务器(1h2g)也能轻松支撑 8 人游玩
当丧尸、实体数量过多时,无论是阿里云的低配服务器还是 i5-12490 都会变卡。尝试了网上多种方案优化性能配置(解除带宽上限sv_maxrate=0、修改服务器与客户端的每秒更新数、命令数等)还是无法避免
[ 建议 ] 地图同一时间内的丧尸数量不要超过 100 (默认85)网络带宽
结论:纯净经典 8人服 带宽至少 2M ≈ 256kb/s(经典模式,无模型下载 和 三方地图下载)
由于每个实体的数据都需要传输给客户端,通常单人占服务器网络上行 30kb/s 左右
据此可粗略推算出:经典模式 8 人服,大约需要 240kb/s 的上传速率才能满足正常游戏需求(前提:无下载资源需求)
[ 举例 ]
图为 花茶苑 - 经典3倍全跑,单人游戏网络的 IN 速率约为 80-90kb/s。按满 9 人算,则至少需要 7M 带宽才能保证每个玩家稳定游戏磁盘存储空间
无插件,仅官方地图 和 官方模型 的经典模式服务器 占用存储空间约 7.5 GB
占用存储空间较多的一般为地图和模型,插件占用的存储空间很少系统
如果是个人平常使用的电脑:正常的win7、win10、win11都可以
如果是已经淘汰的老旧电脑、性能较低的云服务器:建议选择更稳定的 Windows Server,或占用资源更少的 Linux 系统性能测试
结论:当丧尸数在 90 左右,用户带宽占用 和 choke 就会开始上涨,超过 150 时能感觉到明显卡顿[ 阿里云 Centos 7 ]
8 人经典模式,CPU 占用在 15%-35% 之间,内存占用率稳定在 35% ± 3%
[ Window11 - i5-12490F ]
1 人经典模式,地图 nmo_parish,在进入撤离区前的围栏门口,丧尸数量 150 左右
In 约 70kb/s,但是 choke 达到了 85
任务管理器显示:CPU占用 5~10%,占用内存 ≈ 210mb
服务器后台统计:CPU占用 30~55%
二、网络环境配置
这一步是服务器能否被 互联网玩家 访问到的关键
- 如果只在局域网内自己玩,可跳过这一步(可以先搭建服务器,最后再根据实际情况将服务器开放到互联网)
- 如果是云服务器,一般配有公网IP,在安全组放行 UDP-27015 端口即可
- 如果是家用网络,可能没有公网IP,可以尝试向运营商申请 或者 使用内网穿透方案
具体教程参考另一篇文章: 地狱已满服务器搭建教程-2 网络配置篇
三、安装 NMRIH 服务器
注意:
① 下文路径都以 示范路径 为准! 如果你设置的路径与本文不相同,请在操作时将路径修改成自己的
② 路径中建议不要带有 中文、空格、特殊字符 等,避免出错
③ 下文 每一步 执行步骤都分 两种系统 编写,只需看与自己系统对应的部分即可
1. 准备工作
Windows 系统
① 创建独立的文件夹,用于保存 steamCMD 和 NMRIH 服务器。
示范路径:
rem 小贴士:md 是 cmd 创建文件夹的命令 | rem 是 cmd 注释方法,rem 后面一整行内容会被忽略 md D:\Game\ServerData\steamCMD md D:\Game\ServerData\nmrih_Server
Centos 7 系统
① nmrih 服务器需要 32 位库才能运行,如果你的系统是64位的发行版,需要安装额外的软件包
yum install glibc.i686 libstdc++.i686
② 新建一个用于管理和启动服务器的用户(安全起见,不要使用 root 用户启动服务器!)
useradd -m steam su steam
③ 创建独立的文件夹,用于保存 steamCMD 和 NMRIH 服务器。
示范路径:
mkdir /home/steam/steamCMD mkdir /home/steam/serverfiles
2. 下载 steamCMD
用途:下载/更新 NMRIH 服务器 | 点此查看 steamCMD 官方安装教程 [中文]
Windows 系统
① 下载 steamCMD 安装程序压缩包: https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
② 将压缩包解压到上一步创建的
D:\Game\ServerData\steamCMD
文件夹里③ 运行
steamcmd.exe
等待自动安装完成Centos 7 系统
① 下载 steamCMD 压缩包wget -P /home/steam/steamCMD http://media.steampowered.com/client/steamcmd_linux.tar.gz
② 将压缩包解压到上一步创建的
/home/steam/steamCMD
文件夹里 (这步可以只解压,不运行steamCMD)tar -xvzf /home/steam/steamCMD/steamcmd_linux.tar.gz -C /home/steam/steamCMD
3. 下载 NMRIH 服务器资源
- 下载应用命令格式 :app_update <应用ID> [validate]
- 可选参数 validate :下载完后校验下载的服务器资源是否完整
- NMRIH 服务器应用 id :317670
- 应用 ID查询地址 :地址1 | 地址2
Windows 系统 (在
steamcmd.exe
命令窗口中输入下列命令)① 设置 NMRIH 服务器的安装目录
force_install_dir D:\Game\ServerData\nmrih_Server
② 登录 steam 账户
rem 注意将账户名修改成你的steam账号 rem 输入密码时没有任何提示,一次性输完回车即可 | 登录时长取决于网络环境,耐心等待就好 login 账号名
- 也可以用匿名账户登录
login anonymous
③ 下载 NMRIH 服务器资源(下载完成后 steamCMD 命令窗口可以关闭)
app_update 317670 validate
Centos 7 系统
- 输入如下命令下载 NMRIH 服务器资源(注意将 账号名 和 密码 换成自己的)
# 输入密码时没有任何提示,一次性输完回车即可 | 登录时长取决于网络环境,耐心等待就好 /home/steam/steamCMD/steamcmd.sh +force_install_dir "/home/steam/serverfiles" +login 账号名 密码 +app_update 317670 validate +quit
- 也可以用匿名账户登录
/home/steam/steamCMD/steamcmd.sh +force_install_dir "/home/steam/serverfiles" +login anonymous +app_update 317670 validate +quit
四. 配置服务器基本信息
server.cfg
在启动服务器前,还差一个服务器配置文件,用于设置服务器服务器的名字、密码、游戏参数 等基本信息
- Windows 系统
- 配置文件需要放在:D:\Game\ServerData\nmrih_Server\nmrih\cfg
- Centos 7 系统
- 配置文件需要放在:/home/steam/serverfiles/nmrih/cfg
获取配置文件内容方式:
zombiegaming 提供:fastdl.zombiegaming.net
使用我提供的配置文件
在服务器 cfg 目录里创建
server.cfg
文件,文件内容如下代码块//*************************************************************************************** // // No More Room in Hell - Server.cfg // Version 1.12 - November 02, 2022 // 最新版本: https://blog.csdn.net/weixin_43908947/article/details/127372900 // // **************************************************************************************// ................................... 服务器基本设置 ................................... // // 服务器名称 hostname "[CN] NMRIH Dedicate Server Tutorial By F1F88"// 管理员邮箱 sv_contact ""// 加入服务器的密码 sv_password ""// 远程控制台密码, 如果没有远程连接可以留空 // 如果需要更安全的密码, 登录 https://www.grc.com/passwords.htm 查看自动生成的列表 rcon_password "" // sv_rcon_log 1 // 允许记录 rcon 日志记录. 默认 1 // sv_rcon_whitelist_address "" // 设置认证 rcon 身份失败也不会禁止的地址 // sv_rcon_maxfailures 10 // 设置认证 rcon 身份失败多少次后被封禁. 默认 10 // sv_rcon_banpenalty 0 // 设置认证 rcon 身份失败后, 封禁用户的分钟数. 默认 0 // sv_rcon_minfailuretime 30 // 设置认证 rcon 身份失败后, 跟踪用户的秒数. 默认 30 // sv_rcon_minfailures 5 // 设置用户在跟踪时间内, 认证 rcon 身份失败几次被封禁. 默认 5 // sv_rcon_maxpacketbans 1 // 禁止超过 sv_rcon_maxpacketsize 大小的 rcon 数据包. 默认 1 // sv_rcon_maxpacketsize 1024 // 设置命令包中允许的最大字节数. 默认 1024sv_region 4 // 服务器所在地区.-1 = 世界 | 0 = 美国东 | 1 = 美国西 | 2 = 南美 | 3 = 欧洲 | 4 = 亚洲 | 5 = 澳大利亚 | 6 = 中东 | 7 = 非洲 sv_lan 0 // 服务器网络类型. 0 = Internet 互联网 | 1 = Local Area Network 局域网motdfile "motd.txt" // 设置 公告栏/每日信息 文件名 mapcyclefile "mapcycle.txt" // 设置 地图列表 文件名 sv_difficulty "classic" // 服务器游戏难度. casual-休闲 | classic-经典 | nightmare-噩梦 sv_tags "classics" // 服务器类型标签. custom-自定义 | classics-经典 | objective-仅nmo地图 | survival-仅nms地图// ................................... 下载设置 ................................... // sv_allowupload 0 // 允许客户端上传文件. 默认 1 sv_allowdownload 1 // 允许客户端下载文件. 默认 1 net_maxfilesize 64 // 允许客户端下载文件大小上限(MB). 默认 64// 设置客户端从网站下载文件, 以加快下载速度, 为空则从服务器的资源里下载. // 假设服务器地图文件夹中有一个名为 nmo_example.bsp 的地图, 在 Web 服务器中有 nmo_example.bsp // Web文件地址为 http://www.网站.com/nmrih/maps/nmo_example.bsp // 则应该设置为 sv_downloadurl "http://www.网站.com/nmrih" sv_downloadurl ""// sv_workshop // Enable server-side Steam Workshop for maps. | (1.11.5新增) // sv_workshop_autoupdate // Automatically update Workshop maps every level change. // workshop_remove_all // 从列表中删除所有地图. | (1.13新增)// ................................... 性能设置 ................................... // // fps_max 0 // 设置服务器运行帧速率的限制, 0=无限制. 默认 300 sv_maxrate 0 // 服务器分配给一个人的最大带宽速率, 0=无限制, (字节/秒). 默认 0 sv_minrate 33000 // 服务器分配给一个人的最小带宽速率, 0=无限制, (字节/秒). 默认 3500 sv_maxupdaterate 66 // 服务器每秒允许的最大更新数. 默认 66 sv_minupdaterate 10 // 服务器每秒允许的最小更新数. 默认 10 sv_maxcmdrate 66 // 服务器每秒允许的最大命令数. 默认 66 sv_mincmdrate 10 // 服务器每秒允许的最小命令数. 默认 10sv_parallel_packentities 1 // 允许服务器并行打包实体. 默认 1 sv_parallel_sendsnapshot 1 // 允许客户端并行接收其他客户端和服务器同时发送的连续快照. 开启可以使画面更加顺滑. 默认 0 // sv_forcepreload 1 // 强制服务器端预加载 // sv_unlag_npcs 1 // 允许对 NPC 执行滞后补偿(实验性). 默认 1 // sv_alternateticks 1 // 允许服务器仅模拟偶数刻度上的实体. 默认 0 // sv_max_queries_sec 3.0 // 允许每秒从单个 IP 响应的最大查询数. 默认 3.0 // sv_max_queries_sec_global 3000 // 允许每秒从任何位置响应的最大查询数. 默认 3000 // sv_max_queries_window 30 // 允许每秒平均查询平均值的窗口. 默认 30net_splitpacket_maxrate 33000 // 设置对拆分数据包块排队时, 每秒的最大字节数.(Tickrate / 2 * 1000). 默认 80000 net_maxroutable 1260 // 设置数据包拆分之前, 请求的最大数据包大小(576 - 1260). 默认 1260 net_maxcleartime 0.03 // 允许发送前等待下一个数据包的最长秒数, 0=无限制. 默认 4.0 net_queued_packet_thread 1 // 允许使用高优先级线程将队列数据包发送出去, 而不是每帧发送一次. 默认 1 net_compresspackets 1 // 允许对游戏数据包使用压缩. 默认 1 net_compresspackets_minsize 1024 // 允许压缩的数据包最小大小(字节). 默认 1024 net_splitrate 1 // 允许每帧发送拆分数据包的碎片数. 默认 1// 用于限制已连接客户端的 cl_interp_ratio 最小值. 默认 1 // -1 = 让客户端设置 cl_interp_ratio 为任何值 | 其他 = 设置 cl_interp_ratio 的最小值 sv_client_min_interp_ratio 2// 用于限制已连接客户端的 cl_interp_ratio 最大值. 默认 5 // 如果 sv_client_min_interp_ratio = -1, 那么 sv_client_max_interp_ratio 的设置无效 sv_client_max_interp_ratio 2// 用于强制连接时客户端的 cl_predict 值. 默认 -1 // 当本地客户端设置 cl_predict=1 时, 表示激活预测物理、运动、射击等 (推荐) // -1 = 让客户端将 cl_predict 设置为任何值 | 0/1 = 强制 cl_predict 为 0/1 sv_client_predict 1// 客户端 cl_cmdrate 值被移动到 cl_updaterate 的 sv_client_cmdrate_difference 个单位内 // 且不超过 sv_mincmdrate 和 sv_maxcmdrate . 默认 20 sv_client_cmdrate_difference 20// ................................... 其他额外设置 ................................... // // ----------------- 玩家 ------------------ // sv_idle_autokick_enabled 1 // 允许自动踢出挂机玩家. 默认 1 sv_idle_autokick_time 120 // 允许自动踢出判定时长(秒). 默认 120 // sv_zombie_collision_enabled // 启用丧尸体积碰撞. 默认 1 // sv_max_separation_force 0 // 启用玩家体积碰撞. 默认 1 | (1.11新增) // sv_observer_health_display // 允许观众查看玩家生命值. 默认 1 | (1.11新增) // sv_neutral_player_name // 设置用中性颜色显示玩家名称标签. 默认 0 | (1.11新增) // sv_friendly_fire_factor 0.0001 // 设置队友伤害百分比. 默认 0.1 // mp_friendlyfire 0 // 启用队友伤害.(0=仅感染时有). 默认 0 // sv_deathnotice 2 // 启用死亡提示.(2=仅玩家死亡). 默认 0 | (1.11.5新增) // sv_kill_player_on_disconnect 1 // 允许杀死失去连接的玩家.(防止变异坑人). 默认 1 | (1.13新增) // sv_allow_voice_from_file 1 // 允许客户端使用来自此服务器上文件的语音输入. 默认 1 // sv_voiceenable 1 // 允许玩家用麦克风交流. 默认 1 // sv_alltalk 1 // 允许玩家的麦克风交流无视距离. 默认 0 // mp_show_voice_icons 1 // 允许玩家说话时显示头顶的播放器语音图标. 默认 1 // sv_voice_cooldown 3 // 语音命令冷却时间(秒). 默认 3 // sv_voicecodec "steam" // 设置语音编解码器. 默认 steam// "steam"-steam API | "vaudio_celt"-较新的celt编解码器 | "vaudio_speex"-传统speex编解码器(最低质量) sv_allow_wait_command 0 // 允许客户端使用 wait 命令(最好保持禁用状态 - 0, 以防止滥用脚本). 默认 1 // sv_gravity 800 // 设置世界重力. 默认 800 // sv_pushaway_max_force 1000 // 设置玩家施加在物理物体上的最大力量. 默认 1000 // sv_pushaway_min_player_speed 75 // 如果玩家移动速度比这慢, 不要推开物理物体(可以躲避物体). 默认 75// --------------- 回合时长 ---------------- // mp_timelimit 999 // 设置自动切换到新地图之前, 在单个地图上花费的时间(分钟). 默认 45 mp_maxrounds 999 // 设置自动切换到新地图之前, 在单个地图上花费的最大回合数. 默认 2 sv_practice_transtime 45 // 设置练习时间的时长. 默认 45 sv_preround_freezetime 5 // 设置回合开始前的冻结时长. 默认 5 // sv_extract_previewtime 12.0 // 设置撤离后自由镜头的时间. 默认 12.0 // sv_wave_begin_grace 30 // 设置 wave 开始之前的时间. 默认 30 // sv_wave_cooldown 10 // 设置 wave 之间的冷却时间. 默认 10 (需要作弊) // sv_roundlag_time 10 // 设置回合之间的等待时间. 默认 10 // mp_bonusroundtime 15 // 设置一轮获胜后到一轮重新开始的时间. 默认 15 // mp_bonusroundtime_final 15 // 设置最后一轮结束后, 到第二轮重新开始的时间. 默认 15 // sv_nextlevel_on_round_win // 设置回合胜利后自动切换下一张地图, 而不是重新开始. 默认 0 | (1.11新增)// ------------- 游戏难度/模式 ------------- // // sv_challenge 0 // 启用挑战模式. 默认 0 // sv_realism 0 // 启用写实模式. 默认 0 // sv_hardcore_survival 0 // 启用硬核生存模式. 默认 0 // sv_realism_allow_respawn 0 // 允许写实模式重生. 默认 0 // sv_challenge_validate 1 // 验证挑战模式的返回结果. 默认 1 // sv_watermelon_rescue 1 // 启动西瓜救援!带他们去撤离区. 默认 1 | (1.13地图新增了更多西瓜)// ----------------- 复活 ------------------ // // sv_respawn_allowed 0 // 允许玩家复活. 默认 0 // sv_respawn_without_tokens // 允许玩家没有复活令牌时复活. 默认 1 // sv_respawn_with_weapon 0 // 允许玩家复活时获得武器. 默认 0 // sv_respawn_ammo_pct // 设置玩家复活时获得武器弹夹的概率. 默认 75 // sv_respawn_nearby_allowed 0 // 允许在其他玩家附近复活. 默认 0 // sv_respawn_nearby_min_distance // 设置在其他玩家附近复活时, 距离目标玩家的最小距离. 默认 100 // sv_respawn_nearby_max_distance // 设置在其他玩家附近复活时, 距离目标玩家的最大距离. 默认 300 // sv_respawn_nearby_tries_per_player // Number of times to try finding a nearby spawn per other player when doing nearby spawning. 默认 3 // sv_respawn_token_objective // 允许目标模式下使用复活令牌. 默认 0 // sv_respawn_token_survival // 允许生存模式下使用复活令牌. 默认 1 // sv_respawn_time_token // 设置玩家拥有复活令牌时的重生时间. 默认 5 // sv_respawn_time_notoken // 设置玩家没有复活令牌时的重生时间. 默认 30 // sv_respawn_initial_token_count_objective // 设置任务模式复活令牌初始值. 默认 0 // sv_respawn_initial_token_count_survival // 设置生存模式复活令牌初始值. 默认 0 // sv_respawn_kills_per_token_objective // 设置目标模式获得一个复活令牌所需分值. 默认 0 // sv_respawn_kills_per_token_survival // 设置生存模式获得一个复活令牌所需分值. 默认 40 // sv_wave_reset_tokens // 允许新 wave 时清空复活令牌. 默认 0 // sv_wave_remove_inflictions // 允许新 wave 时消除感染. 默认 0 // sv_wave_heal_amount // 设置新 wave 治愈血量值. 默认 0 // sv_spawn_grace // Spawn grace time | 复活宽限期. 默认 180 // sv_spawn_grace_wave_percent // Spawn grace time wave percent | 复活宽限期 wave百分比. 默认 -1 // sv_spawn_grace_objectivecount // 完成多少个任务后, 玩家不能重生. 默认 2// ---------------- 游戏道具 ---------------- // // sv_health_station_health // 设置医疗箱的生命值. 默认 200 // sv_health_station_heal_per_tick // 设置医疗箱的每秒治愈量. 默认 1 // sv_health_station_opacity // 设置医疗箱未使用时的不透明度. 默认 0.3 // inv_ammoweight // 设置每盒弹药的重量.(需要作弊). 默认 5 | (1.12.2新增) // sv_flare_gun_supply_limit // 设置信号枪可以召唤补给的最多次数.(-1=无穷大). 默认 1 // sv_resupplytime // 设置再次提供补给的时间间隔(秒). 默认 60 // sv_rare_weapon_chance // 设置物品盒有机会生成稀有武器(电锯). 默认 0.05 // sv_rare_tool_chance // 设置物品盒产生稀有工具的概率(火炬枪、灭火器、焊工). 默认 0.025 // sv_ng_zombie_loot // 允许 ng 丧尸掉落战利品. 默认 1 | (1.12.1新增)// ---------------- 投票相关 ---------------- // // sv_allow_votes 1 // 允许玩家投票. 默认 1 // sv_vote_issue_kick_allowed 0 // 允许玩家通过投票踢出其他玩家. 默认 0 // sv_vote_allow_spectators 0 // 允许观众投票.(包括死亡玩家). 默认 0 // sv_allow_dead_votekick_alive 0 // 允许观众投票踢出活着的玩家. 默认 0 // sv_vote_kick_ban_duration 10 // 设置被踢出后封禁时长.(0=禁用). 默认 10 sv_vote_creation_timer 150 // 设置玩家需要多长时间才能进行另一次投票. 默认 150 sv_vote_failure_timer 300 // 设置投票失败多长时间内不能重新发起投票. 默认 300 // sv_vote_quorum_ratio 0.6 // 设置同意投票所需的最低合格玩家比例.(0.5-1.0). 默认 0.6 // sv_vote_changedifficulty_restart 1 // 设置玩家改变难度后重新开始游戏. 默认 1 // sv_vote_issue_changechallenge_allowed 1 // 允许玩家通过投票改变游戏挑战. 默认 1 // sv_vote_issue_changedifficulty_allowed 1 // 允许玩家通过投票改变游戏难度. 默认 0 // sv_vote_issue_changelevel_allowed 1 // 允许玩家通过投票改变游戏地图. 默认 1 // sv_vote_issue_nextlevel_allowed 1 // 允许玩家通过投票改变下张地图. 默认 1 // sv_vote_allow_restart_game_skip 1 // 允许玩家投票跳过练习阶段. 默认 1 | (1.11新增) // sv_vote_issue_restart_game_allowed 1 // 允许玩家投票重新开始回合. 默认 1 // sv_vote_ui_hide_disabled_issues 0 // 允许隐藏被禁止的投票选项. 默认 1// ---------------- 日志相关 ---------------- // log on // 启用日志 (off/on) // sv_logsdir // 设置日志文件存储目录. 默认 "logs" // sv_logfile // 允许日志文件记录服务器消息. 默认 1 // sv_logfilename_format // 设置日志文件名格式. 有关格式化代码, 请参阅strftime // sv_logfilecompress // 允许用Gzip压缩日志文件, 并在关闭时重命名为 logfilename.log.gz. 默认 0 // sv_logbans // 允许记录服务器禁令. 默认 0 // sv_logblocks // 允许记录被阻止的查询(可能导致非常大的日志文件). 默认 0 // sv_logdownloadlist // 无. 默认 1 // sv_logecho // 允许将日志信息回显到控制台. 默认 1 // sv_logflush // 允许每次写入时将日志文件刷新到磁盘.(慢). 默认 0 // sv_logsecret // 允许在执行UDP日志记录时包含此密钥.(将使用0x53作为数据包类型, 而不是通常的0x52). 默认 0// ----------------- 调试 ------------------ // // sv_stats // 允许收集 CPU 使用统计. 默认 1 // sv_debug_player_use 1 // 允许可视化 +use(E). 绿色十字=追踪成功, 红色十字=追踪太远, 绿色方框=半径成功. 默认 0 // sv_debugtempentities // 允许显示临时实体带宽使用情况. 默认 0 // sv_item_glow // 允许物体发光. 默认 1 | (1.11新增) // sv_showimpacts // 允许显示客户端(红色)和服务器(蓝色)弹着点. 默认 0 // sv_showladders // 允许显示所有梯子的bbox和卸载点(必须在水平加载前设置) // sv_execmapcfg // 设置地图初始化 自动执行[mapname].cfg // sv_timeout // 在这几秒钟没有来自客户端的消息后, 客户端将被删除 // sv_zombie_hate_everyone // 允许丧尸攻击任何目标.(包括其他丧尸 | 需要作弊). 默认 0 | (1.11新增) // cl_skip_joingame_dialog 1 // 允许客户端跳过欢迎界面, 自动加入游戏. 默认 0 | (1.11.5新增 | 仅客户端可用)// ................................... Sourcemod 设置 ................................... //// *************************************************************************************** // // 高级服务器设置 (最好不要动!) // // *************************************************************************************** exec banned_user.cfg exec banned_ip.cfg// 这些命令将在切换地图时运行, 服务器崩溃时可能会从banlist中删除最近的封禁信息, 这可以最小化这个问题 // writeid writeip// 封禁不良玩家, 参考(26楼):https://tieba.baidu.com/p/5316771031?pid=111825849054&cid=#111825849054 // banid forever [U:1:204954714] // vvi // banid forever [U:1:122213944] // 汪君//*************************************************************************************** // // 主服务器设置 // //*************************************************************************************** // sv_master_legacy_mode 0 // 禁用lagacy模式, 因为steam主服务器不再支持它 heartbeat // 发送此服务器准备就绪的心跳信号. 这应该是配置的最后一行//***************************************************************************************//-----End of Server.cfg-----
五、 启动游戏服务器
Windows 系统
方式 ①:命令行启动
- 按下
Win + R
打开cmd
命令行,输入如下命令即可D:\Game\ServerData\nmrih_Server\srcds.exe ./srcds_run -game nmrih -port 27015 -maxplayers 8 +map nmo_suzhou
方式 ②:快捷方式启动(推荐)
- 鼠标右键点击
srcds.exe
文件 ⇒ 选择创建快捷方式 ⇒ 将目标(T):
栏内容修改成如下内容
然后就可以像打开桌面软件一样双击即可运行服务器(快捷方式启动文件可以放在包括桌面的任意位置)D:\Game\ServerData\nmrih_Server\srcds.exe ./srcds_run -game nmrih -port 27015 -maxplayers 8 +map nmo_suzhou
方式 ③ :脚本启动
- 创建一个文本文件,名字随意,后缀名必须为
.bat
。例如:startServer.bat
,文件内容如下:
接着双击运行startServer.bat
文件即可启动服务器(此文件同样可以放在任何位置)D:\Game\ServerData\nmrih_Server\srcds.exe ./srcds_run -game nmrih -port 27015 -maxplayers 8 +map nmo_suzhou
Centos 7 系统
方式 ①:前台启动
输入如下命令,就可以启动服务器了(此方法关闭远程连接后,服务器也会关闭)
/home/steam/serverfiles/srcds_run -game nmrih -port 27015 -maxplayers 8 +map nmo_suzhou
方式 ②:screen多视窗启动
- screen简介:菜鸟教程 - screen
- 优点:关闭远程连接后服务器可以保持允许
- 具体使用方法请参考:Centos 7 开地狱已满服教程
方式 ③:tmux 终端复用软件(推荐)
tmux 简介:百度百科 - tmux
推荐理由:知乎 - tmux 介绍
安装 / 使用方法:
yum install tmux # 下载安装tmux tmux new -s steam # 创建一个名为 steam 的会话 tmux ls # 列出当前用户所有会话 tmux a -t steam # 重新连接名为 steam 的会话# 停止并退出会话:Ctrl + D
举例
tmux new -s nmrihserver # 创建一个名为 nmrihserver 的会话 /home/nmrihserver/serverfiles/srcds_run -game nmrih -port 27015 -maxplayers 8 +map nmo_suzhou # 启动服务器
########################################################################################
# 纯净经典服务器 到此部署完成!
# 如需新增的第三方地图,将地图文件放到 ./serverfiles/nmrih/maps
文件夹里
# 用户会从服务器下载资源 (如需投票列表显示地图,请修改文件 ./serverfiles/nmrih/cfg/mapcycle.txt
)
########################################################################################
六、疑难解答
如何更新服务器
Windows 系统
① 运行
steamcmd.exe
,打开后 steamcmd 会自动更新② 接着先设置 服务器所在目录,再登录 steam 账号
③ 最后输入
app_update 317670 validate
更新服务器force_install_dir D:\Game\ServerData\nmrih_Server login anonymous app_update 317670 validate
Centos 7系统
方法一:手动更新
手动输入如下命令用
steamcmd
更新服务器/home/steam/steamCMD/steamcmd.sh +force_install_dir "/home/steam/serverfiles" +login anonymous +app_update 317670 validate +quit
方法二:启动时添加自动更新参数
参考 Valve 开发者社区: [ 服务器启动命令参数列表 [英] ]
① 创建一个用于自动更新的配置文件,例如:
/home/steam/steamCMD/nmrih_update.txt
vim /home/steam/steamCMD/nmrih_update.txt
@ShutdownOnFailedCommand 1 // set to 0 if updating multiple servers at once @NoPromptForPassword 1 // disables promt for password on execution force_install_dir /home/steam/serverfiles/ // Your Server instance login anonymous // logs in with steams public anonymous account app_update 317670 quit
② 启动服务器时添加自动更新参数
-autoupdate
(需要设置-steam_dir
和steamcmd_script
)/home/steam/serverfiles/srcds_run -game nmrih -autoupdate -steam_dir /home/steam/steamCMD -steamcmd_script /home/steam/steamCMD/nmrih_update.txt -port 27015 -maxplayers 8 +map nmo_suzhou
下载服务器资源时报错
服务器资源没有下载到指定的目录(SteamCMD 报错:
Please use force_install_dir before logon!
)解决:先设置目录,再登录账号,再下载服务器资源
force_install_dir D:\Game\ServerData\nmrih_Server login anonymous app_update 317670 validate
启动服务器报错
警告:
WARNING: Failed to load 32-bit libtinfo.so.5 or libncurses.so.5.
需要安装 32位 软件包
yum install libtinfo.so.5
错误:
/home/steam/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory
参考-维基百科:NMRIH 服务器安装 [英]
mkdir -p /home/steam/.steam/sdk32/ ln -s /home/steam/steamCMD/linux32/steamclient.so /home/steam/.steam/sdk32/steamclient.so
错误:
Unable to persist cache 'modelsounds.cache', check file permissions
下载服务器资源时没有切换到 nmrihserver 用户,导致 nmrihserver 用户权限不足
chown -R steam /home/steam/* # 递归将此目录下所有目录和文件夹所有权设为 nmrihserver
七、进阶插件
在写了在写了…
其他参考
游戏入门
- 维基百科:NMRiH 官方百科全书 [简中]
- 维基百科:游戏入门介绍 [简中]
- 维基百科:游戏地图清单 [英]
服务器
安装教程
- 游戏官网:端口设置建议 [英]
- 维基百科:NMRIH 服务器安装 [英]
- CSDN博客:Centos7开地狱已满服 [简中]
- steam社区:nmrih 服务器手册 (官方) [英]
- steam社区:NMRIH 完整服务器指南 [英] (推荐:较新较全,涵盖服务器开放到互联网、添加插件、添加创意工坊地图等)
- steam社区:NMRIH 服务器托管到互联网 [英] (整合了社区中端口映射和开服的几个帖子)
参数设置 / 技巧教程
- steam社区:控制台指令列表 [繁中] (略少,胜在汉化)
- steam社区:控制台指南1(基础知识) [英] (指令多,有生成僵尸指令)
- steam社区:设置服务器最大玩家数为 9 人 [英]
- Valve 开发者社区: 服务器启动命令参数列表 [英]
- Valve 开发者社区: nmrih 控制台命令合集 (属于nmrih 但不属于 Source SDK 2013 Multiplayer mod)
- 百度贴吧:地狱已满指令大全 [简中]
- 百度贴吧:控制台指令合集 [简中]
- 百度贴吧:控制台指令简洁版 [简中]
性能调优
- 百度贴吧:1M 带宽服务器性能设置 [简中] (Tips:1M建议限制人数 ≤ 6人)
- B站:CS: All-in-One (网络参数篇) [简中]
- B站:《求生之路2》服务器tickrate的作用与网络参数的优化 [简中]
- srcds.com:性能调优设置 (调整tickrate) [英]
请务必留下你的三连!
地狱已满服务器搭建教程-1 服务器安装篇 NMRIH Dedicate Server相关推荐
- Centos7开地狱已满服之插件安装
前言 距离编写开服教程已过去1年多,一直也没什么时间来整理插件安装的教程,这几天闲来无事,又重新开始搭建一遍,算是补上这么一个遗憾.话不多说,开整. 一.SourceMod安装 假定游戏本体已经安装, ...
- w7服务器搭建网站教程,w7系统下的云服务器搭建教程
w7系统下的云服务器搭建教程 内容精选 换一换 使用云服务器备份创建镜像后,通过创建成功的镜像创建云服务器,但登录云服务器后提示系统进入维护模式,无法正常使用云服务器.当云服务器带有数据盘的时候,恢复 ...
- Minecraft(我的世界) Fabric 1.19.3 服务器搭建教程
Debian系统使用MCSManager9面板搭建MC Java版MOD服务器的教程,本教程用的Fabric1.19.3服务端,用其他服务端的也可以参考一下. 视频教程:https://www.bil ...
- Yunzai-Bot v3—Linux服务器搭建教程
云崽-Bot v3-Linux服务器搭建教程 一 .说明 二. 环境准备 三. 安装步骤 (1).云服务重装系统 (2).宝塔Linux面板登录 (3).安装node.js环境 (4).安装Redis ...
- 原神3.2服务端架设服务器搭建教程ubuntu系统(保姆级)
原神3.2服务端架设服务器搭建教程ubuntu系统(保姆级) 大家好,我是艾西今天跟大家分享下原神3.2服务端架设ubuntu系统实操教程 准备阶段:服务器一台 32h32g起.服务端.客户端.服务器 ...
- CentOS MC服务器搭建教程
本文是基于CentOS的MC原版服务器搭建教程 1.安装Java 安装Java 1.8.0 yum -y install java-1.8.0-openjdk (注意:应下载与mc服务端对应版本的ja ...
- Nginx独立图片服务器搭建教程
Nginx独立图片服务器搭建教程 发布时间:2014-06-04编辑:脚本学堂 本文介绍了nginx独立图片服务器的搭建与配置教程,有需要的朋友参考下. 首先,为什么需要独立图片服务器? 现在主流的网 ...
- linux ftp dns,Ubuntu下FTP与DNS服务器搭建教程PDF
Linux服务器系统是Ubuntu 16.04 LTS,FTP软件选择的当然是vsftpd(very secure FTP daemon), Ubuntu装vsftpd还是很简单,一句命令就行: su ...
- gitlab服务器搭建教程
gitlab服务器搭建教程 ----2016年终总结 三 参考https://bbs.gitlab.cc/topic/35/gitlab-ce-8-7-%E6%BA%90%E7%A0%81%E5%AE ...
最新文章
- 当前路径_[JSP] 07 JSP 路径问题
- 【js】小数点后保留两位小数
- Linux PCI 设备驱动基本框架(一)
- 2019优质公众号大盘点,果断收藏了慢慢看吧 ~
- linux写入二进制文件内容,linux – 从管道读取数据并写入标准输出,中间延迟.必须处理二进制文件...
- idea Maven图标的使用
- 软件设计师笔记---中央处理单元CPU
- 20180517 迭代器
- 金古桥机器人_泽塔奥特曼上演“吃瘪预定”,金古桥强势回顾,阿尔法被骑着打脸...
- logo下方显示技术支持信息_LOGO墙形象设计的几种方案
- 将Kinect的v2.0 Motion存储到BVH文件中
- 作为前端程序员,你不能不知道的这个小技巧
- conficker病毒
- 如何用python做动画_如何使用python制作简单的动画?
- Windows照片查看器无法显示此图片
- Premiere快捷键设置
- U盘系统安装步骤超级简单,弄懂ghost不管是windows7win10都不难
- linux vim 修改 只读文件,linux下vi编辑只读文档无法保存的解决方法
- 什么叫做云计算?学习云计算先要理解
- 钓鱼工具gophish史上最详细教程(附实例) —— 手把手教你成为“捕鱼人”
热门文章
- vbox android wifi,virtualbox桥接无线网卡实现上网
- FX5800计算器测量程序集2.4
- BootStrap之标签页切换
- 考研高危人群!你是否还在危险的边缘试探?
- 轻松玩转“项目管理” 群硕软件PMS正式发布
- flex布局实现骰子六面的示例
- Office Tool Plus 下载使用 365 2021/2019等版本
- org.apache.flink.table.api.TableException: A raw type backed by type information has no serializable
- 斯皮尔 皮尔森 肯德尔_失焦图像的无参考质量评价
- 电脑插了耳机,外放还有声音-解决办法