Everything here is free. My rule: learn the tool when the game demands it, not before.

Code & version control

ToolWhyStart when…
Sublime Text + the Love2D package (via Package Control)What I learned on and recommend — instant, lightweight, stays out of your wayRight now
Git + GitHubUndo button for your whole project + free backupBefore your second game
NeovimFast once you live in terminal (what I use)You’re curious, not before

Learn 3 git commands and you’re set: add, commit, push. Your template is already a repo.

Art

ToolWhy
Aseprite (paid) or Libresprite (free)Pixel art + animation
TiledTilemaps — draw levels instead of hardcoding them
Krita / GIMPLarger illustrations, textures

Audio

ToolWhy
AudacityRecord + trim effects
bfxrGenerate retro blips in seconds
OpenGameArtFree music/sfx (check license per asset)

Lua libraries (only these to start)

LibraryUse forNote
class.luaTiny OOP, from Matthias Richter’s collectionRead it once, 98 lines, already in the template
push.luaResolution scaling, from Ulysse RamageSee Scaling recipe
knifeTimers, tweens, state machines, events — pick single micro-modulesGraduate here after Pong, each module stands alone
bitserSaving nested tables (inventories, unlock maps)When string.format can’t hold your save — see Save & Load
jumperPathfindingGrid-based enemies

WARNING

Library trap: installing 6 libraries before writing gameplay. Finish Pong with zero libraries first — you’ll know exactly which one you need next.