{"format_version":1,"packages":[{"title":"Camera Toolkit","description":"Follow targets with look-ahead, camera zones and timed screen shake. Stable zone selection keeps overlapping camera regions predictable.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Tools","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{},"engine":"^0.1.0","exported_events":[],"files":["README.md","scripts\/demi\/gameplay\/camera.lua","tests\/camera_test.lua"],"format_version":1,"name":"demi.gameplay.camera","public_modules":["demi.gameplay.camera"],"version":"1.0.0"},"archive_hash":"sha256:0df7d0c4105ea5423623c0c93592a5540e524cf024a22687fb5471548d5f8dbf","bytes":3524,"published_at":"2026-09-12T14:37:01Z","tags":["camera","2d","screen-shake"]},{"title":"Character Controllers","description":"Movement intent helpers for platformers, top-down games and isometric scenes. Includes a reusable 2D character controller.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{},"engine":"^0.1.0","exported_events":[],"files":["README.md","scripts\/demi\/gameplay\/controllers.lua","scripts\/demi\/gameplay\/character_controller_2d.lua","tests\/controllers_test.lua"],"format_version":1,"name":"demi.gameplay.controllers","public_modules":["demi.gameplay.controllers","demi.gameplay.character_controller_2d"],"version":"1.0.0"},"archive_hash":"sha256:1935ba3b0aa16208f8c8c0abf06c1a0fe3717c4d369283cbe202a2789d622669","bytes":4707,"published_at":"2026-09-12T14:37:01Z","tags":["movement","2d","platformer"]},{"title":"Checkpoints","description":"Checkpoint and respawn state for traversing game worlds. Keep entrances and respawn data separate from level scripts.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{"demi.gameplay.core":"^1.0.0"},"engine":"^0.1.0","exported_events":["checkpoint_changed","respawn_requested","scene_entrance_requested"],"files":["README.md","scripts\/demi\/gameplay\/checkpoints.lua","tests\/checkpoints_test.lua"],"format_version":1,"name":"demi.gameplay.traversal","public_modules":["demi.gameplay.checkpoints"],"version":"1.0.0"},"archive_hash":"sha256:457ece736029b4f6702c17c5b2e4274f5b3d760ec35c1ca3cc15b39bc10b5ae9","bytes":3471,"published_at":"2026-09-12T14:37:01Z","tags":["checkpoints","movement"]},{"title":"Encounter Director","description":"Build encounters from waves and objectives, with explicit spawn failure handling. Keep encounter state independent from rendering.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{"demi.gameplay.core":"^1.0.0"},"engine":"^0.1.0","exported_events":["wave_started","spawn_requested","spawn_failed","objective_failed","encounter_completed"],"files":["README.md","scripts\/demi\/gameplay\/encounters.lua","tests\/encounters_test.lua"],"format_version":1,"name":"demi.gameplay.encounters","public_modules":["demi.gameplay.encounters"],"version":"1.0.0"},"archive_hash":"sha256:c91d4e7a442b1b02d7cccf991854d1e751410320ff988521b5cbeb8581a6e2a6","bytes":3552,"published_at":"2026-09-12T14:37:01Z","tags":["enemies","combat","gameplay"]},{"title":"Gameplay Events","description":"Deterministic, instance-owned event queues for decoupling gameplay systems. Subscribe, emit and flush events without global state.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{},"engine":"^0.1.0","exported_events":[],"files":["README.md","scripts\/demi\/gameplay\/events.lua","tests\/events_test.lua"],"format_version":1,"name":"demi.gameplay.core","public_modules":["demi.gameplay.events"],"version":"1.0.0"},"archive_hash":"sha256:7c0bd537c4f48e6ad974cb9fa506239801e0447f54a0a368d683f6123ecfefb6","bytes":2816,"published_at":"2026-09-12T14:37:01Z","tags":["events","gameplay"]},{"title":"Health \u0026 Damage","description":"Health, damage policies and defeat events for game entities. Use team rules and invulnerability to keep combat behavior consistent.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{"demi.gameplay.core":"^1.0.0"},"engine":"^0.1.0","exported_events":["damage_applied","health_changed","entity_defeated"],"files":["README.md","scripts\/demi\/gameplay\/health.lua","tests\/health_test.lua"],"format_version":1,"name":"demi.gameplay.health","public_modules":["demi.gameplay.health"],"version":"1.0.0"},"archive_hash":"sha256:a6ae6423ef5291e63cf00a4e231c010d01917a6f1e273a60919322914ae33787","bytes":5588,"published_at":"2026-09-12T14:37:01Z","tags":["combat","health","gameplay"]},{"title":"Interactions \u0026 Pickups","description":"Reusable interaction and pickup behavior for game entities. Connect player actions to world objects through public engine APIs.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{"demi.gameplay.core":"^1.0.0"},"engine":"^0.1.0","exported_events":["interaction_selected","pickup_collected"],"files":["README.md","scripts\/demi\/gameplay\/interactions.lua","scripts\/demi\/gameplay\/pickups.lua","tests\/interactions_test.lua"],"format_version":1,"name":"demi.gameplay.interactions","public_modules":["demi.gameplay.interactions","demi.gameplay.pickups"],"version":"1.0.0"},"archive_hash":"sha256:7787edb47562f22e8e15afa4d12098909638386cbe681083f86a1841e428832c","bytes":4705,"published_at":"2026-09-12T14:37:01Z","tags":["pickups","gameplay"]},{"title":"Inventory \u0026 Equipment","description":"Reusable item stacks and equipment state. Build inventory interactions around a focused gameplay module.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{"demi.gameplay.core":"^1.0.0"},"engine":"^0.1.0","exported_events":["inventory_changed","equipment_changed"],"files":["README.md","scripts\/demi\/gameplay\/inventory.lua","tests\/inventory_test.lua"],"format_version":1,"name":"demi.gameplay.inventory","public_modules":["demi.gameplay.inventory"],"version":"1.0.0"},"archive_hash":"sha256:e07dad085fb9b7fb86978120843cedce3f51d4ec4fcd8e70314ff9d76eb12d99","bytes":3336,"published_at":"2026-09-12T14:37:01Z","tags":["inventory","equipment","gameplay"]},{"title":"Multiplayer Lobby","description":"Ready states, teams and map selection for multiplayer lobbies. Works with the engine network session contract.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Networking","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{},"engine":"^0.1.0","exported_events":[],"files":["README.md","scripts\/demi\/network\/lobby.lua","tests\/lobby_test.lua"],"format_version":1,"name":"demi.network.lobby","public_modules":["demi.network.lobby"],"version":"1.0.0"},"archive_hash":"sha256:d1cb2e53ac78a19dd8f5739999572a703a0cd2d4366bbeddcf67234f37d0ce53","bytes":5325,"published_at":"2026-09-12T14:37:01Z","tags":["multiplayer","networking"]},{"title":"Projectiles \u0026 Weapons","description":"Weapon timing, hitscan queries and swept projectiles with pooling. A starting point for ranged combat systems.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"Gameplay","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{"demi.gameplay.core":"^1.0.0"},"engine":"^0.1.0","exported_events":["damage_requested","projectile_spawned","projectile_released"],"files":["README.md","scripts\/demi\/gameplay\/hitscan.lua","scripts\/demi\/gameplay\/projectiles.lua","scripts\/demi\/gameplay\/weapon.lua","tests\/projectiles_test.lua"],"format_version":1,"name":"demi.gameplay.projectiles","public_modules":["demi.gameplay.hitscan","demi.gameplay.projectiles","demi.gameplay.weapon"],"version":"1.0.0"},"archive_hash":"sha256:6283a1fd73d323054e2bc29526606a52c686abaaf4950971228fea7d41525ec0","bytes":8170,"published_at":"2026-09-12T14:37:01Z","tags":["combat","weapons","gameplay"]},{"title":"Third-Person Foundation","description":"Camera-relative movement, mouse orbit, stamina, directional rolls and melee attack phases. Includes tested invincibility and once-per-swing damage behavior.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"3D","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{},"engine":"^0.1.0","exported_events":[],"files":["README.md","scripts\/demi\/gameplay\/orbit_camera.lua","scripts\/demi\/gameplay\/melee.lua","scripts\/demi\/gameplay\/third_person.lua","tests\/foundation_test.lua"],"format_version":1,"name":"demi.gameplay.third_person","public_modules":["demi.gameplay.orbit_camera","demi.gameplay.melee","demi.gameplay.third_person"],"version":"1.0.0"},"archive_hash":"sha256:9d4d9b36eeedb0c180e43e9ff3b51f00da58844b335f092634be64c2727f5d46","bytes":9554,"published_at":"2026-09-12T14:37:01Z","tags":["3d","camera","movement","combat"]},{"title":"UI Localization","description":"Load YAML language files and apply translations to native HUD variables. Cache language data and keep copy outside gameplay code.","publisher":"DemiEngine","license":"BSD-3-Clause","kind":"code","category":"UI","price":0,"images":["\/images\/demi-asset.svg"],"format_version":1,"manifest":{"dependencies":{},"engine":"^0.1.0","exported_events":[],"files":["README.md","scripts\/language_file.lua","tests\/language_file_test.lua"],"format_version":1,"name":"demi.ui.language_file","public_modules":["language_file"],"version":"1.0.0"},"archive_hash":"sha256:e08fd06b15c7c8f30e1fcc93e3594c94c7f2c37216a6ad464b5026ac9ba4453e","bytes":8975,"published_at":"2026-09-12T14:37:01Z","tags":["ui","localization"]}]}