
P12 Editor Alpha V0.40.0.0 Release Note
Version: 0.40.0.0 Release Date: November 28, 2024We're excited to bring you our latest update! This release introduces powerful font customization options, dynamic visual effects, and enhanced UI controls to help you create even more impressive experiences. Highlights:[NEW] 12 New Professional Fonts[NEW] Skybox Background Transition Effects[ENHANCEMENT] World UI 2.0: Advanced Display Controls[ENHANCEMENT] Material Specular Effects[NEW] 🔤 12 New Professional FontsWe've significantly...

P12 Arcana 3.0 Trial Run
OverviewDear P12 Creators and Voters community: Since November 2023, we’ve came through 550 days of creative time, 18 rounds P12 Arcana filled with fantastic creations and inspiring works done! Along the way, we’ve made changes to P12 Arcana from display gallery to playable / launchable creations via PGE Client. However, there are more issues to be tackled:Fradulent votes on over-rated creationsDecent creations being over-looked / missedStable / On-time bounty to our P12 StarmakersP12 Arcana ...
P12 Genesis Airdrop Tutorial
IntroGreetings to all our gamers and developers! We have witnessed more than 30K Steam Gamers and Developers joining the Genesis Soul-Bound NFT Airdrop! Big thanks for your great passion for P12! This is a step-by-step tutorial on how you can claim NFTs if you are a Steam Gamer or Developer. Feel free to take a close look and if you have further questions, please leave a message here:Discord - Group Chat That's All Fun & GamesDiscord is great for playing games and chilling with friends, ...
Building the first and only UGC Game Engine for onchain games and autonomous worlds.



P12 Editor Alpha V0.40.0.0 Release Note
Version: 0.40.0.0 Release Date: November 28, 2024We're excited to bring you our latest update! This release introduces powerful font customization options, dynamic visual effects, and enhanced UI controls to help you create even more impressive experiences. Highlights:[NEW] 12 New Professional Fonts[NEW] Skybox Background Transition Effects[ENHANCEMENT] World UI 2.0: Advanced Display Controls[ENHANCEMENT] Material Specular Effects[NEW] 🔤 12 New Professional FontsWe've significantly...

P12 Arcana 3.0 Trial Run
OverviewDear P12 Creators and Voters community: Since November 2023, we’ve came through 550 days of creative time, 18 rounds P12 Arcana filled with fantastic creations and inspiring works done! Along the way, we’ve made changes to P12 Arcana from display gallery to playable / launchable creations via PGE Client. However, there are more issues to be tackled:Fradulent votes on over-rated creationsDecent creations being over-looked / missedStable / On-time bounty to our P12 StarmakersP12 Arcana ...
P12 Genesis Airdrop Tutorial
IntroGreetings to all our gamers and developers! We have witnessed more than 30K Steam Gamers and Developers joining the Genesis Soul-Bound NFT Airdrop! Big thanks for your great passion for P12! This is a step-by-step tutorial on how you can claim NFTs if you are a Steam Gamer or Developer. Feel free to take a close look and if you have further questions, please leave a message here:Discord - Group Chat That's All Fun & GamesDiscord is great for playing games and chilling with friends, ...
Share Dialog
Share Dialog
Building the first and only UGC Game Engine for onchain games and autonomous worlds.

Subscribe to Project Twelve

Subscribe to Project Twelve
>2.6K subscribers
>2.6K subscribers

