Kinetix Documentation
Website
  • 🖐ïļWelcome
  • 🕚About Kinetix
  • 🖌ïļUser-Generated Emote
    • ðŸĪ–Video-to-animation AI
    • ðŸĪļKinetix Emote Standards
    • ðŸĶīRetargeting
    • 🏂Kinanim (Emote streaming)
    • 🖊ïļTry the User-Generated Emote feature
  • INTEGRATION
    • ðŸĪ·SDK or API: what to choose
    • ðŸĪĐKinetix SDK
      • ⚙ïļSDK - Core Package
      • ðŸ§ĐSDK - Sample scene
      • 🧑‍ðŸ’ŧTested & approved Game Engines for the SDK
      • ðŸ’ŧSDK Integration in Unity
        • ⮇ïļSet-up Unity & Import the SDK
          • 🔑Get your Game authentification API Key
          • ⚙ïļSetup your Unity environment
          • 🔧Install the Kinetix SDK in Unity
          • âŒĻïļSDK Initialization - Unity
        • ⚡Quickstart - Unity SDK
        • ðŸĶ‹SDK Core Modules activation - Unity
          • 🔐Account Management in Unity
          • 💃Animation System - Unity
            • ðŸŽĒUnity's Animator System
            • ðŸŽĻCustom Animation System
            • ðŸŒģRoot Motion
              • RootMotion + NavMeshAgent
            • 🎞ïļFrame Controller
            • 💊IK Controller
            • ðŸŦĨAvatar Mask
          • ðŸ“ķNetwork - Unity SDK
            • Photon PUN
            • Photon Fusion
        • 🕚User-Generated Emote integration (Unity)
          • Embedding the PWA in your Unity application
          • Validation / Retake
        • 🚧How to update Kinetix SDK in Unity?
        • 📕SDK API Reference - Unity
          • KinetixCore
          • KinetixCore.Account
          • KinetixCore.Animation
          • KinetixCore.Metadata
          • KinetixCore.Network
          • KinetixCore.UGC
        • 📂Unity SDK Changelog
      • ðŸ•đïļSDK Integration in Unreal Engine
        • ⮇ïļSet-up Unreal Engine & Download the SDK
          • 🔑Get your Game authentification API Key
          • ⚙ïļSet up your Unreal Engine environment
          • 🔧Install the Kinetix SDK in Unreal
          • âŒĻïļUE SDK Core Package Initialization
        • ⚡Quick Start
        • ðŸĶ‹SDK Core Modules activation - Unreal
          • 🔐Account Management - UE
          • 💃Animation System - UE
            • Local player system in Unreal Engine
            • Avatar system in Unreal Engine
            • Without uploading an avatar (deprecated)
              • Animation in a Third Person Template
              • Animation in an existing project
          • ðŸ“ķNetwork - UE SDK
        • 🕚User-Generated Emote integration (UE)
        • 📕SDK API Reference - UE
          • KinetixCore
          • KinetixCore.Account
          • KinetixCore.Animation
          • KinetixCore.Metadata
          • KinetixCore.Network
        • ⮆ïļUpdating from 0.3 to 0.4
        • 📂UE SDK Changelog
    • 😍Kinetix API
      • 🔑Get your Authentification API key
      • 🔌API routes
      • 🊝API Webhooks
      • 🏓Possible Return Codes
  • Management
    • 🚊Developer Portal
      • ðŸ‘―Avatar Upload
      • ðŸ‘ŪUGC Moderation
    • 🖌ïļUGE: Guides & Best Practices
      • 📐User-Generated Emote specifications
      • 👌Video recording best practices
      • ðŸ‘ŧUser-Generate Emote Use Cases
  • SUPPORT
    • 📎Bugs reports & features requests
    • ❓FAQ
      • FAQ: General questions
      • FAQ: Unity SDK
      • FAQ: Unreal Engine SDK
    • ðŸĪ•Troubleshooting
    • 📚Glossary of terms
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. SUPPORT
  2. FAQ

FAQ: Unity SDK

Questions about our Unity SDK? Let's solve them!

PreviousFAQ: General questionsNextFAQ: Unreal Engine SDK

Last updated 9 months ago

Was this helpful?

How do you manage collision while playing user-generated emotes?

As detailed in Kinetix Emote Standards, all our emotes are following very constraining standards in terms of axis to limit all potential collisions.

Moreover, our SDK embarks a Root Motion technology that you can implement to prevent collisions when playing emotes.

Learn more about Root Motion

How do you manage interpenetrations with user-generated emotes and avatar mesh?

To make emotes as immersive as possible, Kinetix had to deal with interpenetrations issues that gamers are witnessing all the time through a specific proprietary AI model called "Contact Aware Retargeting". Learn more:

