1

(2 replies, posted in 3D Gameplay)

You could try using the 3d arena template instead, then adjust the camera angles to look more like the 3d fighter.
https://i.ibb.co/sR6xSwj/image.png

Use these settings under Global Editor -> Camera Options to achieve this:
https://i.ibb.co/2yj0wBL/image.png

What version of Unity are you using?
What version of UFE are you using (check the Readme.txt file)?
It seems the error is being caused by one of the preloader features (specifically, Shader.WarmupAllShaders)
Under Global Editor -> Preload, disable "Warm All Shaders":
https://www.ufe3d.com/doku.php/global:preload

3

(2 replies, posted in General)

The UI part of the challenges is all written under OnGUI on file DefaultChallengeModeGUI.cs

You can try changing how it behaves by allocating some of the variables from ChallengeMode.cs into UI elements.


I know the video doesn't touch on this topic in particular, but just in case I'll leave a link to the video tutorial here:
https://youtu.be/BnNyIl9zwvc?si=y1okP7T … &t=446

You can subscribe to the MultiplayerAPI event "OnPlayerDisconnectedFromMatch" like so:

void Start()
{
    UFE.MultiplayerAPI.OnPlayerDisconnectedFromMatch += this.OnPlayerDisconnectedFromMatch;
}

Then create a function that calls a set of functions to emulate the end of a match:

void OnPlayerDisconnectedFromMatch()
{
    // Declare Local Player as Winner
    ControlsScript winner = UFE.GetControlsScript(UFE.GetLocalPlayer());

    // Fire Game Ends Event
    UFE.FireGameEnds(winner);

    // Play Game Won Outro Animation
    UFE.GetControlsScript(UFE.GetLocalPlayer()).SetMoveToOutro(2);

    // Call for End Game and open menu a few seconds later
    UFE.DelaySynchronizedAction(UFE.MatchManager.EndMatch, UFE.config.roundOptions._endGameDelay);
}

On a side note:
You might need to override how UFE handles disconnections. Under file ConnectionHandler.cs, comment line 19 like so:

//UFE.MultiplayerAPI.OnPlayerDisconnectedFromMatch += this.OnPlayerDisconnectedFromMatch;

This will prevent UFE from also disconnecting the local player from the room.

5

(1 replies, posted in General)

UFE.GetLocalPlayer()

From there you can get the information from ControlsScript:

UFE.GetControlsScript(UFE.GetLocalPlayer()).currentLifePoints

Very interesting. There is a more complex implementation of this on UFE 3 (available for Patreon Tier 4 members). It has many features like that, including the ability to create platforms and a variety of stage interactables.
I'm currently focused on improving UFE 2 (working on version 2.7), but I plan to continue working on UFE 3 and hopefully release it to the general public sometime in the near future.

7

(0 replies, posted in General)

Join UFE Discord (Mind Studios) for a more active experience with the members of this community!
https://discord.gg/hGMZhF7

Humm, it seems the "disabled" option wasn't working correctly.
If you have the Source version, open CameraScript.cs and under line 92 change this:

if (highestPos >= UFE.config.cameraOptions.verticalThreshold)

To this:

if (UFE.config.cameraOptions.verticalPriority != VerticalPriority.Disabled && highestPos >= UFE.config.cameraOptions.verticalThreshold)

Now, under Global Editor -> Camera Option, set Vertical Follow to "Disabled" and toggle "Enable LookAt" to off. toggle "Enable Zoom" off as well to ensure 0 vertical movement.
https://i.ibb.co/Xpsc3vC/image.png

I'll add this fix in the next update.

9

(13 replies, posted in 2D Gameplay)

gaurangranoliya wrote:

"Please help me, because there 4-5 projectiles having same issues and cannot remove that powers."

Sorry that you didn't understand above lines, I was saying i am having same type of upward or downward projectiles hitting the opponent from sky or from the ground that depends on different types of characters.

I tried with the UFE template and face same issue.

The upward projectiles are clone on opponent position with offset instead of player who is throwing. So it looks coming from the ground and hit the opponent as shown in the video.

I attached the script to the fireball prefab which has code to reposition for opponent position and hit the opponent.

I am attaching one zip which has videos, moves and scripts as unity packages. Also attached screenshots of Fireball move and also add the "ProjectileEnemySpawn" script which is added to fireball prefab. If unity package is corrupted or give some errors from your side then you can use the screenshots and script directly.

Fireball move has only changes in projectiles and attached the "ProjectileEnemySpawn" script to fireball prefab, then you can achieve the same projectile as i am using it.

Also i map the robot kyle character and then only tested in photon multiplayer.

