我正在制作宾果游戏。为此,我将通过wifi-热点连接两个移动设备,并且应该将网格共享给两个客户端,即移动设备应该看到网格。我如何通过网格两个客户?另外,如何在客户端和服务器之间传递数字?通过对象或其他东西以及如何?另外如何准确地实现客户端服务器应用程序制作2个java文件和android? PS:我们没有实现聊天应用程序。
宾果XML文件:https://github.com/TanishaShrotriya/SDL/blob/master/activity_main_bingo.xml
Java文件:https://github.com/TanishaShrotriya/SDL/blob/master/MainActivity_bingo.java
答案 0 :(得分:0)
您有几个选择。首先,您需要确定哪种架构适合您。
客户端/服务器(带有API的AWS实例和带有PUSH的Firebase) ---这将使设备在打开时获得当前状态,并在确认其空间被调用/填充时将更改推送到其板上。 ---这将使该“房间”中的其他设备成为游戏虚拟共享空间的名称。接收要显示的已更改数据的PUSH通知。
接下来,您需要确定服务器是维持每个用户的完整状态还是仅维持当前调用的值进行比较。
如果您决定不想编写API并为PUSH设置服务器,则可以在该区域的每个人之间进行特别的Wi-Fi甚至是基于BLE的通信。但是,这需要更多地了解如何传递字节,处理网络问题,延迟以及从设备到设备的通信。
如果您选择像您提到的那样使用ad-hoc wifi,则必须保持大量连接,例如网状网络。一个更好的选择是让所有设备加入相同的wifi网络,以便它们可以相互访问,但不一定跟踪网状网络。
但是,即使你在同一个wifi上,知道谁发送信息也很困难,如果没有服务器来保留当前玩家的路由和IP。因此,您可能必须创建一个主机,以便它可以监听已注册的玩家。主机设备需要保留到所有其他设备的路由,以便在发生更改时它可以将信息发送到每个IP地址。
我仍然强烈建议使用API和PUSH的客户端/服务器路由,它会更加可靠。
现在,就如何传递数据而言,您当然可以通过代码截图并发送图像,但这样做很浪费。我建议使用一个跟踪所覆盖值的矩阵,然后只需将card_id的jSON片段,player_id和覆盖块的json发送到服务器,然后将更改推送回“虚拟房间”中的所有玩家。这使他们能够看到他们的竞争对手是如何做的。
所以我不得不要求更多细节,了解你的目标是什么,以帮助任何进一步,但这是我的建议,因为ad-hoc wifi或蓝牙是可行的,但在网络规模大小你会有一个巨大的头痛在你的手上。如果你真的是反服务器和API,那么所有在相同wifi上的主机场景设备将是我的第二个方向,这是我能看到你避免这种情况的唯一原因是如果你想玩没有互联网的wifi或者如果你不想每小时支付30美元的流量。
如果有帮助或者想要提供额外的清晰度,请告诉我。