The save function in the editor is optimized so that it will not generate file differences when there are no changes to the project content. If you want to simulate an empty project, you can drag any object into the main viewport and then delete it, and then execute save to save an empty project in Projects
Disabled the resource selector in the character editor (the resource selector will be optimized as a whole in the future)
Removed the "chest open/close" and "chest angle" items from the character editor. The effect of these two properties can be achieved by other editing items, so for the sake of performance, we decided to remove these two properties and the corresponding interface has been deprecated
In the character editor, when the character model in the main viewport is not displayed, frequent switching of the character model may result in abnormal character shapes. For now, It can be resolved by refreshing and switching the character model again. This will be optimized in future updates
In the UI editor, after resetting the resources placed in the UI component, modifications to the size of the UI component will not be saved. You need to place any UI mapping resources and then adjust the size of the component to circumvent the problem
Under listenserver mode, the scaling interface for characters can occasionally fail. There will be a follow-up fix for this.
Single-sided scaling Single-sided scaling feature is only available for static models There is now a single-sided scaling indicator (x-red, y-green, z-blue) in the positive and negative directions of the x, y, and z axes of the static model envelope box.
When the mouse hovers over the single-sided zoom indicator, the indicator is selected (yellow)
When performing single-sided zoom, the indicators other than the currently selected indicator shrink.
Dragging the selected single-sided zoom indicator to perform single-sided zooming in the corresponding direction, changing both position and scale.
When performing single-sided scaling, the minimum value of the X, Y, and Z axis Scale is 0, otherwise, the scaling is not continued.
Whole-scaling
Select any single-sided scaling indicator, hold shift, and drag to whole-scale.
When performing single-sided scaling, the minimum value of X, Y, and Z axis Scale is 0, otherwise, the scaling will not be continued.
The view selector can be used to switch views and adjust the position and orientation of the camera.
View Selector - UI
Base surface (6): contains the front, back, left, right, top and bottom.
Corner faces (8): the corner faces are sandwiched by three adjacent faces, containing the front upper left, front upper right, front lower left, front lower right, rear upper left, rear upper right, rear lower left, and rear lower right.
View selector - view switching
The view can be switched with the view selector's base, corner, and adjacent face selection keys.
Clicking on one of the base/corner faces of the view selector will rotate the position and orientation of the camera and switch the view to that face.
When the view selector is in the base plane, hover over the view selector range to display the adjacent base plane selection key. When you click on an adjacent base plane selection key, you will rotate the camera position and orientation to switch the view to the adjacent plane of the current view.
View selector - camera rotation logic
The view selector is rotated with the coordinates when the camera orientation is rotated.
The object focus mode rotates on the axis of the geometric center of the focused object.
In non-focus mode, the camera is rotated on the axis of its geometric center.
View selector - position
Left click and long press on the view selector to drag the view selector position and release the left click to fix the view selector on that position.
The view selector must be moved inside the main viewport. If it goes beyond the main viewport, it will rebound to the main viewport after releasing the left button.
Click the Restore default window settings option in the view to restore the view selector control to its default position.
Object Manager supports copying object IDs when multi-selecting
Different object IDs are automatically separated by ","
The order of copying IDs is sorted from top to bottom of the object order in the object manager
To save the performance consumption between triggers and triggers
Also solve the problem of not being able to interact with the trigger at one end
New QueryOnly mode for collision detection
Original solution:
Use Type.PropertyStatus

After modification:
Use Type.CollisionStatus

Also compatible with:
Type.PropertyStatus, Type.CollisionStatus

