所以,假设有一个由网站组成的游戏,以及可以从该网站启动的客户端。我看了一下,一个相关的例子就是Habbo Hotel。
我要问的是,使这种游戏发挥作用的所有不同部分是什么:对于网站部分,我想象一下服务器,数据库以及一些HTML,CSS和PhP需要编码,但客户端如何运作?
更具体地说,客户端到服务器(反之亦然)的实时通信将如何发生? 假设客户端用C编码,如何将C集成到(我假设PhP框架的)浏览器窗口中? 请注意,客户端永远不会在用户的PC上下载,因此它将驻留在哪里?
对不起,如果这些问题很多,如果答案过于繁琐而无法撰写,请随意留下一些文档或教程(我已经寻找但是避难所&#39)我真的能找到了),我会高兴地自己读它们。提前谢谢。
答案 0 :(得分:1)
一方面,你的问题太广泛了,但另一方面,我可以给你一些如何以现代方式做到这一点的指示:
这将引出一个结论:javascript是这个系统的核心。你会遇到几个障碍,例如:
从您提出的问题中我感觉到对该领域缺乏了解和了解。我想你必须提前6-12个月学习。这是我的建议,因为如果你马上开始你会犯很多错误并浪费你的时间。如果以上是您不知道的任何名称,请搜索并研究它们。并且不要开始编码,在你面前有一个非常陡峭的学习曲线!
编辑:有关服务器端的更多信息
如果你想实现一个基于动作的互动游戏(比如FPS或2D射击游戏),我必须告诉你。
你可能想直接使用TCP / IP连接和二进制消息(没有HTTP,没有websocket,而不是protobuf)来研究Unity 3D。
C#(客户端)和node.js(服务器端)是一个很好的组合。对于水平扩展,您可能需要研究云计算,docker,配置和许多服务器安全性。
但这是一个充满敌意的地形,它会引导你进入DevOps领域,这是游戏开发的一部分。更像是建筑师的工作。想象一下,3层系统(客户端+服务器+数据库)在服务器上存在瓶颈。
您希望生成更多节点来处理更多客户端。这就是每个基于游说的游戏(LoL,Overwatch,WoT,WoW实例等)以及您为分区地图所做的事情(例如LOTRO,RIFT中的“地图”,以及更多MMORPGS)。此外,镜像(这意味着相同地图的多个实例,以容纳人口过多的人群)。
要进行这种水平扩展,您的服务器必须自行在线/离线,而无需点击命令和控制(例如,木偶和类似软件)。
虽然这是最终的方法,但它也有最陡峭的学习曲线,特别是因为安全性(广告DDOS,泛滥,慢懒,假客户端和列表继续)。在连接到群集并上线之前,必须动态“配置”新节点(例如,cloud-config),因此有一个全新的痛苦和学习世界。
这种基于云的弹性服务器系统的中心部分是SSO(单点登录)。