Releases: notreux/UpsideEngine
v3.1.0
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
- Added to
New Replication System
- NetworkingService:
- Now the
ReplicationRequestevent 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 theAuthorityService.
- Now the
- Handlers.luau: New replication handlers module
- Handles object data updates from clients
- Processes property changes and replication
New Properties file
- Properties.luau: Replaces
EssentialProperties.luauwith expanded functionality- Added
NonReplicableproperty category for properties that should not be replicated - Added
Replicableproperty category for properties that can be replicated - Includes comprehensive property lists for all object types (StaticObject, Sprite, PhysicalObject, Instance)
- Better organization of property metadata
- Added
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
ServerReplicationproperty (boolean, defaults to true) to control server-side replication - Added
RequestsCacheproperty for storing replication requests indexed by client UserId - Improved
Cacheproperty 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:
Filterinterface→FilterTypeinRaycast2dParams - Fixed
Toproperty type inRaycast2dParamsfromanytoVector2 - Improved type safety for
Dictionary<K, V>type definition - Better type definitions for
Eventinterface with properRecord<string, unknown>types - Improved
BaseClassinterface with better method signatures:- Methods now properly return
voidinstead ofanywhere appropriate - Better parameter typing with
...args: any[] - Removed unused
Extendmethod from interface
- Methods now properly return
- Better formatting and consistency across type definitions (commas to semicolons)
Luau Type Definitions
- Enhanced type exports consistency
v3.0.1
Changelog v3.0.1
Features
- Added server-side physics simulation
Refactor
- Removed all uses of
pairs/ipairsto improve consistency and performance - Optimized the physics system with
@nativetag - Enhanced error handling: errors inside event listeners now display the full traceback
Fixes
- Added
ClientIdvalidation in the replication system
v3.0.0
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
v2.1.2
v2.1.1
v2.1.0
Changelog v2.1.0
Breaking changes
- The
ConstantVelocityEnabledproperty has been removed- Impact: Any use or reference to the
ConstantVelocityEnabledproperty in your code will cause errors. - Action required: Remove all the references to the
ConstantVelocityEnabledproperty. To emulate the behaviour of this property you can set the property constantly to a specific value.
- Impact: Any use or reference to the
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
v2.0.1
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
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)