Developers can use DevTools debugging tools to debug projects on mobile in real time to get instant game feedback and view related performance consumption The steps are as follows.
Enter developer mode on the mobile side to enable USB debugging
After starting the game, look for the DevTools online URL in the log file in the directory below /data/data/com.Yourcompany.MetaWorldTest/files/UE4Game/MetaWorldMobile/MetaWorldMobile/Saved/Logs/MetaWorldMobile.log
Open the "Source Code" tab in your browser at the link above and interrupt to start debugging (note that you need to be on the same network)
Open the JS Script Profiler view in the tab list, grab the performance data and view
【Optimization】Optimize header node runtime environment when creating prefabricated objects
When creating a prefabricated body with the right click in the object manager, the runtime environment for generating the prefabricated body header node is no longer all double-ended, and the prefabricated body header node of the corresponding environment is generated according to the runtime environment of the child object;
When generating a prefab, if the selected objects are all double-ended objects, the generated prefabricated body object is double-ended
When generating a prefab, if the selected object has both double-ended and single-ended, the generated perform object is double-ended
When generating a prefab, if the selected objects are single-ended, but there are both client and server, the generated prefabricated body object is double-ended
When generating the prefabricated body, if the selected objects are all single-ended and all are clients or servers, the generated prefabricated body object is single-ended and the network state is the same as the selected object
【Optimization】Object Manager filtering optimization
Object Manager filtering optimization, support for selecting multiple filter conditions for filtering (results are taken and set)
Support filtering the viewport to show hidden and locked status in the viewport
【Optimization】Disconnected reconnection optimization
10-second automatic reconnection will be triggered when the connection between the front and back ends of the game fails due to network fluctuations, etc., and players will not be able to operate during the automatic reconnection
The disconnection will be triggered when the automatic reconnection process ends and the server is still not successfully connected
Click on the "reconnect" function after disconnection, then you will be directly matched with a new game room again
If the connection to the server is successful during automatic reconnection, the game will be reconnected without perception
New game client from the onPause state back to running, no longer perform reconnection logic, onPause state can support a maximum of 3 minutes to maintain, beyond 3 minutes back to running will be disconnected from the server.
No longer support the disconnection and reconnection function outside the game, the game will not be able to reconnect into the room before the disconnection after exiting
Disconnect reconnect callback functions:
Callback function triggered on network disconnection: addNetworkDisconnect(callback : () => void): void
Remove the callback function triggered when the network is disconnected: removeNetworkDisconnect(callback : () => void): void
Callback function triggered on successful reconnection after network disconnection: addNetworkReconnection(callback : () => void): void
Remove the callback function triggered on successful reconnection after network disconnection: removeNetworkReconnection(callback : () => void): void
New custom tire radius property, you can customize the radius of the tire envelope according to the size of the vehicle model
Physical calculation of the new vehicle migrated to the client, reducing server consumption
API interface adjustment
/**
New SetDriver() interface, which requires binding of the vehicle on the client side to confirm the actual control role of the vehicle.
*/
if(GamePlay.isClient()){
this._Vehicle4W.setDriver(player);
}
/**
The vehicle control interface is changed to be called directly on the client side.
*/
if(GamePlay.isClient()){
//Receive button events from the client to control the throttle and direction of the vehicle
Events.onKeyDown(Type.Keys.Up,()=>{
this._Vehicle4W.setThrottleInput(1);
});
Events.onKeyDown(Type.Keys.Left,()=>{
this._Vehicle4W.setSteeringInput(1);
});
//Receive button events from the client to control the vehicle brakes
Events.onKeyDown(Type.Keys.SpaceBar,()=>{
this._Vehicle4W.setHandbrakeInput(true);
});
}
1.Object list optimization
No longer expand all the parent objects after adjusting the position between them
When an object is selected in the main viewport, the object list will locate the object
2.Add option to the right-click menu in the designer Both the object list and the right-click menu of the designer allow operations. 3.New control type - button (allows mounting of text subobjects) New control type [Button], and renamed the previous button control to [Button (Deprecated)], the object properties of [Button (Deprecated)] are unchanged from before, and whether [Button (Deprecated)] is retained in the future will be determined by usage [Button] is more flexible than [Button (Deprecated)] in terms of configuring the text style function, the specific differences are as follows. No [text] object property grouping, that is, you can not directly configure the text, other properties, and [button (deprecated)] exactly the same [Button] can be the parent of [Text], and there is no limit to the number of child objects that can be mounted on [Text]. New Button API: MWGameUI.MWUIGameButton Deprecated Button API: MWGameUI.MWUIButton 4.Image resources can be replaced by dragging the image object directly into the main window After dragging the UI mapping into the designer and releasing it, it will directly replace the image/button component image resource rendered at the top of the mouse location 5.Progress bar button image with and selectable To allow developers to adjust the position of the progress bar buttons to avoid some images not being dragged to the edge when dragging, new properties and have been added [Anchor Type]: You can choose [Center] or [Both sides] to modify the specific position of the anchor point in the button image [Offset Value]: Used to modify the position of the button relative to the anchor point When the anchor type is [Center], an offset value of X pixels shifts the button image X pixels to the right, and an offset value of -X pixels shifts the button image X pixels to the left. When the anchor type is [Both sides], an offset value of X pixels means that the leftmost and rightmost positions of the button image can be slid as a whole, and an offset value of -X pixels means that the leftmost and rightmost positions of the button image are shifted inward by X pixels as a whole 6.New and functions for containers Previously, when auto-layout was enabled, all child objects in the container were sorted according to top-to-bottom and left-to-right order; this update adds and properties to determine exactly how these child objects are sorted: Horizontal sorting From left to right Right to Left Vertical sorting Top to bottom Bottom to top With the two existing properties, a total of 72 types of container layouts can be achieved Container type Horizontal layout Vertical layout Alignment rules Top Left Alignment Center-left alignment Bottom Left Alignment Top Right Alignment Right center alignment Lower right alignment Top center alignment Center alignment Bottom center alignment Step 1: The alignment rules determine where the overall position of the aligned objects is in the container and which of the nine anchor points of the container is used to align them Step 2: Horizontal and vertical sorting determines how these aligned objects are aligned internally as a whole, specifically which corner of the overall position of the aligned objects will be at the top of the hierarchy Step 3: Decide the alignment direction according to the container type (horizontal distribution/vertical distribution), the object at the top of the hierarchy is placed in the corner determined in step 2, and the remaining objects are distributed according to this alignment direction Example: By default, the default value of container type is the horizontal layout and the default value of alignment rule is top-left alignment when grid layout is turned on. Modify the left-to-right property to right-to-left and the top-to-bottom property to bottom-to-top. Another example: turn on the default case of grid layout, set the container type to a vertical layout, and the alignment rule to top-right alignment. Modify the left-to-right property to right-to-left and the top-to-bottom property to bottom-to-top. 7.New (control all controls under UI object instead of single control slot hierarchy) New , corresponding to the same effect of [UI settings] - [z factor] in the properties panel, used to adjust the rendering order between UI files, the UI file with the larger z factor is rendered in the upper layer

