对于我的一个学校项目,我必须使用 Javascript 创建一款游戏。我的 Javascript 经验非常少,因此我真的很困惑如何在游戏中创建多个级别。使用 JSON,我加载供 Mario 行走的块:
createBlocks: function () {
console.log('game -> createBlocks');
$.getJSON('js/boxes.json', function (data) {
data.boxes.level1.forEach(function (blockData) {
this.stage.removeChild(this.block.el);
var block = new Block(blockData);
this.block.push(block);
this.stage.addChild(block.el);
}.bind(this));
}.bind(this));
}
Run Code Online (Sandbox Code Playgroud)
通过函数“createStars”,游戏加载另一个 JSON。我的目标是让游戏切换到另一个级别,每收集到 5 颗星。使用 JSON 创建此内容的最佳方法是什么?
我的块的 JSON 文件创建如下:
{
"boxes": {
"level1": [
{
"x": 0,
"y": 115,
"width": 25,
"height": 25
},
{
"x": 25,
"y": 115,
"width": 25,
"height": 25
}
],
"level2": [
{
"x": 0,
"y": 95,
"width": 25,
"height": 25
} …
Run Code Online (Sandbox Code Playgroud) 我已经写了一个ECS,但我对更新阶段有一些疑问。(在系统中)\n我读过很多文章,但没有找到此类问题的参考。
\n\n为了从 ECS 中获益(例如缓存友好),需要满足以下要求:
\n\n因此,每个系统中应用的逻辑都很好,并且在没有 \xe2\x80\x9cuser 代码\xe2\x80\x9d 时一切正常。\n但是,当我们处理用户代码时(例如用户可以将 C++ 代码附加到一个对象(如 Unity、Unreal)),问题就来了:
\n\n将逻辑添加到组件中会破坏纯 ECS 的优势(以缓存友好的方式对所有相同的组件执行相同的操作),因此恕我直言,这不是一个解决方案。
\n\n有人有解决办法吗?我想知道您在 ECS 实施中如何处理此类问题。
\n\n谢谢!
\nc++ architecture game-development game-engine entity-component-system
我正在创建一个基本游戏,但我的代码中出现键盘响应问题。当你点击开始时,立方体会一直沿着你按下的箭头键的方向移动,但我希望它移动你用箭头键按下的任何方向,如果没有按下任何键,它就会停止。有人可以告诉我我的代码中有什么错误以及如何正确执行吗?
这是代码:
import pygame
import time
import sys
import pygame.event as EVENTS
from pygame.locals import *
import random
print("Welcome to the prototype of rpg game -Made by Adam Pospíchal.")
pygame.init()
sirka = 800
vyska = 800
okno = pygame.display.set_mode((sirka,vyska))
pygame.display.set_caption("RPG GAME")
#PARAMETRE OKNA#
#PARAMETRE OKNA#
#PARAMETRE KOCKY HRACA#
#PARAMETRE MENU#
#farby - RGB#
RM = 255
GM = 255
BM = 0
player_r = 0
player_g = 255
player_b = 0
player_height = 20 …
Run Code Online (Sandbox Code Playgroud) 我在画布上绘制了一个等距网格。它使用 30 度角偏移,我使用一些脚本来绘制基本网格。对于这个网格,我投影了一个具有 40x40 平铺尺寸的平面网格。
gridRows = 10;
gridCols = 10;
tileSize = 40;
gridWidth = gridCols * tileSize;
gridHeight = gridRows * tileSize;
canvasWidth = tileSize * (gridCols + gridRows) * Math.sqrt(3) / 2;
canvasHeight = tileSize * (gridRows + gridCols) / 2;
canvasOffset = tileSize * gridRows * Math.sqrt(3) / 2;
function carToIso(x, y) {
// Convert cartesian (x, y) to isometric coordinates
return [
Math.round((x - y) * Math.sqrt(3) / 2 + canvasOffset),
Math.round((x + y) / …
Run Code Online (Sandbox Code Playgroud) 首先感谢您花时间查看此内容 - 我们感谢您的任何意见!
\n关于我们现在面临的问题:\n在过去的几个月里,我们在 Android 上的游戏应用程序中遇到了随机 fps 下降到接近于零的情况,并且到目前为止尚未成功调试该问题。它完全随机发生(有时在 3 分钟后,有时在 3 小时后),感觉就像冻结一样 - 但实际上 FPS 在仍在运行时下降得非常快。\n我们已经花了相当多的时间使用各种工具进行调试和分析。现在我们希望您能帮助我们并从我们的数据中得出新的结论。
\n版本:
\n线索:
\nperformance android opengl-es game-development unity-game-engine
我很难确定如何将游戏中特定回合的游戏状态转换为代表该回合所采取的动作的有限动作序列。我希望得到关于如何做到这一点的建议。
注意:游戏现已上线!如果有人想尝试,请访问: https: //mystikaze.com
(我最终实现了一种用于存储游戏动作的算法,该算法可能不完全有效,但我认为确实可以保证任何给定回合的动作列表不能被无界/无限长)。
游戏规则相对简单。有一个六角形棋盘,其中六角形属于 2 个玩家。在任何给定的回合中,棋子可能已经存在于棋盘上,已在上一回合中购买,或者它们可以被购买到棋盘上(黄色棋子代表其在本回合被购买到棋盘上)。
这些棋子是“活跃的”,并且仍然可以移动。碎片也可以组合起来,并且仍然保持“活跃”状态。它们可以通过将现有的一块移动到另一块上或通过购买新的块到现有的块上来组合。组合后,目标六角形上将存在升级后的棋子。棋子可以有 3 种强度;X、Y 和 Z。X 与 X 结合得到 Y,X 与 Y 结合得到 Z。
片段可以继续像这样合并并保持“活跃”。一个棋子可以移动到其自己领土内的另一个六角形并保持“活跃”。当一个棋子被移动以捕获其他玩家的六角形时,它就不再是“活跃的”。此后它无法移动,但仍然可以结合。下面的绿色表示不活动的部分。
一个棋子也可以直接召唤到另一个棋子之上,从而产生升级的棋子(如果它已经处于活动状态,则它保持活动状态;如果它处于非活动状态,则它保持非活动状态):
现在,这很容易在游戏状态中表示;只需更新棋子和棋盘的状态以反映当前的真实情况即可。只要理论上允许该移动序列是无界的,就可以很容易地将其转换为一系列移动。碎片可以保持活跃并无限地来回移动。当然,我想限制动作的顺序。这就是我遇到麻烦的地方。我有以下2个动作:
如何将玩家所做的动作转换为有限的动作序列,以代表玩家实际所做的事情,从而达到最终状态?我不知道我是否遗漏了一些东西,但这似乎变得几乎不可能复杂到弄清楚。如果您有棋子在自己的区域内移动并保持活动状态,您可能会认为您可以将移动就地更新到新坐标,而不是向新坐标添加新移动,但如果有另一个移动,其中一块与另一块结合形成一个升级块,它依赖于第一块移动到其第一组坐标?现在就地更新移动坐标意味着第二个组合移动成为常规移动,因为它现在移动到空六角形上,但它应该仍然是组合移动(棋盘状态实际上是已移动到新坐标)。
从概念上讲,应该始终存在可以代表任何操作的有限移动序列。然而,我发现很难弄清楚如何编写一个算法来自动执行此操作。我认为至少可以防止移动的无限性质的算法是说“如果最近的移动不是组合或捕获操作,则更新一个棋子的最近移动,而不是将新移动添加到列表中”。这应该始终导致移动集正确创建游戏状态,并防止无限循环。然而,这仍然可能导致相当多的变动。例如,如果你在一个领土上有 10 个棋子,你可以移动所有 1 个棋子,捕获 1 个棋子,移动剩余的 9 个棋子,将一个棋子与另一个棋子组合,移动剩余的 8 个棋子等等,这可能会导致 10 个棋子的移动次数超过 60 次。如果有一种算法可以把这个问题降低一点,那就太好了,而且我仍然不能 100% 确定即使这个算法也没有一些无法工作的边缘情况。
我是否缺少一种相对直接的方法来解决这个问题?规则必须保持不变,但我愿意接受有关引入新移动类型的建议,如果这也有助于解决问题的话。
我正在将我的游戏从 godot 3 转换为 godot 4。
之前在 godot 3 中,当我使用旋转平台时,我的玩家会在旋转平台向上移动时将几个像素下沉到其中,并在平台向下移动时将其悬停在上方几个像素。我通过在移动平台上打开物理同步来修复此问题。
现在问题又回来了,并且没有同步到物理选项。
我只是想知道这是否是一个简单的修复?或者我应该完全重做移动平台系统?
谢谢。
我是一个相对较新的C++新手,并在游戏行业工作了几个月.我希望重新回到这个行业,并了解一个人需要成为一名非常优秀的C++程序员(主要是因为他们开始制作游戏的竞争力).我想知道网上是否有任何非常好的网站可以帮助解决这个问题.基本上我正在寻找能够帮助我掌握C++概念的东西,并通过练习编程实例帮助我成为一名优秀的程序员.
任何人都可以告诉我,libgdx会像Unity3D一样支持3D,如果可能的话,请告诉我一些基于libgdx 3d的游戏.
game-development ×10
game-engine ×3
android ×2
c++ ×2
javascript ×2
algorithm ×1
architecture ×1
canvas ×1
easeljs ×1
godot ×1
html ×1
isometric ×1
json ×1
libgdx ×1
opengl-es ×1
performance ×1
pygame ×1
python ×1
sprite ×1