SuperAPI AI 工具集

love2d-core

测试与质量

查看项目

更新于 10-15 21:49

技能介绍

该技能用于搭建和调试 LÖVE(Love2D)游戏在 Lua 中的基础结构,目标版本为 LÖVE 11.5。适用时机:新建 LÖVE 游戏、编写 main.lua/conf.lua,或修复核心循环、移动速度异常、输入处理与界面切换问题;当工作区存在调用 love.* 的 main.lua、conf.lua 或 .love 文件时可用。不适用:与 LÖVE 无关的 Lua 语法问题、物理刚体与关节(love.physics 基于 Box2D,属独立主题)、着色器(love.graphics 的 GLSL)、跨引擎存档读档(可参考 save-systems)。

核心流程:确认入口,游戏由 main.lua 运行,应定义 love.load()(一次性初始化)、love.update(dt)(状态更新)与 love.draw()(渲染),窗口与版本配置放在 conf.lua(先于模块加载运行);在 conf.lua 中设 t.version = "11.5" 以便版本不匹配时得到警告;所有运动按 dt(秒)缩放以实现帧率无关;输入分两种,轮询式用 love.keyboard.isDown(适合按住持续移动),事件式用 love.keypressed(适合单次按下);界面(菜单、游戏、暂停)用小的状态栈管理而非一堆 if 标志;在项目目录用 love . 启动,确认窗口、移动速度与输入后再认定可用。

主要模式包括:main.lua 回调骨架与输入处理;帧率无关移动,正确写法为 player.x = player.x + player.speed * dt,错误写法 player.x = player.x + player.speed 会导致帧率翻倍时速度翻倍;conf.lua 配置窗口与版本,须为独立文件,love.conf 放在 main.lua 中不会生效;LÖVE 11.x 颜色为 0–1 归一化浮点而非 0–255,旧字节值可用 love.math.colorFromBytes 转换;屏幕状态用表实现,含可选 :update(dt)、:draw()、:keypressed(key),用栈保存当前界面以支持暂停与菜单覆盖,完整 push/pop 管理器见 references/state-stack.md。

常见陷阱:速度随 FPS 变化说明漏乘 dt,所有逐帧位置、计时器与动画变化都须按 dt 缩放;love.conf 写进 main.lua 会静默失效;颜色发白或不可见通常是用了 0–255 值,11.x 中 setColor(255,0,0) 会被钳制为白色;一次 setColor 后所有绘制被染色,因为颜色是全局且跨绘制保持,绘制文字或图像前需用 love.graphics.setColor(1,1,1) 重置;按键释放或无重复不触发时,love.keypressed(key, scancode, isrepeat) 在按下(及系统按键重复)时触发,释放用 love.keyreleased,如需忽略长按重复应检查 isrepeat。

相关技能:save-systems(与引擎无关的存档读档)、input-systems(可重绑定、多设备输入架构)、pygame-core / phaser-core(其他轻量引擎的同类循环概念)。资料中未提供安装命令、收费与价格信息。