Known Gaps - BaryoDev/dopaminejs GitHub Wiki
Known Gaps
Things the code does not do, or does differently from what a name or a type suggests. Checked against 2.4.0. Each pairs with the page that covers the feature.
Type declarations
types/index.d.ts is written by hand. A test checks which names it declares, and the engine shapes fixed in 2.3.1 are pinned by a runtime test. Other member shapes are not checked against the runtime, so report a mismatch if you find one.
Physics
- Box against circle is never detected.
onCollisionEnteron a component fires every fixed step while two colliders overlap, not once on entry, and components get no exit callback. For once per overlap, listen forcollision_enterandcollision_exiton the kernel event bus (2.4.0). See Engine.raycastreturnsnull.setGravitydoes nothing.- Every pair of colliders is tested each step.
Themes do not restyle the overlay
dopaminejs-themes sets --dopamine-* variables. The core stylesheet reads none of them. See Themes.
Sound
preloadSoundscalled before the audio context exists (before the firstplayorplayTone) resolves without fetching anything. Since 2.4.0 it registers its keys, so the files load when the context starts. See Sound.- Sound packs are tone definitions. Nothing in the core consumes them, and
SoundManagerhas nosetSoundPack. See Plugin: Sound Packs.
Plugins
plugins.remove(name)unregisters the systems the plugin registered duringinit()(2.4.0). Two cases are not tracked: a system registered afterinit(), and one registered while twouseAsync()inits overlapped. Those stay the plugin's to unregister indestroy().WebGLParticlePluginregisters nothing when WebGL is missing. There is no canvas fallback.- Removing
HowlerAudioPlugindoes not bring back anaudiosystem it replaced. - The WebGL particle system has no sprites, no
fireand nostarBurst, so it cannot be passed toGameUI. BattlePassPluginkeeps announced tiers in memory. They fire again after a reload.RewardMiddlewareis not connected toRewardSystem. You call it yourself.WebhookIntegrationdoes not retry a failed request.
React
dopaminejs-react ships no TypeScript declarations. Its actions return undefined until the provider's effect has run. See React.
Rewards
- One player per storage prefix. For several profiles on one device, give each its own
DataServiceprefix. - Levels never go down, even when XP is removed.
addXPgets no streak multiplier. OnlyrecordGamedoes.- Progress is stored on the device. Nothing syncs between devices unless you supply a storage adapter that does.
Docs in the repo
docs/MIGRATION.md on main is corrected, and the themes README on npm (dopaminejs-themes 1.0.2) says that the core stylesheet does not read the theme variables. See Themes.