繁体   English   中英

Unity3d-在线多人游戏

[英]Unity3d - Online multiplayer Turn

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

我想尝试使用Unity3d编写在线回合制游戏。 我希望人们可以使用其用户名和密码登录,并且可以在不同的设备上播放,例如:1个来自android / iphone的播放器,2个来自facebook的播放器,1个来自网络的播放器-2个来自平板电脑的播放器...现在我想创建游戏1对1(适用于2个玩家)-但也许在功能中,我将为多人游戏打开新模式

打牌游戏很简单。

我是c#开发人员,所以我将用c#编写代码。

我的问题是:

1)对于基于回合的游戏,我必须使用什么(如果可以给我链接),我认为是WCF或WebAPI-用于跨平台,那么什么是最佳实践?

2)我想在游戏中集成高级功能-您对游戏内部计费系统有何建议? 与哪个公司的工作更好?

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

4)游戏中的授权:今天的最佳做法是什么? 用户在我的系统中具有创建帐户或更好的权限,以便使用其Facebook帐户登录用户?

5)如何同步。 在移动设备和Facebook游戏之间? 如果可能的话? 在哪里可以保存他的凭据? 如果在手机/平板电脑中,我可以保存在本地数据库中,也可以保存在Web中-Cookie中? 在Facebook上?

6)服务器-在服务器端发布的最佳位置? 亚马逊云? 或不??

  1. Unity本身支持联网。 但是还有其他插件,例如Photon Unity Networking,它们是统一网络的增强版本。 它还支持回合制游戏,并且它是一个跨平台,将支持iOS,Android和Web。 用于Unity网络的光子引擎

  2. 我认为按计费系统,您的意思是在应用程序中。 我已经使用UniBill在iOS,GPlay,Amazon等商店中运行良好。 您只需花费很少的精力就可以集成插件。 Unibill by Outline Games

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

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

  5. 为了存储数据,您可以使用Parse Third Party插件。 我已经尝试过了,效果很好。 如果您也要使用Web应用程序,请尝试使用其Rest API。 它将在所有受支持的平台上运行。

Q1)对于基于回合的游戏,我必须使用什么(如果可以给我链接),我想到WCF或WebAPI-用于跨平台,那么什么是最佳实践?


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

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

作为下面的比较,Websocket的性能比基于http的通信要好得多,请参阅此链接以获取更多详细信息。

在此处输入图片说明

另一个选择是使用RedisMongoDB ,它具有对pub-sub模型的内置支持。 由于您在谈论纸牌游戏,因此您可能希望:

  • 玩家1掷出纸牌,此游戏/房间中的所有其他玩家都可以立即看到此更改
  • 玩家2还有其他事情,该游戏/房间中的所有其他玩家也可以立即看到此更改。

如果您使用Redis ,这非常简单,一个客户端发布一条消息(例如,卡片翻转),然后让所有其他客户端订阅该消息,然后立即通知所有其他播放器(Android,iOS,Web,facebook,平板电脑等),然后由您决定是否实施游戏逻辑。


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


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

没什么不同。 这是性能测试结果是:

C#的平均值为8,075ms,Unityscript的平均值为8,142ms。 所以C#领先一点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM