utils/games: scaffold native tooling for Aseprite, Godot/Redot, Unity, Unreal - #1
Open
PhaedrusFlow wants to merge 2 commits into
Open
utils/games: scaffold native tooling for Aseprite, Godot/Redot, Unity, Unreal#1PhaedrusFlow wants to merge 2 commits into
PhaedrusFlow wants to merge 2 commits into
Conversation
…, Unreal Adds lua/utils/games/ following the same shape as utils/dev/android and utils/dev/sf: each engine module exposes config/util/actions/commands with a show_menu()/run_action_by_id(id), driven directly through its own CLI via vim.system/jobstart -- no third-party plugin dependency. - shared/: executable+root discovery, a per-engine build/output window + progress spinner factory, and a grouped vim.ui.select menu - shared/godot_engine.lua: one native-tooling factory reused by both godot/ and redot/, since Redot is a Godot 4-compatible fork - aseprite/: editor launch, batch export (sprite sheet/PNG seq/GIF), headless Lua script runs via -b/--script - unity/: Hub-editor-version resolution from ProjectVersion.txt, batchmode build/-executeMethod, run tests, reimport, Editor.log - unreal/: UnrealBuildTool build, GenerateProjectFiles, RunUAT BuildCookRun packaging -- reuses the same engine-root env vars as the existing lua/dap/unreal.lua so it never duplicates the debug adapter wiring - init.lua: wires every engine's setup() plus a combined :Games menu - wires M.games into utils/init.lua next to the other subsystems Keymaps live under the previously-unused <leader>g group: <leader>ga* Aseprite, <leader>gg* Godot, <leader>gr* Redot, <leader>gu* Unity, <leader>ge* Unreal. See lua/utils/games/README.md for full layout, env-var overrides, and the extension-point TODO list.
…orkers primer - Aseprite: palette export/sync, sheet-type export preset. - Godot/Redot: export dry-run diff, remote-debug launch (honest no-general-DAP explanation); wire shared/events.lua's GamesTaskCompleted/GamesTaskFailed into export() on_success/on_failure. - Unity: sequential multi-target build matrix (-buildTarget), Package Manager manifest.json/packages-lock.json list + add actions. - Unreal: cook-only action, Setup.sh + GenerateProjectFiles.sh bootstrap for a freshly cloned engine checkout (sequential vim.async awaits, generous bounded timeout), editor plugin packaging via RunUAT BuildPlugin. - Shared: health.lua + :GamesDoctor (:checkhealth utils.games), probing all five engines concurrently via a new shared/async_util.lua (vim.async wrapper with fixed bounds). - New docs/LUA-FOR-NETWORK-LINUX-FOLKS.md: maps core Lua concepts (tables, nil vs false, pcall/assert, coroutines, vim.async, closures-as-factories) onto networking/Linux analogies, with pointers into this scaffold's real code for every concept. - README: check off all TODOs, document which Neovim 0.13 features are used and why (plus honest call-outs for the ones skipped), Tiger Style section, docs link, :GamesDoctor in the commands table. All 25 files pass a full lupa syntax validation pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
lua/utils/games/-- native, plugin-free tooling for Aseprite, Godot, Redot, Unity, and Unreal, matching the shape ofutils/dev/androidandutils/dev/sf(each engine exposesconfig/util/actions/commandswith ashow_menu()andrun_action_by_id(id), driven straight through the engine's own CLI viavim.system/vim.fn.jobstart).Layout
shared/util.lua,shared/output.lua,shared/ui.lua-- executable/root discovery, a per-engine build/output window + progress spinner factory, and a groupedvim.ui.selectmenushared/godot_engine.lua-- one native-tooling factory reused by bothgodot/andredot/, since Redot is a Godot 4-compatible fork (sameproject.godot/.tscn/.gdfiles); each still gets isolated cache/output state and its own keymap groupaseprite/-- editor launch, batch export (sprite sheet + JSON, PNG sequence, GIF), headless Lua script runs via-b/--scriptunity/-- resolves the Hub-installed Editor version fromProjectSettings/ProjectVersion.txt, batchmode build via-executeMethod, run tests, reimport assets, openEditor.logunreal/--UnrealBuildToolbuild,GenerateProjectFiles,RunUAT BuildCookRunpackaging; reuses the sameNVIM_UNREAL_ENGINE_ROOT/UNREAL_ENGINE_ROOT/UE_ENGINE_ROOT/UE_ROOTenv vars as the existinglua/dap/unreal.lua, so it doesn't duplicate the nativelldb-dap/GDB DAP debug-adapter wiring already thereinit.lua-- wires every engine'ssetup()plus a combined:Gamesmenu across all fiveM.gamesintoutils/init.luanext to the othersafe_required subsystemsKeymaps
All under the previously-free
<leader>g("games") group:<leader>ga*<leader>gg*<leader>gr*<leader>gu*<leader>ge*Commands
:Aseprite/:Godot/:Redot/:Unity/:Unrealopen each engine's menu;:<Engine>Action <id>runs by id with tab-completion;:<Engine><PascalId>per action;:Gamesopens a combined picker.Notes
lua/utils/games/README.mdfor open extension points (multi-target Unity builds, Unreal cook-only/plugin packaging, Godot/Redot DAP wiring, etc.)..luafile was checked for syntax validity (via LuaJIT/lupa) before opening this PR.safe_require('utils.games')+setup()hookup inlua/utils/init.lua.