- 博客(127)
- 资源 (1)
- 收藏
- 关注
原创 制作一款打飞机游戏84:游戏视觉优化
我们需要在玩家近距离击杀敌人时,通过视觉提示明确告知玩家获得了2x/3x/4x的分数加成。:玩家关注游戏玩法,但开发中大部分时间花在基础视觉呈现上。:使用精灵图代替动态绘制文字,牺牲少量显存换取更好的性能表现。"游戏永远不会真正完成,只会被发布" - 我们需要在完美主义和实际发布之间找到平衡点,避免项目陷入无限优化的泥潭。我们通过倍数提示和燃烧效果,让玩家直观感受到自己的操作成果。当大型敌人生命值低于炸弹伤害值时,我们使其进入"燃烧"状态,为玩家提供明确的视觉提示。
2025-07-30 12:32:50
248
原创 制作一款打飞机游戏82:炸弹动画
我们先回顾了炸弹的静态外观:主体是一个半球形(dome)。边缘有若干条放射状弧线(streaks)。我对弧线数量做了微调:原来是奇数条,中心会多出一条,看着别扭。改成 8 条后,整体更自然,去掉了“机械感”。
2025-07-17 13:01:21
465
原创 制作一款打飞机游戏81:炸弹
经过一系列的尝试和调整,我们终于制作出了一个令人满意的炸弹爆炸特效。这个过程不仅锻炼了我的视觉效果制作能力,也让我对游戏开发有了更深入的理解。
2025-07-16 12:25:24
187
原创 制作一款打飞机游戏80:道具碰撞
通过今天的修改,我们的游戏物品拾取功能得到了显著的增强。我们实现了物品的弹射效果、添加了不同类型的物品、支持了一次性生成多个物品、实现了物品拾取功能以及磁吸效果。在下一集中,我们将继续完善这些功能,并添加爆炸效果等更多游戏元素。
2025-07-14 13:02:06
250
原创 制作一款打飞机游戏79:道具拾取系统
道具拾取系统概述道具拾取系统可以分解为三个阶段:生成道具、更新道具、绘制道具。这是每个游戏对象都需要经历的基本流程。但在深入之前,我想先分享一下在开发过程中遇到的一些挑战和决策过程。挑战与决策最初,我考虑过复用现有的系统来实现道具拾取,比如利用粒子系统或者敌人系统。粒子系统虽然动画效果丰富,但它更适合用于短暂的屏幕效果,而非长期存在的、与玩家交互的对象。而敌人系统虽然拥有复杂的行为逻辑,但道具的移动方式和行为模式与敌人截然不同。
2025-07-11 12:47:36
578
原创 制作一款打飞机游戏78:游戏选项
在实现新的射击效果时,我注意到如果每帧都重新创建选项,那么我们就无法将子弹附加到这些选项上。因此,在绘制飞船之前,我们需要先绘制一些位于飞船下方的选项,然后再绘制位于飞船上方的选项。我认为添加选项是一个好主意,因为它可以让我们的游戏角色(精灵)变得更大,从而提供更多可以动画化的内容。目前我们的射击系统相对简单,但随着选项的增加,我们需要考虑如何实现更复杂的射击策略。我希望这个系统具有通用性,以便我们可以将其重用于其他地方,比如制作更大的BOSS战,让BOSS精灵也有选项,并且这些选项也能围绕BOSS旋转。
2025-07-10 17:54:21
320
原创 制作一款打飞机游戏76:分数显示
print("Score: " .. to_string_32bit(score), 120, 12, 7) -- 调整坐标以适应新字体。local score_x = 128 - score_length(formatted_score) -- 右对齐计算。print("Score: " .. score, 2, 2, 7) -- 在坐标(2,2)处,使用颜色7显示得分。len = len - (#score_str - 3) * 2 -- 每增加一个空格组,宽度减少2。
2025-07-03 12:46:50
758
原创 制作一款打飞机游戏75:原型测试
原型A:被认为过于平凡,需要增加一些新鲜元素。原型B:虽然收到了正面反馈,但并不喜欢这种连锁收集的风格。原型C:虽然系统较为复杂,但大家对其独特的得分机制和控制方式表示了兴趣。同时,随机道具掉落(RNG)受到了普遍批评。
2025-07-01 12:57:12
260
原创 制作一款打飞机游戏74:游戏原型
我想尝试在游戏中实现类似的效果:主角飞船射出大量导弹,导弹之间形成复杂的轨迹和爆炸效果,非常壮观。受到社区讨论的启发,我想尝试一种不同的射击节奏:大部分时间按住射击按钮,偶尔需要快速移动时松开按钮。目前的射击感觉还不错,但我想增加一些能力,比如能够攻击不在当前位置的目标。游戏中有一个未使用的按钮,我想让它发挥酷炫的作用。我想引入一些围绕主舰飞行的小飞机或无人机(选项),它们可以增加射击的分散性,并在聚焦火力模式下冲到前面进行攻击。经过一系列的清理和设置工作,我制作了三个原型,并测试了它们的效果。
2025-07-01 12:16:34
297
原创 制作一款打飞机游戏73:子弹定位
接下来,我想讨论一下重定位问题。但经过思考,我决定暂时不解决这个问题,因为现有的系统已经能够在一定程度上满足需求。然后,我想为敌人添加射击声音。考虑了几种方案后,我决定在大脑中添加一个命令来播放射击声音。首先,我们要解决一个长期搁置的问题,那就是子弹的起点问题。我想讨论一下,并尝试解决它。
2025-06-16 12:43:57
145
原创 制作一款打飞机游戏72:取消功能
子弹取消今天我想做两件事:一是子弹取消,二是子弹封印。我想同时做这两件事,因为我们已经有了一些基础设置,可以让这些功能实现。对于某些敌人,如果我们将它们击倒,那么它们已经射出的所有子弹都会消失。我们已经做了一些设置来实现这一点。。
2025-06-13 12:42:51
480
原创 制作一款打飞机游戏71:投影
因此,我们为每个敌人引入了阴影大小(sH)和阴影高度(shH)两个参数,并考虑加入一个效果(FX)参数来描述敌人的不同移动方式。我们注意到一个绘制顺序的问题:后面的敌人被绘制在前面敌人的上面,这看起来很奇怪。我们根据敌人的阴影参数来绘制阴影,并在敌人编辑器中进行了测试和调整。阴影效果看起来不错,特别是大敌人的阴影,让敌人看起来更加逼真和吓人。虽然目前阴影功能在大脑编辑器中不是必需的,但考虑到未来可能会有与阴影相关的敌人行为,我们还是提前进行了设置。在骨架编辑器中,可以更方便地调整敌人的生成位置和阴影效果。
2025-06-12 12:45:15
442
原创 制作一款打飞机游戏70:死区
我觉得“死区”这个名字有点奇怪,因为在这个区域敌人并不会“死”,反而更像是“活区”。我想设置为8,虽然有点窄,但我觉得足够了,因为我们的垂直空间并不多。不过,大敌人的阴影有点太小了,也许我们可以在敌人函数中定义阴影的大小。如果子弹击中敌人时,敌人的y坐标大于“死区”,那么我们将对敌人造成实际伤害。我也想添加一个叠加层,显示敌人的当前x和y位置,这样我们在后面制作boss动画时就可以知道它的确切位置了。你看,我们正在攻击敌人,但是其他敌人并没有受到伤害,只有它们穿过“死区”时才会受伤。让我们试试这个效果。
2025-06-11 12:45:42
818
原创 制作一款打飞机游戏69:编辑器升级
我只想看到敌人,当我在挑选合适的动画时,我只想确保我选对了动画,而且,我也许想预览一下动画的速度。所以,之前的问题是在这个移动函数(move function)里,当我移动东西的时候,如果我点击,它会把生成位置(spawning location)移动到我点击的位置,但那并不一定是敌人的位置。然后,在更新移动的时候,当我点击时,我获取鼠标位置,计算敌人从其原点移动的偏移量,我获取这些值,从鼠标位置中减去它们,这给了我一个新的、更新后的生成位置,但它不是我点击的位置,而是另一个位置。
2025-06-10 12:24:39
786
原创 制作一款打飞机游戏68:地面敌人
通过添加一个类型标志,我们可以在扩散模式中实现爆发的效果,而无需创建单独的模式。在Brain Edit中,我调整了敌人的移动和碰撞检测逻辑,以确保地面敌人正确移动并不与玩家飞船发生碰撞。同时,我修改了绘制顺序,使地面敌人始终位于空中敌人的下方。我还提到了一个问题:有时我们需要调整子弹的速度,但又不想创建全新的模式。因此,我在扩散模式中添加了一个速度调整功能,允许我们在不改变模式结构的情况下调整子弹的速度。在实现了基本的属性设置后,我开始填充现有敌人的数据。今天,我们要对我们的敌人系统进行大量的扩展。
2025-06-09 12:26:52
365
原创 制作一款打飞机游戏67:更好的瞄准
它根据敌人的移动角度,结合动画速度的差异,选择一个中间值来计算目标角度。在“大脑编辑器”中,我们执行了所有的敌人行为命令。在“敌人函数”中,我们实际上执行了敌人的动画、移动和速度变化等行为。此外,动画速度和方向的代码块几乎是完全相同的,这让我觉得它们可以合并。接下来,我想添加一个“位置移动”命令,让敌人能够直接移动到屏幕上的指定位置。我实现了一个简单的函数,但如果敌人已经接近目标位置,它可能会在那里停留一会儿,这不是很理想。在动画某些敌人时,我发现它们的移动方向有时会出错,导致敌人围绕目标旋转。
2025-06-06 12:44:21
225
原创 制作一款打飞机游戏66:敌人镜像
比如,如果敌人类型是负数,我们就把它转正,并把这个敌人作为镜像敌人。但这样做会有很多问题,我们得一一解决,因为我们需要让编辑器以及后续的游戏能够处理负数的敌人编号。现在,我们需要在游戏内实现镜像功能。我想避免的是,在时间表层面做太多决定,特别是我不想增加一个第六项内容,这样会让每个时间表的信息变得过于复杂。但接下来,我们还需要确保在游戏的其他部分,比如使用鼠标更改敌人类型或大脑覆盖时,镜像功能也能正常工作。经过一系列代码调整,我们终于让敌人的轨迹在编辑器中正确显示,并且游戏内的敌人也能按照预期的方向移动。
2025-06-05 12:59:30
316
原创 制作一款打飞机游戏65:时间表修正
我们将这些问题标记为“最终修正”,并将它们移到下一个目标中。我列出了一个详细的待办事项列表,并尝试将它们结构化,以便更清楚地知道我们在程序的哪些部分工作。
2025-06-04 13:04:54
351
原创 制作一款打飞机游戏62:添加音效
在最近的一些采访中,我了解到音乐对关卡设计的重要性。虽然在关卡编辑器中无法直接听到音乐,但我们可以添加一些网格线来帮助我们了解音乐的节奏。我们在关卡编辑器中添加了一些网格线,比如中心线和边缘线,以便更好地了解关卡的布局和音乐节奏。我们调整了一些音效,比如射击音效,让它听起来更像机枪声,以适应可能同时发射多颗子弹的情况。Sebastian做得很好,他确保了音乐中始终有一个空闲的通道,以便我们可以同时播放音效。同时,我们在屏幕上显示一个小的保存图标,而不是弹出大的保存提示,以提供更无缝的体验。
2025-05-29 12:58:21
591
原创 制作一款打飞机游戏57:镜像散射
现在,我们已经有了一个基于角度生成子弹数量的模式,我想加入速度和时间参数。这意味着散射子弹不仅可以向左散射,还可以向右散射,从而创造出更加对称和复杂的子弹模式。目前,散射子弹主要只改变了角度,但我们可以添加速度和时间参数,使其变得更加灵活。在这个过程中,我遇到了一些挑战,比如如何避免生成过多的重叠子弹,以及如何处理旧模式与新功能之间的冲突。接下来,我尝试创建了一个更密集的散射模式,并通过调整速度和延迟时间,使其看起来更加有趣和复杂。通过组合不同的参数,我创造出了许多新奇的子弹模式,比如螺旋模式和迷宫模式。
2025-05-26 13:09:39
424
原创 制作一款打飞机游戏56:爆裂子弹
函数中,当我们创建敌人并射击时,我们会将子弹添加到敌人的子弹队列中,然后处理这个队列,将子弹发射出去。在创建子弹时,我们会保持原始子弹的角度,但会给每个子弹添加一个等待时间。现在,我们可以将这些不同的模式修饰符叠加在一起,它们的效果会相互叠加,让子弹的数量和角度都发生变化,是不是很酷?但是,我又遇到了一个问题:当敌人移动时,子弹会在敌人原来的位置生成,而不是在敌人当前的位置。为了解决这个问题,我们需要在处理子弹队列时,将子弹的位置设置为敌人的当前位置,并计算发射角度。现在,我们来实现这个子弹队列。
2025-05-26 12:35:02
917
原创 制作一款打飞机游戏55:扩散
我们之前在模式编辑器中为每个子弹设置了一个固定的角度,但这导致我们需要为每种类型的子弹创建不同的模式,这显然不太高效。在“大脑编辑器”中,我们可以指定发射哪种类型的子弹以及它的角度。这样一来,我们就无需为每种角度的子弹创建单独的模式了。这样,在模式编辑器中,我们只需要设置一个基础角度,然后由“大脑编辑器”来决定子弹的具体角度。我们可以通过在“大脑编辑器”中将角度设置为-99来标识一个瞄准子弹,并计算目标与子弹之间的角度。这个修饰符不会直接创建子弹,而是引用其他子弹模式,并在一定百分比的时间内发射这些子弹。
2025-05-23 22:54:43
513
原创 制作一款打飞机游戏53:子弹样式
我们想要创建一个子弹模式系统,其中包含多种模式模块,这些模块可以相互叠加和修改,以创建出复杂的子弹图案。例如,一个基础模块可能只是一个简单飞向一个方向的子弹,而一个修饰符模块则可以将这个基础模块变成多个子弹或改变它们的发射方向。在开始之前,我想修正一下,因为我观察到在其他射击游戏中有一个我想复制的简单行为。我们有静态射击、瞄准射击和快速射击,但在快速射击之前或之后,还有一种行为,我们可以称之为3a和b。在设计和实现过程中,我遇到了一些问题,比如精灵之间的重叠和空间不足。
2025-05-21 12:22:07
257
原创 制作一款打飞机游戏52:子弹模式
到目前为止,我们已经完成了很多工作:. :动画系统已经存在并整合完成。. :我们使用了统一碰撞盒逻辑。. :涵盖了HP、Brain、动画、碰撞盒等内容,一切都被数据库系统管理。不过,还有一些工作需要完善,比如当前的计划生成系统(或称为编辑器)没有良好的预览功能,特别是与“大脑”(敌人的行为系统)相关的部分还没有很好地链接起来。
2025-05-20 13:19:22
345
原创 制作一款打飞机游戏51:boss行为
我们现在的系统可以创造出非常有趣的行为模式,让敌人沿着不同的路径移动,甚至可以跟随玩家。今天,我们想测试一下这个系统,看看是否能创造出更复杂的行为,比如适用于BOSS战的行为。
2025-05-19 13:03:57
480
原创 制作一款打飞机游戏50:敌人跟随
在实现追踪功能时,我们遇到了一个问题:当使用克隆命令时,每个克隆体都会有自己的覆盖层,这让我们有点难以处理。为了让敌人能够平滑地转向玩家,我们需要计算敌人当前角度与目标角度之间的差值,并根据这个差值来调整敌人的角度。但是,在计算角度时,我们遇到了一个度的问题:当角度跨越度时,计算会变得复杂。因此,我们决定当敌人靠近玩家到一定程度时,就停止跟随,而是继续沿着之前的轨迹移动。为了解决这个问题,我们决定当角度差值的绝对值大于度时,就通过加减度来调整角度,以确保敌人总是选择最短的路径来转向玩家。
2025-05-16 13:01:53
351
原创 制作一款打飞机游戏49:敌人抖动
蛇形敌人如果你玩过一些射击游戏(shmups),尤其是老式的射击游戏,你可能会遇到一种敌人,它们像蛇一样移动。我想在我们的游戏中实现这种效果。这种动态的感觉非常棒,我们完全有能力通过动画来实现它。
2025-05-15 12:55:48
548
原创 制作一款打飞机游戏48:敌人转向
我们还设置了一个简单的逻辑,当闪光效果的年龄(存在时间)超过一定值时,就将其删除。为了让转向动作更自然,我们还引入了动画速度(ASP)和动画方向(ADR)的概念,使敌人的移动更加平滑。当我们执行这个命令时,敌人会发射一个子弹,尽管现在我们还不知道子弹的具体类型和参数。我们通过添加一个可移动的红色线条来实现这一点,当代码执行到某一行时,这条线就会移动到对应的位置。目前,敌人还不能射击,这显然是不行的。有趣的是,我们创造了自己的编程语言,现在还需要为它编写调试工具,以确保我们编写的代码没有bug。
2025-05-14 12:38:03
294
原创 制作一款打飞机游戏47:跳转
虽然现代编程中很少使用这种命令,因为它可能会导致代码难以理解和维护,但在我们的游戏中,它可能会有一些有趣的用途。例如,在BOSS战中,我们可以将BOSS的不同阶段分成多个“大脑”(Brain),然后在每个阶段的末尾使用“跳转”命令切换到下一个“大脑”。但上次我们遇到了一些问题,我们发现在这个编辑器中编写代码有时有点困难,因为当你想要在某行之间插入内容时,你不得不删除一切然后重新构建。现在,只有当光标停留在某行时,该行的末尾才会显示加号按钮,这样我们就可以方便地在那里插入新行了。
2025-05-13 13:44:43
485
原创 制作一款打飞机游戏46:攻击模式
接下来,我们要创建一些测试敌人行为,并以此为灵感来扩展我们的“脑力”。这样,当游戏中出现问题时,我就能立即看出是哪个敌人引起的。我准备了一些临时的敌人精灵,并为它们创建了动画帧。我注意到,在实际使用这些工具时,可能会遇到一些问题,我们需要根据实际情况进行修复和改进。在创建敌人精灵的过程中,我发现了一些工具上的不便之处。在过程中,我发现了一些需要改进的地方,比如动画的流畅性、速度控制的精确性等。我还添加了一个新命令。(Animate Speed),用于动画化敌人的速度,使它们的移动看起来更加自然。
2025-05-13 12:52:08
682
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人