{"id":"notreux/upsideengine","name":"upsideengine","scope":"notreux","platform":"roblox","description":"A 2D game engine for roblox","version":"3.3.1","latest":"3.3.1","versions":["3.0.0","3.0.1","3.1.0","3.1.1","3.1.2","3.2.0","3.2.1","3.2.2","3.3.0","3.3.1"],"license":"Apache-2.0","licenseRating":"safe","licenseCaveats":["Modified files must carry a notice of changes. If the package ships a NOTICE file, its attributions must be preserved."],"licenseVerified":true,"dependencies":{},"integrity":"8a4095422223adaca6248a61b90df577a7736c0a26cf592c17706ab8498e32d8","likes":0,"downloads":0,"install":"forest install notreux/upsideengine","url":"https://forest.dev/p/roblox/notreux/upsideengine","files":"https://api.forest.dev/ai/package/roblox/notreux/upsideengine/files","readme":"# Upside Engine\r\nUpside Engine It's a 2d framework that lets you create amazing games with ease. You can use it to make platformers, puzzles, shooters, and more. Upside Engine has many features to help you design your game, such as physics, animations, sounds and more. Upside Engine is the ultimate tool for 2d game development in roblox.\r\n\r\n[Get Started](https://notreux.github.io/UpsideEngine/tutorials/get-started/Installation.html) [Documentation](https://notreux.github.io/UpsideEngine/documentation/Welcome.html)\r\n\r\n# Roadmap\r\n✅ Collision Masks\r\n✅ Parallel lighting system\r\n✅ Angular Velocity\r\n✅ Parallax Objects\r\n⬜ Beams\r\n✅ Spotlights\r\n✅ Update outdated tests\r\n\r\n### WARNING\r\nSome Upside Engine features may not work if you don't have [EditableImages](https://create.roblox.com/docs/es-es/reference/engine/classes/EditableImage) enabled in your game\r\n\r\n# Changelog v3.3.1\n\r\n## Summary\r\n\r\nPhysics improvements focused on correctness and per-object control. Adds gravity scaling, mass-based collision response, and fixes raycast blacklist filtering.\r\n\r\n---\r\n\r\n### Added\r\n\r\n- `GravityScale` property on `PhysicalObject`. Multiplier for gravity per object (default `1`). Set to `0` to disable gravity (useful for projectiles, floating objects).\r\n\r\n### Changed\r\n\r\n- Collision response now distributes correction proportionally to mass. Heavier objects move less on impact, lighter objects move more. Falls back to 50/50 when both masses are zero.\r\n\r\n### Fixed\r\n\r\n- Raycast blacklist mode now correctly accepts arrays (`{ objectA, objectB }`) in addition to dictionaries (`{ [id] = true }`), consistent with whitelist mode.\r\n\r\n---\r\n\r\n# Changelog v3.2.0\r\n\r\n## Summary\r\n\r\nMajor physics overhaul focused on performance and reliability. Introduces angular velocity, optimizes the collision pipeline, and fixes several physics behavioral issues.\r\n\r\n**Key Features:**\r\n- Angular velocity system with collision-generated spin and configurable properties\r\n- Adaptive spatial hash grid for broad-phase collision optimization\r\n- Fixed-timestep physics loop with accumulator pattern\r\n- Improved collision response and jump reliability\r\n\r\n---\r\n\r\n### Added\r\n\r\n- Angular physics properties: `AngularVelocity`, `AngularFriction`, `AngularScale`, `AngularStiffness`, `Torque`.\r\n- `ApplyTorque()` method on `PhysicalObject`.\r\n- Spatial hash grid for O(n) broad-phase collision detection (activates at 30+ objects).\r\n- Continuous collision detection via velocity subdivision.\r\n- Spring-damper stabilization system that snaps objects to stable angles when grounded.\r\n\r\n### Changed\r\n\r\n- Physics loop now runs at a fixed 250Hz timestep with accumulator cap to prevent death spiral on lag spikes.\r\n- Camera and parallax trackers moved to fixed-rate loop for smoother visuals.\r\n- Collision corrections use min/max per direction to prevent wall-squeeze flying.\r\n- Velocity corrections clamped to never reverse direction.\r\n- Jump uses direct velocity impulse instead of `ApplyForce` for reliability.\r\n- GJK/EPA collision modules now use `--!native` and `--!optimize 2` for native compilation.\r\n- Pre-allocated table buffers to reduce GC pressure.\r\n\r\n### Fixed\r\n\r\n- Objects flying when squeezed between walls or jumping against walls.\r\n- Jump pausing at apex due to incorrect `IsGrounded` persistence.\r\n- Performance regression from spatial grid table allocation (resolved with table reuse).\r\n- Character visual judder caused by camera tracking at different rate than physics.\r\n\r\n","readmeTruncated":false}