P12 Editor Alpha v0.15.0.0 Release Notes

Important Notes:

  1. 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

  2. Disabled the resource selector in the character editor (the resource selector will be optimized as a whole in the future)

  3. 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

  4. 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

  5. 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

  6. Under listenserver mode, the scaling interface for characters can occasionally fail. There will be a follow-up fix for this.

New Features:

【New Feature】Single-sided Scaling & Overall Scaling

  • 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.

【New Feature】View Selector

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.

【New Feature】Multi-select object copy object ID optimization

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

【New Feature】Collision detection method

  • 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

【New Feature】DevTools debugging support on mobile

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.

  1. Enter developer mode on the mobile side to enable USB debugging

  2. 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

  3. 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)

  4. 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

  1. 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

  2. The disconnection will be triggered when the automatic reconnection process ends and the server is still not successfully connected

  3. Click on the "reconnect" function after disconnection, then you will be directly matched with a new game room again

  4. If the connection to the server is successful during automatic reconnection, the game will be reconnected without perception

  5. 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.

  6. 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

  7. 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

【Optimization】Four-wheeled vehicle function adjustment

  1. New custom tire radius property, you can customize the radius of the tire envelope according to the size of the vehicle model

  2. Physical calculation of the new vehicle migrated to the client, reducing server consumption

  3. 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

MWUIUserWidget Type New Functions

Example:

let btn = this.uiObjectAsWidgetBase().findChildByPath("MWCanvas_2147482460/button") as MWGameUI.MWUIButton;
btn.onClicked().add(()=>{
let x = this.uiObjectAsWidgetBase().getViewportZOrder();
x = x+1;
this.uiObjectAsWidgetBase().setViewportZOrder(x);
}) 

8.New for images, etc.

  • New , corresponding to the [Style] - [Image Margin] property in the UI editor

MWUIImage Type New Functions

MWUIButton/MWUIGameButton Type New Functions

MWUIProgressbar Type New Functions

9.New for scroll box

  • New is used to listen to the UI scroll box scroll end event, and then handle other functions

  • When inertia is turned on, events are also sent when the scrollbar stops

    MWUIScrollBox Type New Functions

this.logText = MWDesignerUI.MWUITextblock.get(this.uiObjectAsWidgetBase().findChildByPath("MWCanvas_2147482460/MWTextBlock_8")) as MWGameUI.MWUITextblock;
this.logText.setText(this.tiems.toString());
let getscroll = MWDesignerUI.MWUIScrollBox.Get(this.uiObjectAsWidgetBase().findChildByPath("MWCanvas_2147482460/MWScrollBox_1")) as MWGameUI.MWUIScrollBox;
getscroll.onScrollEnd().add(()=>{
this.tiems++;
this.logText.setText(this.tiems.toString());
})

【Optimization】Editor Auto Backup

1.Optimize the editor auto backup function, auto backup covers the main editor and sub-editor.

  • The minimum time interval for automatic backup is changed to 1 minute.

  • When automatic backup is enabled, the modified data will be automatically backed up after the set time interval when the main editor, sub-editor, or prefabricated body is modified.

  • The character data that is not documented will not be backed up.

2.The editor adds a new backup content recovery function.

  • Restore Scene When developers enter a project in the project interface, they will compare the local file and the automatic backup file of the project. If there is any difference and the automatic backup file is modified later than the local file, a pop-up window will prompt developers whether to restore the backup file.

  • Restore pop-up window

    • Restore

      • Click Restore to read the backup project into memory, load it and open it.
    • Open

      • Clicking Open will open the folder where the backup project is located.
    • Ignore

      • Click Ignore to not restore the backup project and continue to keep the files.
    • Close

      • Click Close to not restore the backup project and continue to keep the files.

【Optimization】Publish Game Name Restrictions When publishing a game in the editor, the name of the published game no longer has restrictions for illegal characters and word counts, etc.

【Optimization】Single-ended Component (non-physical components)

The Skybox, Ambient Light, and Sunlight components in the world are single-ended by default.

【Optimization】Adding Tips to the Character Editor

New hover tips for all editable items in the character editor show tips for the corresponding properties when the cursor hovers over the properties name.

【Optimization】Editor region change

  • The Icon in the upper left corner of the Editor window will change with the editor version, when the domestic editor is opened, the default is the domestic logo; when the overseas editor is opened, the default is the overseas logo.

【Optimization】Editor login optimization

  • Login page refresh

    • After the editor's login page request fails for 15s, the page is automatically refreshed.
  • Automatic login logic

    • After the user logs in successfully, the editor will record the login information and execute automatic login within 7 days by default.
  • Environment retention logic

    • When the editor is opened for the first time, the domestic version defaults to the domestic environment

    • When the user switches to other regions, the editor will switch to the overseas environment

    • After the user logs in, the next time the editor is opened, the user's last login environment and region will be retained.

  • Logout-related logic

    • If the user manually triggers to log out (1. Project selection interface button 2. Project drop-down menu option within the project), the next time the editor is opened, the user will not be automatically logged into the account, and will need to log in again.

【Optimization】Full manual download of resources

  • Removed the download method of "full download after login" from the current local repository, and no longer display the Loading window after login

  • When the project is opened, all resources used in the project scene will be verified and checked locally to ensure that the resources used in the project exist locally and are the latest version.

    • Tips: The first time you open the editor, you need to download the resources in the empty scene, the loading time will be longer than the first time.
  • After entering the project interface, the resource library will read the resource information in batches with the UI scrolling (and always read the latest version of the resource information from the server)

  • Developers can select resources on their own and manually click on the resource thumbnails to download the content of the resources (and always download the latest version of the corresponding resources from the server)

    • Icon descriptions of the different states of the resources
  • Removed the filter Icon and placed the category filter list outside
Subscribe to Project Twelve
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.