什么是游戏开发者的优秀JS库?[关闭]


56

如果我决定同时编写文本和图形(2d)的简单游戏,我将使用哪些库?(假设我们使用的是兼容HTML5的浏览器)

我能想到的主要事情

  • 在屏幕上渲染文本
  • 动画精灵(使用图片/ CSS)
  • 输入(捕获箭头键并获取鼠标相对位置)
  • 也许一些预加载资源或动态加载资源并选择顺序
  • 声音(但是我不确定这对我起初有多重要)。也许伴随着混合和连锁的声音或永远循环直到停止。
  • 建立网络(低优先级)以将用户连接到另一个用户或连续获取数据而没有多个请求(我知道这是存在的,但我不知道它的设置或使用有多么容易。但这对我而言并不重要。问题)。


什么?您只需使用纯JavaScript即可完成所有这些工作。但是,用于网络的Socket.io。
jcora 2011年

您可能会发现Stage.js有趣(我是它的作者)。
阿里·沙基巴

Answers:


25

jQuery MooTools是很棒的JavaScript库;我自己更喜欢jQuery。如果您使用DOM,那么任何一种都可以帮助您开发JS游戏。如果您使用Canvas渲染,我仍然认为您应该使用这些库之一,但是您将需要学习Canvas函数。这是一个通过创建Breakout克隆向您介绍画布的教程,因此它可能正是您要寻找的东西(它使用jQuery)。

动画精灵是一个更改图像源的问题,或者预加载多个图像并将它们交换出来,或者在画布中仅绘制动画帧。上述库可以在任何情况下提供帮助。这些库还有助于输入(调查诸如onkeypress和onmousemove之类的事件)。

对于预加载资源,我似乎有些游戏使用了一个“ sprite sheet”图像(这是 Google的Pacman游戏的图像)。我相信他们基本上会创建一个瓦片大小的DIV,其中CSS background-image属性设置为sprite板,background-position属性设置为sprite板上的tile的偏移量。我还没有看到可以为您完成此操作的库,但是jQuery或MooTools可以为您提供动态创建DIV和操作CSS的帮助。否则,预加载图像是为<img>要预加载的图像创建标签的问题,而不是将其添加到页面(或不可见地添加)。这是博客文章 其中包含使用jQuery为您预加载图像的函数的一些代码。

SoundManager 2似乎是要使用的JS声音库;我知道 Vanthia使用它,而Google的 Pacman使用类似的东西(或至少使用相同的技术,即使用页面上的隐藏Flash文件播放声音)。

对于联网,jQuery可以为您处理AJAX,或者如果您想要更多的实时联网(并且需要服务器来完成),请查看JavaScript套接字。我不知道那里是否有一个稳定的库,但是您可能会研究thisthis。本质上,它使用页面上的隐藏Java或Flash文件,以便您可以使用JavaScript 进行真正的套接字通信,该通信比AJAX轮询快得多,并且比“ AJAX Push”效率更高。但是,很可能,AJAX Push将是您想要的,而APE(Ajax Push Engine)可能是要使用的库。

此外,这是有关“为Web构建基于JavaScript的游戏引擎”的Google技术演讲。看起来很整洁。


2
这个答案有点保守。如果他只想使用html5浏览器,那么他可以使用画布并使用html5库之一(请参阅我对这个问题的评论)。在游戏中使用DOM和CSS似乎是一种技巧(尽管在某些情况下是可行的技巧)。
oberhamsi 2011年

2
是什么使它看起来像黑客?Google可以在其PacMan徽标上使用纯DOM和CSS完全没有问题,我非常喜欢自己主页上的pong游戏。实际上,说实话,canvas看起来像是一种黑客,将正方形图形渲染到页面中,否则页面由DOM主导。但是随着向WebGL和WebGL的推动,很明显,如果还没有的话,浏览器将成为重量级的万能应用程序。我离题了…
Ricket

如果他想使用音频,网络,文本渲染,则必须使用html5就绪的浏览器。las帆布将是一个不错的选择。如果您坚持使用DOM&CSS,则这些技术已经构成了具有某些假设(文本流,分层,文本文档的场景图类型)的表示层,因此您会受到限制。而使用canvas则可以按照您认为合适的任何方式来操纵像素,这更接近于SDL或opengl之上的“普通”原始游戏引擎。
oberhamsi 2011年

我提供的音频和网络库不需要HTML5。实际上,我将文本流,分层和场景图相似性视为好处。大多数游戏只是放置和移动的精灵(图像),不需要直接访问像素。确实需要根据您要制作的游戏来评估它,并且如果您个人更喜欢canvas或DOM,是否要支持较旧的浏览器,是否需要canvas提供的额外功能,等等
Ricket

