Questions tagged «javascript»

“ JavaScript(有时缩写为JS)是一种基于原型的脚本语言,是动态的,弱类型的,具有一流的功能。它是一种多范式语言,支持面向对象,命令式和函数式编程样式。” 来自维基百科。http://en.wikipedia.org/wiki/JavaScript

3
在线棋盘游戏引擎
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想创建一个棋盘游戏的在线实现。我可以使用什么引擎来编写游戏并使尽可能多的人容易使用它? 我希望它可以被广泛访问,因此最好将用户界面运行在浏览器中,而不是在单独下载的应用程序中运行。同样,它应该是跨平台的,而不仅限于一个平台。纯JavaScript / HTML是最好的,因为尽管Flash或Java也可以接受,但那样一来,它也可以在iPad上使用。Silverlight没有市场渗透力(例如,我没有安装),而且XNA太有限了。 更好的其他功能包括良好的聊天和社交功能(或与其他聊天或社交网络系统集成),排行榜或锦标赛系统,以及易于集成的机器人,以在周围没有足够的人类玩家时提供AI对手。游戏计时器,以使人们以合理的速度移动,也是很好的。保存游戏记录,并允许人们重播和查看记录以供研究,这也很好,尽管我并不期望太多,因为这些类型的功能只会出现在专门为象棋或围棋之类的游戏引擎中。 使用自由/开源软件将是一个很大的优势,因此我可以自己扩展它,尽管封闭的或托管的解决方案如果可以提供足够的上述功能或提供某种扩展功能的方法,则可以接受。 是否有满足我需求的此类系统?或即使不是完全匹配的,也很接近的东西? 一些不能完全满足我需求的类似系统包括: Yahoo Games,它是基于Web的,但是我不能为此编写自己的游戏(或该类别中许多类似服务器中的任何一个)。 数量是基于SVG和XMPP构建的。它是开放源代码,旨在成为一个开放标准,支持bot等,但是它需要单独下载客户端,并且似乎不再积极开发或使用。 SuperDuperGames,这是一个开放源代码的在线系统,用于执行回合制(通过邮件播放的方式)游戏。也就是说,它不是实时的或实时的,而是您在第二天左右提交您的举动,并等待某人提交他们的举动。这是一个活跃的社区,但我希望可以在几周或几个月内就可以现场玩游戏。

1
形状(矩形)如何在四叉树中工作?
有人告诉我,四叉树是我的游戏的理想数据结构,但是我在理解形状在四叉树中的工作方式时遇到了麻烦。 我正在用JavaScript进行此操作,但我认为这些问题可能适用于任何语言的四叉树。 我想我最了解基本(x,y)点和点插入在四叉树中的工作原理,并且我可以在纸上做到这一点。 这是我尝试点的JSfiddle。 除了一个案例,我的分数测试按预期进行。 但是,当涉及矩形等形状时,我的困惑就开始了。当从具有形状的四叉树中检索时,它会检查形状的每个点以及它们落入哪些节点?当形状插入接受每个形状的(x,y,width,height)参数时,形状插入甚至如何工作?它是否使用起点的宽度/高度来计算其他角点,然后将其分配到适当的节点中?如果插入的形状跨越四个节点,该形状的数据是否保存到所有四个节点中? 当检索方法接受形状作为参数(x,y,width,height)时,实际上是怎么回事?是否首先查看形状要插入到哪个节点,然后检索这些节点的所有对象? 我有一个使用shape的JSfiddle,但是我对测试结果完全感到困惑。我正在收到重复的对象! 例如,红色方块等效于我输入到检索方法中的参数。我认为,由于这个红色正方形跨越了所有四个节点,因此它应该返回四叉树中的每个对象!但事实并非如此,而且我在合理化返回结果方面遇到了麻烦。目前,我还有许多其他测试已被注释掉,但是您可以取消注释并运行它们以查看更令人困惑的结果! 就像说,如果我想返回四叉树中的所有点,我该怎么做?使用形状的整个边界范围的检索方法?例如,retrieve(0,0,canvas.width,canvas.height)? 我正在使用的JavaScript QuadTree库已被其他各种来源引用,因此,我认为实际的实现是正确且信誉良好的。 我认为我的许多困惑可能源于对四叉树术语的误解。就像,为什么当“点”也具有width / height参数时,为什么用边界而不是尺寸?是约定俗成的问题还是它们的完全不同的概念? 谢谢你的时间!

