标签: mmo

服务器不从数据库中获取信息并将其传递给客户端

我试图让我的服务器从登录用户(web)获取sso并将其传递给AS3客户端.

如果我在客户端(下图)中设置了特定的SSO,则服务器从数据库中选择用户.

目前我收到错误:错误1:您的SSO票证无效.请重新登录然后重新加载.

package 
{
    import com.archicruise.external.RoomManager;
    import com.archicruise.server.Connection;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.LoaderInfo;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.system.Security;
    import flash.system.System;

    public class Main extends Sprite 
    {
        [Embed(source = '../assets/client_back.png')] private static const clientBackImage:Class;

        public static var SITE_URL:String = "http://localhost/archicruise/";

        public var roomLoader:RoomManager;
        private var connection:Connection;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            //Add client background
            addChild(new clientBackImage() as Bitmap);

            //Got an SSO ticket?
            var …
Run Code Online (Sandbox Code Playgroud)

c# actionscript-3 mmo

19
推荐指数
1
解决办法
1396
查看次数

在线游戏客户如何通过互联网如此快速地交换数据?

让我们想象一下非常简单的游戏...我们有一个迷宫和两个玩家试图通过互联网实时退出.

在每个移动游戏中,客户端应该将玩家的坐标发送到服务器并接受另一个客户端的当前坐标.怎么可能如此快速地进行这种交换(就像所有现代游戏一样).

好的,我们可以使用memcache或类似技术来减少服务器端的数据挖掘操​​作.我们也可以使用最快的网络服务器等,但我们仍然会遇到时间问题.

所以,问题是......

  1. 什么协议游戏客户端通常用于与服务器交换信息?
  2. 有哪些服务器技术可以解决这个问题?
  3. 什么算法用于在比赛期间与延迟战斗等.

multiplayer mmo online-game game-engine

15
推荐指数
3
解决办法
6900
查看次数

Real Time Strategy游戏如何在PHP中运行?

一些MMO实时策略游戏,如Travian或oGame,都是用PHP编写的.

你能简单解释一下这种游戏在幕后的运作方式吗?游戏如何在没有玩家请求的情况下进行实时数据库更新?

此外,在运行RTS游戏(例如拥有1000个活跃玩家的Travian)时,人们可以期待什么样的服务器负载/带宽?

php database mmo

14
推荐指数
2
解决办法
8293
查看次数

Firebase的延迟是否足够低,可以用于实时MMOG而不是套接字?

我想知道Firebase的性能(延迟,吞吐量)是否足以在线使用实时MMO游戏.

有足够知识的人可以分享他们对此的看法吗?

可以使用Firebase代替套接字进行实时游戏吗?

real-time mmo websocket socket.io firebase

13
推荐指数
1
解决办法
4350
查看次数

设计mmo的好python库?基于演员的设计

我试图用python设计一个mmo游戏......

我已经评估了stackless,因为它不是一般的python而且它是一个fork,我不想使用它

我试图在pysage candygram dramatis和parley之间做出选择

任何人尝试这些库中的任何一个?

非常感谢您的回复

python mmo stackless python-stackless

8
推荐指数
1
解决办法
3654
查看次数

如何制作MMO(服务器端)?

我试图搜索如何制作一个MMO并总是找到相同的回复,这是不可能的或需要很多钱,但从来没有给出如何制作一个指南.

我想构建一个非常可扩展的东西,我目前关于如何构建MMO的想法如下:


组件:

  • 登录服务器:客户端向此服务器发送用户名和密码,如果成功,则向客户端提供要连接的游戏服务器.
  • 游戏服务器[1..N]:所有游戏逻辑都在这里,客户端连接到这个.
  • 位置数据库:存储当前登录用户和活动怪物的数据,其中包括游戏服务器,他们在地图上的位置以及他们采取的行动(移动,攻击等).
  • 帐户数据DB:存储有关用户的所有数据(用户名,密码,字符,项目,任务等)
  • 聊天服务器:由于位于同一个地方的用户可以在不同的服务器上,因此需要额外添加一个服务器,以便玩家可以在他们之间进行通信.
  • Monster DB:一个包含所有怪物的属性,基本位置和AI脚本的数据库.
  • 怪物服务器[1..N]:服务器中所有活动的怪物
  • 日志数据库:存储所有采取的操作和聊天文本.

操作:

  • 登录:
    1. 客户端将用户名和密码发送到登录服务器.
    2. 登录服务器使用帐户数据DB验证数据并检查当前未记录的数据(位置数据库),如果成功则转到3,否则返回不成功的登录消息.
    3. 登录服务器更新位置数据库,将新连接的用户添加到他将连接的服务器(最低人数/最近)
    4. 位置DB通知相应的游戏服务器用户已连接.
    5. 登录服务器向游戏服务器发送连接的客户端.
  • 主循环(客户端):
    1. 客户在位置DB中检查他当前的位置和动作以及他附近的人(玩家和怪物),在所接收的数据中还包括玩家的最后更新时间(档位或等级).
    2. 客户将收到的玩家的日期与保存在内存中的当前玩家进行比较,如果玩家不在记忆中或日期不同,则客户要求账户数据DB获取lvl,齿轮等.
    3. 客户端呈现玩家
    4. 一段时间后转到1.
  • 聊天:
    1. 客户端向聊天服务器发送消息(pm/normal/all)
    2. 如果是pm,聊天服务器将消息发送给目标
    3. 如果正常,聊天服务器会与位置服务器一起检查区域内的玩家(与主循环(客户端).1相同,当检查附近的玩家时)并将消息发送给那些人.
    4. 如果全部,聊天服务器广播给所有玩家
    5. 确认发件人和收件人收到了邮件
  • 行动:
    1. 客户端向Game Server发送动作(制作,移动,攻击等).
    2. 游戏服务器处理动作并使用动作的效果更新位置数据库(客户端将知道主循环动作发生了什么).
    3. 在制作或抢劫的情况下,游戏服务器将获得的项目返回给客户.
  • 主循环(游戏服务器):
    1. 检查从客户端收到的所有数据并处理它们.
    2. 向客户发送过程结果(损坏,xp,获得的项目等),并更新位置DB及其效果(新位置等).
    3. 一段时间后转到1.
  • 主循环(怪物服务器):
    1. 检查一个活跃的怪物是否有一个玩家在附近,如果没有将它从Monster Server和Position DB中删除.
    2. 如果附近有任何怪物(来自怪物数据库)并且未激活并激活它(更新位置服务器和怪物服务器),请检查位置数据库中的所有玩家.
    3. Monster根据存储在怪物DB上的脚本采取行动(攻击,移动,不做任何事情等).
    4. 一段时间后转到1.

以及我的问题:

  1. 这种实施方式会起作用吗?(考虑一个有很多怪物和玩家的大地图)
  2. 我觉得如果事情成长,职位数据库将会非常紧张.会更好,如果:
    • 制作多个位置数据库
    • 制作链接的数据库(玩家/怪物,游戏服务器,位置数据库)
    • 创建一个链接的DB(位置DB,区域)
    • 因此,位置DB基于一个区域(或多个区域),当玩家移动到另一个区域时,他的数据被移动到另一个位置DB; 最后一个DB(位置数据库,区域)将是如果一个区域有太多的玩家,很少位置DB可以共享相同的区域(如果区域没有很多人,位置DB可以容纳一些区域)
  3. 关于使用的技术,我正在思考以下内容:
    • 登录服务器:scala/django
    • 游戏服务器:C++中的原始编程?
    • 位置DB:用于通信的scala/django和用SQL的DB
    • 帐户数据DB:用于通信的scala/django和DB不确定是使用像mongoDB这样的NoSQL还是使用保存在文件上的帐户(哪个会更好?)
    • 聊天服务器:使用C++进行原始编程,还是应该尝试调整IRC服务器?
    • 怪物DB:SQL
    • 怪物服务器:像游戏服务器
    • 日志数据库:SQL
  4. 客户端 - 服务器之间的通信应该是UDP以便更快地通信?和TCP登录?或者应该始终在客户端和服务器之间保持一个开放的TCP套接字?还有,聊天,TCP还是UDP?
  5. 主循环应该运行多长时间以便游戏流畅?每0.5秒,0.1,接近60fps的东西?还要使计时器最好每次循环抛出一个线程?(控制线程数量,所以如果循环花费的时间比它应该的长)

而且我不认为我现在忘记任何事情要求并抱歉这个大帖子......

mmo

8
推荐指数
1
解决办法
1万
查看次数

使用Linux Virtual Server在MMO游戏中对区域进行负载均衡

我是一个MMO游戏的开发者,目前我们在我的公司面临一些可伸缩性问题,我认为,这些问题可以通过适当的游戏世界聚类来解决.

我真的不想重新发明轮子,这就是为什么我认为Linux Virtual Server可能是一个不错的选择,特别是使用一些7级负载平衡技术.

我目前正在将ktcpvs视为负载平衡解决方案,并想知道它是否是一个合适的选择.

主要思想是在专用服务器上运行多个区域(就我的游戏而言"位置").当玩家决定前往某个特定位置时,负载均衡器会决定哪个区域服务器将实际为玩家提供服务(这实际上是我需要7级负载均衡器的原因)

你们对上述所有人都有什么看法?

更新:我向LVS用户发送了相同的问题邮件列表http://marc.info/?l=linux-virtual-server&m=124976265209769&w=2

更新:我也在gamedev.net论坛http://www.gamedev.net/community/forums/topic.asp?topic_id=544386上开始了类似的话题

linux virtualization cluster-computing mmo

5
推荐指数
1
解决办法
2280
查看次数

Java会话实现

我正在开发一款多人在线游戏.我有以下问题:

当用户断开他/她与服务器的连接时,他需要重新连接.在第一次连接时,在注册期间,注册模块会生成一个特殊的ResponseDispatcher,它保存对连接Channel的引用.但是,如果用户注销,则此频道将变为无效.即使我可以检测到问题并清理资源,我也必须将注册模块和连接模块的引用存储到游戏模块,以便在用户授权并重新连接时更新频道.这会在模块之间产生很多相互依赖性,并且很难维护.

我需要的是类似Servlet容器中的HttpSession,这样我就可以从我服务器的所有模块中获取对我的通道和会话资源的引用.

如何在Servlet中实现HttpSession?它是一个存储所有JSESSIONID的全局hashmap,容器从哪个容器确定要返回的属性映射?如果它是一个全局的sysmbol表,它会达到性能(即使hashMap的时间是O(1),可能会有会话修改,所以它可能必须同步)?

PS.也许这个案例的设计模式的一些建议也会做.

java design-patterns servlets hashmap mmo

5
推荐指数
1
解决办法
1458
查看次数

为什么要使用像Exit Game的Photon这样的服务器?

我已经完成了我的研究,但是我很难理解为什么有人会想要使用这些类型的服务器(Photon,SmartFox等)来进行游戏编程,因为它们已经提供了像.Net框架这样的东西.

我似乎很难理解使用这些昂贵的服务器之一而不是滚动自己的好处.编码游戏网络的大部分工作都不是你必须做的事情吗?

我想创建一个多人服务器/客户端游戏,但我从StackOverflow的专业人士那里听说像Photon这样的东西不值得付费,因为他可以"在一两天内为他的游戏创造类似的东西".我的用法是一个游戏,既是单人游戏,也是多人游戏COOP(客户端到客户端),如果它的销售情况良好,或者我只为该功能(服务器/客户端架构)获得kickstarter资金,可能是MMO.尽管很可能,我会像Valve那样对游戏进行编程,甚至单人游戏都是服务器/客户端架构,"服务器"位于客户端的离线系统上.

使用Photon比使用C#.Net制作自己的游戏服务器有什么好处?

.net c# networking multiplayer mmo

5
推荐指数
1
解决办法
3302
查看次数

C++成员变量更改侦听器(100多个类)

我正在尝试为MMO游戏制作一个架构,我无法弄清楚如何在游戏对象中存储尽可能多的变量而没有很多调用在我更新它们的同时在线上发送它们.

我现在拥有的是:

Game::ChangePosition(Vector3 newPos) {
    gameobject.ChangePosition(newPos);
    SendOnWireNEWPOSITION(gameobject.id, newPos);
}
Run Code Online (Sandbox Code Playgroud)

它使代码变得垃圾,难以维护,理解和扩展.想想一个冠军的例子:

GameObject Champion示例

我必须为每个变量创建很多函数.这只是这个冠军的概括,我可能每个冠军类型/"类"都有1-2个其他成员变量.

如果我能从.NET或类似的东西中获得OnPropertyChange,那将是完美的.我想要的架构可以很好地工作,如果我有类似的东西:

对于HP:当我更新它时,自动呼叫 SendFloatOnWire("HP", hp);

对于位置:当我更新它时,自动调用 SendVector3OnWire("Position", Position)

对于名称:当我更新它时,自动调用 SendSOnWire("Name", Name);

什么是完全相同SendFloatOnWire,SendVector3OnWire,SendSOnWire?在char缓冲区中序列化这些类型的函数.

或方法2(优先),但可能很昂贵

更新Hp,正常定位,然后每个网络线程勾选扫描服务器上所有已更改变量的GameObject实例并发送它们.

如何在高规模的游戏服务器上实现,我有哪些选择?这类案件有用吗?

宏会变得有用吗?我想我已经开发了类似的一些源代码,我认为它使用了宏.

先感谢您.

编辑:我想我找到了一个解决方案,但我不知道它实际上有多强大.我打算去看看,然后看看我的立场.https://developer.valvesoftware.com/wiki/Networking_Entities

c++ oop mmo

5
推荐指数
1
解决办法
400
查看次数