Known issues
-
There is an issue where Devices only trigger when in close proximity to the player while playing an experience. Events are not lost, they are just delayed until they are close to a player. This may result in devices not responding immediately in a way you expect.
- For example, if a HUD Message Device is triggered but is far away, it may not display a message. Later when a player gets close, it may display the message.
- We are actively working on a solution to this problem.
- This may disrupt experiences were devices are spread out over a large area.
- There is a known issue in the Conditional Button where the number of items may not be respected. (A requirement of 5 coins may pass when the player has 1 coin)
- Devices that should persist data between play sessions will not persist.
- Unreal Revision Control, in some project setups, the UProject file may become dirty during edit operations.
Removals
- Placement mode has been removed from UEFN.
- Memory Bar has been removed from UEFN. It was not accurate and would misrepresent the current state of the project. This is the first step in work being done on memory.
Notice: Removal of Assets
If you have any of the following assets in your project, you will not be able to upload it until they are removed.
- Any meshes that were referenced from the /Fortnite/Meshes folder
- Any textures that were referenced from the /Fortnite/Textures folder
- Any materials that were referenced from the /Fortnite/Materials folder
- Any asset that was referenced from the /Basic folder, except for GrayBox assets. Graybox assets are remaining exposed.
This does not affect props or devices. However, if you receive a validation error on uploading, you will need to remove the assets to successfully cook your project.
As we approach public beta, we are refining the list of assets that are exposed in UEFN. Some assets were never intended to be exposed and other assets are going to be available through other means.
Notes:
- Certain Verse APIs referring to a Custom NPC spawner are included in this update but do not have the requisite devices yet.
New Features:
Unreal Revision Control
What is it?
- Unreal Revision Control is a cloud-first revision control system that enables smooth collaboration with your teammates in UEFN. Integrated directly into the editor, Unreal Revision Control maintains a single source of truth for the latest state of your UEFN project, so that you and your collaborators can make and check-in changes to different parts of a project simultaneously as well as sync one anothers’ changes.
Current Limitations:
- In order to collaborate, teams must be set up with team members. However, team management is part of Creator Portal which has not launched yet.
- Because of this limitation at this point in time, Unreal Revision Control is limited to revision control of individual users on their projects.
- Team management is coming soon. Once it is enabled, teams will be able to utilize all the features of Unreal Revision Control.
Core functionality:
- Enabling Unreal Revision Control
- For new projects: When creating a new UEFN project, Unreal Revision Control will be enabled by default via a checkbox (which currently says “Unreal Revision Control”) on the project creation modal. If you do not wish to enable Unreal Revision Control, simply uncheck the box.
- For existing projects: To enable Unreal Revision Control on an existing project, click on the “Source Control” menu in the bottom right-hand corner of the application, then click “Change Source Control Settings”, then choose Unreal Revision Control from the dropdown.
- Making and Checking in changes:
- As you make and save changes to assets in your project they will be checked out to you, so that you and a collaborator do not change the same asset and end up in a state of conflict.
- Anytime you have saved changes that have not been checked into Unreal Revision Control, the “Check-in Changes” button near the bottom right-hand corner will activate.
- Clicking on this button will submit your changes to Unreal Revision Control and make them available for your teammates to sync. Checking in will also enable your teammates to check out and make further edits to those assets.
- We recommend checking in your changes frequently to ensure your collaborators always have access to your latest changes and to further reduce the risk of conflicts.
- Syncing Latest
- Anytime new changes have been checked in by one of your teammates, the “Sync Latest” button will activate, informing you that there are new changes to sync.
- Syncing Latest will sync the most recent version of the project so that you will see all of your collaborators’ recent changes.
- We recommend syncing latest whenever new changes are available to ensure you’re always up-to-date and to further reduce the risk of conflicts.
- Granting your team access to a project:
- Granting access will be done via team management. This interface will be released in the future.
- Soon you’ll also be able to grant your team access to a Unreal Revision Control-saved project upon creation via the Teams dropdown next to the checkbox, however this flow is not yet fully functional.
- Unreal Revision Control CLI
- Not all of Unreal Revision Control’s functionality is exposed in the UI at this stage. If you’d like to dive deeper into some more of the functionality, such as reloading an previous revision, we’ve included a video walkthrough of someo of the CLI’s functionality. Find it linked below.
World Partition Streaming
World Partition Streaming is enabled in 22.35!
What is World Partition Streaming?
The first step of enabling World Partition was one file per actor. Now, streaming has been enabled. Distanced based streaming means that non-device actors in your world will now unload when they are far away and stream in. This results in better performance in framerate and memory. It empowers you to build larger experiences by unloading assets that are far away from the player.
You can enable streaming by opening the World Settings tab (Window → World Settings). Then checkboxing Enable Streaming.
If you enable streaming, once something streams out, it disappears. In games where you have a long sight distance, this means the world at a distance vanishes. The way to solve this is to have a lower cost asset take its place. This is where the Hierarchical Level of Detail system comes into play. HLODs for short. HLODs are a lower cost approximation of static geometry in your scene. So when something streams out, it will be replaced by this lower cost asset.
You can generate HLODs after enabling streaming. Do this in the Build → Build HLODs
In addition, you can now build Hierarchical Levels of Detail to go with streaming. These are lower polygon approximations of meshes in your level. When something streams out, a HLOD will take it’s place. The opposite occurs when the player gets closer, the HLOD will be disabled and your assets will stream in. The intent is to create a seamless experience as things load and unload as players move across your experience.
UEFN specific documentation is coming, but you can get an overview of World Partition here: World Partition in Unreal Engine | Unreal Engine 5.0 Documentation
Limitations of World Partition:
- Data Layers are not enabled
- Level instancing is not enabled
Devices
Removed:
- Decal Device
- Objective
- Powerup VFX
Added:
- Chest & Ammo Gallery
- Character Device
- Consumables Gallery
- Phone Booth
- Cool Carpet
- Audio Player
- Fishing Rod Barrel
- Hover Platform
- Item Container
- Physics Boulder
- Physics Tree
- Octane Spawner
- Sword Stone
- Device Beacon
- Class Selector
- Dance Mannequin
- Guard Spawner
- Map Indicator
- Movement Modulator
- Damage Amplifier Powerup
- Grind Powerup
- Skydive Volume
- Skydome
- Streaming Radio
- Trick Tile
- Trigger Attribute
- Trigger Perception
- Trigger Tile
- VFX Creator
- VFX Spawner
- Bounce Pad
- Real Time Clock
- Chiller
- Damage Trap
- Full Damage Rail
- Half Damage Rail
- Mounted Turret
- LaunchPad
- Scoreboard
- Poison Dart Trap
- Ice Block
The following devices were released but were not meant to and will be removed in the next release, please do not use them:
- Emote Controller
Verse
Verse API for Player
Characters
- GetTransform():transform
- GetVehicle():fort_vehicle
- CrouchedEvent():subscribable(tuple())
- JumpedEvent():subscribable(tuple())
- SprintedEvent():subscribable(tuple())
- Damage(Amount:float):void
- DamagedEvent():subscribable(float)
- Heal(Amount:float):void
- HealedEvent():subscribable(float)
- GetHealth():float
- SetHealth(Health:float):void
- GetMaxHealth():float
- SetMaxHealth(MaxHealth:float):void
- IsDown():logic
- IsDownButNotOut():logic
- GetShield():float
- SetShield(Shield:float):void
- GetMaxShield():float
- SetMaxShield(MaxShield:float):void
Verse API for Vehicles
- GetTransform():transform
- Damage(Amount:float):void
- DamagedEvent():subscribable(float)
- GetHealth():float
- SetHealth(Health:float):void
- GetMaxHealth():float
- SetMaxHealth(MaxHealth:float):void
Improved Verse API for Devices!
Score Manager
- SetToPlayerScore(Player:player):void = external {}
- SetScoreValue(Value:int):void = external {}
- SetIncrementScoreValueOnAward(ShouldIncrement:logic):void = external {}
- SetScoreIncrementQuantity(IncrementQuantity:int):void = external {}
- GetScoreValue():int = external {}
- GetIncrementScoreValueOnAward():logic = external {}
- GetScoreIncrementQuantity():int = external {}
- GetCurrentScore(Player:player):int = external {}
HUD Message Device
- SetMessage(Text:message):void = external {}
- SetDisplayForFiniteDuration(FiniteDisplayTime:float):void = external {}
- SetDisplayForInfiniteDuration():void = external {}
- GetFiniteDisplayDuration():float = external {}
- IsDisplayDurationFinite():logic = external {}
Billboard
- SetText(Text:message):void = external {}
- SetTextSize(Size:int):void = external {}
- SetShowBorder(Show:logic):void = external {}
- GetTextSize():int = external {}
- GetShowBorder():logic = external {}
Button
- SetInteractionTime(Time:float):void = external {}
- SetNumTimesCanTrigger(NumTimes:int):void = external {}
- SetInteractionText(Text:message):void = external {}
- GetInteractionTime():float = external {}
- GetTimesCanTrigger():int = external {}
Trigger
- SetNumTimesCanTrigger(NumTimes:int):void = external {}
- SetTransmitDelay(Time:float):void = external {}
- SetResetDelay(Time:float):void = external {}
- GetNumTimesCanTrigger():int = external {}
- GetRemainingNumTimesCanTrigger():int = external {}
- GetTransmitDelay():float = external {}
- GetResetDelay():float = external {}
Timer Device
- SetDuration(Duration:float):void = external {}
- SetTimeRemaining(TimeRemaining:float, Player:?player):void = external {}
- GetDuration():float = external {}
- GetTimeRemaining(Player:?player):float = external {}
Tracker
- SetTargetValue(TargetValue:int):void = external {}
- SetTitleText(Text:message):void = external {}
- SetDescriptionText(Text:message):void = external {}
- GetTargetValue():int = external {}
Conditional Button
- SetInteractionTime(Time:float):void = external {}
- SetInteractionText(Text:message):void = external {}
- SetKeyItemConsumedScore(KeyItemIndex:int, Score:int):void = external {}
- SetKeyItemCountRequired(KeyItemIndex:int, Count:int):void = external {}
- GetInteractionTime():float = external {}
- GetKeyItemConsumedScore(KeyItemIndex:int):int = external {}
- GetKeyItemCountRequired(KeyItemIndex:int):int = external {}
- GetRemainingKeyItemCountRequired(KeyItemIndex:int):int = external {}
Switch
- SetInteractionTime(Time:float):void = external {}
- SetTurnOnInteractionText(Text:message):void = external {}
- SetTurnOffInteractionText(Text:message):void = external {}
- GetInteractionTime():float = external {}
- GetCurrentState(Player:?player):logic = external {}
Save Point
- SetAutoSaveEnabled(Enabled:logic):void = external {}
- GetAutoSaveEnabled():logic = external {}
Item Granter
- SetNextItem(Index:int):void = external {}
Item Spawner
- SetRespawnItemOnTimer(Respawn:logic):void = external {}
- SetTimeBetweenSpawns(Time:float):void = external {}
- GetRespawnItemOnTimer():logic = external {}
- GetTimeBetweenSpawns():float = external {}
Damage Volume
- SetDamage(Damage:int):void = external {}
- GetDamage():int = external {}
Prop Mover
- SetTargetDistanceInMeters(Value:float):void = external {}
- SetTargetSpeedInMetersPerSecond(Value:float):void = external {}
- GetTargetDistanceInMeters():float = external {}
- GetTargetSpeedInMetersPerSecond():float = external {}
Capture Area
- SetCaptureAreaHeightInMeters(Height:float):void = external {}
- SetCaptureAreaRadiusInMeters(Radius:float):void = external {}
- GetCaptureAreaHeightInMeters():float = external {}
- GetCaptureAreaRadiusInMeters():float = external {}
Additions
- The UEFN toolbar has been updated.
- To start the client, you now click Launch Session
- You may now Start and End the game session from the UEFN toolbar without having to do so in the client.
- The Refresh button has been update and is now Push Changes
- The project panel has been updated. This is a work in progress but it is more reflective of the overall design. You’ll notice some new icons to indicate the status of your projects. These icons indicate whether they are a creative island or a Unreal Revision Control project that you haven’t downloaded yet.
- Project Size
- Project Size Panel
- A project size panel is viewable by going to Tools → Project Size
- This panel gives you useful information about your project:
- Upload Size
- Cook Size
- Download Size
- Breakdown of where your project size budget is spent
- This panel retrieves data from the last time you pushed your changes to the server. Please click the refresh button to retrieve the stats from your last cook.
- Project Size
- The project upload size has been raised from 300 MB to 512 MB.
- The file count limit of 600 has been eliminated.
- While publishing is not yet available yet, the current publish limit for experiences is going to be 300 MB download. Please report if your experience exceeds this limit and you plan to publish in the future.
- Project Size Panel
- Generate Build Codes
- From the Project Panel, you can now generate a Build Code.
- This currently reads “Test Code” but will change in the future
- Once team management is available. Build Codes can only be used by members of the team to test your experience from within the client.
- You must push your project at least once in order to generate a build code.
- Expanded Level Save Volume
- The level bounds have been expanded. This fixes the issue where on XL and larger islands, actors would disappear during live edit.
- The new volume is approximately 5km by 5km. For comparison, an XL island is 1.2km x 1.2km and the Battle Royale island is 2.4km x 2.4km. Don’t forget to turn on World Partition Streaming!
- New Cloud Content Cooking Environment
- The UEFN content pipeline has received many software fixes and is running on new and improved hardware. These steps are going to be beneficial in the long term as the new systems are more powerful and will provide faster cooking of content.
- Cinematic Sequence Device
- Functions to:
- Play
- Pause
- Stop
- Toggle Pause Function
- Events:
- On Stopped
- Playback Options:
- Loop
- Restore State
- Autoplay
- Visibility - Options Instigating Player, Instigating Team, Everyone
- Functions to:
- The Rect Light has been added to the available light sources
Bug Fixes
- Disabling the Game Start Countdown now removes the Buzzer sound
- Landscape shader issues have been addressed
- Many bug fixes have been applied to the Live Edit System
- A Potential Fix for Latency in the Editor was added.
- Wert (Andrew) please check to see if this addresses the stuttering issue you were experiencing
- Actors would not return to their original positions after ending the game when those actors were used in a sequence. One particular instance of this issue has been addressed.
- Pop up Dialog Device now obeys the character limit of 150
- A crash has been addressed when changing a map from public to private.
- Cutting and pasting a Collectibles Gallery no longer results in some items being placed very far away.
- Animated Mesh Device now displays the Skeletal Mesh Correctly in UEFN, Creative Edit and Play
- Prop manipulator is now functioning correctly when placed from UEFN
- My Island settings menu displays incorrect warning when Experience Settings device is not present
- An issue where Prefabs disappear after being damaged while in Creative Edit have been addressed
- Objects that have been deleted from UEFN or Creative Edit now should stay deleted
- Items can now be added to the conditional button
- There is a known issue where the number of items may not be respected. (A requirement of 5 coins may pass when the player has 1 coin)
- The Speaker device now has access to more than 1 audio cue
- Face of a mesh not highlighting correctly in Modeling Mode has been fixed
- Several other Fixes