P12 Editor Alpha v0.14.0.0 Release Notes

Important Notes:

1.Paths for saved files have changed, now they are under the same directory level as WindowsNoEditor. Old saved files will no longer load. Move the old files to the new directory if you wish to continue using the old files.

2.The minimum player number limit in a game is now 5. Projects with this limit of less than 5 will have it modified to 5 when opened with the 014 version editor.

3.The existing joystick customization is discontinued. If you have used it in the existing version, please manually add 'bUseTemplatJoystick=False' in the config.

4.As script compilation is incremental, there is a known problem: after modifying the script properties, when running the project to compile the script, the script properties have changed to cause the property pointer stored in the property column to be wild, and the editor will occasionally crash. Prevention method: after changing the script properties, do not select the script object, directly compile and run to upload the game and perform other operations.

5.Because of the project path migration, the script of the game project will prompt an error in VSCode (this does not affect operation). Please delete the tsconfig.json file in the project directory and re-enter the game project to fix it automatically.

New Features:

Added three new mouse cursor-related APIs, which only take effect on the PC end

  1. Whether the mouse cursor is visible

  2. Whether the mouse cursor is locked inside the game window

  3. Whether the mouse cursor can interact with UI components

Global Class New Function

Property Default Value Setting

【New】Detecting Runtime Environment and Platform

New Functions in Global Class

New Enums in RuntimePlatform:

 /** Platform */
 enum RuntimePlatform{
    /** PC - Windows */
    Windows,
     /** PC - Linux */
      Linux,
     /** PC - MacOS */
     MacOS,
    /** Mobile - Android */
     Android,
     /** Mobile - IOS */
     IPhone
}

Use Example:

//Detecting Runtime Environment
if(Global.isEditor)
{
    console.log(`Current environment is PIE environment`);
}
else{
    console.log(`Current environment is not PIE environment`);
}

//Detecting Platform
switch (Global.currentPlatform)
{
    case Type.RuntimePlatform.Windows:
        {
            console.log(`Current runtime platform is PC - Windows`);
        }
    case Type.RuntimePlatform.Linux:
        {
            console.log(`Current runtime platform is PC - Linux`);
        }
    case Type.RuntimePlatform.MacOS:
        {
            console.log(`Current runtime platform is PC - MacOS`);
        }
    case Type.RuntimePlatform.Android:
        {
            console.log(`Current runtime platform is Mobile - Android`);
        }
    case Type.RuntimePlatform.IPhone:
        {
            console.log(`Current runtime platform is Mobile  - IOS`);
        }
}

【New】PING Value, FPS Value Display Area

In edit mode, reserved areas for displaying Ping and FPS will be displayed, reminding users that those areas are occupied.

Under EditorPIE and Mobile mode, FPS and Ping values are displayed to inform the users of current network conditions.

EditorPIE↓

Mobile↓

To facilitate developers in game production, in this update, we present the new key binding function. This will allow for efficient and easy configuration of the PC game player control scheme. In addition, to improve the freedom of control scheme, we provide a set of modifiable preset UI for new projects to replace the original hard-coded joystick and camera sliding area template.

New [Key Binding Panel] in the UI Editor

  • New button [Key Binding] in the UI editor. Click to open the [Key Binding Panel] menu. developers can directly bind or override the mobile UI (including joystick, camera slide area, buttons) to the keypad keys in this panel.

  • Clicking/releasing/holding the bound keystrokes is considered as clicking/releasing/holding the corresponding UI components.

  • Click the button in the menu to change the binding, click the reset button to revert to the default key binds.

  • Preset UI Control Scheme for New Projects

    • Provide a preset UI file for new projects and bind a set of default key binds to replace the original default control scheme

    • The preset UI file includes a joystick on the left, a camera slider on the right, and three buttons (jump/attack/interact) on the bottom right

    • Preset UI script file for controlling the character jump by clicking the jump button

  • Key Binding Related APIs

    • Easy customization of control schemes for developers with scripts or override default key binds.

New Function in MWKeyboardSimulation Class

  • In order to meet the different needs of developers for PC games, such as whether a certain camera slider/joystick can be clicked by the mouse, the MWUIVirtualJoystickPanel and MWUITouchPad classes contain a new interface for enabling/disabling mouse control.

