Skip to content

Releases: notreux/UpsideEngine

v3.1.0

05 Oct 21:43

Choose a tag to compare

Changelog v3.1.0

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

v3.0.1

20 Sep 16:46

Choose a tag to compare

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

v3.0.0

10 Sep 17:07

Choose a tag to compare

Changelog v3.0.0

Some things have been changed for the long term health of the project, this update brings new interesting features, such as shaders, spotlights, fluids and parallax objects.

This update also includes a new physics implementation, which gives much more realism, it also implements a new native “circle” shape.

WARNING

This version won't work if you don't have EditableImages enabled in your game

Breaking Changes

  • Removed the movement keyword "idle" for default controllers

    • Impact: The "idle" keyword wont be automatically be played
    • Action required: Use instead one of the new idle keywords specified in the "Features" section.
  • Removed the parameters in the DrawPixels() method

    • Impact: The method will be executed with default values
    • Action required: Use instead one of the new properties in LightingEnvironment listed in the "Features" section.
  • Removed experimental properties from Particle

    • Impact: Using these properties will throw an error
    • Action required: Remove any usage of these properties

Features

New movement keywords

  • "idle_left"
  • "idle_right"
  • "idle_up"
  • "idle_down"

Shader

  • Allows you to modify the pixels of an image using EditableImages internally

ReactiveLabel

  • Allows you to create labels with animations and effects

ProximityPrompt2D

  • Allows you to create proximity prompts for your games

Fluid

  • An object that can simulate the physics of a fluid

Parallax

  • An object that can be used to create inmersive 2d backgrounds

StaticObject

  • A simpler version of PhysicalObject without physics

Scene

  • New properties
    • Gravity
    • ShaderEnvironment

Character

  • New properties
    • IsJumping

Camera

  • New properties
    • Smoothness

LightingEnvironment

  • New properties
    • LightStyle (Enum.ResamplerMode.Pixelated or Enum.ResamplerMode.Default)
    • ChunkResolution

Light

  • Now lights use EditableImages
  • New properties
    • Shape ("PointLight" or "SpotLight")
    • Rotation (only works in SpotLights)
    • Angle (only works in SpotLights)
    • Inverted (only works in PointLights)

Particle

  • New properties
    • Rotation

PhysicalObject

  • New properties
    • Shape ("Custom" or "Circle")
    • Friction
    • Acceleration

Refactor

  • Sound tracking optimization
  • Character movement rework
  • Physics rework

Fixes

  • SpriteList doesn't work
  • Actors sometimes doesn't get initialized
  • IsEqual util doesn't work correctly

v2.1.3

19 Feb 17:04

Choose a tag to compare

Changelog v2.1.3

Some optimizations and fixes

Documentation

  • Multiplayer tutorial

Refactor

  • Network optimization

Fixes

  • Clone doesn't work correctly
  • ClientId type causes error

v2.1.2

25 Jan 16:50

Choose a tag to compare

Changelog v2.1.2

Some optimizations

Refactor

  • Network optimization

v2.1.1

20 Jan 00:59

Choose a tag to compare

Changelog v2.1.1

Small fix

Documentation

  • Plugin guide has been added

Fixes

  • False values are not loaded when loading plugin content

v2.1.0

07 Jan 18:27

Choose a tag to compare

Changelog v2.1.0

Breaking changes

  • The ConstantVelocityEnabled property has been removed
    • Impact: Any use or reference to the ConstantVelocityEnabled property in your code will cause errors.
    • Action required: Remove all the references to the ConstantVelocityEnabled property. To emulate the behaviour of this property you can set the property constantly to a specific value.

Fixes

  • Collisions wasn't working when ConstantVelocityEnabled property was enabled
  • There were some files with .lua instead of .luau, which was incoherent
  • HitboxScale wasn't working properly
  • Jump looks forced

v2.0.2

05 Jan 13:36

Choose a tag to compare

Changelog v2.0.2

Some changes have been made before a major update to make the public version more stable in the meantime.

Fixes

Delta time was unstable
Runtime was executed in server unnecessarily

v2.0.1

06 Sep 21:54

Choose a tag to compare

Changelog v2.0.1

Some changes were made to improve the project performance

Features

  • Added OnlyTrackVisible property to the scene object

Improvements

  • Physics optimization

Fixes

  • Physics fix: x and y axes are now calculated separately and not together as before, as this caused them not to work correctly
  • Some documentation examples were outdated

v2.0.0

02 Sep 20:32

Choose a tag to compare

Changelog v2.0.0

Many things have been changed for the long term health of the project, the following updates will be less likely to break your code probably. It is strongly recommended to go through the tutorial again to learn the new way of working with upside engine.

Breaking Changes

  • The :Create() method has been replaced by .new(name: string)

    • Impact: Any use or reference to the :Create() method in your code will cause errors.
    • Action required: Use .new() instead, .new just accepts a parameter, the class name. It is recommended to go through the get started tutorial again to see the new ways of doing things that were previously done automatically by passing arguments.
  • The :GetService() method has been replaced by .GetService(name: string)

    • Impact: Any use of the :GetService() method using colon in your code will cause errors.
    • Action required: Use "." instead of ":".
  • The :Extend() method has been deleted

    • Impact: Any use or reference to the :Extend() method in your code will cause errors.
    • Action required: As we have switched to idiomatic OOP this method is unnecessary..
  • DrawPixels() method has changed all its parameters by the pixel size of the lights

    • Impact: Any use of the :DrawPixels() method with the old parameters in your code will cause errors.
    • Action required: DrawPixels now accepts just one parameter, the pixel size.
  • Scene instance now is a folder

    • Impact: Any use or reference to the scene instance in your code will probably cause errors.
    • Action required: Now the scene and the lighting frames are grouped in a folder. When using .Instance, you access the folder, the scene frame is named "GameFrame", and the lighting frame "Lighting".
  • Removed default ScreenGui

    • Impact: The scene will not be displayed as it does not have a ScreenGui/SurfaceGui/BillboardGui as parent
    • Action required: You have to set the scene instance parent to a ScreenGui/SurfaceGui/BillboardGui.
  • The "Load" and "Unload" methods of the sceneManager have been removed and replaced by the "Enable" and "Disable" scene methods

    • Impact: Any use of the "Load" and "Unload" methods in your code will cause errors.
    • Action required: You have to use the scene "Enable" and "Disable" methods instead.
  • The "FindByName" and "HasOne" methods has been removed from the scene object

    • Impact: Any use of the "FindByName" and "HasOne" methods in your code will cause errors.
    • Action required: You can use the same methods in the property "Objects".

Features

  • Added collision masks
  • Added parallel lighting system
  • Added constant velocity to physical objects
  • Added camera offset
  • Added free camera (The camera follows the character when leaving from the camera limits)