Logo
  • Features
  • Educators
  • What's New
  • Blog
  • Showcase
  • About us
  • Contact
Try it now!
从头开始,制作在线联机游戏 - 消息系统篇
从头开始,制作在线联机游戏 - 消息系统篇

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

这个系列教程一共有 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"
}

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

属性
描述
type
消息的类型
content
消息的内容,已经按照设置的渲染宽度切割好了
color
消息的显示颜色,是颜色对应的 HEX 码

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

image

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

image

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

image

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

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

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

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

image

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

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

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

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

功能三:发送特殊消息

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

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

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

image
属性
描述
消息内容
消息的内容,会自动按照设置的渲染宽度切割
消息类型
消息的类型,可以任意使用
消息颜色
消息的显示颜色,是颜色对应的 HEX 码

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

image

注意事项

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

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

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

创作者学院文章:

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

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

www.ccw.site

Logo

Designed by 2ndR with love

Discord