雷神之锤3竞技场(Quake III Arena)GPL 源码发布
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...
wechat-miniprogram-to-xhs-minitool · litefreeteam/wechat-miniprogram-to-xhs-minitool
该项目是一个用 Python 编写的迁移工具,目标是把微信小程序或微信小游戏转换为小红书 MiniTool(小红书小工具)可用的离线 H5 ZIP 包。仓库主题涵盖 H5、离线优先、微信小程序/小游戏与小红书小工具等方向。需要注意:仓库提供的 README...
EntityJS 是一个基于 JavaScript 的 HTML5 游戏引擎,核心设计思路是实体-组件(entity-component)。README 开篇即指出,它的目标是让开发者用灵活的方式编写游戏代码,避免反复重写相同的函数与代码行。
需要特别注意的是,仓库 README 明确说明:EntityJS 目前正在重写中。0.5.0 版本将从 Ruby 迁移为 Node.js 包,引擎本身也转向实体系统(entity-system)设计模式,最新进展需要查看 dev 分支。因此下文描述的安装与命令行用法,均对应 README 中记录的既有版本形态,实际状态请以仓库分支为准。
README 用较大篇幅对比了两种设计路线,这是理解 EntityJS 的关键:
README 记录的版本要求为 Ruby 1.8.1 及以上,并通过 gem 安装:
gem install entityjs
所有命令需在游戏根目录下执行:
entityjs new mygame:使用默认模板创建新游戏;entityjs new mygame platform:使用平台模板创建游戏;entityjs templates:查看所有可用模板;entityjs comp rock:在 scripts/rock.js 创建名为 rock 的组件,并生成测试文件;entityjs comp display/hero:在 scripts/display 目录下创建 hero 组件;entityjs test name test1 test1:在 /tests/name_test.js 创建包含两个测试方法的测试;entityjs build:将引擎源码与游戏源码压缩合并到 /builds 下的单个文件;entityjs server:启动服务器,访问 localhost:2345 游玩,localhost:2345/test 运行测试,资源位于 localhost:2345/assets/*name。引擎提供了一种简写访问方式,同一个方法名既可赋值也可取值:
var tile = re.e('tile');
tile.tileX(1); // 设置
tile.tileX(); // 获取
setter 也可以用在 attr() 中,例如 tile.attr('tileX', 2);带多个参数的 setter 如 tile.tile(1, 2) 可同时设置 tilex 与 tiley,等价于 tile.attr('tile', [1,2])。
README 中标注为 0.4.2 的特性是:所有组件都拥有工厂方法,用于创建复杂实体。示例中通过 re.c("button").factory(...) 定义工厂,之后可直接以 re.button("Hello", callback) 创建;也可以用 method 覆盖默认行为,例如实现单例式的 re.player()。
所有游戏使用轻量的 QUnit 进行测试,平台模板中包含示例测试。测试目录下可新建 factories.js 注册工厂,例如 factory('enemy', ...) 定义带初始生命值与状态的敌人,之后在测试任意位置用 factory('enemy') 或 re.e('enemy') 创建;需要多种变体时可用简写 f('enemy attacking', ...)。此外还提供了 expectTrigger、expectFlicker、expectListener 等实体断言,以及 keypress()、click() 等模拟输入方法,具体可查看 localhost:2345/qunit/ 下的相关文件。
地图方面,README 说明已兼容 Tiled 地图编辑器:在 /assets 下新建如 levels 的目录保存地图,代码中可用 re('level1.tmx')[0] 读取单个地图,或用 re('level') 查找该目录下所有关卡。
dev 分支的实际状态,避免按旧版命令操作。
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...