- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
因此,假设有一款游戏包含一个网站,以及一个您可以从该网站启动的客户端。我看了一下,一个相关的例子是 Habbo Hotel。
我要问的是,让这样的游戏运行的所有不同部分是什么:对于网站部分,我想需要一个服务器、一个数据库以及一些 HTML、CSS 和 PhP 编码,但客户端将如何操作?
更具体地说,客户端到服务器(反之亦然)的实时通信将如何发生?假设客户端用 C 编码,如何将 C 集成到(我想是 PhP 框架的)浏览器窗口中?请注意,客户端永远不会下载到用户的 PC 上,那么它位于何处?
很抱歉,如果这些问题很多,如果答案太繁琐而无法撰写,请随意留下一些文档或教程(我一直在寻找但还没有真正能够)找到),我会很乐意自己阅读它们。提前致谢。
最佳答案
一方面你的问题太宽泛,但另一方面我可以给你一些关于如何以现代方式做到这一点的建议:
这会让您得出一个结论:javascript 是该系统的核心。您会遇到几个障碍,例如:
从您提出的问题中,我感觉到对该领域的理解和知识严重缺乏。我猜你必须提前学习 6-12 个月以上。这是我的建议,因为如果你马上开始,你会犯很多错误并浪费你的时间。如果上面有什么你不知道的名字,请搜索并好好研究。不要开始编写代码,前面有一条非常陡峭的学习曲线!
编辑:关于服务器端的更多信息
如果您想实现基于 Action 的互动游戏(例如 FPS 或 2D 射击游戏),我必须告诉您这一点。
您可能想研究 Unity 3D,直接使用 TCP/IP 连接和二进制消息(没有 HTTP,没有 websocket,而是 protobuf)。
C#(客户端)和 node.js(服务器端)是一个很好的组合。对于水平扩展,您可能需要研究云计算、Docker、供应和大量服务器安全性。
但这是一个充满敌意的领域,它会将您带入 DevOps 领域,这与游戏开发相去甚远。更像是建筑师的工作。想象一下 3 层系统(客户端 + 服务器 + 数据库)在服务器上存在瓶颈。
您想生成更多节点来处理更多客户端。这是每个基于大厅的游戏(英雄联盟、守望先锋、WoT、WoW 实例等)以及您对分区 map (例如 LOTRO、RIFT 和更多 MMORPGS 中的“ map ”)所做的事情。此外,镜像(这意味着同一 map 的多个实例以容纳人口过多的人群)。
要进行这种横向扩展,您的服务器必须自行在线/离线,而无需您点击命令和控制(例如 puppet 和类似软件)。
虽然这是最终的方法,但它的学习曲线也是最陡峭的,尤其是因为安全性(广告 DDOS、洪水、懒猴、假客户端,等等)。新节点必须在连接到集群并上线之前即时“配置”(例如云配置),因此这是一个充满痛苦和学习的全新世界。
这种基于云的弹性服务器系统的核心是 SSO(单点登录)。
关于javascript - 基于浏览器的实时 MMO 游戏的内部运作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44476766/
我是一名优秀的程序员,十分优秀!