3
随着游戏的进行,我如何在攻击浪潮中缩放敌人的数量和挑战?
我目前正在制作一个防御游戏,敌人会生成并攻击玩家的军队。除了只有一个级别外,它类似于塔防游戏。敌人将继续产卵,直到最终用户死亡或他调遣足够大的部队以消灭立即产卵的任何敌人(希望这足以挑战不会发生这种情况)。 目前,我正在努力解决的问题是,如何使这款游戏变得越来越困难,以及敌人产生的可能性最终最终达到100%。 到目前为止,我有类似以下内容 if(Math.random() < 1 - (1/elapsed_time) && spawnTimer <= 0 ){ spawnEnemy() spawnTimer = rand(); // random number between 1 and 3 } 但是似乎一开始就不太统一。目前,我仅生成一种类型的敌人,这种想法是随着时间的推移也会生成更强悍的敌人。 我还认为我需要将随机数spawnTimer更多一些,并随着时间的推移而使速度更快,但是我只是看不出我对整个部分的逻辑面貌有所了解。有人能帮助您大致了解这种公式吗? 我目前正在使用javascript编写游戏,但是显然它更多地是关于这个概念的。

5
弹球游戏的2D碰撞检测
到目前为止,在以前的游戏中,我使用带有框的简单2D碰撞,然后在像素级别检查碰撞。 如果要在几乎很多帧中进行弹球游戏,那么球将与墙壁或其他表面接触,那么还有其他方法吗?

1
gluLookAt如何工作?
据我了解, gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 等效于: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); 但是当我打印出ModelView矩阵时,对的调用glTranslatef()似乎无法正常工作。这是代码片段: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

3
基于实体组件系统的引擎
注意:我正在用Javascript编程,但是在大多数情况下,它应该与语言无关。 我正在考虑将引擎转换为基于ECS的引擎。 我有基本的想法(注意:这是错误的,请参见我的回答): 实体是游戏对象。 组件是可以“粘合”到实体的功能(reactToInput())或状态(position)的一部分。 系统具有它们管理和更新的实体的列表。 但是,我不确定我是否可以获得实现和一些细节... 问题:系统可以在不同种类的实体上运行吗?我通常以Scene在引擎中称为类的示例为例,它现在也将用于此目的。场景是所有可以渲染,更新,影响渲染(灯光)的对象的容器,甚至将来甚至可能是2DSoundEmitter对象。它具有一个高级界面,因此用户无需担心他正在播放的对象的类型scene.add()以及所有类似的东西。 我意识到这Scene可能是一个系统。它接受实体,进行存储,然后可以调用其更新方法,甚至可以进行一些状态更改。但是,有一个问题:如上所述,Scene可以为不同类型的对象喂食!例如,在场景中既包含可渲染对象(“可绘制对象”)又包含灯光的情况下,我该怎么办?互动之前,我应该让它进行类型检查吗?或者,我应该在更低的层次上解决它:制作一个LightSource可以添加到任何对象的组件,并且灯光将仅仅是具有LightSource和Position组件的实体。可以接受吗? 另外,仍然使用常规继承和传统类是否是一个好习惯?例如,我只是不知道我Renderer会是什么!它不是一个系统,因为它的唯一功能是获取摄像机和场景,渲染所有内容并应用效果(例如阴影)。它还管理游戏的上下文,宽度和高度,进行翻译……但是它仍然不是系统! 编辑:您是否可以链接在ECS上找到的任何资源?我很难找到好的。

4
有没有办法提高n个对象系统的碰撞检查效率?
我正在制作一个包含许多屏幕对象的游戏,其中一个是玩家。我需要知道哪些对象在每次迭代中都发生冲突。 我做了这样的事情: for (o in objects) { o.stuff(); for (other in objects) if (collision(o, other)) doStuff(); bla.draw(); } 这个有O(n ^ 2),我被告知是不好的。我如何更有效地做到这一点,甚至有可能吗?我在用Javascript编写,n通常小于30,如果保持不变,会不会有问题?

3
在两点之间的线上获取点
我正在用JavaScript制作一个简单的太空游戏,但现在我遇到了有关向量的难题。 游戏视图在2d网格上自上而下。当用户单击网格时,太空飞船将飞到该地点。 因此,如果我有两点要点: { x : 100.2, y : 100.6 }; // the ship { x : 20.5, y : 55.95 }; // the clicked coordinates 如果游戏循环以每秒60次迭代的速度滴答作响,并且期望的飞船速度为每滴答0.05点(每秒3点),那么我如何为游戏循环的每个滴答计算新的飞船坐标集? ps:我不想考虑惯性或影响船的多个向量,我只想让船停下它正在做的任何事情(即以一种方式飞行)并以静态速度移动到单击的坐标。

1
为什么V8不能与SDL线程一起运行?
我能够将V8与我的游戏进行编译和链接,并且代码解释正常。但是我想划分代码,游戏循环应该在一个线程中存在,脚本引擎应该在游戏循环的第二个线程中运行。我正在使用SDL,因此尝试使用此代码生成新线程 SDL_CreateThread(ScriptingEngine::SpawnMain, NULL); 以下代码是我的测试脚本引擎: namespace ScriptingEngine { v8::HandleScope handleScope; v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(); v8::Persistent<v8::Context> context; void Setup() { // TODO: bind functions to global // ... context = v8::Context::New(NULL, global); } int SpawnMain(void *arguments) { v8::Context::Scope scope(context); v8::Handle<v8::Script> script = v8::Script::Compile( v8::String::New("'Hello World'") ); v8::Handle<v8::Value> result = script->Run(); context.Dispose(); return …
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.