gpt4 book ai didi

architecture - 具有 LOB 应用背景的人的游戏架构

转载 作者:行者123 更新时间:2023-12-04 01:09:43 26 4
gpt4 key购买 nike

我的背景几乎完全基于业务应用程序——Web 服务、调度程序、桌面和 Web 前端到 CRM 系统等......

现在几乎所有的上述项目,基本原理都是一样的:

某种数据访问层、业务逻辑层和 UI。

显然,某些场景需要一些独特的东西,但总的来说,它一直是 N 层。

我想做一些游戏开发作为业余爱好。我不期待任何令人印象深刻的事情,因为我没有资源可以奉献给它,但是对我进行一些挑战的东西会很好。

我应该从我目前的经验中吸取什么教训(如果有的话),我需要再次学习什么?

我假设和我所有的经验一样,不同类型的游戏会有不同的架构,但它们都基于相同的核心原则吗?为了便于论证,假设我正在构建一个简单的 MUD (也许是像旧的 Zelda 游戏那样的自上而下的 UI) - 这似乎是我可以拥有我的 3 层逻辑的东西 - 带有 BLL 和 DAL 的服务器以及一个客户端 UI - 但我不太确定这是否是对的 - 当然使用 Entity Framework 似乎并不合适,因为访问 Db 中的大量内容会产生大量开销,我认为性能将是一个问题 - 例如,我假设我不想如果他们每秒更改 20 次以上,则不断使用 Db 来存储玩家位置...

是否有专门针对游戏场景的模式和实践?

在创建 UI 之前开发后端系统是否可行(例如,插入控制台应用程序以允许我在添加 UI 之前开发我想要的功能)。这是好/坏的做法吗?

简而言之,我不知道从哪里开始,希望得到一些建议——尤其是那些有经验的人。

关于唯一一成不变的事情是我想要一个带有中央服务器的多用户游戏。欢迎提供游戏建议。

最佳答案

第一,游戏往往有实时模拟

  • 因此,游戏有更新循环
  • 因此,游戏倾向于微秒级的业务逻辑运算。
  • 因此,类似数据库的解决方案并不是最终的结果,而是您“数据层”的全部

  • (如果您没有模拟(例如:“拼字游戏”、“文明”、大多数 facebook 游戏),这不是真的。泥土通常没有太多模拟,因此不清楚您的围栏的哪一侧游戏开始了)

    因此在实践中,在高模拟游戏中,

    小型/非持久多人游戏(地震、反恐精英、星际争霸 - 可以由单机运行的游戏):通过没有数据层来解决这个问题(如果他们实现了保存,它们会作为游戏状态的巨大转储来实现)

    大型多人游戏(mmos - 需要多台机器的游戏):将它们的持久数据存储用作只写管道(和用于恢复),然后将大量精力投入到以模拟的方式对数据进行分区的方案中(即业务)逻辑可以根据本地内存访问顺序获得所需的延迟。

    一些数字供引用:如果“服务器”处理 500 名玩家并且您的模拟速率为 15hz,那么每个玩家每次滴答可以获得 0.13ms 的 CPU。因此,如果您需要“火球是否击中了此帧中的任何东西”,则需要<<.13 毫秒,这对于网络往返或 sql 查询来说还不够长。是的,您可以通过游戏设计消除许多这些问题 - 例如,“没有碰撞”解决了上一个示例。但在某些时候,你不再是一个模拟游戏,呵呵。

    第二大区别是“图形”

    图形编程与商业应用程序编程完全不同。虽然我有时认为所有的编程都是“以 X 格式将数据放在 A 位置,然后以 Y 格式移动到 B 格式”,这适用于商业和图形编程,但图形编程在大多数情况下要少很多数量级。

    (尽管顺便说一句,信封计算的快速返回将谷歌式的问题放在同一个桶中:
  • 游戏:以“毫秒”的比例管理“千兆字节**”的图形数据 == 10^9/10^-3 == 10^12
  • 谷歌:以“天”规模管理“PB”数据 == 10^15/10^3 == 10^12

  • **:实际上,游戏无法移动那么多数据,因此图形编程的“技巧”正在跳过“我们如何获得每帧需要的千兆字节图形数据的圈套”,与现实只是实际移动/操作一帧兆字节' - 加载屏幕是一个常见但不幸的答案:(

    同样,如果您正在制作图形要求较低的游戏,那么这就不那么重要了。

    因此,游戏往往以“游戏玩法/图形”为框架

    而不是“ui/logic/dal”。
    话虽如此,当我从网络世界过渡到游戏时,我的 3 层世界观(是的,当时我们只有 3 层)我觉得给我们的项目带来了很多洞察力,并导致了开发一个用于游戏内容的“数据访问层”,在多个项目中都非常成功(解决了游戏世界的问题,比如从磁盘中取出东西、处理开发时版本控制、热加载等)。

    虽然游戏开发带你去哪里都会有新的东西要学习,但你以前的经验会帮助你一路走来。

    关于您的咨询请求,

    我建议专注于设计与您的体验非常匹配的游戏。

    即,如果您非常擅长数据库、网页和日程安排,请制作电子表格游戏:
    http://www.ogame.org/

    如果你想要更多的游戏逻辑和模拟,制作一个可收藏的纸牌游戏:
    http://apps.facebook.com/warstorm/

    如果您想要更复杂的玩家交互,请查看 mmo-scrabble:
    http://wordsquared.com/

    如果您想学习图形,请从单人游戏开始:)

    使用您熟悉的技巧和技术,看看它们从哪里开始失效,然后回到这里并发布您的问题和发现。

    玩得开心!

    关于architecture - 具有 LOB 应用背景的人的游戏架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349936/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com