php 五子棋源联机版_【源码】联机五子棋,基于UDP可靠传输

本文介绍了一个基于Unity的五子棋联机游戏的实现,使用UDP协议进行可靠传输。游戏允许随机匹配对战,玩家输入昵称后进行匹配。详细讲述了玩家昵称同步、落子数据同步、胜负同步的实现过程,并提供了源码下载链接。
摘要由CSDN通过智能技术生成

前几天在 游戏蛮牛论坛 发现一篇文章 《Socket联机版五子棋》, 东方喵的版本,逻辑判断在服务器端,基于 Unity TcpClient。

初衷

因为个人挺喜欢五子棋游戏的,而且每天中午跟同事一起吃饭时,等餐时间,没事可干,他们都是埋头“搞机”。

所以呢,我打算重写下五子棋这个游戏,在等餐的时候可以直接用手机来一局。

现在每天中午我们都要来一局,其乐无穷!!!

感谢

感谢东方喵分享的资源;

感谢天梯实时对战服务的商务小伙伴的热情帮忙及联机服务的支持。

下面呢,就给大家分享下实现过程。

关于游戏

暂定名: GobangOnline

网络协议: UDP

匹配:两玩家随机匹配(也有计划加上 房间号或者密令匹配对战 和 局域网联机对战);

先来张配图:

(带红点的棋子为最后落子标记)

fae21c7d76ef

游戏截图

涉及同步数据

匹配成功玩家昵称同步

玩家落子数据同步

胜负同步

玩家昵称同步

和一个朋友争论了好几次,还是决定把玩家输入昵称的逻辑保留下来。

玩家启动游戏,输入昵称,既可联机对战(昵称保存到本地)。

1,输入昵称,点击“登录”,将直接进入匹配对手界面。

UIManager.cs

public void onButtonClick(string name) {

if(name == "")

return;

switch (name) {

case "level":

// 昵称不能为空

GameObject mainObj = ui.transform.Find ("Main").gameObject;

GameObject textObj = mainObj.transform.Find ("InputField/Text").gameObject;

GameObject errorTipObj = mainObj.transform.Find ("ErrorTip").gameObject;

string nickname = textObj.GetComponent ().text;

if (nickname == "") {

errorTipObj.SetActive (true);

return;

}

GameManager.nickname = nickname;

// 记录 nickname

PlayerPrefs.SetString ("nickname", nickname);

errorTipObj.SetActive (false);

mainObj.SetActive (false);

// 等级匹配

GobangClient.connect (8);

break;

case "retry":

GobangClient.disconnect ();

break;

}

}

2,匹配成功后,发送握手交换名片(昵称)数据。

GobangClient.cs

// GobangClient 主要重写 Nanolink实时对战服务已封装的 onMessage, onResync, onStatusChanged, onConnected, onDisconnected 方法。

// 重写接受到数据的响应函数,在GameManager.recvMessage()中统一处理接收到数据

protected override void onMessage (byte[] data, byte fromIndex) {

// Hashtable values = GameSerialize.fromBytes (data);

GameObject gameObj = GameObject.Find ("Game");

if (gameObj == null)

return;

GameManager gameManager = gameObj.GetComponent ();

if (gameManager == null)

retu

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值