How to Use Defold 1.13.1 Lights - First Indie Lit Scene Evening 2026

If you are searching defold light components on August 10, 2026, you do not need another “Defold is small and free” pitch. You want a Monday path: install 1.13.1-beta, place ambient / directional / point / spot lights in the editor, prove a lit material reads the LightBuffer, then decide keep / hold / rewrite before anyone merges beta into a Steam depot. Weeks later, Discord still pastes “we turned lights on” without a Play screenshot or WebGL note — that is why this refresh keeps L1–L6 and adds an explicit Monday ritual plus Discord paste.
On July 13, 2026, the Defold Foundation published the 1.13.1 BETA release notes with a headline 3D step: Light component support in the editor and engine (forum release notes, GitHub v1.13.1-beta). The official Light component manual documents four resource types and the shader LightBuffer layout. The editor work landed through PR #12176. Mid-August is quieter on Twitter and louder in production: July notes still lack a dated Discord paste, and soft “merge beta so the room looks lit” claims travel faster than L1–L6 honesty.
This evening is not the Defold Steam collection and save audit (packaging). It is not Defold morph targets (blend shapes on stable). It is not Unreal Lumen Lite (UE GI). It is not Godot HTML5 blank-screen (web MIME). It is defold light components on a spike branch — lit collection, receipt, honest beta hold.
| If you are… | Start here | Done when |
|---|---|---|
| Beginner | Glossary → four light types → one collection + Discord paste | You can name ambient vs point and why materials matter |
| Working Lua / TA | Gates L1–L6 → LightBuffer / model_lit | Receipt JSON + desktop screenshot + WebGL2 note |
| Studio lead | CapEx four-liner + diligence | Written ship-stable vs beta-spike owners |
Time: about 90–150 minutes for a fresh spike project (or the full Monday ritual). Longer if you migrate an existing unlit 3D collection and custom shaders.
Facts checked August 10, 2026: 1.13.1 is still documented as BETA on the forum notes and GitHub tag. Confirm the Light component API and WebGL2 hold in your editor tonight—do not trust a July Discord screenshot of someone else’s Outline gizmos.
Why this matters now (August 10, 2026)
August keep/hold: The beta note is four weeks old. The useful question is no longer “does Defold have editor lights?”—it is whether your team can finish one lit collection without turning “1.13.1 has lights” into a Steam-branch merge. Soft “lighting pipeline upgraded” claims travel faster than LightBuffer honesty.
Three clocks still drive the evening this week:
- Editor lights finally ship as components. The 1.13.1 beta notes call out Light components as a real 3D / editor step — create, manipulate, and preview lights in the Outline, not only by hand-feeding uniforms.
- Docs and engine bind landed together. The Light manual plus built-in
lighting.glsl/model_litpath means Discord will ask “did you try the new lights?” — you need a receipt, not vibes. - It is still beta. The release disclaimer is blunt: use source control; expect disruption. Ship branches stay on your last stable Defold; lighting lives on a spike until you re-run L1–L6 after a stable 1.13.1 (or later) lands.
If you already filed a July note without a Discord paste or CapEx four-liner, re-run the Monday ritual before partner decks invent “we shipped Defold lights.”
Also in the same beta (do not confuse with the lights gate): morph-target instancing, SDL gamepad database, Editor Scripts expansion, warm builds up to ~19% faster, borderless fullscreen, Metal backend work, larger archives, HTML5 audio fixes. Nice — but tonight’s primary keyword is defold light components.
Monday ritual - August Defold lights keep/hold (90–150 minutes)
Use this when a lead says “we already tried 1.13.1 lights” but nobody can point at a Play screenshot, a WebGL note, or a named spike owner.
| Minute | Action | Pass if… |
|---|---|---|
| 0–20 | Beta side-by-side + spike branch (L1) | Ship editor untouched |
| 20–50 | Four light types in Outline (L2) | Ambient + directional + point + spot |
| 50–90 | Lit material Play smoke (L3–L4) | LightBuffer response; max_count written |
| 90–120 | HTML5 WebGL2 note or quick build (L5) | Hold or n/a written — not assumed |
| 120–150 | CapEx four-liner + Discord paste + receipt date 2026-08-10 |
Steam branch still frozen |
Standup checklist (ten minutes when you cannot spare the full ritual): Beta isolated? Four types present? Play screenshot? Discord paste?
Company CapEx four-liner (diligence zip cover)
When finance asks “should we merge 1.13.1-beta for lights?”:
- Scope — one-collection LightBuffer evening only; not whole-game lighting rewrite (Light manual).
- Cost — beta disruption risk is the cost; changelog headlines are not an SLA (forum notes).
- Evidence — Play screenshot + L1–L6; WebGL2 hold confirmed on your HTML5 path (PR #12176).
- Owner — named spike lead who freezes Steam-branch merges until stable + re-run.
August engine-week cadence (after the first evening)
Once L1–L6 pass on one collection, do not auto-merge beta because “lights look good in Outline.” Use a light loop:
| Cadence | Action |
|---|---|
| Next evening | Optional second collection with the same lit material — prove consistency before scale |
| Mid-week | Re-read Light manual + beta disclaimer — API still beta |
| Morph night | Blend shapes stay on stable 1.13.0+ morph evening — do not stack |
| UE GI cousin | Lumen Lite is a different engine — do not treat as API parity |
| Promote decision | Only after a stable tag preserves Light components and two receipts exist |
Glossary - plain words
| Term | What it means |
|---|---|
| Light component | A Defold component that represents a light source in a collection (like Sprite or Model). |
| Ambient light | Flat fill color; ignores position/rotation; does not consume lights[] slots. |
| Directional light | Sun-style light; direction from game object rotation; infinite distance. |
| Point light | Omnidirectional bulb from the object’s world position with a range. |
| Spot light | Cone light with inner and outer cone angles plus range. |
| LightBuffer | Uniform block shaders declare so the engine can bind active light data automatically. |
| light.max_count | game.project limit on light components (default 64). |
| Editor preview limit | Editor can preview at most 8 lights right now (conservative forward-light default). |
| WebGL1 / ES2 hold | Light components do not work on WebGL1/ES2 contexts — need WebGL2+ for HTML5. |
| Keep / hold / rewrite | Keep = adopt after stable; hold = lab only on beta; rewrite = wrong engine feature for this ship. |
What Defold 1.13.1 light support actually ships (true summary)
From the beta release notes, PR #12176, and the Light manual:
- Four resource types —
.ambient_light,.directional_light,.point_light,.spot_light(separate types on purpose for future custom lights). - Editor create / manipulate / preview — lights appear in the Outline with type-specific gizmos (sun, bulb, cone).
- Automatic LightBuffer bind — if a shader declares the correct
LightBufferlayout, the engine fills it from active light components. - Built-in helpers —
/builtins/materials/lighting.glslandmodel_lit.fpshow Lambert diffuse + ambient usage. - Project limit —
light.max_count(default 64); ambient counts toward the component limit but not towardlights[]entries. - Honest limits — editor preview capped at 8 lights; no automatic lighting on every material (your shader must opt in); WebGL1/ES2 incompatible; beta channel only until stable.
Colors are RGB; alpha is unused. Intensity multiplies color. Point/spot range scales with the smallest absolute world-scale axis. Spot cones are edited in degrees and stored as radians in the compiled resource.
Keep / hold / rewrite - Monday decisions
| Situation | Keep | Hold | Rewrite |
|---|---|---|---|
| Desktop / console prototype with WebGL2 HTML5 later | Spike lights on 1.13.1-beta branch | Merging beta into fest depot tonight | Claiming “ship lighting done” after editor preview alone |
| HTML5 demo still on WebGL1 | — | Lights until WebGL2 export path proven | Expecting lights on ES2 browsers |
| Unlit 2D pixel game | — | Optional mood lights only | Forcing 3D lit pipeline into a pure 2D ship |
| Custom forward renderer with hand uniforms | Port to LightBuffer after spike | Dual systems forever | Deleting working custom lights mid-milestone |
| Partner diligence zip | Receipt + screenshot + WebGL note | “It looked fine in editor” | Shipping beta as production without owners |
Default indie posture: hold on the ship branch; keep the spike workflow and receipt so you can promote fast when stable lands.
Prerequisites
- Git (or zip backups) — beta disclaimer requires source control (forum notes).
- Ability to install a second Defold editor channel (beta) without overwriting your ship install.
- A tiny 3D collection: one Model (or Mesh) with a lit material path, one Camera, floor + prop.
- Optional: existing HTML5 export pipeline if you must answer the WebGL2 question tonight.
- 90–120 minutes uninterrupted.
If you have never shipped a Defold desktop bundle, keep Steam collection save audit for another evening — do not mix depot work with beta lighting.
Beginner path - first lit collection (no jargon first)
Goal: one room that looks lit when you press Play in the beta editor.
- Download 1.13.1-beta from GitHub Releases (editor + bob if you build from CLI).
- Create a new project or clone your game onto a branch named
spike/defold-1131-lights. - Open the main collection. Add a game object
lights_root. - Under it, create four components (or add four light resources from Assets):
- Ambient — soft gray fill, intensity ~0.2–0.4
- Directional — rotate the object so the sun arrow hits your prop
- Point — place near a lamp mesh; set range so the floor catches a pool
- Spot — aim at a poster or door; set inner/outer cones
- Confirm the Model material uses a lit shader that includes LightBuffer (start from builtins /
model_litpattern in the manual). - Press Play. Orbit the camera. Confirm the prop brightens when you raise intensity and darkens when you disable the directional object.
- Screenshot Play mode. Fill the receipt at the end of this article. Do not upload this beta build to Steam.
That is the beginner win. Everything below is the working-dev gate set.
Working-dev gates L1–L6
| Gate | What you prove | Artifact |
|---|---|---|
| L1 | Beta editor installed; ship editor untouched | editor_channel: 1.13.1-beta in receipt |
| L2 | All four light types present in Outline | lights_present: [ambient, directional, point, spot] |
| L3 | Lit material compiles; Play shows light response | play_mode_screenshot.png |
| L4 | light.max_count documented; count ≤ limit |
game.project excerpt + count |
| L5 | HTML5 decision recorded (WebGL2 or N/A desktop-only) | html5_webgl2: pass \| hold \| n/a |
| L6 | Keep/hold decision signed by owners | decision + dual owners |
Fail-closed rule: if L3 fails, stop. Do not “fix it in the depot.”
L1 - Install beta without burning ship
Keep your stable Defold install for the fest branch. Install beta to a separate folder or use the GitHub zip side-by-side. Record SHA from the release tag in the receipt. Open only the spike project in beta.
If Xcode / iOS custom Info.plist matters to you, read the beta note about Xcode 26.5 and builtins templates before you touch mobile — that is a separate gate from lights (forum notes).
L2 - Four light types in one collection
Use distinct game objects so gizmos stay readable:
| Object | Component | Smoke check |
|---|---|---|
light_ambient |
Ambient | Raise intensity → whole scene lifts evenly |
light_sun |
Directional | Rotate → shadow-facing side changes (if your shader shades Lambert) |
light_bulb |
Point | Move object → bright pool follows |
light_spot |
Spot | Tighten outer cone → smaller hotspot |
Validation from the manual: color is three numbers; intensity ≥ 0; range ≥ 0; spot inner ≤ outer; cones 0–180° in the editor.
Stay under the editor preview ceiling of 8 lights while looking. Runtime light.max_count may be higher (default 64), but preview will not prove 40 lights tonight.
L3 - Material must opt in
Defold does not light every material automatically. Your fragment shader must declare LightBuffer with the exact layout from /builtins/materials/lighting.glsl (see manual). Mismatch = silent bind failure and “why is my scene black?”
Minimal mental model:
#define MAX_LIGHT_COUNT 32
uniform LightBuffer
{
vec4 light_info; // xyz ambient, w active non-ambient count
Light lights[MAX_LIGHT_COUNT];
};
Types in lights[i].params.x: 0 directional, 1 point, 2 spot. Ambient is accumulated into light_info.xyz and does not occupy lights[].
Start from builtins (model_lit / lighting.glsl helpers: ambient_light(), Lambert diffuse). Only then fork a custom fp. Pair this evening with Lua scripting for game engines if your team is new to Defold script glue — lighting is shader-side first.
L4 - Count and game.project
Open game.project → Light section → max_count. Document the value. Count light components in the spike collection (including ambient). If you exceed max_count, expect a full component buffer error at runtime — not a soft skip.
Working-dev tip: ambient still consumes component budget even though it does not consume lights[] slots. Teams that spam ambient “fill” objects will hit the wall in surprising ways.
L5 - HTML5 WebGL2 gate (or explicit N/A)
PR and release notes are clear: light components will not work on WebGL1 / ES2. If your demo is HTML5-first:
- Confirm export uses a WebGL2 path on target browsers.
- Build HTML5 from the spike; load on a WebGL2 browser; verify lights.
- If you must support older WebGL1 kiosks, mark hold and keep an unlit material fallback — do not ship black rooms.
Desktop-only Steam demos can set html5_webgl2: n/a with a one-line reason. Still write it down so the next person does not assume HTML5 “just works.”
For Godot teams comparing web export pain, see Godot 4 HTML5 blank-screen checklist — different engine, same “web is not free” lesson.
L6 - Owners and decision
Fill:
decision:keep_spike|hold_until_stable|rewrite_unlitship_owner(stable channel / fest depot)spike_owner(beta lights)promote_after: what must be true (stable tag, L1–L5 green, partner sign-off)
Studio leads: this is the diligence paragraph. Partners care that beta is isolated, not that you pasted a Discord screenshot.
Discord-ready brief (creator share hook)
Defold lights — Aug 10 2026 Monday ritual (NOT a Steam-branch merge)
1.13.1-beta isolated: yes/no | Ship channel: STABLE ____
Four types in Outline: ambient/dir/point/spot yes/no
LightBuffer Play smoke: yes/no | Screenshot: yes/no
HTML5 WebGL2: pass / hold / n/a ____
Steam merge: NO | Seat/engine upgrade: HOLD until stable
Receipt: defold_1131_lights_receipt_v1.json date 2026-08-10
Owners: ship ____ / spike ____
Cite: defold.com/manuals/light + forum.defold.com/t/defold-1-13-1-beta/83013
Writeup: /blog/how-to-use-defold-1-13-1-lights-first-indie-lit-scene-evening-2026
Creators: that dated paste is the shareable outcome. Developers: the receipt below is the bookmark. Prefer it over “we turned lights on.”
Evening timeline (90–120 minutes)
| Block | Minutes | Focus |
|---|---|---|
| 0–15 | Install beta side-by-side; branch project | L1 |
| 15–40 | Place four lights; gizmos readable | L2 |
| 40–70 | Lit material / builtins; Play smoke | L3 |
| 70–85 | max_count + count; screenshot | L4 |
| 85–100 | HTML5 note or quick WebGL2 build | L5 |
| 100–120 | Receipt + Discord brief + owners | L6 |
If you run long, cut HTML5 build and mark hold with reason — still file L5.
Common mistakes (and fast fixes)
| Mistake | Symptom | Fix |
|---|---|---|
| Ship-swap beta mid-milestone | Random editor crashes / bob surprises | Revert ship to stable; keep spike branch |
| Unlit material | Lights in Outline, black model | Switch to lit / LightBuffer shader |
| Wrong LightBuffer layout | Compiles but no light response | Copy layout from lighting.glsl exactly |
| WebGL1 HTML5 | Works on desktop, black on web | WebGL2 or unlit fallback; hold lights |
| 20 lights in editor | Preview confusion | Smoke ≤8 in editor; scale later |
| Ambient-only scene | Flat look, “lights broken” | Add directional or point for contrast |
| Mixing Steam save audit tonight | Context switch chaos | Lights tonight; save audit another night |
| Ignoring beta disclaimer | Lost work | Git commit before opening beta |
If packaged Steam saves already misbehave, fix that on stable with the save-root help article — do not debug saves on a lighting beta.
Secondary beta features (park for later)
Do not expand tonight’s receipt to cover everything in 1.13.1-beta. Park these as forward spikes:
- Morph-target instancing for skinned crowds (base morph keep/hold is a separate evening — Defold morph targets)
- SDL gamepad database remaps
- Editor Scripts API growth (dialogs, tabs, fetch, preview PNG endpoint)
- Warm build ~19% on large projects
- Borderless fullscreen default
- Metal graphics backend work
- Larger
arcdarchives (>4 GiB support notes) - HTML5 audio glitch fixes
Each deserves its own evening. Tonight is lights.
Company / diligence paragraph
For a publisher or contractor zip:
- Ship channel remains last known stable Defold with existing export proofs.
- Spike channel is 1.13.1-beta with isolated branch and
defold_1131_lights_receipt_v1.json. - Lighting adoption requires L1–L6 green and a stable release that preserves Light component APIs.
- HTML5 products document WebGL2 requirement or an unlit fallback policy.
- No production player traffic on beta editor builds.
Cost/ROI: one evening now vs a week of black-screen HTML5 and mid-fest editor thrash. Governance: two named owners (ship vs spike).
Receipt template - defold_1131_lights_receipt_v1.json
{
"receipt": "defold_1131_lights_receipt_v1",
"project": "YOUR_GAME",
"date": "2026-08-10",
"discord_paste_filed": true,
"collected_at": "2026-08-10",
"editor_channel": "1.13.1-beta",
"release_url": "https://github.com/defold/defold/releases/tag/1.13.1-beta",
"ship_channel": "STABLE_VERSION_YOU_SHIP",
"branch": "spike/defold-1131-lights",
"gates": {
"L1_beta_side_by_side": true,
"L2_four_light_types": true,
"L3_lit_material_play": true,
"L4_max_count_ok": true,
"L5_html5_webgl2": "n/a",
"L6_owners_signed": true
},
"lights_present": ["ambient", "directional", "point", "spot"],
"light_max_count": 64,
"light_component_count": 4,
"material": "builtins_or_custom_lit_path",
"play_mode_screenshot": "artifacts/play_mode_screenshot.png",
"html5_webgl2": "n/a",
"html5_note": "desktop-only spike; HTML5 WebGL2 deferred",
"decision": "hold_until_stable",
"ship_owner": "NAME",
"spike_owner": "NAME",
"promote_after": "stable 1.13.1+ with Light components; re-run L1-L6",
"notes": "August Monday ritual — editor preview limited to 8 lights; WebGL1 incompatible per PR #12176. Not a Steam-branch merge."
}
Store next to your other evidence (same folder culture as BUILD_RECEIPT evenings). Templates for Defold save audits live under 12 free Defold / GDevelop / Ren'Py save-path resources — different format ladder, same evidence habit.
Comparison - where this sits vs other July keep/holds
| Topic | Engine | Question |
|---|---|---|
| This article | Defold 1.13.1-beta | Can we light a collection with editor components? |
| MonoGame 3.8.5 | MonoGame | DesktopVK / Content Builder without breaking DesktopGL? |
| Unity 6.5 BIRP | Unity | Keep BIRP or move URP before ship? |
| AutoRemesher | DCC | Free quad remesh before bake? |
Same keep/hold discipline; different primary keywords. Do not cannibalize.
Key takeaways
- defold light components still matters on August 10, 2026 — run the Monday ritual before partner decks invent a Steam-branch merge.
- Lights arrived in 1.13.1-beta (July 13, 2026) with editor create/preview and engine LightBuffer bind.
- Four types matter: ambient, directional, point, spot — separate resource extensions on purpose.
- Materials must opt in; unlit shaders ignore your beautiful Outline lights.
- Copy the LightBuffer layout from builtins; do not freestyle the struct.
- Editor preview tops out at 8 lights; runtime
light.max_countdefaults to 64. - WebGL1/ES2 cannot use light components — plan WebGL2 or hold.
- Beta disclaimer is real — side-by-side install and a spike branch.
- Ship channel stays stable until L1–L6 pass on a non-beta build.
- File
defold_1131_lights_receipt_v1.jsonwith dual owners and a dated Discord paste. - Park morph instancing on the morph evening; do not stack with Lumen Lite.
- A July thumbs-up without an August 10 Discord paste does not clear CapEx diligence.
FAQ
What are Defold light components in 1.13.1?
They are first-class components for ambient, directional, point, and spot lights you add in the editor and consume in shaders via LightBuffer. See the Light manual and 1.13.1 beta notes.
Should I upgrade my Steam build to Defold 1.13.1-beta for lights?
No by default. Spike on a branch, keep the fest depot on stable, promote only after a stable release preserves the API and you re-run L1–L6.
Why is my scene still dark after adding lights?
Most often the material does not declare the correct LightBuffer, or you are on an unlit shader. Second: WebGL1 HTML5. Third: intensity/range near zero.
Do ambient lights count toward light.max_count?
Yes for the component budget. They do not consume entries in the shader lights[] array (manual).
Can I use more than eight lights?
Runtime allows up to light.max_count (default 64). Editor preview currently supports at most eight — smoke carefully, then scale.
Will lights work on HTML5?
Only on WebGL2+ contexts. WebGL1/ES2 is explicitly unsupported for light components (PR #12176).
Is this the same as the Defold Steam save audit article?
No. That URL is collection/save packaging. This URL is lighting keep/hold. Link them; do not merge keywords.
Where do I download 1.13.1-beta?
GitHub Releases — v1.13.1-beta (editor builds and bob.jar). Read the forum disclaimer first.
What should studios put in a diligence zip?
Receipt JSON, Play screenshot, ship vs spike owners, WebGL policy, and a one-line “promote after stable” condition.
How does this relate to Lua scripting?
Lights are mostly shader + editor. Lua still owns gameplay that toggles light objects or intensities. Use Lua scripting overview for script structure — not as a substitute for LightBuffer.
Do we need to re-lock Defold lights keep/hold in mid-August if we decided in late July?
Yes — if your only artifact is a July note without Discord paste, Play screenshot, or L1–L6. Soft “we tried 1.13.1 lights” still invents a Steam-branch merge. The beta disclaimer did not become optional because the calendar flipped.
Is this the same as Unreal Lumen Lite or MegaLights?
No. Those are UE 5.8 GI / many-light smokes (Lumen Lite, MegaLights). This URL is Defold editor Light components + LightBuffer. Cross-engine diligence only — not API parity.
Related reading
- Defold PBR Asset - First Indie Lit Material Keep Hold 2026 — August cousin; asset-pbr metallic-roughness with Lights (not this lights-only evening)
- How to Try Defold Morph Targets - First Indie Blend Shape Spike — August cousin; stable blend shapes (not this lights beta night)
- Unreal Lumen Lite - First UE 5.8 Preview Evening Keep Hold 2026 — August cousin; UE GI (not Defold LightBuffer)
- How to Try Unreal MegaLights - First Indie UE 5.8 Smoke Evening 2026 — August 11 cousin; many dynamic lights in UE (not this Defold spike)
- How to Try Phaser Cone Lights - First Indie Flashlight Vision Spike 2026
- How to Try Godot AreaLight3D - First Indie Soft Light Spike 2026
- Your First Defold Steam Desktop Collection and Save Audit
- Defold Steam Save Root Outside Collection Map - Fix
- MonoGame 3.8.5 Upgrade Keep Hold - DesktopVK
- Game Development with Lua Scripting
- 12 Free Defold GDevelop Ren'Py Save-Path Audit Templates
- How to Ship Godot 4 HTML5 Demos
- Official: Light component manual · 1.13.1 BETA notes · v1.13.1-beta
Bottom line
defold light components still matters on August 10, 2026: a beta-bounded evening—four light types, LightBuffer Play smoke, WebGL note, receipt—and “merge 1.13.1 for lights” claims that travel faster than L1–L6 honesty. Run the Monday ritual, paste Discord, and file the receipt before a Steam week invents a depot merge. Hold ship on stable until owners, screenshots, and a non-beta tag exist. Bookmark this keep/hold beside the Light component manual.