This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
global:netcode [2021/12/23 05:07] Mistermind |
global:netcode [2024/12/10 16:17] (current) Mistermind |
||
---|---|---|---|
Line 3: | Line 3: | ||
**UFE Netcode** is the second iteration of the network system for UFE. It allows the game to run online matches in a smooth lag-free environment thanks to its native //rollback mechanics// and // | **UFE Netcode** is the second iteration of the network system for UFE. It allows the game to run online matches in a smooth lag-free environment thanks to its native //rollback mechanics// and // | ||
The new network options also comes with its own client/ | The new network options also comes with its own client/ | ||
- | |||
- | [[http:// | ||
- | |||
- | * Hit Online to search for a match (US Server) | ||
- | * All builds are **cross-platform** | ||
Line 19: | Line 14: | ||
* **What is Rollback?** | * **What is Rollback?** | ||
Rollback (name might change depending on game or developer) is a technique in which a game is able to return to a previous frame, change the outcome of an event (say, an input), and return to the current frame, all in a span of a single frame of animation. This allows a game to //catch up// with whatever concurrent event instead of [[global: | Rollback (name might change depending on game or developer) is a technique in which a game is able to return to a previous frame, change the outcome of an event (say, an input), and return to the current frame, all in a span of a single frame of animation. This allows a game to //catch up// with whatever concurrent event instead of [[global: | ||
- | The subject can be extensive and have been topic of several games for years (often referred as [[https:// | + | The subject can be extensive and have been topic of several games for years (often referred as [[https:// |
* **If Rollback is so good, why use Frame Delay at all?** | * **If Rollback is so good, why use Frame Delay at all?** | ||
Line 28: | Line 23: | ||
---- | ---- | ||
===== Converting to 2.0 ===== | ===== Converting to 2.0 ===== | ||
+ | //This tutorial is meant for conversion between UFE 1 and 2. If you are starting from UFE 2 you can skip this step.// | ||
+ | |||
UFE 2.0 was developed with backwards compatibility in mind. Several processes were created specifically to deal with converting large amounts of data at once. A prototype of your project with the new netcode can be created in less then an hour if you know what you are doing. The whole process can be divided in 4 easy steps: | UFE 2.0 was developed with backwards compatibility in mind. Several processes were created specifically to deal with converting large amounts of data at once. A prototype of your project with the new netcode can be created in less then an hour if you know what you are doing. The whole process can be divided in 4 easy steps: | ||
Line 37: | Line 34: | ||
\\ | \\ | ||
- | * **Step 2: Record Character Maps (PRO/ | + | * **Step 2: Update Character File** |
- | Now that we have our asset files converted to //Fix64// we can move to the next step to ensure synchronization: | + | |
- | First, open the scene '' | + | |
- | {{ : | + | |
- | + | ||
- | Drag one of your characters into the //Character Info// field and hit **Play**. If you have your hitbox setup correctly you should see something like this: | + | |
- | {{ : | + | |
- | Select the Move Set and click //Record Basic Moves// to start recording all animations listed under your basic moves into //Fix64// position maps. Once completed, do the same for //Special Moves// then hit **Stop**. Replace the character info file with the next character and repeat the process.\\ | + | |
- | \\ | + | |
- | + | ||
- | * **Step 3: Update Character File** | + | |
Next up is the HitBoxes' | Next up is the HitBoxes' | ||
{{ : | {{ : | ||
Line 55: | Line 42: | ||
\\ | \\ | ||
- | * **Step 4: Photon Setup (Standard/ | + | ---- |
+ | ===== Photon Setup ===== | ||
In order to have the client-server accessibility you need to download [[https:// | In order to have the client-server accessibility you need to download [[https:// | ||
Once you have an account go your Public Cloud -> Applications and copy your App ID as displayed here: | Once you have an account go your Public Cloud -> Applications and copy your App ID as displayed here: | ||
Line 76: | Line 65: | ||
===== Map Recorder ===== | ===== Map Recorder ===== | ||
- | One of the key elements that makes UFE easy to prototype is the guided transform hitbox system, meaning you only need to tell it where the joints are and UFE will take care of the rest. Unfortunately this means that we are tracking position information directly from the animation itself, and that value can only be read in //float// format (non-deterministic).\\ | + | One of the key elements that makes UFE easy to prototype is the guided transform hitbox system, meaning you only need to tell it where the joints are and UFE will take care of the rest. This means that we are tracking position information directly from the animation itself, and that value can only be read in //float// format (non-deterministic). |
- | To solve this, Map Recorder runs and stores the //position maps// (and delta displacements) of all identified hitbox on every frame of animation throughout the character' | + | |
+ | {{ : | ||
+ | |||
+ | To solve this, Map Recorder runs and stores the //position maps// (and delta displacements) of all identified hitbox on every frame of animation throughout the character' | ||
\\ | \\ | ||
Map Recorder is located at '' | Map Recorder is located at '' | ||
+ | |||
+ | {{ : | ||
+ | |||
Line 152: | Line 147: | ||
</ | </ | ||
- | Notice we only use the // | + | Notice we only use the // |
Also, notice we are using // | Also, notice we are using // | ||
An example of the auto-tracking system can be found under the projectile script: '' | An example of the auto-tracking system can be found under the projectile script: '' | ||
Line 170: | Line 165: | ||
---- | ---- | ||
===== Network 2.0 Options ===== | ===== Network 2.0 Options ===== | ||
+ | For a detailed explanation on each option [[global: | ||
- | {{ :global:global_netcode.png? | + | {{ :global:global_networkoptions.png |}} |
- | For a detailed explanation on each option [[global: | + | ---- |
+ | ====== Video Tutorials ====== | ||
+ | {{youtube> | ||
+ | {{youtube> | ||
+ | {{youtube> | ||