Sorry if cloning the prefab at opponent location and it creates the online desync issue, if you can give some suggestion for this it will be greatful to me.

https://drive.google.com/drive/folders/ … sp=sharing

I see now. You didn't change the core files, but you did create a script that changes how it behaves.
In "ProjectileEnemySpawn" you are modifying the position of the projectile without tracking the variables through UFENetcode.
Here, I rewrote the script for you:

using FPLibrary;
using UFE3D;
using UFENetcode;
using UnityEngine;

public class ProjectileEnemySpawn : UFEBehaviour, UFEInterface
{
    public int posFrameDelay;

    public Vector3 relativeEnemyPosition = Vector3.zero;
    public bool alwaysTouchGround = false;

    protected ProjectileMoveScript moveScript;
    protected FPVector recordedEnemyPosition;

    public override void UFEStart()
    {
        moveScript = GetComponent<ProjectileMoveScript>();

        if (moveScript)
        {
            FPVector offset = new FPVector(relativeEnemyPosition.x * -moveScript.opControlsScript.mirror, relativeEnemyPosition.y, relativeEnemyPosition.z);
            FPVector currentEnemyPos = moveScript.opControlsScript.worldTransform.position;
            recordedEnemyPosition = new FPVector(currentEnemyPos.x, alwaysTouchGround ? 0 : currentEnemyPos.y, currentEnemyPos.z) + offset;

            UFE.DelaySynchronizedAction(SetToEnemyPos, posFrameDelay);
        }
    }

    public void SetToEnemyPos()
    {
        moveScript.fpPos = recordedEnemyPosition;
    }
}

Notice I changed the reposition delay from seconds to frames (60 frames = 1 second).
See if that works.

For more on custom code check out this page:
https://www.ufe3d.com/doku.php/global:n … ustom_code

Are you using opponent override for that dizzy animation?

11

(13 replies, posted in 2D Gameplay)

gaurangranoliya wrote:

I applied your settings to Network Options, still face same issue on upwards projectile.

Those changes are not meant to fix the issues you are having, just to improve the online experience.

gaurangranoliya wrote:

It can be different forces are applied on opponent phone compared to player phone?
How can i fix this different forces applied on different devices?

The netcode has nothing to do with the devices you are testing it in. Plus, based on the video you showed, it seems the problem is happening in the editor as well.

Please help me, because there 4-5 projectiles having same issues and cannot remove that powers.

Its hard to understand your English sometimes, but sentences like this doesn't help me at all..
Here, read this: https://www.ufe3d.com/forum/viewtopic.php?id=374
I need you to help me so I can help you. Drama just slow things down.

3. I will try to replicate using UFE's templates.

Weren't you suppose to do this?
If I can't test or confirm the issue its impossible to provide any support.

- Make an upwards projectile just like you did in your game using a clean copy of UFE 2.6.0 using UFE's templates. Use one of the fireballs provided.
- Show me, step by step, how you made that projectile and a video showing the desync (just like you did before, this time using UFE templates only)

If it is in fact a bug, I'll figure out the issue and provide a patch in no time. But if we just go back to "please fix this" over and over without context, we are never moving forward.

12

(13 replies, posted in 2D Gameplay)

Seems related to that upwards projectile.

Did you add or make any changes to the code?
Did you run the map recorder for all your characters?
Can you replicate the issue using UFE's original templates?

Watch this video, it will help you narrow down possible causes:
https://youtu.be/j3B-lhd8JBw

gaurangranoliya wrote:

I am attaching the screenshot of Global Config for Network Options.

Try using these values. Its the default values on UFE 2.6.0:
https://i.ibb.co/K0yhmpR/image.png

I have yet to review the cinematic options for 3D gameplay. I think the best way to achieve this is to make your own custom camera animation and use the prefab option.

Thank you for that. I'll review those numbers in the next update.

Click on "Load Stance File" first.

16

(1 replies, posted in Source Coding)

Under your "outro" animations (Character Editor -> Move Sets -> Basic Moves -> Intro/End Animations), set it to play a move file instead of the basic animation.
In this new move, create new Invincible Frames and set the values for "Ignore Body Colliders" and "Completely Invincible" to true. This will make it so the character can walk through the opponent's hitboxes:
http://www.ufe3d.com/lib/exe/fetch.php/move:move_invincibleframes2.png?cache=&amp;w=398&amp;h=378&amp;tok=3209a8

It looks to me like you copied the files on top of your previous project instead of replacing it.
Read this:
http://www.ufe3d.com/doku.php/changelog … _ufe_build

After updating, make sure you also open each move set from each character (Character Editor) and click "Apply Changes" to refresh the data. If you are using animation maps, you also need to run the MapRecorder for each character.

apollo wrote:
Mistermind wrote:

Try adjusting the execution conditions under Move Editor -> Player Conditions on the move file where you have your assist call located.
For example, you can toggle "Stunned" under the Possible States window to have the move be usable while the character is stunned, or select "Down" as the State option if you want the move to be used when the character is knocked down.
If you don't want the stun animation to be interrupted, make sure you don't have any animation clip assigned to that move.

Thank you but Stun isn't listed as a Possible State for Player Conditions and I can't take out the Animation clip from the Animation setting in Move Editor

I think you misunderstood me. Stun is not listed as a possible state. Its a toggle and its called "Stunned".

I issued a patch without changing the version number.
If you haven't yet, redownload UFE 2.6.0. This issue is now fixed.

20

(4 replies, posted in General)

Standard version now available

On a side note: Source and PRO 1.6.0 got reuploaded today with a few extra additions:
- Fixed background color for the shape editor under Custom Hitbox Editor.
- Fixed window menu options and grouped into the correct name
- Removed Lan Options from Global Editor -> Network Options (deprecated)
- Adde new option to Global Editor -> Network Options: Particle Control
- Reviewed and fixed minor block detection issues
- Added support for simulated speed and random seed control for spawned particles under Global Editor -> Network Options
- Fixed issue where projectiles would collide with inactive assists
- Added new input manager option: Native Touch Controls (uses a simple open source GUI solution for touch inputs)
- Refactored unique Id. Now its no longer attached to the move name (moves can have repeated names when mapping animations)
- Reviewed animation maps once more. More effective in avoiding duplicates.


If you downloaded the update prior to this, just re-download it (it will still show version 2.6.0).


Important note: Make sure you open each move set from each character and click "Apply Changes" to refresh the data. You also need to run the animation mapper once more for each character.

I'll add an option on the next update to disable particle control options such as the random seed and speed control.

Fix is now available on the repository. Will be part of the next patch.

I see the problem.
With UFE 2.6.0 now controlling particle simulations, it overrides the speed with its own time scale.
The solution would be to add a backup value of the original speed and add it as a multiplier on top of the time scale applied.

Try these changes. I just made them and committed to the repository. I'll issue an update soon.

Under InstantiatedGameObject.cs, you will find a definition for particles like so:

public ParticleSystem[] particles;

Change it to this

public Dictionary<ParticleSystem, float> particleStorage;

(Make sure you also change the constructors)


Now under UFE.cs look for this code (line 2085):

ParticleSystem[] particles = goInstance.GetComponentsInChildren<ParticleSystem>(true);
foreach (ParticleSystem particle in particles)
{
       particle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
       particle.randomSeed = (uint)creationFrame;
}
UFE.instantiatedObjects.Add(new InstantiatedGameObject(uniqueId, goInstance, mrFusion, particles, creationFrame, creationFrame + durationFrames));

And change to this:

ParticleSystem[] particles = goInstance.GetComponentsInChildren<ParticleSystem>(true);
Dictionary<ParticleSystem, float> particleStorage = new Dictionary<ParticleSystem, float>();
foreach (ParticleSystem particle in particles)
{
        particle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
        particle.randomSeed = (uint)creationFrame;
        particleStorage.Add(particle, particle.main.simulationSpeed);
}
UFE.instantiatedObjects.Add(new InstantiatedGameObject(uniqueId, goInstance, mrFusion, particleStorage, creationFrame, creationFrame + durationFrames));

Now under MatchManager.cs, look for this code (line 274):

foreach (ParticleSystem particle in entry.particles)
{
    var mainModule = particle.main;
    mainModule.simulationSpeed = (float)UFE.timeScale;
    float time = (currentFrame - entry.creationFrame) / (float)UFE.fps;
    particle.Simulate(time, true, true, true);
}

And change it to this:

foreach (KeyValuePair<ParticleSystem,float> particleData in entry.particles)
{
    var mainModule = particleData.Key.main;
    mainModule.simulationSpeed = (float)UFE.timeScale * particleData.Value;
    float time = (currentFrame - entry.creationFrame) / (float)UFE.fps;
    particleData.Key.Simulate(time, true, true, true);
}

These changes should make it so UFE doesn't directly interfere with the original simulation speed value.

24

(1 replies, posted in General)

Yes
You can play the demo here:
http://www.ufe3d.com/demo/ufe2/webgl_2DFighter_v260/

Video Tutorial:
https://youtu.be/-dmVAf_cyN8

The way the ground collision mass value interacts now is different.
Under Character Editor -> Physics, adjust your "ground collision mass" to about half the previous value on each of your characters.