Every emotes distributed through Kinetix SDK and API can be optimized with the "contact aware retargeting" that retargets emotes on the target rig before their distribution.

To request Contact-Aware Retargeting, head to

How is retargeting handled?

For optimizing user experience, retargeting process is queued as explained in Animation System - Unity. It means that we ensure every user-generated emote that appears as loaded on the player's side will always be available to be played by them at anytime. Emotes that are still in the queue will appear has been loaded for players.

Will Kinetix SDK affect my game performance?

Our Kinetix SDK have been developed to solve issues you are experiencing when integrating the User-Generated Emote feature into your project. Among different aspects what we optimized most is: network and memory.

We went through the process and developed a solution that facilitates dmote integration to a point where you will only have to focus on the fun of managing user-generated emotes in your project.

Head over to SDK - Core Package to understand how we solve these problems for you

How many animations can be added to my game and what is the impact on the memory?

With our SDK, there is no limit, you can add as many user-generated emotes as you want! Kinetix's SDK has been designed to optimize memory usage.

As explained in and Kinanim (Emote streaming), our SDK only loads selected emotes by users to generate related animations. Networking is also optimized with a pose extraction enabling to reduce by >200 times the memory used for broadcasting an animation.

How do you solve spikes of gamers and associated server sollicitation?

We thought of multiple solutions as historically the animation where only synchronized based on the state and not the poses..

The SDK sends serialized poses through network to limit the charge on spike as it only requires users to download a pose for each active emotes on several frames.

The data you will send, the frequency and the number of players at peak will impact the bandwith of the server and your users.

How can I optimise the SDK for usage spikes ?

For optimisations purposes (especially for mobile and low connections) considering you can have up to 500 gamers at same time in the same room, Kinetix recommends the following optimisations:

  1. Reduce Serialized Data: During serialization you can choose which data you want to serialize. This can be updated through the KinetixCore configuration with an instance of KinetixCore.Networkconfiguration.

  2. Reduce the frame rate : Reducing the frame rate will reduce the amount of poses sent over time and will result in lower bandwidth charge. You can test out the quality for lower Frame rate but we recommend to keep a frame rate at a minimum of 20.

  3. AOI (Area of interest): While receiving serialized pose from clients, you can determine which other clients will need to apply those poses based on their positions, or if they are visible for example.

  4. Omission : During spike, we recommend to keep a small amount of user networking emotes. In that case you can setup a limit of N players playing an emote simultaneously handled by your network and send a maximum users emote poses based on your server bandwith limitations.

How do you manage big amount of gamers connected at the same time?

To unlock self-expression in games, Kinetix had to make the necessary to allow as much players as possible to play Emotes at the same time! When hundreds of players use their loaded Emotes at the same time our smart networking solution optimize peer-to-peer connection. As detailed in Network - Unity SDK our SDK only extracts poses of played Emotes and shared that reduced pose information with the other players.

Eventually, we allow you to decide the memory allocated to the Emote networking so you can optimize it based on your needs. From our various tests we identified 50 Mo as recommended memory.

Discover how to manage Network - Unity SDK

Does the SDK work with Smarfox Server?

Regarding the transfer of poses, it is possible to get the pose in byte[] and apply it through our SDK.

While getting a Pose it is possible to transfer this data through your server and redirect it to the other needed peers.

While other peers receive the pose (byte[]), you can apply the received pose of the peer through our SDK.

The Photon samples are juste exemples of an implementation through a network solution, but can work in a agnostic way through Photon, Unity Networking or even SmartFox Server.

How can I clean the emote inventory when switching to production?

When switching to production, you have to request an Unlimited Key (go to Developer Portal for more info). Once you log your Unlimited key in Kinetix SDK, your inventory is automatically cleaned as no Emotes are associated with the new Unlimited key.

How do I deregister / remove emotes?
How can I embed the Emote Creator (PWA) directly in my game/app?

You can follow directly this tutorial: Embedding the PWA in your Unity application

How does Kinetix handle non-humanoid bones, such as hair and skirts, during emote creation and playback?

We only handle humanoid bones during the emote creation and playback, leaving you room to apply physics on the other bones dynamically in the game engine. Usually, we recommend animating hair and skirts with specified plugins that use physics and not keyframe animations. Here are some plugin examples we recommend for Unity:

You can remove user-generated emotes from a player's bag through your account. Head to the UGC Moderation tab to do so, and follow the flow.

❓
http://docs2x.smartfoxserver.com/DevelopmentBasics/sfsobject-sfsarray
https://docs.kinetix.tech/gs-2/unity/initialize-core-package/network
Developer Portal
Magica Cloth 2
Dynamic Bone
Emote networking & caching
Contact-Aware Retargeting
How to get Contact-Aware Retargeting for your avatars