井字棋PhaserJS教程 #
在此教程中,您将使用PhaserJS和Nakama服务器创建井字棋游戏XOXO。
此游戏和教程集中体现了 Nakama 强大的身份验证、匹配和实时多人游戏功能。
完整教程源代码可从GitHub获得。
前提条件 #
为轻松学习本教程,请在继续之前执行以下操作:
运行Nakama服务器 #
为运行XOXO游戏,您必须首先确保Nakama正在运行。
安装Docker并复制Nakama项目模板后,进入存储库复制到的文件夹,运行以下命令:
|
|
配置JavaScript框架 #
此处您将安装此项目所需要的TypeScript依赖项,将TypeScript代码转换为JavaScript,并将PhaserJS添加到Svelte JavaScript框架中。
- 安装NPM以管理依赖项。在终端窗口中:
|
|
- 在启动Nakama服务器之前,将TypeScript代码转换为JS:
|
|
- 将PhaserJS脚本标记添加到
index.html
文件:
|
|
- 现在可以运行您的应用程序,方法是通过运行:
|
|
您的应用程序可从localhost:5000
获得。
构建UI #
- 首先将PhaserJS配置添加到
App.svelte
文件(您游戏的主入口点,在main.js
文件中导入):
|
|
|
|
- 下一步,为游戏设置创建
config.js
文件。在这种情况下,游戏画布的高度和宽度:
|
|
- 现在,您可以开始创建游戏的Phaser场景以组合相关逻辑。此游戏有三个逻辑:主菜单、匹配和游戏场景:
MainMenu.js
|
|
Matchmaking.js
|
|
InGame.js
|
|
在主菜单场景中,您在Nakama中验证用户(如下所述),并显示“欢迎使用XOXO”横幅和按钮——单击后,用户将进入游戏内场景。
匹配场景在Nakama为用户查找对手时只显示一个等待旋转器。
在游戏中场景中,您将创建一个由9个方块组成的互动板,供玩家输入X和O。您还可以定义游戏功能,以设置和更新玩家回合数,并结束游戏。此处定义的nakamaListener
通过网络套接字将这些操作传送到Nakama服务器。
连接到Nakama #
- 接下来将客户端连接到Nakama服务器,并对其进行设备身份验证配置:
nakama.js
|
|
在通过两个浏览器窗口在本地测试游戏时时,应当将
deviceId
设置为uuidv4()
,而不是从localStorage
获取它,否则您将作为同一用户进行两次身份验证,导致第一个会话断开连接,使得游戏无法进行。nakama.js
|
|
大功告成,您可以开始游戏了!
延伸阅读 #
通过以下内容进一步了解本教程中的主题和功能: