在JavaScript中开始游戏开发。JS与服务器语言的界限在哪里?
我对PHP还算熟练,也在学习Python。最近我一直想做一个简单的游戏,想用Python来实现。不过为了让界面看起来更炫、更流畅,我需要用到JavaScript(我不太喜欢用Flash或Silverlight)。所以我开始查找关于JavaScript游戏开发的资料。在这个过程中,我发现大多数例子都是用JavaScript几乎完全做好的游戏,而且很多游戏都挺不错的。
我在想,如果我把Python和JavaScript结合起来做游戏,应该更依赖JavaScript,让Python处理一些后台的事情吗?还是说只用JavaScript来做基本的界面元素、动画和一些花哨的东西,而把核心游戏引擎放在Python里?或者两者之间找个平衡点。
对于PHP和Python,我大多是用MVC风格的框架。如果我只用JavaScript来处理视觉效果,那我在视图文件中会不会像在普通应用中那样大量使用它?我知道我可以完全用任意一种语言来做游戏,但为了充分利用两者的优点,我不太确定该在哪个地方让Python来工作,在哪个地方让JavaScript来工作。
另外,作为参考,我想使用一些高级特性,比如canvas和SVG之类的,不太想用WebGL。我想练习的游戏是一个等角视角的即时战略游戏。这个游戏主要是为了学习,我并不打算发布它。
任何建议都很受欢迎。
补充说明:这个游戏会是基于网页的。我的网络服务器是nginx。我想做的游戏是多人在线游戏,多个玩家可以同时在线玩。想象一下《魔兽世界》。每个服务器最多可以容纳N个玩家互相对战。当某个服务器满了80%时,就会启动一个新的服务器。大致是这样的想法。我希望玩家能够实时互动。这也是我在考虑node.js的原因之一,但我对它还不太了解,不过感觉它可能适合。
-- 更新:我还打算使用mongodb作为数据库,如果这对任何人的回答有帮助的话。
2 个回答
Python 可能会在支持你的网站的服务器上运行。
如果你想写 多人 客户端-服务器游戏,那么很多服务器的代码和逻辑会用 Python 来写。
如果你想写简单的 单人 游戏,那么所有的代码都在客户端(浏览器)里,主要用 JavaScript。Python 只是用来提供你网页游戏的服务。
如果你想写桌面游戏,可以使用 Python 的 pygame 库来实现。
所以这要看你想做什么。
- 多人网页游戏:客户端用 JavaScript,服务器用 Python
- 单人网页游戏:客户端用 JavaScript,服务器只是用来提供网页文件
- 桌面游戏:客户端用 Python。
在某种程度上,这个问题可以用经济学的角度来看,主要是为了让自己获得最大的利益,同时尽量减少成本。在一个有客户端和服务器的游戏中,实际上影响你的因素有:
- 使用服务器资源会花钱,但使用客户端资源就不会。
- 客户端可能会尝试作弊,所以你需要验证一些来自客户端的数据。
- 如果你占用客户端太多资源,玩家就不想玩了,因为他们觉得付出的代价大于获得的乐趣。
这些点都比较微妙,值得进一步讨论。
把你的游戏提供给玩家的实际成本分为两部分:一是运行游戏所需的硬件成本,二是把游戏传输给玩家所需的网络带宽成本。通常你可能需要在这两者之间做权衡;优化网络使用意味着你需要更好地预测玩家的需求,这会增加处理的负担,但把更多的处理工作交给客户端就意味着要发送更多的数据给客户端。
不过,客户端能做的工作是有限的。例如,你不能总是相信客户端告诉你的他们应该在哪里,因为这可能意味着他们在空中飞或者瞬间移动;你必须确保客户端确实能够做他们所说的事情。不过,游戏的具体性质会决定你需要多深入地验证。在很多大型多人在线游戏中,通常会采取极端措施来限制机器人玩家的活动,但这往往会对真实玩家产生负面影响。而严格合作的游戏即使在有作弊者的情况下,影响也会小一些。
并不是所有潜在的玩家都有最好的硬件,或者愿意升级到最新最快的浏览器。因此,要想让游戏成功,通常意味着需要降低图形的要求,以便大多数用户都能玩。
令人惊讶的是,单靠客户端或服务器的方法往往无法产生理想的结果。相反,你需要在两个地方实现关键的游戏逻辑,客户端需要这样做以让游戏对用户反应灵敏,而服务器也需要这样做以防止滥用,并公平地决定玩家之间的互动。