2.5D Games: use Sprite3d billboards for characters (+ shadow/anchor caveats)
obiot
committed
Jun 23, 2026
780eb44
Working in 3D: Sprite3d examples show add-to-world + alpha cutout
obiot
committed
Jun 23, 2026
de0a3f3
Working in 3D: document Sprite3d flipX/flipY
obiot
committed
Jun 23, 2026
5623b47
Working in 3D: document Sprite3d transparency (alphaCutoff default)
obiot
committed
Jun 22, 2026
7c7a2d9
Working in 3D: scope Sprite3d atlas support to axis-aligned untrimmed regions
obiot
committed
Jun 22, 2026
f5a2f8e
Working in 3D: document Sprite3d (billboards + frame animation)
obiot
committed
Jun 22, 2026
dc40f04
resources: document await-able loader.preload() / load()
obiot
committed
Jun 22, 2026
b35df5a
Working in 3D: document textureFilter (decoupled from antiAlias) — global + per-mesh, WebGL-only
obiot
committed
Jun 22, 2026
cc338a3
3D loading: document Tier-2 material features (texture filter, unlit, alpha cutout, emissive)
obiot
committed
Jun 20, 2026
f086535
3D wiki: use modern named-import API style (level.load / loader / game.world) instead of the legacy me.* namespace
obiot
committed
Jun 20, 2026
747a1a8
3D wiki: reformat support tables to feature → ✅/❌ + notes; correct glTF transparency/tangents accuracy
obiot
committed
Jun 20, 2026
9580b84
3D lighting docs: Light3d is now a world Renderable (like Light2d) — drop LightingEnvironment; add in-game day/night manipulation example
obiot
committed
Jun 19, 2026
5512506
3D docs: glTF node animation (GLTFModel) + external textures/buffers + texture wrap; Sprite-aligned play/pause/stop
obiot
committed
Jun 19, 2026
1dbc5b4
Document glTF material colors + correct lighting status
- 3D-Loading-glTF-and-GLB-Scenes: add Materials & colors (baseColorFactor +
vertex colors COLOR_0); getGLTF descriptor now lists lights/normals/colors;
correct the limitations note (directional lighting supported; no transparency/
animation yet).
- 3D-Loading-and-Supported-Assets: lighting section now reflects directional
Light3d/LightingEnvironment support.
obiot
committed
Jun 19, 2026
8895b0b
Document glTF mesh lighting (Light3d / LightingEnvironment) + drop engine name-drops
- 3D-Loading-glTF-and-GLB-Scenes: add a Lighting section — auto-loaded
directional lights from KHR_lights_punctual, Light3d/LightingEnvironment
scripting, mesh.lit / lit batcher, support matrix, lux/ambient notes.
- Working-in-3D: reword the mesh-pivot note to drop external-engine names.
obiot
committed
Jun 18, 2026
97fce33
Document glTF level-director API + mesh pivot/anchor (19.8)
- 3D-Loading-glTF-and-GLB-Scenes: lead with me.level.load(scene, {scale,
rightHanded, onLoaded}); options table; per-node center-split notes;
getGLTF demoted to inspection path; note glTF requires melonJS 19.8+.
- Working-in-3D: add 'Pivot — a mesh transforms about its local origin
(0,0,0)' under Meshes, with applyAnchorTransform + glTF/Three.js/pixi3d
framing.
obiot
committed
Jun 18, 2026
62b1c53
Split "Working in 3D" into a hub + focused subpages
Working in 3D had grown into one long page. Split it into a landing hub
(general concepts: opt-in, conventions, camera, meshes, follow) plus
dedicated pages, and link them from Home:
- 3D Loading and Supported Assets (OBJ/MTL + support/limitations matrices)
- 3D Loading glTF and GLB Scenes (Blender-authored scene import)
- 3D Spatial Queries (sphere / ray / frustum)
- 2.5D Games (Paper Mario-style recipe)
obiot
committed
Jun 17, 2026
d6a7531
Working in 3D: add "Loading & preloading 3D assets" section
Document the asset pipeline for 3D geometry — OBJ/MTL and the new glTF/GLB
(Tier 1) loader — with quick-start examples and a full support/limitations
breakdown across geometry, materials/textures, animation, lighting, cameras,
the right-handed coordinate conversion, and file packaging.
obiot
committed
Jun 17, 2026
9f9e002
docs(3D): fix Paper Mario example — Stage.onResetEvent receives the Application instance
The 2.5D Paper Mario mini-example used `const app = me.game.app` inside
`onResetEvent` — referencing the legacy global, and inconsistent with the
outer-scope `const app = new Application(...)` it would have shadowed at
runtime. Stage.onResetEvent(app, ...) actually receives the Application
instance as its first parameter, which is the modern path.
obiot
committed
Jun 9, 2026
e03c2f3
docs: 19.7 3D query surface — raycast3d/querySphere capabilities + AABB3d/Frustum
Switching-Physics-Adapters:
- Add `raycasts3d` capability row (builtin ✓, matter ✗, planck ✗) to
the capability flags table.
- Add `querySphere(...)` and `raycast3d(from, to)` rows to the
optional/capability-gated methods table — both builtin-only since
19.7, with the call-as `world.adapter.X?.(...) ?? fallback` shape.
Working-in-3D:
- Add a "Supporting primitives" subsection documenting `AABB3d`
(Octree's bounding primitive) and `Frustum` (Camera3d's view
volume, exposed as `camera.frustum`) — the two 3D types that
back the queries but weren't previously listed.
obiot
committed
Jun 5, 2026
3777883
Working in 3D: 2.5D section — correct overpromised parallax-isolation claim
obiot
committed
May 31, 2026
a0ad380
Working in 3D: add 2.5D / Paper Mario pattern (Camera3d + Octree + SAT)
obiot
committed
May 31, 2026
524b2a9
docs: add Working in 3D page for the 19.7 Camera3d surface
Covers the dev-facing 3D feature set: Camera3d opt-in (cameraClass +
Stage cameras: …), Y-down + +Z forward conventions, perspective
camera fields (fov / aspect / pitch / yaw / setClipPlanes), Mesh +
multi-material OBJ rendering, the depth-sort scene graph, the 3D
spatial-query surface on the physics adapter (Sphere primitive,
adapter.querySphere with both call shapes, adapter.raycast3d,
Camera3d.queryVisible bulk frustum cull), the math.damp /
Vector*.damp frame-rate-independent smoothing helpers, plus a
pointer to the AfterBurner showcase as the worked reference.
Stays user-facing — opt-in code, API shapes, common gotchas
(Sprite.isKinematic default skipping the broadphase). Implementation
details (broadphase swap mechanics, Octree internals) are left to
the API docs / source.
Lead on Home.md updated from "2D games" → "2D and 3D games" and a
"Working in 3D" link section added between Rendering and Physics.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
obiot
committed
May 31, 2026
990413a
docs: 19.6 → 19.7 — video.createCanvas deprecated in favor of Renderer.createCanvas
obiot
committed
May 26, 2026
d463fca
fix(wiki): renumber duplicate Quirks ## 10. → 11/12/13, fix isGrounded cross-link
obiot
committed
May 21, 2026
97fc36c
19.5 sweep: planck-adapter coverage, portable raycast/queryAABB, new BuiltinAdapter divergence quirks
Bring all three physics-adapter wiki pages in line with what actually
shipped in 19.5.
Migrating-to-the-Physics-Adapter-API.md
- Mention `@melonjs/planck-adapter` alongside matter (it's shipping in
19.5, not "future Box2D")
Switching-Physics-Adapters.md
- "Picking an adapter" example imports PlanckAdapter too; mention the
`physic: "planck"` shortcut.
- Rewrite the "Optional / capability-gated APIs" section: `raycast` and
`queryAABB` are portable across every adapter (previously described
as matter-only — wrong). `queryAABB` is mandatory on the interface;
`raycast` is capability-gated via `capabilities.raycasts` (all three
official adapters return `true`).
- Add an explicit capability matrix (builtin / matter / planck columns)
for `constraints`, `continuousCollisionDetection`, `sleepingBodies`,
`raycasts`, `velocityLimit`, `isGrounded`.
- Behavioural-differences table grows a planck column.
- Joints/Constraints recipe gets a planck sibling (DistanceJoint as
spring, RevoluteJoint as hinge — reached via `adapter.world.createJoint`).
- Sleeping-bodies recipe gets a planck sibling (planck sleeps per-body
by default; toggle via `world.setAllowSleeping` / `body.setAwake`).
- New porting-pitfall: `setVelocity` units are px/step on builtin+matter
but px/s on planck — surfaced when writing the parity tests, real
porting trap.
BuiltinAdapter-Quirks.md
- Add planck-adapter to the "won't carry across" list.
- §6 (inline vs deferred dispatch): planck behaves like matter — events
fire post-step via begin-contact / end-contact listeners.
- Three new quirks (#10, #11, #12) surfaced when writing the parity tests:
- #10 `isGrounded` is flag-based (`!falling && !jumping`), not
contact-based — diverges from matter / planck for resting bodies
under gravity. Already documented in the bug-hunt spec but not on
the wiki.
- #11 `BuiltinAdapter.raycast` / `queryAABB` require a prior
`world.update` to populate the broadphase; matter / planck index
on `addBody` and work immediately. Planned for 19.6 lazy-populate
parity.
- #12 `BuiltinAdapter.step` gates integration on `inViewport ||
alwaysUpdate`; matter / planck don't. Test-environment quirk, but
useful to document.
No code changes — pure documentation alignment with 19.5 reality.
obiot
committed
May 21, 2026
b81354f
docs(quirks): rewrite #10 — dyn-dyn collision is position-based, not Newtonian
Earlier description claimed "net displacement is zero" between two
overlapping dynamic bodies. Empirical testing shows that's wrong:
position-based push-out IS mass-proportional (light pushed more than
heavy), and Body.respondToCollision honors bounce. What doesn't work
is velocity transfer — moving body's vel decays without transferring
momentum to the stationary one. Quirk now describes the actual
asymmetric / non-Newtonian end-state with a frame-by-frame example,
calls out which sub-behaviors do/don't work, and points at matter for
true elastic collisions.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
obiot
committed
May 15, 2026
9f2c911
docs(quirks): add 2x onCollision cadence + symmetric dyn-dyn push-out cancellation
obiot
committed
May 15, 2026
d3b98d4
docs(home): link Migrating-to-the-Physics-Adapter-API and BuiltinAdapter-Quirks under Physics & Collision
obiot
committed
May 15, 2026
6a4164f
docs(physics): reconcile response-shape and migration pages with Path 2 + supersedes rule
obiot
committed
May 15, 2026
c86ac6c