Unity3d - 在线多人转动

时间:2015-08-20 19:07:10

标签: c# android iphone unity3d

对不起我的英语语法:((我试着学习)

我想尝试用Unity3d编写在线回合制游戏。 我希望人们可以使用他们的用户名和密码登录,并且可以从不同的设备播放,例如: 来自android / iphone的1名玩家和来自facebook的第二名玩家 或者来自网络的1 - 来自平板电脑的第二 等等...  现在我想创建第一场比赛1比赛(2名选手) - 但也许在这个功能中我将为多人开启一个新模式

卡片游戏很简单。

我是c#developer,所以我将用c#编写代码。

我的问题是:

1)我必须使用TURN BASED游戏(如果你能给我链接) 我认为WCF或WebAPI - 适用于跨平台 那么什么是最佳实践???

2)我想在游戏中集成一个高级功能 - 您可以在游戏内建议计费系统?哪家公司工作更好?

3)我也可以在JavaScript上编写代码 - 如果给我加性能?

4)游戏授权: 今天的最佳做法是什么? 用户在我的系统中创建了帐户,或者更好地通过他的Facebook帐户登录用户?

5)我如何同步。移动设备和Facebook游戏之间?如果可能的话? 我可以在哪里保存他的证件?如果在手机/平板电脑中,我可以保存在本地数据库中,在网络中?在Facebook的哪个地方?

6)服务器 - 哪里发布服务器端的最佳位置?亚马逊云?不是吗?

3 个答案:

答案 0 :(得分:4)

  1. Unity本身支持网络。但是还有像Photon Unity Networking这样的其他插件,它们是统一网络的增强版本。它还支持基于Turn的游戏加上它是一个支持iOS,android和web的跨平台。 Photon Engine for Unity Networking

  2. 我认为Billing System你的意思是应用程序中的应用程序。我使用过UniBill,它可以很好地与iOS,GPlay,亚马逊等商店一起使用。通过这么少的努力,您可以集成插件。 Unibill by Outline Games

  3. 我认为C#就足够了。

  4. 你可以使用facebook足够好。您还可以添加简单的访客登录以进行授权。访客将根据统一提供的Unique User ID进行注册。

  5. 要存储数据,您可以使用Parse第三方插件。我试过了,效果很好。如果您要使用Web应用程序,请尝试使用他们的Rest API。它将适用于所有支持的平台。

答案 1 :(得分:1)

Q1)我必须使用TURN BASED游戏(如果你能给我链接)我想到WCF或WebAPI - 对于跨平台那么什么是最佳实践???

WCF可能不是最佳选择,尽管它起作用,但在典型情况下,您可能希望使用SocketWebsocket进行通信。

Websocket的好处是,连接一旦建立,就会保持活动状态,这与使用请求 - 响应模型的http协议完全不同。使用http,一旦发送/接收消息,连接就会消失,如果你有大量的消息,你需要重复设置有开销的信道,无论是有效载荷还是频率都很大。

如下所示,Websocket的性能远优于基于http的通信,有关详细信息,请参阅this link

enter image description here

另一种选择是使用RedisMongoDB,它内置了pub-sub模型的支持。既然你在谈论纸牌游戏,你可能希望:

  • 玩家1翻转卡片,此游戏/房间中的所有其他玩家都可以立即看到此更改
  • 玩家2确实如此,此游戏/房间中的所有其他玩家也可以立即看到此更改。

如果您使用Redis,一个客户端发布消息(例如卡片翻转),然后让所有其他客户端订阅此消息,然后所有其他播放器(Android,iOS,Web,facebook,平板电脑无论如何立即得到通知,然后由你来实现你的游戏逻辑。

第三个选项是使用xxx-MQ(例如RabbitMQ,ZeroMQ,MSMQActiveMQ)这些本质上是消息代理,您可以轻松地使用pub-sub模型实现回合制游戏逻辑。

答案 2 :(得分:0)

  

3)我也可以在JavaScript上编写代码 - 如果给我加性能?

没有什么不同。 Here is performance test 结果是:

  

C#的平均值为8,075毫秒,Unityscript的平均值为8,142毫秒。所以C#有点领先,