白嫖大厂!搭建自己的跑团平台

本文介绍了一种搭建跑团平台的新思路,它具有配置简单、完全合法、使用免费等优点,适合朋友间小范围进行跑团活动。并基于此思路,搭建了一个现成的平台,提供骰子、线索面板、日志记录、人物卡等一系列开箱即用的功能。

本文相对偏重设计理念与实现思路。如果读者想要以使用者的角度了解平台的使用方法,建议参考这个视频版本,记得一键三连哦~

访问 paotuan.github.io 立即开玩,或通过微信扫描下方的二维码访问本平台的小程序版本。如果您对此感兴趣或有任何意见或建议,欢迎加群 115699014 一起交流。

跑团 IO 小程序码

我们的平台是什么

去年春节的时候,为了方便几个朋友一起跑团,就搭了一个平台 BotIM 。自己用了几次以后朋友给我提了些建议,但当时自己也不怎么懂一些现代前端框架,开发能力有限,再加之跑团本身也是个低频行为,就搁置了下来。而今年正好学了一些新技术,也想到了一个方法能把这个平台 SaaS 化提供给大家使用,于是趁放假的时间爆肝开发了一波,把之前提到的没提到的功能都加上了。前段时间跑了一次测试团,效果还挺好的,所以也想做个介绍推荐给大家。

和其他的平台不同,严格意义上来说它并不是一个跑团平台,而是通过借助大厂的力量并加之一些跑团功能的二次开发,让任何人都可以无门槛地拥有一个自己的跑团平台。

为什么需要搭建自己的跑团平台

可能会有人说,现在已经有了很多现成的跑团平台和工具了,为什么还要再自己做一个。它与其它平台的差异点在哪里。

一般我们进行网团时用的都是 QQ 机器人或者一些比较专业的跑团平台。 QQ 机器人的好处就是基本使用方便,不用去额外的平台谁没有 QQ 呢,但受限于既有的交互方式,一些额外功能就需要用并不怎么人性化的指令来实现。另外,如果要看人物卡或者是其他资料就只能多个窗口切来切去了。

另一点是,大概去年初的时候 QQ 封禁过了一片机器人,当时引发了一片哀嚎以及跑团圈子对腾讯的口诛笔伐。但其实完全可以理解,因为 QQ 从来没有给第三方提供过正规的机器人接口,现在的机器人都是通过对 QQ 协议的破解来实现的。你可以批评腾讯没有互联网的开放精神,但他们这么做也有客观的商业、安全、乃至我国国情的特殊因素。而使用破解协议这样的做法,本身就是风险极高的行为开发者要抓狂了。你可以说我只是拿它来跑团,人畜无害,但其背后蕴含的商业价值使得它必定会被人拿去做坏事。因此这条路是首先要被排除的。

然后再说说那些比较专业的跑团平台。我在网上也陆陆续续看到过很多功能很完善的跑团平台,大多是玩家自己用爱发电开发出来的。无论从技术上还是执行力上我都很敬佩这些开发者们。但是考虑到网团的特点,跑团本身圈子也比较小,也并不是一个高频的行为。在知乎上也看过一些讨论跑团平台的话题,这样的平台很难将其商业化盈利,养活自己。但用爱发电的话,服务器、带宽的费用,开发人员的时间和精力,都是一个不小的成本。这注定是一个难以持续的行为。因此,对这些平台能持续多久,我在平台上的信息是否安全等等,心里还是不太放心的。

那么,就没有别的方法了吗?

我们的解决方案

一个网团平台的核心其实是一个即时通信系统。其他的功能可以慢慢做,但是如果连基础的消息都会延迟或者丢失的话,那是很令人抓狂的。即时通信系统背后的坑很多,无论是从产品、技术方案设计还是服务器资源的角度,都是一个很大的挑战。所幸的是我们并不需要从零开始自己实现这一切,各大厂商都提供了现成的服务,比如腾讯云通信、网易云信、融云 SDK 等。虽然它们都是商业产品,要价不菲,但为了吸引用户,各家都提供了免费的试用版本,这样就可以达到白嫖的目的。

这里我选用的是腾讯云的 SDK,因为我个人比较熟悉。从官网上可以看到腾讯云 IM 定价每月¥999 起,对个人自用肯定是不现实的。但有可以只支持最多 100 人的体验版,而且这样的体验版没记错的话也能创建 100 个。这对于我们小圈子跑团完全够用了。

看到这里可能又有人疑惑了,跑团圈子再小,总不至于 100 个人就够用。这你就陷入了思维定势。由于网团的核心是即时通信功能,大家在设想一个跑团平台时,就会容易把它想成一个我们熟悉的社交平台,大家每个人在这个平台上注册一个帐号,一起组局一起玩。甚至我看到一些平台在此基础上更加延伸,加入了主持人与玩家的评价、互相关注等等功能。但是,这些真的是我们需要的功能吗?如果我们需要社交,QQ 和微信不香吗?何况跑团圈素有先做朋友后跑团的说法。在我看来,跑团平台只是一个用完即走的工具,它不负责为你找到跑团伙伴,而只是为你的跑团过程提供尽可能多的方便。