New Functions in MWUIVirtualJoystickPanel and MWUITouchPad Class

  • PC-end Camera Lock Function and Related APIs

    • Added new camera lock function on PC-end. Players can switch the mouse lock mode by pressing Shift, in which the cursor will be hidden when locked. Turning the mouse in this mode will directly rotate the lens and character orientation, so that the left and right buttons are both freed up for performing other character actions, such as right-click for aiming and left-click for firing.

    • Developers can control in the script whether to allow the player to switch the mouse lock state

New Functions in MWKeyboardSimulation Class

  • Old Project Compatibility We will gradually replace the previous default 'WASD movement/space for jump/left mouse button for turning the camera' control scheme with preset UI files. To minimize the impact of the project already in development, old projects can continue to use the previous control scheme:

    • Old projects created before V0.13 / Template rocker projects created in V0.13

      • You can continue to use the default 'WASD to move / space for jump / left mouse button for turning the camera' control scheme.
    • Projects created after V0.14

      • 'WASD to move / space for jump / left mouse button for turning the camera' controls are not allowed, you can use the preset UI and default key bindings to make the same default controls as before, or build your own UI and keybindings and customize the control scheme.
    • Custom joystick project created in V0.13

      • You will need to bind your own self-built joystick and camera sliding area keypad control scheme in V0.14

【New】Reserve Player Number Function

  • New function in global settings that sets the reserve player number.

  • What is the Reserve Player Number?

    • Refers to the number of player slots that are reserved in a DS room for players to invite friends, have friends follow them into the room, or join the room through the game list. Having sufficient reserve player number will ensure that players can join when they enter the game through the above methods.
  • Input Parameter Limit

    • Default parameter=0, meaning no reserve player number

    • Range: Integers between 0 to 10

    • Must enter a value less than the maximum number of players (a value greater than or equal to the maximum number of players will be automatically corrected)

  • Effect on Matchmaking

    • After setting the number of reserved players, the number of matchable entrants in the room = the maximum number of players - the number of reserved players

    • When players invite friends, have friends follow them into the room, or join the room through the game list. Non-reserved slots are used first.

  • Effect on Joining Game Mid-game

    • When the game is set to be non-joinable, you cannot join the game mid-way even if there is a reserved player number.
  • Note: Please use the function of reserving the player numbers appropriately

【New】View DS Room Log

Server-side TS Log Address: https://portal.ark.online/

【Optimization】KV Storage Optimization

  • New APIs for deleting data

  • New developer backend for data storage operations

【Optimization】Hot Weapons Now Support the Components that Come with Clone

Usage Example:

Important Notes:

  1. Cloning takes time, so you need to add a delay before printing

  2. In the recoil component, there are two properties in the figure below. They are random values within the range based on other properties. So it's not a bug if they are different.

【Optimization】Support for Canceling One or More Selections After Performing a Shift Multi-select

  • We standardized the rules for selecting objects with a single click Ctrl or Shift.

    • Shift+left-click on an object in the list to continuously multi-select the first object in the list to that object.
  • After using Ctrl or Shift to select objects, continue to use Ctrl or Shift to select objects again.

    • If the last selected object in the list is selected by shift+left click, then:

      • When shift+left-clicking a selected object, batch deselecting is supported.

      • When shift+left-clicking an unselected object, it will be continuously selected to the object.

    • If the last selected object in the list is selected by ctrl+left click, then: When an object is selected by the shift+left key, the selected state in the list is updated to continuously select from the last selected object to the currently selected object.

【Optimization】Phase II Optimization of MGS Interaction

Adjust and optimize the Editor according to the revision of the MGS interaction specification, and reserve a fixed position of the chat box in the main viewport interface to remind users of possible position conflicts during the UI layout design process.

  • Optimized the MGS reservation specification to be consistent with the current MGS specification, and added the MGS area adaptation optimization based on the window size.

  • With the chat box visibility option unchecked, the chat box area will not visible in the main viewport

    • At this time, the main viewport of the MGS reserved area is hidden in the editing state, and the PIE layer is hidden.

    • At the same time, a pop-up window prompts: The chat box area is currently only hidden for editing. It will display normally when the game is released.

  • When the stand-alone mode is selected, considering that the stand-alone mode is not actually connected to the MGS, the MGS reservation window is not displayed by default in the main viewport and the PIE layer.

