☰
ReSkate服务器管理进阶:角色权限、玩家投票与反作弊检测体系完整指南
2026/10/16 2:47:54 网站建设 项目流程

【免费下载链接】ReSkate

项目地址:https://gitcode.com/gh_mirrors/re/ReSkate
点击查看免费下载

ReSkate 独立服务器(Dedicated Server)是这款开源滑板游戏的多玩家核心:它独立于客户端运行,让你在局域网外也能和朋友畅滑。本篇是 ReSkate 服务器管理进阶指南,完整解读三大体系——角色权限(roles.json 中谁拥有什么命令与权限)、玩家投票(换图、踢人、自定义投票与投票)和反作弊检测(speedhack、滑板钉板、评分模组修改的检测与处置),并附上 Linux 部署入口与配置文件位置。

1. 先认识 ReSkate 独立服务器

ReSkate 服务器是一个无头(headless)程序:运行后它会以自己的名字出现在游戏内Multiplayer > Servers浏览器中,玩家也可以凭服务器代码直接加入。关键事实:

  • 无需开放任何端口:玩家默认通过 Steam 中继网络(Steam Relay)连接;若你手动转发 UDP 27015-27016,浏览器还能显示 ping,加入更快;
  • 自动更新:服务器启动后每 30 分钟检查一次新版 ReSkate,有空闲时自动安装并重启(可用auto_update: false关闭);
  • 玩家数量:1-249 人,还可额外配置若干"预留槽位";
  • 客户端与服务端版本必须一致。

完整启动说明见 Server/README.txt,Linux 部署见 Server/README-linux.md。

2. 角色权限体系:roles.json 完整解读

2.1 文件位置与五个默认角色

谁能在你的服务器上做什么,全部由data/roles.json决定(与服务端程序同目录,旁边还有data/bans.json封禁名单)。服务器首次启动会自动写入该文件,并附带五个开箱即用的角色:

角色Rank标签能力
player(默认)0无聊天、投票、组队、私聊
vip10VIP预留槽位(满员时可加入)
moderator50Modkick / ban / unban、消息、tphere、投票管理、反作弊提醒
admin100Admin所有命令与全部权限
muted0无inherit: false,仅保留投票与组队(用于禁言)

新服务器的第一个管理员,在服务器窗口输入role <你的SteamID64> admin即可。

2.2 一个角色的七个字段

{ "name": "moderator", "tag": "Mod", "color": "#5EC8FF", "rank": 50, "inherit": true, "commands": ["kick", "ban", "unban", "bans", "msg"], "permissions": ["reserved_slot", "anticheat_alerts"] }
字段说明
name1-24 位,仅限a-z 0-9 - _,不能叫none
tag显示在玩家名字前的标签,最长 16 字符;不能占用游戏自带标签(Server、Host、ReSkate Admin 等)
color标签颜色,#RRGGBB格式
rank0-1000,决定"官大一级"的层级关系
inherittrue(默认)继承默认角色的全部能力;false则只有自身列出的(禁言角色就是这么做的)
commands可执行的服务器命令,"*"代表除role、reserved外的全部命令
permissions非命令类的权限位,见下表

权限定义与位运算合并逻辑在 Server/roles.h,角色的"结算"逻辑(settle把继承项合并进granted_*字段)见 Server/roles.h。

2.3 十一项权限位一览

权限作用
chat允许聊天,缺了即被禁言
votes发起已开启的投票并参与投票
parties组队与队伍聊天(/p)
whisper私聊(/w)
reserved_slot服务器满员时仍可加入(每人占一个超编位)
unlimited_objects无摆放数量上限;他人被禁时仍可建造与缩放
movement他人被禁时仍可用 noclip、No Bail 与加速
no_afk_kick永不因挂机被踢
vote_kick_immune不会被投票踢出
anticheat_alerts反作弊发现异常时在聊天里提醒该角色
polls他人被禁时仍可发起/结束投票