The save function in the editor is optimized so that it will not generate file differences when there are no changes to the project content. If you want to simulate an empty project, you can drag any object into the main viewport and then delete it, and then execute save to save an empty project in Projects
Disabled the resource selector in the character editor (the resource selector will be optimized as a whole in the future)
Removed the "chest open/close" and "chest angle" items from the character editor. The effect of these two properties can be achieved by other editing items, so for the sake of performance, we decided to remove these two properties and the corresponding interface has been deprecated
In the character editor, when the character model in the main viewport is not displayed, frequent switching of the character model may result in abnormal character shapes. For now, It can be resolved by refreshing and switching the character model again. This will be optimized in future updates
In the UI editor, after resetting the resources placed in the UI component, modifications to the size of the UI component will not be saved. You need to place any UI mapping resources and then adjust the size of the component to circumvent the problem
Under listenserver mode, the scaling interface for characters can occasionally fail. There will be a follow-up fix for this.
Single-sided scaling Single-sided scaling feature is only available for static models There is now a single-sided scaling indicator (x-red, y-green, z-blue) in the positive and negative directions of the x, y, and z axes of the static model envelope box.
When the mouse hovers over the single-sided zoom indicator, the indicator is selected (yellow)
When performing single-sided zoom, the indicators other than the currently selected indicator shrink.
Dragging the selected single-sided zoom indicator to perform single-sided zooming in the corresponding direction, changing both position and scale.
When performing single-sided scaling, the minimum value of the X, Y, and Z axis Scale is 0, otherwise, the scaling is not continued.
Whole-scaling
Select any single-sided scaling indicator, hold shift, and drag to whole-scale.
When performing single-sided scaling, the minimum value of X, Y, and Z axis Scale is 0, otherwise, the scaling will not be continued.
The view selector can be used to switch views and adjust the position and orientation of the camera.
View Selector - UI
Base surface (6): contains the front, back, left, right, top and bottom.
Corner faces (8): the corner faces are sandwiched by three adjacent faces, containing the front upper left, front upper right, front lower left, front lower right, rear upper left, rear upper right, rear lower left, and rear lower right.
View selector - view switching
The view can be switched with the view selector's base, corner, and adjacent face selection keys.
Clicking on one of the base/corner faces of the view selector will rotate the position and orientation of the camera and switch the view to that face.
When the view selector is in the base plane, hover over the view selector range to display the adjacent base plane selection key. When you click on an adjacent base plane selection key, you will rotate the camera position and orientation to switch the view to the adjacent plane of the current view.
View selector - camera rotation logic
The view selector is rotated with the coordinates when the camera orientation is rotated.
The object focus mode rotates on the axis of the geometric center of the focused object.
In non-focus mode, the camera is rotated on the axis of its geometric center.
View selector - position
Left click and long press on the view selector to drag the view selector position and release the left click to fix the view selector on that position.
The view selector must be moved inside the main viewport. If it goes beyond the main viewport, it will rebound to the main viewport after releasing the left button.
Click the Restore default window settings option in the view to restore the view selector control to its default position.
Object Manager supports copying object IDs when multi-selecting
Different object IDs are automatically separated by ","
The order of copying IDs is sorted from top to bottom of the object order in the object manager
To save the performance consumption between triggers and triggers
Also solve the problem of not being able to interact with the trigger at one end
New QueryOnly mode for collision detection
Original solution:
Use Type.PropertyStatus

