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

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

Boidmachine 是个什么东西?

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

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

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

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

阅读更多
面向猛新的小游戏制作 - EasyX 超级马里奥

面向猛新的小游戏制作 - EasyX 超级马里奥

近些日子有同学与我聊起来学校的小学期任务是用 EasyX 做一款超级马里奥,不由得来了兴趣,毕竟在一个月左右的时间内,以大多数同学的编程水平,在只提供了图形接口功能的 EasyX 图形库基础上去实现一个包含渲染、音频、数据存档和物理模拟的一个卷轴关卡游戏,本身的难度还是有的,更何况即便是单个功能可以花费点时间探究予以实现,但当整个程序作为一个具有游戏逻辑的系统时,就考验语法之上的架构能力了,如何使用面向对象进行类的划分,系统之间如何通信进行数据的传递,如何将输入与渲染的结果动态地呈现在窗口中……如果要相对完美地实现这些功能,对编程经验还是有一定的考验的。

念及在初学编程时对 EasyX 的旧情,便想挑战一下,看看现在的自己多少时间可以完成一个功能相对完整的超级马里奥。结果便是差不多花费了总计三天左右,在工作之余的摸鱼时间中、牺牲了部分休息时间,完成了一份有效代码约 1.5K 行,稍具可玩性的游戏程序,想到可能自己在编程过程中的思路可能对使用 EasyX 的初学者具有启发意义,便写下这篇文章,希望借此抛砖引玉。

阅读更多

B站直播间弹幕互动小游戏制作

弹幕游戏开发框架

不久之前做了一个直播间弹幕互动小游戏的开发框架,不过一直没有把相关的内容记录下来,也没有使用这个框架完成一部完整的、具有游戏性的小游戏,所以正好忙里偷闲整理一篇博文,顺带做一款大地图的多人扫雷。

本篇主要对框架的技术设计进行阐述,游戏逻辑等日后有机会再另其一篇文章进行介绍;

阅读更多

Lua 的开源 JSON 解析库 LuaJSONLib

开源了一个 Lua 的 JSON 解析库 LuaJSONLib,基于 cJSON
效率比较高,在关闭嵌套层数限制的情况下,每秒可以递归解析 1500 层 JSON 数据
项目链接:https://github.com/VoidmatrixHeathcliff/LuaJsonLib

API 总览

名称 功能
value = Load(str) 将已编码的 JSON 对象解码为 Lua 对象
value = LoadFromFile(path) 将指定路径文件中已编码的 JSON 对象解码为 Lua 对象
str = Dump(value [, isFormat=false]) 将 Lua 对象编码成 JSON 字符串
DumpToFile(value, path [, isFormat=false]) 将 Lua 对象编码成 JSON 字符串并存储到指定路径的文件中
阅读更多

从零开始用Python做一个女朋友

因为一只蝙蝠所引起的一系列连锁反应,导致一直宅在家中的自己突然有了重拾Python的勇气,一直以来想要做个智能对话机器人,于是说干就干,从最简单的关键词匹配做起,在目前进度中,通过调用公共接口实现了天气查询和实时新闻查询两个功能,后续功能将逐渐完善。由于本人Python学识不深,很多细节的处理上可能不尽完善,欢迎各位大佬指点~

由于目标是比较智能的机器人,所以借用了动漫刀剑的梗虚拟人物形象叫Alice 【宅属性暴露无遗】

总体思路还是模块化的思想,通过循环接收用户输入,然后通过自定义的__analyse()函数进行关键词匹配,将匹配结果通过数组返回,并在主过程内遍历数组内的事件标签,如果天气查询标签或新闻查询标签在内,则将用户输入传递给相应的自定义模块函数进行处理。话不多说,先呈上main.py模块代码:

阅读更多