1.Undo and Redo button functions for image resources In order to facilitate developers to undo the images configured in the UI components, the Ctrl+Z undo function has been improved, and a reset button for images has been added.

  • Ctrl+Z Undo: Restore to the state of each component before the developer's previous operation in the UI editor, now supports continuous restoration to blank image and default component size.

  • Reset Button: Click to restore to blank image and default component state directly

2.UI Editor now displays custom properties

In order to facilitate developers to configure custom UI-related properties, the custom properties in the script are exposed on the properties panel of the root in the UI editor.

  • Instructions:

    • The script must be compiled after importing/modifying, and then it can be dragged into the [TS script] in the properties panel in the UI editor

Examples of custom properties use:

    @MWCore.MWProperty({
        displayName: "bool",
        tooltip: "a tooltip 1",        
        group: "Basic",        
    })
    Boolean_Test = false;
    
    @MWCore.MWProperty({
        displayName: "int",
        tooltip: "a tooltip 2",
        range: { min: 50, max: 100, bShowSlider: false },
        group: "Basic",
    })
    int_Test = 123;

    @MWCore.MWProperty({
        displayName: "float",
        group: "Basic",
    })
    float_Test = 123.456;

    @MWCore.MWProperty({
        displayName: "FVector2",
        group: "Basic",
    })
    FVector2_Test = new Type.Vector2(10, 12.34);

    @MWCore.MWProperty({
        displayName: "FVector3",
        group: "Basic",
    })
    FVector3_Test = new Type.Vector(10, 12.34, 999.9);

    @MWCore.MWProperty({
        displayName: "FRotator",
        group: "Basic",
    })
    FRotator_Test = new Type.Rotation(30, 60, 90);    

    @MWCore.MWProperty({
        displayName: "FVector4",
        group: "Basic",
    })
    FVector4_Test = new Type.Vector4(10, 12.34, 999.9, 255.5);

    @MWCore.MWProperty({
        displayName: "FString",
        group: "Basic",
    })
    FString_Test = ("qweasdzxc");

    @MWCore.MWProperty({
        
        displayName: "Color",
        group: "Basic",
    })
    SetTattooColor :Type.LinearColor =Type.LinearColor.Random();

    @MWCore.MWProperty({
        displayName: "AssetType : Texture",
        asset: MWCore.AssetType.Texture,
        group: "Basic2",
    })
    public SetTattooType = "25805";

    @MWCore.MWProperty({
        displayName: "EnumType",
        enumType: TestEnumType,    
        onChangedInEditor: "RandomChangeCloth",
        group: "Basic",    
    })
    EnumType_Test : TestEnumType = TestEnumType.A;

    @MWCore.MWProperty({
        displayName: "AssetType : StaticMesh",
        asset: [MWCore.AssetType.StaticMesh],
        group: "Basic2"
    })
    AssetId = "";

3.Reference line optimization, added support for alignment between non-horizontal components The UI Editor now allows alignment between non-horizontal components and display alignment lines.

【Optimization】Removed Editor Installation path restrictions for special characters

Removed editor installation path restrictions for special characters. It can now support special characters such as Chinese characters and space.

【Editor】WEB&PC Overseas Game Terminal

Web official website and Player game terminal are launched, and the process of Web login is improved - Player Launcher download - Player installation - Jump game, establish the connection between the three major sections of Play - Avatar - Create and form a closed loop to optimize the user experience.

【Optimization】Character Optimization

Optimized the CPU usage of the character performance client and server. Reduced game lag when too many humanoid objects are in the game. Added optimization interface to solve the cost problem of static characters in DS:

New APIs

  • setServerReplicatesEnable: enable/disable character network synchronization

  • setServerMovementEnable: enable/disable character movement

  • serverCalculateEnable: enable/disable timed used calculation existing: enable/disable network synchronization + character movement function

Optimized movement When the frame rate is low, the cost of repeatedly calculating the movement is improved.

LOD Optimizations CPU usage of Characters in the distance is now reduced based on the distance. This optimization is more suitable for real scenes, but not suitable for when too many characters are on the same screen (more optimization items will be added).

Note: Dynamic skeletons (skirt, hair) have performance bottlenecks on low-end A57-level devices, please use them in moderation (dynamic effect optimization will be launched later).

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.