我正在考虑开发在线多人社交游戏.世界的共享状态在后端需要快速的东西,所以潜在的解决方案似乎是:
服务器上的快速游戏引擎(例如c ++)和一些前端语言(php/python/ruby)+ flash
python中的整个堆栈(使用twisted或stackless python)+ flash
.NET(asp.net或asp.net mvc)+ flash
.NET + silverlight
从生产力的角度来看,第一个可能是过度杀手(3个异质层)
NR.4可能是程序员的天堂(所有层的共同环境),但是:
你怎么看?
[编辑]游戏本身将成为更大的门户网站的一部分 - 因此将引擎与某些Web框架集成将是一件好事.
我正在使用GameKit和GKTurnBasedMatch实现基于回合制的多人游戏.当游戏结束时,玩家会收到"游戏结束"通知; 当玩家轮到他们时,他们会收到"轮到你"的通知.这些通知使用GKTurnBasedMatch自动发生.
是否可以更改这些通知显示的文本或图标?
您好我正在制作Java多人游戏,一切正常.它有所有人需要,但我发现了一个问题,它使用ServerSocket服务器,Socket为客户端,工作正常,但最大的问题是它不能在全球范围内工作.只有局域网,我甚至尝试过Hamachi,但这也没有用.
你有什么想法会有用吗?
更多信息:我在服务器中使用特定线程来接受,发送和接收套接字以及客户端中用于发送和接收的特定线程.它发送一个我制作的对象并包含所有信息.
ip = InetAddress.getLocalHost().getHostAddress() + ":" + port;
server = new ServerSocket();
//This asks you if you want to use a specific IP or just the one that we got in first line
String socketaddress;
socketaddress = (String) JOptionPane.showInputDialog(null, "IP: ", "Info",JOptionPane.INFORMATION_MESSAGE,null,null,InetAddress.getLocalHost().getHostAddress());
server.bind(new InetSocketAddress(socketaddress, port));
//Here it starts the accept thread, and then it starts send and receive threads
new Thread(accept).start();
Run Code Online (Sandbox Code Playgroud)
以下是我发现最重要的客户端内容:
socket = new Socket(ip,port);
String set_username = System.getProperty("user.name");
set_username = (String) JOptionPane.showInputDialog(null, "Username: ", "Info", JOptionPane.INFORMATION_MESSAGE,null,null,set_username); …Run Code Online (Sandbox Code Playgroud) 我正在创建一个多人 android 游戏作为我课程的一部分。这是我的第一场比赛。我打算让用户通过简单的网络连接到游戏。我根本不想使用互联网,因此我不会使用安卓游戏服务。我该怎么做。我一点头绪也没有。我尝试了各种教程,但所有教程都使用中央游戏服务器。我只想创建一个简单的客户端 - 服务器网络。一个用户将主持一场比赛,其他人将加入。
这里有几个问题.
想象一下,我有客户端A将要向服务器发送以下消息:"START START VVEMENT FORWARD".
服务器不会立即收到此消息,因为延迟会导致延迟.
问题1:ping(或更好:往返时间)是客户端向服务器发送消息并接收响应所需的时间.如果您可以忽略服务器注意到它已收到消息并开始发送响应(这应该非常短)所需的时间,这是否意味着以下内容?
因此,当客户端A发送该消息时,服务器将在客户端发送消息后的往返时间/ 2毫秒内接收该消息.这引出了我的下一个问题.
问题2:如果客户端首先发送包,然后在实际执行客户端命令(在这种情况下:向前移动)之前等待往返时间/ 2毫秒以补偿延迟/延迟?
现在,服务器将向所有附近的玩家发送以下消息:"客户端A现在正在向前移动".然后,这些客户端将确保客户端a的角色开始移动,这将引导我进入下一个问题.
问题3:客户端是否应该收到其他客户端已移动的消息,并考虑到此消息是由服务器往返时间/ 2毫秒发送的?那么用于运动计算时间戳的当前时间应该减少往返时间/ 2?
在我看来,所有这些方法都会确保客户端之间的同步得到改善,因为延迟会被考虑在内.这是正确的做事方式吗?大多数其他好的多人游戏都这样做吗?您想提供的任何评论,建议,替代方案或随机但相关的呼喊?提前致谢.
我推荐这两种语言作为多人网页游戏开发的一个很好的选择,但我不知道这些语言在游戏开发方面有什么限制.我个人喜欢JavaScript,但我不确定客户端 - 服务器通信和安全性.
游戏将成为基于2D回合的策略.
我正在使用Twisted开发一款多人游戏服务器.这是一个简单的游戏,在每个地图上有几个玩家互相交流.在一开始,我只想让它们移动并且可以被其他人看到.
我认为我需要来回发送的大多数数据都是移动数据,例如方向,速度等.
是否有Twisted已经实现的协议我应该使用?是否NetstringReceiver适合呢?
谢谢!
我正在努力创建一个2D游戏,以便学习一些多人游戏的细节.在战略转弯的战斗中,游戏本身将使两名玩家的军队相互对抗.我正在开发它作为一个独立的桌面客户端(最后可能是一个手机应用程序).
我用Java编写游戏,我不信任客户端,因此我考虑了安全性.玩家将拥有一个个人帐户,其中包含军队列表和服务器上的内容.另外,我计划使用mySQL在服务器上存储这种数据.
但是,我不确定如何实现这一点.我是否使用类似网络服务器的东西?这似乎是错误的,但我不知道哪些技术可用于客户端不受信任的Java前端和后端.请注意,我不是在寻找关于最佳方法的辩论,我只需要了解概念,可能是一些示例技术,也许是教程的链接.
谢谢你的帮助!
我即将使用Google Play游戏服务为我的Android应用程序实现实时多人游戏,并且听到房间更新时遇到了一些问题.我没有经验,所以请原谅可能的理解问题.
我的意图是,如果有人加入我最近创建的房间,或者自己创建了另一个房间,并且我的房间与我的房间相同,我需要知情.
我试图在RoomStatusUpdateListener上听,但在我创建了一个房间后,这个监听器永远不会被调用,我想知道为什么.被调用的是RoomUpdateListener,但它不包含我需要的回调方法.
我知道建议在等候室ui中使用android build并使用Games.RealTimeMultiplayer.getWaitingRoomIntent()来启动activityForResult,但我需要创建类似我自己的等候室并且不知道如何.显然谷歌活动(等待)房间确实了解变化,所以必须有一种方法来观察这些.
据我所知,我想尝试做类似的事情:
有没有人知道如何实现这一目标?我会很高兴的.对不起,我的英语不好.
问候,史蒂夫.
multiplayer ×10
android ×2
java ×2
.net ×1
flash ×1
game-center ×1
gamekit ×1
ios ×1
javascript ×1
lan ×1
lance ×1
latency ×1
mysql ×1
performance ×1
python ×1
roundtrip ×1
silverlight ×1
sockets ×1
twisted ×1
webserver ×1