[英]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)服务器-在服务器端发布的最佳位置? 亚马逊云? 或不??
Unity本身支持联网。 但是还有其他插件,例如Photon Unity Networking,它们是统一网络的增强版本。 它还支持回合制游戏,并且它是一个跨平台,将支持iOS,Android和Web。 用于Unity网络的光子引擎
我认为按计费系统,您的意思是在应用程序中。 我已经使用UniBill在iOS,GPlay,Amazon等商店中运行良好。 您只需花费很少的精力就可以集成插件。 Unibill by Outline Games
我认为C#就足够了。
您可以使用facebook足够好。 您还可以添加简单的来宾登录进行授权。 访客将根据统一提供的唯一用户ID进行注册。
为了存储数据,您可以使用Parse Third Party插件。 我已经尝试过了,效果很好。 如果您也要使用Web应用程序,请尝试使用其Rest API。 它将在所有受支持的平台上运行。
Q1)对于基于回合的游戏,我必须使用什么(如果可以给我链接),我想到WCF或WebAPI-用于跨平台,那么什么是最佳实践?
尽管WCF可以起作用,但它并不是最佳选择,但是在典型情况下,您可能希望使用Socket或Websocket进行通信。
Websocket的好处在于,连接一旦建立便保持活动状态,这与使用请求-响应模型的http协议有很大的不同。 使用http,一旦发送/接收消息,连接就会断开,如果您有大量消息(无论是有效载荷还是频率较大),都需要重复设置具有开销的信道。
作为下面的比较,Websocket的性能比基于http的通信要好得多,请参阅此链接以获取更多详细信息。
另一个选择是使用Redis或MongoDB ,它具有对pub-sub模型的内置支持。 由于您在谈论纸牌游戏,因此您可能希望:
如果您使用Redis ,这非常简单,一个客户端发布一条消息(例如,卡片翻转),然后让所有其他客户端订阅该消息,然后立即通知所有其他播放器(Android,iOS,Web,facebook,平板电脑等),然后由您决定是否实施游戏逻辑。
第三个选项是使用本质上是消息代理的xxx-MQ(例如RabbitMQ ,ZeroMQ, MSMQ , ActiveMQ ),您可以轻松使用pub-sub模型来实现基于回合的游戏逻辑。
3)我也可以在JavaScript上编写代码-如果在性能方面给我加分?
没什么不同。 这是性能测试结果是:
C#的平均值为8,075ms,Unityscript的平均值为8,142ms。 所以C#领先一点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.