基于浏览器的MMO最佳实践

Gab*_*aru 3 python django cron

我正在开发一个基于谷歌地图和Django后端的在线浏览器游戏,我正在接近我需要决定如何实施(后端)定时事件的点 - 即NPC拥有数量增加(例如城市人口应根据一些变量增长 - 城市规模,申请速度).

我找到的可能解决方案是:

  • 将排队的操作放在表中并与每个请求一起处理它们.
    • 问题:开销巨大,难以实施
  • 使用cron或类似的东西
    • 问题:这是一个外部工具,我想尽可能少的外部工具.

还有其他方法吗?

Fra*_*ook 5

运行计划任务以在任何时间间隔执行游戏中的更新将使您获得大量数据库使用.如果您的游戏逻辑依赖于所有这些数据库值同时是最新的(这很可能,如果您正在运行基于时间间隔的更新),那么您将不得不计划停机时间. cronjob正在运行.当那个时间变长,随着你的玩家群体的增长,这变得非常烦人.

如果您正在尝试减少数据库开销,则应存储具有上次更新时间和增长率的值,并仅在增长的数量或速率发生变化时更新这些行.

例如,一个以每分钟5金币增长的黄金藏匿,只有在玩家从中取出黄金时才会更新.当您需要知道当前金额时,它将根据上次更新时间,当前时间,上次更新时存储的金额以及增长率进行计算.

随时间变化而不需要交互的数据不属于数据库.它属于游戏的逻辑端.当玩家执行您需要记住的活动,或者计算变得太麻烦而无法再次生成时,那就是您存储它时.