Articles of sockets

我应该使用线程来检查多人游戏的套接字吗?

在多人游戏中,获取/发送信息从/到套接字的代码驻留在游戏循环中还是属于它自己的线程?

代码在线多人游戏的最佳方式是什么?

所以我想创建一个运行在networking上的简单游戏,但是我无法根据服务器需要做什么以及客户需要做什么来决定需要做什么。 我知道我应该使用UDP套接字,但我不确定如何在游戏中实现它,并让所有的客户端同步。 如果服务器端有像游戏的主副本,我基本上运行游戏并接受移动,本身播放它们,然后将对象的当前状态发送到其他客户端?

Socket.io发射文本字段

大家好,我学会了如何从socket.io网站指南发出,但我想知道聊天的例子如何接收input? 例如,在我的cocos2dx应用程序中,如何将文本字段传递给socket.io聊天?

即使代码是相同的,Unity也不会在Start()之外实例化()

我正在尝试使用套接字连接将游戏对象添加到我的游戏中。 我有一个SocketHandler类,它只是连接到我的NodeJS套接字服务器,它也可以调用另一个类的方法,这将添加一个新的gameobject到游戏中。 这是基本上是如何工作的: void Start () { GameObject car = Instantiate(CarGameObject); car.transform.parent = this.transform; car.GetComponent<TestCar>().text.text = "Volkswagen"; } 这工作正常,并在游戏开始时将游戏对象添加到游戏中。 但是,如果我在我的SocketHandler中做这样的事情,它不起作用: var addCar = new AddCar(); socketio.On("addCar", (data) => { string str = data.ToString(); Car data2 = JsonConvert.DeserializeObject<Car>(str); addCar.AddNewCar(data2); }); 然后在我的AddCar类中,我有AddNewCar()方法: public void AddNewCar(Car input) { GameObject car = Instantiate(CarGameObject); car.transform.parent = this.transform; car.GetComponent<TestCar>().text.text = input.name; […]

移动管理游戏的最佳客户端/服务器体系结构?

在过去的一年里,我曾经在一家小公司开发过传统的基于浏览器的策略游戏,比如Travian或者Ogame,但是使用了像Tribal Wars 2这样更具交互性的方法。 该游戏是在一个简单的PHP服务器没有框架和一个简单的MySQL数据库,所有的游戏发生在一个单一的静态页面,通过Ajax调用改变,并有一个地图pixi.js。 自动更新通过轮询服务器传递给客户端,服务器然后查询为了更改目的而创建的某些特定数据库表。 虽然这种方法是可靠的,但它有两个大问题: 拥有移动应用程序越来越重要,没有足够的资源来拥有两个独立的代码库。 有一个应用程序只是一个包装的web视图也不是一个解决scheme,因为具有巨大webgl地图的一个真正复杂的页面的性能,虽然可用,真的欠佳; 轮询服务器的更改会产生大量的编程挑战,如果我们不想损害游戏性能,那么一些简单的任务就会变得非常复杂,并且会产生大量令人费解的代码,因为我们不打算每隔5秒进行数十次数据库查询。 我想开始开发一个游戏理念,我基本上已经插入了相同的stream派,而且至less在初始阶段,这个stream派只会是stream动的。 这里真正的问题是,在互联网上阅读了很多东西之后,我很困惑什么应该是一个好的客户端/服务器体系结构,以便我不以上述问题的方式开始原型开发。 基本上,最重要的是,我希望服务器能够知道每个客户端正在查看哪个页面/屏幕/状态,并且能够在另一个客户端在特定屏幕上更改某些内容时向他们发送消息。 如果解决scheme是服务器端的轻量级function,可以扩展一点,那也不错。 客户端我一直在思考Unity,因为它是跨平台的,所有的环境(广告,分析,互联网上的大量支持和答案),因为我有以前的开发经验。 服务器端是真正的问题。 简单的http调用将不起作用,所以PHP是不合适的。 我有使用node.js与socket.io使用websockets解决轮询问题。 这是一个好主意吗? 在这种情况下将游戏状态存储在关系数据库或nosql数据库中会更好吗? 这将工作在不稳定的移动连接? 许多人似乎使用交stream#和sockets来统一。 这会在这种情况下矫枉过正吗? 采取这种方法将如何存储数据? 这将是可行的与Linux服务器,或者我需要一个Windows服务器? 这将工作在不稳定的移动连接? 不知道,我很乐意提供建议。 tl:dr:我想统一制作一个移动管理游戏,但是由于我希望服务器能够在没有客户端请求的情况下向客户端发送消息,所以我很困惑为服务器端架构select了什么。 有什么我应该考虑的? 对于广泛的问题对不起,感谢您的帮助。

虚幻引擎4.18 – 刀(武器)与角色胶囊碰撞相撞

我有一个角色,他手里拿着一把刀。 当“跑步/走路”动作发生时,手和小刀也会移动,其碰撞与角色的胶囊碰撞相碰撞并导致移动中的问题。 更多信息:组件层次结构看起来像

networking编程:同时在套接字IO?

在我的基于curses的游戏中,除了单键盘多玩家游戏之外,我决定通过networking添加多人游戏function。 我使用开关循环,如果它是第一个用户的button,用户1正在适当的行动,否则第二,没有阻止对方的动作,即不等待对手移动。 现在我读sockets教程,并使用服务器看起来像这样: 等待第一个用户连接等待第二个用户连接 循环:从第一次写入到第二次读取从第二次读取到第一次读取 现在问题是显而易见的,玩家会阻止对方的动作,这个networking多人游戏问题如何在游戏devise中解决?

简单的WP7乒乓游戏与实时多人使用套接字

我正在为Windows Phone 7做一个pong克隆,我很想添加一个多人游戏选项。 我一直在尝试使用这个Ricky Tan的教程: http://blogs.msdn.com/b/rickyt/archive/2011/06/15/windows-phone-peer-to-peer-multiplayer-game-using-sockets-in-xna.aspx 问题是它是围绕平台游戏的例子,其中有几个类,如玩家,水平和游戏而devise,而我的游戏发生在一个单一的游戏类与玩家动作less得多的逻辑。 我已经尝试把我的handleInput()里面的handleInput()方法,但仍然没有设备之间的连接。 我已经在这个好几天了,我无法得到它。 有什么我失踪? 我喜欢这个帮助,或者如果有人知道一个更直接的教程,在同一类中发生的事情。 另外如果有关系,我的游戏包含了gsm的例子。 //Sockets private UdpAnySourceMulticastChannel Channel; private Vector2 oldPosition; int identifier; public void HandleInput(int id, Vector2 position) { TouchCollection touchCollection = TouchPanel.GetState(); foreach (TouchLocation touchLocation in touchCollection) { // upper left corner touche detection if (touchLocation.Position.Y < 400) { if (touchLocation.Position.X < blueBar.X && touchLocation.Position.Y […]

将AI代理连接到Flash游戏

概观 该游戏是一个Flash应用程序中的多人简单实时策略。 玩家运行Flash客户端,并连接到用另一种语言编写的服务器(语言无关紧要)。 玩家在2〜8人的游戏中相互竞争。 我的目标是为人们创造一种方式,让人们创造一个人工智能代理,在与人类玩家或其他人工智能代理人相同的领域中发挥作用。 类似于Broodwar人工智能比赛,但在一个更简单的游戏。 目前的模型 有玩家login到大厅。 游戏寻求玩家在大厅列出。 一旦游戏获得了开始所需的玩家数量(由游戏房间创建时间的主持人定义),则玩家被推入游戏中并离开大厅。 游戏然后贯穿至完成; 断开连接的玩家将被停滞直到被摧毁,或者他们再次login并重新连接到游戏。 在一个完美的世界 Flash客户端(使用MVCtypes模型)将能够以某种方式与用户AI代理进行交互,将数据交给代理,并从代理接收命令。 通过这种方式,用户可以在游戏中观察Flash游戏中的游戏,并select代理参与的游戏。该模型对于debugging目的是理想的,因为不会中断在游戏中的运行,并且由于命令可以只有被发送(格式错误的命令被忽略,错误callback)用户可以迅速地选出主要的错误。 然而 当涉及到客户端与客户端的通信时,flash是一个极其棘手的小笨蛋。 我能看到的唯一现实的select是用另一种语言(比如.Net)创建第二个客户端界面,用于连接AI代理,然后玩家login到Flash客户端并进入上面的游戏/观察上述的方式。 或者,Flash客户端将创建指向本地主机的第二个套接字。 将创建一个合适的API来管理通信协议(作为一个DLL或相似的),它将处理游戏的所有数据值,并发送命令。 该API将由用户AI代理扩展,玩家将login到Flash客户端并join/观察游戏。 大问题: 从经验或观察来看,这种types的系统最合适的模型是什么? 我也没有任何疑虑,但是由于实施每个系统的时间长(我一个人工作),我宁愿从正确的道路开始,最后得到一个易于使用的模型。 任何建议都是非常受欢迎的!

Slick2Dnetworking崩溃

这是我的第一篇文章,所以我很抱歉,如果它被放在错误的地方或东西。 不管怎样,这是我的问题: 我遇到了一个在我的游戏状态中运行我的客户端代码的问题。 游戏崩溃,因为更新方法无法继续运行。 我知道这是因为程序等待连接,拖延了程序的其余部分。 这条线负责: connection = new Socket(InetAddress.getByName(serverIP), port); 我的游戏状态是一个带有init(),render()和update()的标准BasicGameState。 我不知道把连接代码放到游戏状态类中。 如果你需要的话,这里是游戏状态代码: public class ConnectState extends BasicGameState { private UnicodeFont ufont; private Client client = new Client(); private final int ID; public ConnectState(int state) { ID = state; } @SuppressWarnings("unchecked") @Override public void init(GameContainer container, StateBasedGame game) throws SlickException { try { Font […]