2.4 Rank 等级规则(最易踩坑的一点)

  • 玩家不能kick / ban / 改角色任何 rank ≥ 自己的人;
  • 玩家不能发放 rank ≥ 自己的角色,也不能改自己的角色;
  • 服务器控制台窗口凌驾于一切角色之上。

也就是说:rank 50 的 moderator 可以处置 rank 0 的 player 和 rank 10 的 vip,但动不了 rank 100 的 admin。默认角色配置见 Server/ROLES.md。

2.5 运行时管理角色的四条命令

roles 列出所有角色及持有人 roles reload 重新读取 data/roles.json role <玩家名或SteamID64> <角色> 授予角色 role <玩家名或SteamID64> none 撤销角色

角色变更后玩家聊天中即时收到通知,游戏菜单也会同步刷新该角色对应的操作项;改动会自动持久化到文件。文件写错时服务器会拒绝加载并说明原因,沿用旧配置——所以改文件时建议先停下服务器或改完执行roles reload。

📌 实用配方:muted角色用于禁言(role <玩家> muted);builder角色(只给unlimited_objects)适合"仅管理员建造"的服务器上给常客开绿灯;完整示例见 Server/ROLES.md。

3. 玩家投票体系:让社区自己运营

ReSkate 服务器内置了完整的投票/表决机制,配置段为ReSkateServer.json的"votes"(详见 Server/README.txt),实现见 Server/server_votes.cpp,投票逻辑的单元测试在 Server/Test/server_activity_tests.cpp。

3.1 五种内置投票

投票触发方式说明
换图map/vote map <地图名>目标图必须在maps.pool池内
踢人kick/vote kick <玩家>始终需要至少 2 张赞成票,被踢时长由kick_minutes控制(默认 5 分钟)
时间tod/vote tod <时段>需开启world_layer_sync
加时extend/vote extend默认开启,需设置rotation_minutes;给当前图加时
自定义custom/vote <名称> [参数]投票通过后执行一条服务器命令,最多 16 个

关键参数:

  • percent:通过所需赞成比例,未投票玩家不计入任何一边;
  • seconds(默认 30):投票时长,一旦剩余票数无法翻盘会提前结束;
  • cooldown_seconds(默认 60):同一玩家两次发起的冷却;
  • min_players:可发起投票所需的最低在线人数;
  • 投票用聊天中的/yes、/no进行,管理员不能被投票踢出。

3.2 自定义投票:投票通过即执行命令

这是最强大的功能——每个自定义投票都是一条"社区授权的命令",命令中的{map}替换为当前地图、{arg}替换为玩家选中的选项:

{"name": "restart", "description": "Reload the current map", "command": "map {map}", "percent": 60} {"name": "park", "description": "Spawn a park for 30 min", "command": "park-mod add {arg} 30", "choices": ["street", "plaza"], "percent": 60}

玩家只需输入/vote park street,凑够 60% 赞成即触发park-mod add street 30。配合 Park Editor 的公园模组(park_mods),你的服务器可以完全由玩家投票驱动运营。

3.3 Polls 投票与服务器代投票

  • Polls:最多 6 个选项的纯调查,不执行任何命令;polls设为off/admins(默认)/everyone控制谁能发起,/1、/2快捷作答;
  • 控制台发起:服务器窗口可以代社区发投票(vote map grom、poll Next map? | Grom | Stadium),且poll-run能按得票选项执行命令,例如poll-run tod {answer} | Time of day? | morning | noon | night——把"投票"变成真正的自动化决策。

📌 运营建议:开启map+kick投票(各 60%),再加一个restart自定义投票和extend加时票,即可获得"地图轮转 + 玩家自治"的完整循环;rotation_vote还能让轮转到时自动发起三选一投票。

4. 反作弊检测体系:三层防线

反作弊全部位于服务端,配置段为"anti_cheat"(Server/README.txt),每项都支持三档处置:warn(警告,默认)/kick(踢出)/off(关闭)。

4.1 第一层:speedhack 检测(speed-check)

