2D Game Engine | Upside Engine | v3.0.0 | Shaders, Spotlights, ProximityPrompt, ReactiveLabel, etc.


Upside Engine v3.0.0

I’m excited to share Upside Engine v3, a ground-up refresh that makes 2D development on Roblox smoother, faster and more expressive. After two years of work and a focused year of reengineering, v3 brings a cleaner core, better performance and a set of creative tools that let your ideas come to life.

Highlights

  • Build your scenes faster with the Upside Engine Plugin MCP
  • Upside Engine is now available on Wally
  • Shaders using EditableImages
  • Spotlights and a redesigned lighting system
  • Fluid and Parallax objects for richer scenes
  • A rebuilt physics system with more realistic behavior and a native circle shape
  • New UI: ReactiveLabel, ProximityPrompt2D
  • New movement idle keywords for finer animation control (idle_left, idle_right, idle_up, idle_down)
  • Camera smoothness
  • New Tile Palette and Tilemap Editor
  • Refactors and optimizations across sound, character movement and physics

Important

  • The plugin is now free
  • A new demo has been added, try it or check the repo below
  • Some features (shaders and lights) require EditableImages to be enabled in your game
  • This is a major update and includes breaking changes. Please read the upgrade notes before updating existing projects

Demo and repo

Upside Engine Trailer v3.0.0

Join our Discord to ask questions, share feedback, or show what you build. I can’t wait to see what you create with v3, really, thank you very much for being part of the journey :)!

53 Likes

Yo what, no way
I’m not smart enough for this but it looks epic

7 Likes

It’s finally here guys. Can’t believe all this is free

3 Likes

New lightning system is stunning! It’s a huge improvement. Shaders are just fire :fire:

2 Likes

This engine is looking really good!!! It has a promising future

1 Like

awesome

on top of that, its free

1 Like

Awesome engine, too useful! and the new update is fire

1 Like

This looks absolutely incredible. 2D games on Roblox will reach a new level. Thank you for this community resource—I can’t believe this is free! Keep up the great work!

2 Likes

Changelog v3.0.1

Features

  • Added server-side physics simulation

Refactor

  • Removed all uses of pairs/ipairs to improve consistency and performance
  • Optimized the physics system with @native tag
  • Enhanced error handling: errors inside event listeners now display the full traceback

Fixes

  • Added ClientId validation in the replication system
1 Like

Changelog v3.1.0

New guide: Replication guide

Summary

This update introduces a comprehensive authority management system for multiplayer functionality, significantly improving the replication system and network synchronization capabilities. The new AuthorityService provides fine-grained control over which client or server has authority over specific objects, essential for preventing conflicts in multiplayer environments.

Additionally, this update includes important type definition fixes and improvements, particularly for TypeScript users, ensuring better type safety and developer experience.

Key Features:

  • Authority management system (AuthorityService)

  • Enhanced replication system with better client-server communication

  • Improved type definitions with bug fixes

  • Better property categorization and management

  • New geometry utilities for improved raycasting


Added

New Services

  • AuthorityService: New service for managing authority assignments in multiplayer environments

  • Controls which client or server has authority over specific objects

  • Provides SetAuthority() method to assign authority to objects (Server/Client)

  • Provides GetAuthority() method to retrieve current authority assignments

  • Defaults to “Server” authority when not explicitly set

  • Only server can manage authority assignments

New Types

  • AuthorityType: New type definition for authority management (“Server” | “Client”)

  • Added to both Luau and TypeScript type definitions

New Utilities

  • GetCorners.luau: New geometry utility function for calculating corners of objects

  • Added to src/Lib/Util/Geometry/ directory

New Replication System

  • NetworkingService:

  • Now the ReplicationRequest event is only fired when the request comes from a client, so it should only be used on the server side. Once you accept the request, the object will no longer be replicated again unless authority is granted to the client using the AuthorityService.

  • Handlers.luau: New replication handlers module

  • Handles object data updates from clients

  • Processes property changes and replication

New Properties file

  • Properties.luau: Replaces EssentialProperties.luau with expanded functionality

  • Added NonReplicable property category for properties that should not be replicated

  • Added Replicable property category for properties that can be replicated

  • Includes comprehensive property lists for all object types (StaticObject, Sprite, PhysicalObject, Instance)

  • Better organization of property metadata

Changed

Scene Class Enhancements

  • Enhanced Scene:Raycast2d() method with improved corner detection using new GetCorners utility

  • Added visibility bounds calculation for raycasting

  • Added circle shape support in raycasting

  • Improved raycast filtering and collision detection logic

  • Better handling of object dimensions and corners in raycast operations

NetworkingService Improvements

  • Added ServerReplication property (boolean, defaults to true) to control server-side replication

  • Added RequestsCache property for storing replication requests indexed by client UserId

  • Improved Cache property documentation - now explicitly stores cached object data for change detection

  • Enhanced object replication logic

  • Better handling of client-server communication

  • Improved data synchronization between clients

Networking Runtime

  • Refactored remote event handling with new handler system

  • Integrated new replication handlers for client requests

  • Enhanced server-side object replication processing

  • Improved data encoding/decoding for network transmission

  • Better error handling and validation

Request Class

  • Updated internal request handling with improved property management

  • Enhanced parameter processing

UpsideEngine Core

  • Updated to include AuthorityService in service registry

  • Minor initialization improvements

Removed

  • EssentialProperties.luau: Replaced by the more comprehensive Properties.luau module

Fixed

TypeScript Definitions

  • Fixed typo: FilterinterfaceFilterType in Raycast2dParams

  • Fixed To property type in Raycast2dParams from any to Vector2

  • Improved type safety for Dictionary<K, V> type definition

  • Better type definitions for Event interface with proper Record<string, unknown> types

  • Improved BaseClass interface with better method signatures:

  • Methods now properly return void instead of any where appropriate

  • Better parameter typing with ...args: any[]

  • Removed unused Extend method from interface

  • Better formatting and consistency across type definitions (commas to semicolons)

Luau Type Definitions

  • Enhanced type exports consistency
5 Likes

This looks pretty interesting. I was wondering if there is any available documentation I could read up on to see what the engine is fully capable of and compare its implementation complexity to Roblox’s default 3D engine.

1 Like

yep, Welcome - Upside Engine

It’s great to see projects with lots of effort made open-source. Any way to contribute financially?

1 Like

yep, you can donate in this place: Space Fighter - Roblox

1 Like

I came across this guide but I wasn’t sure if it was up to date. The Upside Engine download link downloads the V2 version of the engine instead of V3, and the Client script from the tutorial steps in StarterPlayerScripts is different to that of the Client script in the Space Fighter game. Overall the code looks a lot cleaner in the Space Fighter game so I just want to make sure that the tutorial is up to date before progressing with the engine.

1 Like

I guess you are talking about the Getting Started guide. This is the demo of v2, but it still works in v3. Maybe the module isn’t updated to the latest version in the place, but it should be compatible with v3. And it’s not possible that you’re downloading v2, because the only way to download v2 nowadays is by downloading it using the specific commit. All the download buttons by default download the latest version.

I recommend that you play around with the v3 demo, which is Space Fighter, since it includes the best practices for creating a game today with Upside Engine. Unfortunately, there isn’t a step-by-step guide for Space Fighter since it would be too long, but the current Getting Started guide should be enough to learn the basics.