1
是的,这取决于游戏。但是他要求提供HTML5,而您的答案主要是关于Flash和DOM级别1的:)如果他想进行前沿的HTML5开发,请不要引诱他。
oberhamsi 2011年

12

不久前,当我评估JavaScript引擎时,我最喜欢的是Crafty:

http://craftyjs.com/

我不得不考虑很多选择,而我喜欢的其他一些选择是:

http://easeljs.com/

http://www.limejs.com/

http://code.google.com/p/casualjs/

(顺便说一句,最初看上去很漂亮的另一个选项是http://impactjs.com/,但考虑到它要花钱,而我看过的其他选项是开源引擎,因此存在一些明显的遗漏,例如无法在其中附加显示元素。等级制)。


更新:自从我发布答案以来已经快两年了,情况略有变化(这一个新兴的技术领域。)尽管Crafty仍然是一个不错的选择,但在过去的一年中,EaselJS取得了很大的发展势头(尤其是考虑到Adobe跳上EaselJS火车。)我将为以后的项目切换到该工具(另请注意,它有一个新网站


你今天有什么建议?4年后
Pooya Estakhri 2014年

1
好吧,更新是从1.5年前开始的,我仍然建议这样做。
2014年

7

影响游戏引擎(JavaScript)的梦幻般的2D,瓷砖/基于精灵的游戏。该网站在描述其优点方面做得并不出色,但是一旦您浏览了出色的文档,就会发现其中涵盖了多少内容:

  • 拼写
  • 碰撞检测
  • 关卡编辑
  • 资产管理
  • 音讯
  • 输入和控制
  • 磁贴创建和管理
  • 分层
  • 动画
  • 性能(锁定为帧速率)
  • 跨浏览器支持和抽象
  • 托管
  • 嵌入
  • HUD支持

我真的不能提供详尽的清单,因为它功能齐全。缺少的一件事是创建游戏菜单和UI(例如设备管理器等)的能力,但据说它在待办事项列表上。


4
不幸的是,效果引擎似乎被完全抛弃了。
Letharion

6

我保持画布的2D游戏引擎名为JawsJS - http://jawsjs.com/

来源@ https://github.com/ippa/jaws

悬崖笔记:

  • 可读的文档代码
  • 12个以上捆绑的记录示例
  • 有用的构造函数,例如Sprite(),SpriteSheet()和Animation()
  • 游戏状态-游戏的各个部分以获得更好的组织代码
  • 资产-下颚将在游戏开始前预载您的所有资产
  • 不依赖其他任何JavaScript库
  • 以多年开发Ruby游戏库Chingu的经验教训为基础


4

我最近一直在做这方面的研究,所以让我筹集$ 0.02:

PlayN是Google的跨平台库,可将Java到Javascript / Flash / Android的面向对象游戏进行编译。它将处理JSON(AJAX),数据模型,并具有用于更新和呈现的合理语义。非常酷的东西。

处理是针对设计师和艺术家的易于使用的库。它非常简单易用,可以为您带来出色的效果。我已经将Java版本用于科学建模,并且使用起来很愉快。3D场景将需要WebGL,但2D场景无需使用WebGL。

Three.js有一些很棒的演示。它需要WebGL,但结果似乎值得。在线上也有一些现有示例

这是我个人链接转储中与WebGL相关的其他一些项目:





1

Pixie插件

Contrasaurus的创造者已经发布了许多单独的组件!!!

他们有执行矩阵转换画布抽象和许多其他有趣事情的代码。

他们的代码很棒,他们的真的很有用。




1

我通常使用颌骨js,因为它很容易设置并在几分钟内开始开发游戏。它有很多非常有用的默认类(Tilemap,Viewport,Sprite和其他),这些类对游戏开发很有帮助。


1

您实际上有很多,但是首先主要取决于您要寻找哪种游戏引擎。我可以给您一些最值得注意的参考。

2D游戏引擎

  • 目前,Cocos2D趋于流行一些。我最近在Stackoverflow上看到了Cocos2D问题。
  • Impact,您可以在官方网站上看到一个基准测试。

3D游戏引擎

Mozilla基金会一直在开发名为Paladin的3D游戏引擎。我猜这真的不是Mozilla带来的伤害。





0

来自Scirra的Tom,我们是一个由2人组成的团队,他们创建了HTML5游戏制造商Construct 2。(提供免费版本)。

您可能要考虑像我们这样的引擎,因为它为您做了很多工作。例如,您自己在代码中进行冲突可能会非常棘手(想想多边形冲突)。使用Construct 2可以轻松实现列表中的所有内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.