针对 Cheat Engine 之类加速游戏时钟的外挂。原理很精巧:加速会使玩家姿态消息的"发送-到达"时间差持续缩小(网络延迟只会抖动不会递减),算法在 20 秒窗口内测量斜率,实测速度超过1.45 倍且连续3 个区块超标才判罚——误报率极低。warn下作弊者会被移出 throwdown 与合作挑战直至恢复,kick则直接踢出。核心算法见 Server/speed_check.h。

4.2 第二层:滑板钉板检测(board-check)

针对修改版客户端把滑板"钉"在别人身上的经典作弊:真实滑板停在原地,而被钉的板会跟随另一名玩家移动。检测器标记"离开主人 3 米以上、紧跟某玩家 1.5 米内、跟随距离累计超过 8 米且持续 3 秒以上"的滑板;warn下该玩家的滑板不再对其他人生效,并提醒管理员与日志,恢复正常行为 30 秒后自动解除。逻辑见 Server/board_check.h。

4.3 第三层:评分/物理模组修改检测(score-check)

针对通过 ReSkate 模组修改得分(单招分、倍率、throwdown 计分逻辑)或核心手感(物理、摔倒、动作手势)的玩家:每人客户端在启动时检查自己安装的模组并上报指纹,服务器比对决定处置。warn下玩家被移出 throwdown 与合作挑战、全体聊天可见。如果你的服务器全体使用某个评分模组,可用allowed_scoring_mods(或score-allow命令)登记其指纹(16 位十六进制)放行。

4.4 其他防线:骨骼限制、全局封禁与聊天净化

机制参数/命令说明
骨骼缩放限制bone_scale_limit(1-8,默认 2)限制"大头"类模组对其他玩家显示的缩放上限;设为 1 则所有人统一身高
骨骼伸展限制bone_reach_limit(0.5-20 米,默认 1)防止被篡改客户端把骨骼拉伸横跨整张地图
物理配置强制enforce_tuning(默认 true)强制使用游戏自带的 Gameplay/SkatePhysicsTuning,玩家私自编辑的 truck 位置等不会同步给他人
全局封禁use_global_bans(默认 true)启动时及每 10 分钟从 ReSkate 后端拉取官方 BAN 名单;实现见 Server/global_bans.h
聊天词过滤word_warnings、data/words_blocked.txt、data/words_filtered.txt服务端词表叠加官方词表;禁用词消息不转发并警告,累计 3 次踢出(次数可调)
摆放滥用保护见"players"段1 分钟内摆放超过 2 倍上限+100 个物体(脚本刷物件)会被全服清掉并静默 1 分钟

管理命令速查:speed-check off|warn|kick、board-check off|warn|kick、score-check [off|warn|kick](无参数时列出每个玩家的检测结果)、score-allow、bone-scale <1-8>、bone-reach <0.5-20>。

5. Linux 部署与延伸阅读

Linux 上运行 ReSkate 服务器需要安装 Steam 运行库(仓库提供了脚本 contrib/setup-linux-server-libs.sh),服务化可参考 contrib/reskate-server.service,托管平台(Pterodactyl)方案见 contrib/pterodactyl/。完整 Linux 说明在 Server/README-linux.md。

📚核心资料清单:

  • 服务器总览与全部配置项:Server/README.txt
  • 角色系统完整参考:Server/ROLES.md
  • 每条命令的详细说明:Server/README-roles.txt
  • 角色结构定义:Server/roles.h
  • 投票实现:Server/server_votes.cpp
  • 反作弊检测器:Server/speed_check.h、Server/board_check.h
  • 单元测试:Server/Test/

掌握角色权限、投票与反作弊这三块,你的 ReSkate 服务器就具备了一套完整、可自治、公平干净的运营体系。先从role <你的SteamID64> admin开始吧 🛹

【免费下载链接】ReSkate

项目地址:https://gitcode.com/gh_mirrors/re/ReSkate
点击查看免费下载

相关推荐

上一篇:Natron 的 Multiply 节点(net.sf.openfx.MergeMultiply)完全指南:合并公式、参数详解与合成实战
下一篇:Kord 使用教程:一个入口听完 Spotify、SoundCloud 和 YouTube

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询