在明确了跑团平台的定位以后,我们的技术方案也就顺理成章了。并不是我一个人守着一个苦逼的 100 人帐号满足所有人,而是如果你有一群经常一起玩的小伙伴,或者你是个经常带团的主持人,你就可以开通一个体验版。甚至你不嫌麻烦每开个团都开通个体验版也没人拦着你。

这样做不仅解决了如何白嫖试用版的问题,也同时解决了 Secret 的鉴权问题,一箭双雕。IMSDK 可以通过本地对 AppId 与 Secret 计算进行鉴权,但将 Secret 放在本地有泄露的风险,可以让别有用心之人恶意消耗你的资源。因此这种方式只能用于调试,在生产环境中则需要一个专门的业务服务用于服务端鉴权。但我们采用了多应用的实现方式以后,就无需写死一个特定的 Secret 了,而是由使用者自行输入他们自己申请的体验版信息,交由本地计算鉴权。这样既不用担心泄露风险,又不用为鉴权服务付出额外的成本。退一步说,即使 Secret 发生泄漏,它也只不过是一个体验版而已,完全不会造成什么损失。

有趣的是腾讯云 SDK 自己也没想到这种骚操作用法,导致实际实现时还遇到了一点小问题,需要对 SDK 稍作修改才能实现

解决了后端即时通信的问题,我们还要解决前端界面的问题。好消息是 SDK 也提供了现成的 Demo,我们不用从头写起,而是在它的基础上加以修改就可以了。而代码的部署,我们可以放在 Github Pages 上,这样也不用付出额外的成本。

腾讯云 SDK 提供的 Demos


现在我们已经有了一整个现成的即时通信平台,接下来就是往上堆跑团相关的特色功能了。其实跑团平台的核心功能就是骰子,其他的都是 nice to have 。在一批 QQ 机器人惨遭封禁之后,也有不少人提出可以用支持合法聊天机器人的 IM 软件进行跑团,例如钉钉或是 Telegram 。这类机器人的实现原理是在监听到群消息或其他事件后,向你的业务服务器发送通知,你接收到通知后可以执行自己的逻辑,例如计算出骰子结果,然后再向群里以机器人的名义发消息等等。

这样固然是最为安全严谨的做法,但也带来了额外的开发复杂度与成本。真的没有更简单的做法吗?在我们自己的平台里,大可不必这么复杂。只要把机器人作为一个特殊的用户加入到平台中就可以了。只需做一个开关让游戏主持人决定它的加入和离开。在最终用户看来,这一切并没有什么不同,但大大减少了我们的实现成本。

其他的功能,例如笔记、log、人物卡等功能,就是无脑往上堆就完事了。当然最佳实践是把它们储存在后端,以获得漫游功能。但秉承着我们平台的白嫖理念,我们依然选择把逻辑放在前端实现,通过特定格式的消息以借助 IMSDK 进行同步。这样做的缺点是用户必须在线才能接收到这些消息,但本来人齐了才会开始跑团不是吗?问题不大问题不大。其实硬要做离线漫游也是可以做一做的,但是引入的复杂度实在是让人感觉得不偿失。

功能介绍

详细的功能介绍建议大家看视频版本

这里就简要列举一下目前支持的功能吧。

  • 基础功能(来自腾讯云 IMSDK)

    • C2C 会话
    • 群会话
    • 建立群(群主自动成为游戏主持人)
    • 黑名单
    • 消息 7 天漫游
  • 邀请入群

    • 可生成分享链接,他人点击后登录平台即可自动入群参加游戏
    • 可生成分享二维码,可通过小程序登录并自动入群
  • 骰子指令

    • 支持各类常用的骰子指令(基于开源库 rpg-dice-roller
    • 支持在指令后接上属性或技能的名字、难度等级,若导入了人物卡,则会自动判断成功与否
    • 支持在聊天记录中点击属性或技能的名字,快速投骰
    • 支持在人物卡中直接点击属性或技能的数值投骰
  • 设置 bgm

    • 支持主持人将网易云音乐链接分享给大家,会生成嵌入式播放器发送给所有玩家
  • 笔记功能

    • 支持主持人发布重要笔记,笔记除了显示在聊天记录中,也会固定在右侧面板,方便随时查阅
    • 玩家可对笔记进行复制、拖动排序与删除等操作
  • log 功能

    • 支持玩家对游戏 log 进行复制。log 会保存在本地缓存,不受 7 天漫游限制,除非手动清除
    • log 可以进行拖动排序与删除,以应对网团过程中聊天记录较为混乱的场景
    • log 可以导出为纯文字、HTML、JSON 等多种格式,满足各种场景的需要
  • 人物卡功能

    • 主持人可以为玩家导入 excel 格式的人物卡(目前只支持 CoC 规则),导入后所有人可见
    • 人物卡显示当前玩家的基本信息、属性与技能的数值以及 1/2、1/5 速查表
    • 属性与技能可按照数值高低进行排序;可根据名字或首字母进行快速搜索
    • 点击属性或技能数值,可以根据当前对应的技能与难度进行进行快速投骰

最后特别鸣谢 @Fin 的大量点子与测试。大家若有任何意见建议欢迎通过留言、issue、加群等方式反馈。

TAGS:  跑团CoC
正在加载,请稍候……