After modification:
Use Type.CollisionStatus

Also compatible with:
Type.PropertyStatus, Type.CollisionStatus

Developers can use DevTools debugging tools to debug projects on mobile in real time to get instant game feedback and view related performance consumption The steps are as follows.
Enter developer mode on the mobile side to enable USB debugging
After starting the game, look for the DevTools online URL in the log file in the directory below /data/data/com.Yourcompany.MetaWorldTest/files/UE4Game/MetaWorldMobile/MetaWorldMobile/Saved/Logs/MetaWorldMobile.log
Open the "Source Code" tab in your browser at the link above and interrupt to start debugging (note that you need to be on the same network)
Open the JS Script Profiler view in the tab list, grab the performance data and view
【Optimization】Optimize header node runtime environment when creating prefabricated objects
When creating a prefabricated body with the right click in the object manager, the runtime environment for generating the prefabricated body header node is no longer all double-ended, and the prefabricated body header node of the corresponding environment is generated according to the runtime environment of the child object;
When generating a prefab, if the selected objects are all double-ended objects, the generated prefabricated body object is double-ended
When generating a prefab, if the selected object has both double-ended and single-ended, the generated perform object is double-ended
When generating a prefab, if the selected objects are single-ended, but there are both client and server, the generated prefabricated body object is double-ended
When generating the prefabricated body, if the selected objects are all single-ended and all are clients or servers, the generated prefabricated body object is single-ended and the network state is the same as the selected object
【Optimization】Object Manager filtering optimization
Object Manager filtering optimization, support for selecting multiple filter conditions for filtering (results are taken and set)
Support filtering the viewport to show hidden and locked status in the viewport
【Optimization】Disconnected reconnection optimization
10-second automatic reconnection will be triggered when the connection between the front and back ends of the game fails due to network fluctuations, etc., and players will not be able to operate during the automatic reconnection
The disconnection will be triggered when the automatic reconnection process ends and the server is still not successfully connected
Click on the "reconnect" function after disconnection, then you will be directly matched with a new game room again
If the connection to the server is successful during automatic reconnection, the game will be reconnected without perception
New game client from the onPause state back to running, no longer perform reconnection logic, onPause state can support a maximum of 3 minutes to maintain, beyond 3 minutes back to running will be disconnected from the server.
No longer support the disconnection and reconnection function outside the game, the game will not be able to reconnect into the room before the disconnection after exiting
Disconnect reconnect callback functions:
Callback function triggered on network disconnection: addNetworkDisconnect(callback : () => void): void
Remove the callback function triggered when the network is disconnected: removeNetworkDisconnect(callback : () => void): void
Callback function triggered on successful reconnection after network disconnection: addNetworkReconnection(callback : () => void): void
Remove the callback function triggered on successful reconnection after network disconnection: removeNetworkReconnection(callback : () => void): void
New custom tire radius property, you can customize the radius of the tire envelope according to the size of the vehicle model
Physical calculation of the new vehicle migrated to the client, reducing server consumption
API interface adjustment
/**
New SetDriver() interface, which requires binding of the vehicle on the client side to confirm the actual control role of the vehicle.
*/
if(GamePlay.isClient()){
this._Vehicle4W.setDriver(player);
}
/**
The vehicle control interface is changed to be called directly on the client side.
*/
if(GamePlay.isClient()){
//Receive button events from the client to control the throttle and direction of the vehicle
Events.onKeyDown(Type.Keys.Up,()=>{
this._Vehicle4W.setThrottleInput(1);
});
Events.onKeyDown(Type.Keys.Left,()=>{
this._Vehicle4W.setSteeringInput(1);
});
//Receive button events from the client to control the vehicle brakes
Events.onKeyDown(Type.Keys.SpaceBar,()=>{
this._Vehicle4W.setHandbrakeInput(true);
});
}
1.Object list optimization
No longer expand all the parent objects after adjusting the position between them
When an object is selected in the main viewport, the object list will locate the object
2.Add option to the right-click menu in the designer Both the object list and the right-click menu of the designer allow operations. 3.New control type - button (allows mounting of text subobjects) New control type [Button], and renamed the previous button control to [Button (Deprecated)], the object properties of [Button (Deprecated)] are unchanged from before, and whether [Button (Deprecated)] is retained in the future will be determined by usage [Button] is more flexible than [Button (Deprecated)] in terms of configuring the text style function, the specific differences are as follows. No [text] object property grouping, that is, you can not directly configure the text, other properties, and [button (deprecated)] exactly the same [Button] can be the parent of [Text], and there is no limit to the number of child objects that can be mounted on [Text]. New Button API: MWGameUI.MWUIGameButton Deprecated Button API: MWGameUI.MWUIButton 4.Image resources can be replaced by dragging the image object directly into the main window After dragging the UI mapping into the designer and releasing it, it will directly replace the image/button component image resource rendered at the top of the mouse location 5.Progress bar button image with and selectable To allow developers to adjust the position of the progress bar buttons to avoid some images not being dragged to the edge when dragging, new properties and have been added [Anchor Type]: You can choose [Center] or [Both sides] to modify the specific position of the anchor point in the button image [Offset Value]: Used to modify the position of the button relative to the anchor point When the anchor type is [Center], an offset value of X pixels shifts the button image X pixels to the right, and an offset value of -X pixels shifts the button image X pixels to the left. When the anchor type is [Both sides], an offset value of X pixels means that the leftmost and rightmost positions of the button image can be slid as a whole, and an offset value of -X pixels means that the leftmost and rightmost positions of the button image are shifted inward by X pixels as a whole 6.New and functions for containers Previously, when auto-layout was enabled, all child objects in the container were sorted according to top-to-bottom and left-to-right order; this update adds and properties to determine exactly how these child objects are sorted: Horizontal sorting From left to right Right to Left Vertical sorting Top to bottom Bottom to top With the two existing properties, a total of 72 types of container layouts can be achieved Container type Horizontal layout Vertical layout Alignment rules Top Left Alignment Center-left alignment Bottom Left Alignment Top Right Alignment Right center alignment Lower right alignment Top center alignment Center alignment Bottom center alignment Step 1: The alignment rules determine where the overall position of the aligned objects is in the container and which of the nine anchor points of the container is used to align them Step 2: Horizontal and vertical sorting determines how these aligned objects are aligned internally as a whole, specifically which corner of the overall position of the aligned objects will be at the top of the hierarchy Step 3: Decide the alignment direction according to the container type (horizontal distribution/vertical distribution), the object at the top of the hierarchy is placed in the corner determined in step 2, and the remaining objects are distributed according to this alignment direction Example: By default, the default value of container type is the horizontal layout and the default value of alignment rule is top-left alignment when grid layout is turned on. Modify the left-to-right property to right-to-left and the top-to-bottom property to bottom-to-top. Another example: turn on the default case of grid layout, set the container type to a vertical layout, and the alignment rule to top-right alignment. Modify the left-to-right property to right-to-left and the top-to-bottom property to bottom-to-top. 7.New (control all controls under UI object instead of single control slot hierarchy) New , corresponding to the same effect of [UI settings] - [z factor] in the properties panel, used to adjust the rendering order between UI files, the UI file with the larger z factor is rendered in the upper layer
No activity yet