Logo
    打开 Gandi IDE
    从头开始,制作在线联机游戏 - 消息系统篇
    从头开始,制作在线联机游戏 - 消息系统篇

    从头开始,制作在线联机游戏 - 消息系统篇

    📚 返回主页面
    ‣
    更多链接

    其他扩展文档

    Gandi IDE 中的最佳实践

    从头开始,制作在线联机游戏 - 消息系统篇

    Feb 14, 2023 5:55 AM
    从头开始,制作在线联机游戏 - 同步系统篇

    Feb 14, 2023 5:55 AM
    👨‍💻
    如何使用控制台拓展帮助你 Debug

    Feb 14, 2023 5:55 AM
    Lazyload 如何正确地加载音频视频

    Feb 14, 2023 5:55 AM
    【历史版本】功能上线啦

    Feb 14, 2023 5:55 AM
    从头开始,制作在线联机游戏 - 匹配系统篇

    Feb 14, 2023 5:55 AM
    如何在 Gandi IDE 中协同创作

    Feb 14, 2023 5:55 AM
    如何使用 Gandi 排行榜编辑器制作排行榜

    Feb 14, 2023 5:55 AM
    如何制作云存档

    Feb 14, 2023 5:55 AM
    ☁️
    云变量,KV 数据库 和 MMO 该怎么选用

    Feb 14, 2023 5:55 AM

    这个系列教程一共有 3 个章节,这是其中的第二篇,推荐完整阅读全部三篇的内容哦。

    第一篇 - 匹配系统

    从头开始,制作在线联机游戏 - 匹配系统篇

    这个系列教程一共有 3 个章节,这是其中的第一篇,推荐完整阅读全部三篇的内容哦。

    getgandi.com

    从头开始,制作在线联机游戏 - 匹配系统篇

    第三篇 - 同步系统

    从头开始,制作在线联机游戏 - 同步系统篇

    这个系列教程一共有 3 个章节,这是其中的第三篇,推荐完整阅读全部三篇的内容哦。

    getgandi.com

    从头开始,制作在线联机游戏 - 同步系统篇

    开始之前,你需要……

    在正式开始学习之前,你需要做好一些准备~

    这篇教程中,我们主要会用到两个扩展模块,分别是 Gandi Simple MMO v1.0.3 和 Gandi 数据助手 v1.1。

    数据助手中,我们使用到的主要是处理 JSON 的语句。

    如果你还不知道怎么使用 JSON,也不用担心哦,教程中的用法并不会很复杂。不过还是建议你去找教程学习一下 JSON,以后一定会用的上哦~

    用户界面与全局积木

    在案例作品中,消息系统主要和匹配房间中的聊天板有关。

    和匹配系统一样,我已经把实现消息系统的算法做成了一系列的全局积木,放在消息模块中了,也附上了详细的注释,你可以直接将这个角色,加载到自己的程序中,使用其中的全局积木哦。

    记得去案例作品中下载哦。

    MMO 案例作品 - 皇牌空战 - 家铭Jamin - 共创世界(ccw.site) - Scratch、游戏、动画、漫画、小说、编程创作社区

    共创世界(CCW)是下一代 ACGN(游戏、动画、漫画、小说)内容创作社区。这里有强大易用的 Scratch 编程创作工具、十万开发者、百万独立游戏。想创作、学习、试玩独立游戏都可以来这里。

    www.ccw.site

    这篇教程会完全基于匹配模块中的全局积木来讲解,你可以不用理解这些全局积木是如何编写的。当然,如果你感兴趣的话,也可以读读代码。

    案例作品

    MMO 案例作品 - 皇牌空战 - 家铭Jamin - 共创世界(ccw.site) - Scratch、游戏、动画、漫画、小说、编程创作社区

    共创世界(CCW)是下一代 ACGN(游戏、动画、漫画、小说)内容创作社区。这里有强大易用的 Scratch 编程创作工具、十万开发者、百万独立游戏。想创作、学习、试玩独立游戏都可以来这里。

    www.ccw.site

    在案例作品中,消息系统主要用来制作匹配房间中的聊天板。

    聊天板中主要实现了 3 个功能:

    1. 房间中的玩家发送聊天信息;
    2. 显示系统消息提示,例如玩家进入或离开房间的消息;
    3. 程序自动给帮玩家发送一些特殊的消息,例如准备开始游戏的倒计时消息。

    接下来,一起来看看这些功能是如何实现的吧~

    基础功能:将一段长文字分行显示

    通常情况下,我们会在一个固定区域中显示消息内容,比如说案例作品中的聊天板:

    image

    不过,玩家在发送消息时,并不会按照显示长度来发消息,如果一段文字过长,就会超出显示范围。因此我们需要处理一下玩家发的消息内容,切割成合适的长度。

    你可以使用消息模块中的这个语句来设计单行文字的渲染宽度。

    image

    你可以在输入框中填写一个数字,你可以根据自己程序界面中的显示范围来设置数值。如果不设置,默认的长度是 999。

    ⚠️
    注意:这里设置的是渲染长度,并不是字符数,所以不会因为有英文或数字字符导致单行长度过短。作为参考,一个中文字符的渲染长度大概是 10 左右。

    使用这个语句设置好长度后,消息模块中的其他语句都会自动按照设置好的长度分割消息内容。

    在案例作品中,我们将单行文字的渲染宽度设置成了 130。

    image

    功能一:房间中的玩家发送聊天信息

    使用下面的全局积木可以唤起输入框,并且在输入完成后发送一条消息到聊天板中。

    image

    所有的消息内容会在处理后,被储存在消息列表中。

    image

    列表中的每一条内容都是一个 JSON,格式是这样的:

    {
        "type":"聊天",
        "content":"准备好了",
        "color":"#00ff34"
    }

    其中的属性对应的内容是:

    利用这条数据,你可以使用艺术字扩展模块,显示出正确的效果:

    image

    使用发送聊天内容的全局积木,会将发送者的个人信息和聊天内容分开加入消息列表,将个人信息设置为灰色,将消息设置为黑色,用艺术字显示出来的效果是这样的:

    image

    在案例作品中,点击聊天板中的发送按钮,会广播一条消息,所以实现发送消息的代码是这样的:

    image

    功能二:显示系统消息提示

    在案例程序中,会有三种提示消息,玩家自己进入房间、其他玩家进入房间和其他玩家离开房间。

    实现这三种系统消息提示的代码都已经内置在消息模块中了,你不需要做任何操作。

    如果你还想添加其他的系统消息,可以参考这段代码:

    image

    这里用到的全局积木可以给消息列表中添加一条数据,以上这段代码添加的数据是这样的:

    {
        "type":"通知",
        "content":"已进入房间",
        "color":"#ff9900"
    }

    如果内容超过了渲染宽度,同样会被自动切割哦。

    ⚠️
    注意:这个全局积木不会给房间内的其他玩家发送消息,只会给本地的列表中添加内容。

    功能三:发送特殊消息

    除了发送普通消息,你还可以在程序中,让玩家发送一些颜色不同的特殊消息。

    比如在案例作品中的玩家准备消息,就是用绿色显示的。

    想要实现这样的效果可以使用全局积木:

    image

    你可以在造型编辑器的取色工具中获得颜色的 Hex 码。

    image

    注意事项

    这篇教程中,主要介绍了如何利用消息模块来发送消息,并且把所有消息存在消息列表中,需要你自己编写显示出来的代码哦。

    在案例作品中,你可以在用户界面中看看我是怎么做的。如果需要教程的话,可以在创造者学院文章的评论区里告诉我。

    对于教程或者全局积木有任何问题,也可以在评论区告诉我。

    创作者学院文章:

    从头开始,制作在线联机游戏 - 消息系统篇 - 共创世界(ccw.site) - Scratch、游戏、动画、漫画、小说、编程创作社区

    共创世界(CCW)是下一代 ACGN(游戏、动画、漫画、小说)内容创作社区。这里有强大易用的 Scratch 编程创作工具、十万开发者、百万独立游戏。想创作、学习、试玩独立游戏都可以来这里。

    www.ccw.site

    本页索引

    • 开始之前,你需要……
    • 用户界面与全局积木
    • 案例作品
    • 基础功能:将一段长文字分行显示
    • 功能一:房间中的玩家发送聊天信息
    • 功能二:显示系统消息提示
    • 功能三:发送特殊消息
    • 注意事项
    Gandi IDE 🧑‍💻 开发者中心 @ 共创世界

    Designed by 2ndR with love @ Chengdu

    Tencent QQGitHub