游戏作品合集

本专题仅收录我参与制作的一些完成度尚可且具备一定游戏性的作品
欢迎大家下载体验并在评论区留言讨论~

本站的所有作品及附属资源仅供学习交流使用,未经允许严禁用于任何商业用途!

阅读更多
速通自研游戏引擎 - 深入浅出 Boidmachine

速通自研游戏引擎 - 深入浅出 Boidmachine

Boidmachine 是个什么东西?

Boidmachine 最初的构想是作为一套后端无关的游戏开发框架,用于教学目的和小游戏制作,最早实践于《提瓦特幸存者 - 双人对战版》。随着2024年CiGA GameJam的到来,一个十分大胆的想法冒了出来,我决定利用半个月的空闲时间,将这个尚未开发完善的框架魔改为游戏引擎内核,并配套前端可视化编辑器,作为这次限时开发挑战赛的生产力。
从工程角度讲,这确实是一个十分冒险的行为,在前前后后一周左右的有效工作时间内,从头开始搭建全套游戏开发工具链,这意味着我几乎没有时间试错并且完全覆盖地测试,但没有什么比这种限时开发更刺激了!事实证明我做到了,一个十分保守的最小实现游戏引擎套件赶在赛题公布当天的清晨完工,并在此基础上完成了我们的作品《Unlimited Cage》
本文以此为主题分享Boidmachine的设计思想和实现细节,诚然,游戏引擎是一个非常庞大且有深度的话题,我无法确保这种极限开发过程中的解决方案是最佳思路,但是这至少是相对稳妥且“够用”的;注意,为了便于理解和讲述,本文中的代码只摘取部分核心片段简化后展示,或是无法直接复制使用的伪代码,但还是希望本文可以对正在学习和实践引擎开发的同学们起到抛砖引玉的作用。

阅读更多

程序化游戏地图生成浅析(一)

使用 程序化内容生成(PCG) 的优势:

  • 无限地图内容:两个维度,一是单次游玩的地图内容趋近于无限,即无限大世界;二是可以生成近似无限多的世界,提升游戏的可重复游玩性;
  • 节省开发成本:开发者只需要定义生成规则来描述世界最底层的机制,而不需要从上到下事无巨细地完成玩家可游玩的全部内容;
  • 挑战与变化:使用程序生成地图可以很好地控制随机性,给玩家创造挑战的机会,更具趣味性;
  • 动态难度调整:使用规则描述世界生成可以站在更高的维度去调控世界资源,更好地平衡游戏难度或创造特殊难度的世界。

在大多数情况下,程序化生成地图的游戏也并不能完全地摆脱传统的手工制作的部分,即便是程序化内容生成主导的世界中,也存在细粒度的部分需要开发者进行人工设计(如 Minecraft 中的村庄等内容),这同样也可以使用更细致的生成规则来描述。

阅读更多

Boids集群算法浅析与实践

鸟群算法 Boids是模拟鸟类群集行为的人工生命项目,由克雷格·雷诺兹(Craig Reynolds)于1986年开发。Boids 是涌现行为的典例,其复杂性来自于遵循一系列简单规则个体的相互作用。

Boids 通常用于计算机图形学,提供鸟群和其他生物(如鱼群)的逼真表现:

  • 《史丹利和史黛拉: 破冰》是第一部利用了 Boids 模型的动画片;
  • 《半条命》中,游戏结束时出现的类似鸟类的飞行生物就使用了该模型;
  • 《蝙蝠侠归来》电影中,蝙蝠群和成群的企鹅行进穿过哥谭市的街道时使用了该模型;
  • 《黑客帝国》/《重装前哨》中,章鱼外形的哨兵机器人的集群特效使用了该模型。

分离(左) - 聚集(中) - 对齐(右)

阅读更多
《提瓦特幸存者》双人对战版游戏开发

《提瓦特幸存者》双人对战版游戏开发

在2023年11月,我开始在B站更新了提瓦特幸存者项目的视频教程,作为《从零开始的C++游戏开发》系列的第一个稍具游戏性的实战项目,代码内容和游戏玩法都极度轻量,只实现了残缺的类吸血鬼幸存者游戏的玩法,近期在相同的技术基础之上,复用进阶版游戏素材,扩展制作了本地双人对战的玩法,提供了更多游戏机制,本文介绍此项目的前因后果和开发思路。

阅读更多

GDC - Storytelling with Verbs:Integrating Gameplay and Narrative

用动词讲故事:整合游戏玩法和叙事

玩家会做什么?

叙事的设计取决于玩家在游戏中做了哪些内容

游戏中的动词决定了玩家在这个世界中的行为方式,从而决定游戏行为,虽然游戏玩法并不会给出明确的情节,但这是我们塑造角色和搭建世界观的初期工作。

阅读更多

EasyX实现镜面反射倒影效果

最近通关了《闪避刺客》,非常不错的游戏,爽快的战斗、宏大但细节拉满的演出与同品类游戏中让人印象深刻。无论是室外还是室内,游戏场景中多次使用了类似下图所示的静面反射效果,用来烘托氛围和叙事;在《刀剑神域》中,也有类似的倒影地面,本文分享使用EasyX实现镜面反射效果的思路。

闪避刺客(左)/ 刀剑神域(右)

在图形学中,一提到“镜子”,最直接的思路一定是帧缓冲,比较通用且简单的思路就是使用额外的摄像机渲染场景到纹理中,然后再将其贴到场景中的物体上。在EasyX中,我们可以使用IMAGE对象实现帧缓冲纹理,并借助SetWorkingImage函数切换当前的渲染目标,整体流程如下图所示:

镜面反射场景渲染流程

阅读更多

EasyX游戏帧动画效果处理

通过对一组动画帧IMAGE对象色彩缓冲区的操作,实现了动画帧翻转、无敌帧闪烁、冻结三种常见的游戏效果,本文介绍这三种效果的相关概念和实现思路。程序中所使用的帧动画素材为提瓦特幸存者进阶版中分享的素材,需要测试的小伙伴可以在文末找到相关素材的下载链接。

原始动画和三种效果

阅读更多

新手教程 - 如何发布你的EasyX游戏

有小伙伴在交流群里问起如何发布自己的游戏,才意识到还有这个问题。之前的视频教程只是讲解了如何在VisualStudio中编写EasyX相关的代码,并没有提到如何将完成的项目发布的方法,这种问题在很多教程中都是默认学习者已经掌握了,但实际情况是如何打包发布涉及到开发工具使用和编译选项等诸多概念,想来自己初学时也踩过很多坑,便整理一下相关的内容,供新手小伙伴们参考。

群聊记录

本文以提瓦特幸存者进阶版的项目为例,以点带面地讲解新手在发布自己的程序时可能遇到的问题和对应的解决方案,本项目开发环境为VisualStudio2022,图形库为EasyX,使用其他开发环境或图形库的C++项目操作相似。

阅读更多