# Enertime

Exercise • Anywhere • Anytime

{% hint style="info" %}
**Quick tip:** Got amazing game creations? Contact us on <info@enertime.io> to convert your game masterpieces into somatosensory games on our game portals!
{% endhint %}

## Overview

**Enertime** (Exercise • Anywhere • Anytime) is a mobile gesture gaming platform which serves as a free fitness lite alternative to Nintendo Switch Sports, so as to empower individuals with move-to-play experience anywhere, anytime via their smartphone connecting laptop side as a handheld gesture game controller.

> **What is Enertime?**
>
> We developed Enertime as a service to allow you interact with your favourite games on a more intimate level! All you need is a computer and a smartphone, and you've got yourself an interactive playing environment at no added cost!

> **Is it free to use?**
>
> YES! As a completely free to use software, all we require is your enthusiasm to play. With support for both Android and IOS devices, we try our best to bring you an enjoyable and interactive gesture based experience for all your favorite games!

## Jump to

1. [The special Features of ENERTIME](/overview/our-features)
2. [Installing Enertime](/fundamentals/installing-enertime)
3. [Our Game Modes](/fundamentals/using-enertime/usage-basics)
4. For Developers
   1. [Simple Integration with ENERTIME](/use-cases/for-developers/simple-integration)
   2. [Advanced Integration methodologies](/use-cases/for-developers/advanced-integration)

***

*Follow the link below to move to the next section.*


# What we do

A Quick Look at our Product

{% hint style="info" %}
At Enertime, we want everyone to experience the joy of being one with their favorite characters. That's why we aim to minimize expenses with the use of only your laptop and smartphone!
{% endhint %}

## Video overview

Got a minute? Check-out our Launch Trailer:

{% embed url="<https://youtu.be/YRg4BZxhpOw>" %}


# Our Features

## Gesture Interaction

Say bye to pressing a button! Here at Enertime, we want to create a more immersive experience for users to enjoy their favorite games. With simple gestures like jumping, punching or slashing, you can control the actions of your character. With just smartphone & laptop, begin your journey of entertainment and exercise!

![JUMP mode: Demonstration](/files/eAZVTXLnsDp9PLfLmTfc)

## Easy Connection

At Enertime, we believe in simplicity. Installing the Enertime App on your mobile phone and Windows computer will allow you to establish a connection between them using a simple QR code.

![Enertime Mobile Application - QR code scan to connect](/files/UKlzcYKfzMC85McGJXQV)


# Installing Enertime

This section describes how to install Enertime so that you can ENERTIME anywhere!

{% hint style="info" %}
**Creator's Advice:** These installation instructions are for the **BETA** release of ENERTIME. We will update them based on our version releases, but always confirm your installation is the latest model.
{% endhint %}

Please follow the following instructions to install ENERTIME beta release version:

{% embed url="<https://youtu.be/hcaSiDun1ec>" %}

<details>

<summary>Step1: Install Mobile Application</summary>

As Enertime works on the concept of creating a connection between your phone and laptop, we must first install the mobile application that will allow you to do so.

* For Android Devices, please find installation link here -> [https://play.google.com/store/apps/details?id=io.Enertime.Enertime](https://play.google.com/store/apps/details?id=io.Enertime.Enertime\&pli=1)
* For IOS Devices, please find installation link here -> [https://apps.apple.com/hk/app/enertime/id6453470052](https://apps.apple.com/hk/app/enertime/id6453470052?l=en-GB)

Once the mobile application has been successfully installed, please go to the next step!

</details>

<details>

<summary>Step 2: Install PC Application</summary>

*\[Only available in Windows]*

For integrating your games with your phone, you will need a PC application. This app will allow you to play games while using the smartphone as a controller, but one that works on gestures rather than buttons!&#x20;

* For Windows Laptops/Computers, please find the installation link here -> <https://enertime.itch.io/enertime>

INSTALLATION TROUBLESHOOTING:

During the installation, if you face any issues, please refer to the following instructions.

1. Go to the installation link click **Download Now >> and then proceed to downloads**. Once the download is finished, please extract all the files from the zip folder.

   ![](/files/PwfA81o7dsZWasSf5oR5)
2. Once all the files are extracted, please launch the Windows Launcher Application. Here, **some devices** may be asked to install **.NET Core**. If you receive such a message, please follow the on-screen instructions to install.

   *(please skip if not required for you)*

   ![](/files/XNds1EjeMuznvpMoruAi)
3. Now, please launch the **WindowsLauncher** Application. This will prompt you to **install Java**, and once you do so, the application should automatically launch.
4. Now you are good to go!

</details>

<details>

<summary>Step 3: Allow Permissions</summary>

*\[Only available in Windows]*

There are a few things to keep in mind when using our application. As a user-centered company, we are open with the permissions that we require for the smooth operation of our solution.

1. For the **mobile application**, we may require access to the following permissions. We guarantee you that we will not use them for any other task apart from those specified here.
   * Your **camera** to facilitate scanning the QR code (to link phone and computer).&#x20;
   * Access to the **internet**, for transfer of data from our server on your laptop to your smartphones. *(primarily for IOS)*
2. For **server application** on your computer, the following permissions may be required for the smooth operation of our service.

   * Windows:
     * May be required to **disable firewall** restrictions during the installation phase *(as our application is recognized as a third-party app)*.
     * May be required to **disable external anti-virus** applications *(for installation only)*

   As you can see, all the permissions we require for the server application is only during installation.&#x20;

   Apart from these permissions, there is nothing in our application that violates any default permissions on either platform.

</details>

<details>

<summary>Step 4: Enertime!</summary>

Now the installation is entirely complete!&#x20;

We release regular updates for our mobile applications on IOS and Android in compliance with their regulations. As we are still in our BETA stage of development, your support means a lot to us!&#x20;

The next section shall take you through the different game modes that we currently offer. See you there!

</details>


# Using Enertime

Now that you have installed the Enertime Application on both your smartphone and computer, we can take a look at how to play some of the game modes.


# Usage Basics

{% hint style="info" %}
**Quick Notes:** We are still in the BETA release stage of development. So, some of our game modes are still in the making. We will update this page the moment they are available to you!
{% endhint %}

## Game Modes

There are 5 main game modes available to users.

<table><thead><tr><th width="180">Role</th><th>Capabilities</th></tr></thead><tbody><tr><td>JUMP</td><td>Allows users to control their characters by jumping on the spot</td></tr><tr><td>PUNCH</td><td>Extend your hands and punch out to play games</td></tr><tr><td>SABER</td><td>Make cutting motions to mimic similar actions with your character</td></tr><tr><td>ROTATE</td><td>Play fun games by tilting your phone (like a racing game)</td></tr><tr><td>MULTI</td><td>Combine all the game modes into one. Gives user complete freedom to pick the game and which mode they would like to play it in.  <em>[COMING SOON]</em></td></tr></tbody></table>

As you can see these different game modes give users more freedom when interacting with their games. The best part - ALL YOU NEED IS YOUR SMARTPHONE!&#x20;

*No controllers, No sensor sticks, No consoles, No webcams!*


# Playing a Game!

**Suggestion:** Try out our different modes. We have tutorials for them below. Follow them, and try from home!

<details>

<summary>JUMP Mode</summary>

1. First, connect laptop and smartphone to the same hotspot *(to establish a connection between them)*

   <div align="center"><figure><img src="/files/W1TaKb2Qb2gGzg4UGeay" alt="" width="375"><figcaption></figcaption></figure></div>
2. Create a connection between the devices by scanning the QR code via the respective apps on smartphone and windows computer

   <div align="center"><figure><img src="/files/K1PeNwncTsCcWcIaFDV9" alt="" width="375"><figcaption></figcaption></figure></div>
3. Then, select the **Create a new Action** option

   <div align="center"><figure><img src="/files/rw8vzF7afeOyNFbqzLqH" alt="" width="375"><figcaption></figcaption></figure></div>
4. After this, you may choose your desired game mode. Here, choose the JUMP mode.

   <div align="center"><figure><img src="/files/3KCIdVzxv35wsk5FvpEz" alt="" width="375"><figcaption></figcaption></figure></div>
5. Now, you will have to bind the "space" key to the jump action *(as this is the key we use to jump in the game)*

   <div align="center"><figure><img src="/files/SgeKGATZAtcguVybPtjA" alt="" width="375"><figcaption></figcaption></figure></div>
6. Now, you can play the game by jumping with your phone in your hands!

   <div align="center"><figure><img src="/files/zOondn1p9ekl6TVneOZ3" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>PUNCH Mode</summary>

1. Repeat steps 1-2 *(If you want to launch this mode immediately after starting the app)*.&#x20;
2. Then, select **Create a new Action** option

   <div align="center"><figure><img src="/files/rw8vzF7afeOyNFbqzLqH" alt="" width="375"><figcaption></figcaption></figure></div>
3. Now, choose the **PUNCH** game mode. <br>

   <div align="center"><figure><img src="/files/ckF3Ew71sqafhIW00HOm" alt="" width="137"><figcaption></figcaption></figure></div>
4. Next, select the desired key that you would like to bind. For this game, choose "**SPACE**" key.

   <div align="center"><figure><img src="/files/O4BrIieOSqN1LZ2Tcksr" alt="" width="137"><figcaption></figcaption></figure></div>
5. Then, set your preferred sensitivity and finally **tap to** **START**<br>

   <div align="center"><figure><img src="/files/SGTLEifr0drufJxXd9p4" alt="" width="137"><figcaption></figcaption></figure></div>
6. Now, you can play the game!<br>

   <div align="center"><figure><img src="/files/PYAMuZqGvQXdeaCMUAAb" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>SABER Mode</summary>

1. Repeat Steps 1-2 in JUMP mode if starting the application for the first time.
2. Then select **Create a new Action** and choose **Saber mode**.<br>

   <div align="center"><figure><img src="/files/ARInOdMEcG1alDuaF1sX" alt="" width="137"><figcaption></figcaption></figure></div>
3. To configure saber mode, follow the on-screen instructions and select the keys **"a"** and **"d"**. \[Make sure to click the *"done"* button]<br>

   <div align="center"><figure><img src="/files/he220GZO73zsrqAaF2H9" alt="" width="137"><figcaption></figcaption></figure></div>
4. Set your preferred sensitive (higher means you will move less :smile:) and click **Tap to Start** when ready to play<br>

   <div align="center"><figure><img src="/files/M1bpS0LQBvFMNxCYxYxA" alt="" width="137"><figcaption></figcaption></figure></div>
5. Now, you can play the game.<br>

   <div align="center"><figure><img src="/files/aYlGwKvH0rotSYaSaFqT" alt="" width="137"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>ROTATE Mode</summary>

* Repeat Steps 1-2 in JUMP mode if starting the application for the first time.
* Then select **Create a new Action** and choose **Rotate mode**.<br>

  <div align="center"><figure><img src="/files/BEAEMKiWBO2gCGiFvHLl" alt="" width="137"><figcaption></figcaption></figure></div>
* To configure rotate mode, follow the on-screen instructions and select the keys "w", **"a", "s"** and **"d"**. \[Make sure to click the *"done"* button]<br>

  <div align="center"><figure><img src="/files/KZitGvhNXkxWdcTPNiDc" alt="" width="137"><figcaption></figcaption></figure></div>
* Set your preferred sensitive (higher means you can move less :smile:) and click **Tap to Start** when ready to play<br>

  <div align="center"><figure><img src="/files/hkzMyTbJRv5DbIGCgvna" alt="" width="137"><figcaption></figcaption></figure></div>
* Now, you can play the game.<br>

  <div align="center"><figure><img src="/files/3rtvQ1lzg7iSQUXoxx5K" alt="" width="137"><figcaption></figcaption></figure></div>

</details>

*Currently, PUNCH, ROTATE & SABER modes are available. Content will be updated shortly*


# For Developers

{% hint style="info" %}
**Creator Notes:** For integrations with other applications, the following functions shall prove important as they can be overridden for your use. Overridable Function can be re-used/inherited from a pre-existing class, but is modified to perform different tasks during execution.
{% endhint %}

## Purpose

The following pages are intended for developers, content creators or companies that would wish to collaborate with us and our solution. We will provide a brief of what we can offer, and how you might be able to integrate your solutions with ours.

The section shall be further divided based on the level of integrations.

* [Simple Integrations:](/use-cases/for-developers/simple-integration) A direct plug and play approach to integration, where you will modify your functions to comply with our existing solution.&#x20;
* [Advanced Integrations:](/use-cases/for-developers/advanced-integration) Intended purely for developers or consumers who would like to modify our solution so that it might be more compatible with your existing solution and infrastructure.&#x20;


# Simple Integration

{% hint style="info" %}
**Creator's Notes:** Simple Integration is quite..."SIMPLE"! All you need to do, is to make a game or interactive scenario, that fits Enertime's usage [modes](/fundamentals/using-enertime/usage-basics#game-modes)!
{% endhint %}

Here, we will take a look at an easy tutorial of how YOU can MODIFY a game on scratch to comply with our game modes and make it easier for users to exercise while having fun!

### TUTORIAL: Flappy Bird on Scratch

#### Step 1 - Pick a game of your choosing on Scratch

* For the purpose of this demonstration, we will use the 2D scratch game that may be found [here](https://scratch.mit.edu/projects/567352805/editor/)!
* As the game is on scratch, we recommend registering for an account to explore the plethora of games available.
* Scratch is a useful tool as it will allow you to modify the game to better suit our gesture-based interaction modes.

#### Step 2 - Game Modifications

1. **Changing play-style for flappy bird**
   * KEYBINDS: Jump action -> pressing spacebar key \[to make the bird jump]
   * ORIGINALLY: The game would end if the bird hit the pillars or touched the ground

     <figure><img src="/files/1LjhTJSMqwT7z6R56Jv9" alt=""><figcaption><p>Classic Flappy Bird</p></figcaption></figure>
   * PROBLEM: But, it is impossible for a person to continuously jump to keep the bird alive.
   * SOLUTION: Modify the game to make it more realistic for human capabilities, i.e.,  levitate the bird slightly above the ground to ensure it will never touch it.&#x20;

     <figure><img src="/files/LDvNDYanhXXDPbPB1C7Y" alt="" width="450"><figcaption><p>Levitating Bird Sprite</p></figcaption></figure>
   * It can be done by placing the default y-coordinate of the bird sprite higher than the ground level (for our version, we placed y = -97).
   * Then, we compare the current height of the sprite with this default value, to ensure that it never falls below this limit.
   * In this way, we can ensure that the sprite is always levitating slightly above ground and will not die if we don't jump.

2. **Changes to the obstacles**

   * ORIGINALLY: There were some wider obstacles that would require the bird to jump twice in a short period of time.
   * PROBLEM: It is difficult for players to continuously jump to ensure that the bird safely flies across the obstacles due to the varying thickness of the obstacles.

   <figure><img src="/files/jCJIgZGHXQ4zeAMWyyf3" alt="" width="375"><figcaption><p>Obstacle bar is too wide for the bird to cross in a single jump</p></figcaption></figure>

   * SOLUTION: Reduce the thickness of the bars, while increasing the gap between two bars, allowing users to seamlessly jump through the bars, as long as they time it properly.

   <figure><img src="/files/LDvNDYanhXXDPbPB1C7Y" alt="" width="300"><figcaption><p>Decreasing the width of the obstacles</p></figcaption></figure>

   * This can be done by going to the costumes section in scratch and editing the obstacles to your desired height and thickness.

3. **Placing a buffer timer so that players can get ready**

   * Placing a 5 second buffer timer so that players may get ready and familiarize themselves with the controls.

   <figure><img src="/files/5dTURhxNhAHy0OB0Twcq" alt="" width="375"><figcaption><p>Placing buffer time for players to get ready</p></figcaption></figure>

   * It can easily be done by using a "wait until" command before the initialization of the obstacles once the start flag is clicked.

These steps will allow you to integrate your game ideas with ours and how they may be modified to seamlessly integrate with Enertime.


# Advanced Integration

For **ADVANCED INTEGRATION** features, please make a formal request to ENERTIME using the following email address: *<info@enertime.io>*

Upon requesting for Advanced Integration, you will receive the following files from Enertime.

1. BeginOrEnd.cs
2. CmdTypes.cs
3. SerInstance.cs&#x20;
4. Utils.cs

Among these files, the main file that you will be working with is **`SerInstance.cs`** The other files are part of its dependencies, but its code need not be modified.

> **DEVELOPER NOTE:** "The export format must be in **Windows/MAC/Linux**"

***

Now, please follow the below steps to integrate our solution with your product.

#### Step 1: Adding files into your game repository

* Add the above 4 files that you will receive from us at Enertime, into a new folder within your working project file.

#### Step 2: Create a new script to extend the original SerInstance Class

* Extend your class accordingly, using the sample provided below:

```csharp
// Sample Code - C#
public class YourClass : EWTSerLib.SerInstance
{
    public static void IntilizeFunction()
    {
        YourClass yourClass = new YourClass();
    }

    YourClass()
    {
        base.Begin();
    }
}
```

#### Step 3: Begin the Override process with the SetAddresses() method

* DESCRIPTION: `void SetAddresses(int[][] IPA){}`
  * Contains a 2D array of integers
  * In a single dimension, 1D, it represents an IP address.
  * Its main use is to generate the QR code used to establish a connection between the client and the server (executed every 5 seconds for stable connection).
  * Format of data (add an example):
    * When only 1 IP Address :&#x20;
      * Eg: “ENERTIME: 192.168.1.1]”
    * When more than 1:&#x20;
      * Eg: “ENERTIME: 192.168.1.1|192.168.1.213|......192.168.1.254]”
  * In addition, there is a padding feature, where every byte must have a length of 3, else it will append 0s to it’s left.

    * [ ] Eg: consider IP address: 192.168.1.1
    * [ ] String output = 192168001001 \[flatten it and then padding 0 accordingly]
    * [ ] Resulting data: “ENERTIME: 192168001001]”
    * [ ] Final Data Type: String

    The sample code for the override may be found below:

```csharp
// Sample Override method for void SetAddresses(int[][] IPA){}
public override void SetAddresses(int[][] input)
    {
        string result = "ENERTIME: "; 
        int len = input.Length;

        for(int i = 0; i < len; i++)
        {
            result = result + String.Format("{0:000}{1:000}{2:000}{3:000}", input[i][0], input[i][1], input[i][2], input[i][3]);
            result = result + "|"; 
        }

        char[] resultArr = result.ToCharArray();
        resultArr[resultArr.Length - 1] = ']';
        result = new string(resultArr);
}
```

The `result` variable is used to make the QR code for connection purposes. The format is as follows:

`result = “ENERTIME: 192.168.1.1|192.168.1.213|......192.168.1.254]”`

#### Step 4: Begin the Override for the SetMode method

* Description: `void SetMode(byte clientID, byte mode){}`

  * Stores information about the client’s playing mode.

  For the successful override of this function, please follow these procedures

  1. Create a byte array as a member of the newly created extended class
  2. Set minimum size to 8, but max limit is upto your choosing.
  3. Set the default value for every element of this array to 254.
  4. Store the modes as an array within the parameter clientID as follows: `array[clientID] = mode`

{% hint style="info" %}
Here, **254** is used as a placeholder within the array. It is also used as an indicator for the connection status of the users (as **254** implies that the user is disconnected from the server).

The latter is mainly used for the below function.
{% endhint %}

#### Step 5: Override for the Disconnected() method

* DESCRIPTION: `public override void Disconnected(byte clientID){}`
  * Used to detect if the player (phone/client) is connected to the server.
  * Cases where the client is disconnected from the server:
    1. Internet connection resets during gameplay. (maybe wifi network changed, or connected hotspot turned off)
    2. Client finishes playing the game
* Steps:
  * If this instruction is passed, please execute the following code segment: `array[clientID] = 254`

#### Step 6: Override the HandleCommand() method

* DEFINE: `public override void HandleCommand(byte clientID,CmdType type, byte[] paras){}`
* DESCRIPTION:
  * Please refer to the sample code for the function below:

```csharp
// HandleCommand(
public override void HandleCommand(byte clientID,CmdType type, byte[] paras)
    {
        //saber 
        if ((type == CmdType.SLASH) &&(paras[0] == 1)) // right 
        {
            rightTrigger = true;
        }
        else if ((type == CmdType.SLASH) &&(paras[1] == 1)) // left 
        {
            leftTrigger = true;
        }
        // Jump
        if ((type == CmdType.JUMP) && (paras[1] == 0) && (paras[0] > 0) )
        {
            Trigger = true;
        }
        // punch mode  CmdType.PUNCH
        if ((type == CmdType.PUNCH) && (paras[1] == 0) && (paras[0] > 0) )
        {
            Trigger = true;
        }
    }
```

Apart from Saber mode and Jump mode, if you would like to try some of the other modes, please utilize the protocol codes within the instruction sheet in the next section.

A quick summary of the code used is provided below.

{% tabs %}
{% tab title="Step 1" %}
Overridable Function: A function that is re-used/inherited from a pre-existing class, but is modified to perform different tasks during execution

```csharp
void SetAddresses(int[][] IPA){}
void SetMode(byte clientID, byte mode){}
public override void Disconnected(byte clientID){}
public override void HandleCommand(byte clientID,CmdType type, byte[] paras){}
```

{% endtab %}

{% tab title="Step 2" %}

```csharp
// Sample New Script to extend SerInstance.cs
public class YourClass : EWTSerLib.SerInstance
{
    public static void IntilizeFunction()
    {
        YourClass yourClass = new YourClass();
    }

    YourClass()
    {
        base.Begin();
    }
}
```

{% endtab %}

{% tab title="Step 3" %}

```csharp
// Sample Override method for void SetAddresses(int[][] IPA){}
public override void SetAddresses(int[][] input)
    {
        string result = "ENERTIME: "; 
        int len = input.Length;

        for(int i = 0; i < len; i++)
        {
            result = result + String.Format("{0:000}{1:000}{2:000}{3:000}", input[i][0], input[i][1], input[i][2], input[i][3]);
            result = result + "|"; 
        }

        char[] resultArr = result.ToCharArray();
        resultArr[resultArr.Length - 1] = ']';
        result = new string(resultArr);
}
```

{% endtab %}

{% tab title="Step 4" %}

```csharp
 // The format of the function definition is as follows
 void SetMode(byte clientID, byte mode){}
 
 // Stores information about the client’s playing mode
 // Refer to the document above for more information 
```

{% endtab %}

{% tab title="Step 5" %}

<pre class="language-csharp"><code class="lang-csharp">// The format of the function definition is as follows
<strong>public override void Disconnected(byte clientID){}
</strong>
// Used to detect if the player (phone/client) is connected to the server
// Refer to the section above for more details
</code></pre>

{% endtab %}

{% tab title="Step 6" %}

```csharp
// The format of the function definition is as follows
// HandleCommand(
public override void HandleCommand(byte clientID,CmdType type, byte[] paras)
    {
        //saber 
        if ((type == CmdType.SLASH) &&(paras[0] == 1)) // right 
        {
            rightTrigger = true;
        }
        else if ((type == CmdType.SLASH) &&(paras[1] == 1)) // left 
        {
            leftTrigger = true;
        }
        // Jump
        if ((type == CmdType.JUMP) && (paras[1] == 0) && (paras[0] > 0) )
        {
            Trigger = true;
        }
        // punch mode  CmdType.PUNCH
        if ((type == CmdType.PUNCH) && (paras[1] == 0) && (paras[0] > 0) )
        {
            Trigger = true;
        }
    }
```

{% endtab %}
{% endtabs %}

By making use of these functions, you can have your ideas make effective use of our solution.


# Custom Protocol Sheet

This is solely for the reference of advanced integration developers

For making advanced modifications, please refer to the following table for the byte information of the different usage modes. \[Useful for byte verification during coding]

***

{% hint style="info" %}
For some sections of this table, you will see an underline (.....) like so below the text. Clicking it, for example here[^1]
{% endhint %}

<table><thead><tr><th width="293">Byte Index Position (0-Indexed)</th><th width="69">4</th><th width="71">5</th><th width="68">6</th><th width="70">7</th><th width="68">8</th><th>9</th></tr></thead><tbody><tr><td><strong>Byte Description</strong></td><td>P0</td><td>P1</td><td>P2</td><td>P3</td><td>P4</td><td>P5</td></tr><tr><td><strong>Jump Mode</strong></td><td>1</td><td><a data-footnote-ref href="#user-content-fn-2">0</a> / <a data-footnote-ref href="#user-content-fn-3">1</a></td><td>0</td><td>1</td><td><a data-footnote-ref href="#user-content-fn-2">0</a> / <a data-footnote-ref href="#user-content-fn-3">1</a></td><td>0</td></tr><tr><td><a data-footnote-ref href="#user-content-fn-4"><strong>Rotate Rate</strong></a></td><td>x</td><td>y</td><td>z</td><td>x</td><td>y</td><td>z</td></tr><tr><td><strong>Punch Mode</strong></td><td><a data-footnote-ref href="#user-content-fn-5">0->3</a></td><td>0 / 1</td><td>0</td><td><a data-footnote-ref href="#user-content-fn-5">0->3</a></td><td>0 / 1</td><td>0</td></tr><tr><td><strong>Saber (Slash) Mode</strong></td><td><a data-footnote-ref href="#user-content-fn-6">1</a> /<a data-footnote-ref href="#user-content-fn-10">0</a></td><td><a data-footnote-ref href="#user-content-fn-7">1</a> / <a data-footnote-ref href="#user-content-fn-10">0</a></td><td><a data-footnote-ref href="#user-content-fn-8">1</a> / <a data-footnote-ref href="#user-content-fn-10">0</a></td><td><a data-footnote-ref href="#user-content-fn-9">1</a> / <a data-footnote-ref href="#user-content-fn-10">0</a></td><td>0</td><td>0</td></tr><tr><td><strong>Acceleration</strong></td><td>x</td><td>y</td><td>z</td><td>x</td><td>y</td><td>z</td></tr><tr><td><strong>Attitude</strong></td><td>x</td><td>y</td><td>z</td><td>w</td><td>x</td><td>z</td></tr></tbody></table>

For any queries during your modifications, please do reach out to our support team via <info@enertime.io>

[^1]: will open a pop-up description like this.

[^2]: If your jumping up, then value = 0

[^3]: If you are crouching down, value = 1

[^4]: Map the rate using the following pattern:&#x20;

    0=0, 1=0.5, 2=1, 3=1.5…

[^5]: Strength setting of punch

[^6]: ![](/files/1UI2xcuLY4L8cJmyzMqh)

    If: You move hands like this in Saber Mode

[^7]: ![](/files/X2EyXMYffKZp4xJdpy5N)

    If: You move phone like this in Saber Mode

[^8]: ![](/files/4DQGA1UIcXOzW0Vxn30s)

    If: You move phone like this in saber mode

[^9]: ![](/files/9mh8RNhwaJtIl8UE0oRJ)

    If: You move phone like this in Saber mode

[^10]: Else: 0


# Future Development

1. **Enhancement Direction:**
   * Enertime will enhance its current infrastructure with the implementation of:
     1. Curved motion detection to compliment the existing straight line algorithms
     2. Gesture modes that are compatible with greater degree of computer games
     3. Physical and social activeness promotion<br>
2. **Co-Development Invitations:**

   * If you are interested in cooperating with us to make more people aware of the potential of Enertime, please reach out to us via *<info@enertime.io>*&#x20;

   We welcome open-source community contributors to co-develop Enertime with us and any organization with plans to integrate Enertime into their solutions<br>
3. **Feedback Analysis:**
   * Enertime cares about it user community. Your valuable feedback drives our motivation and ambition towards the continuous development of Enertime. If you, as users, have any recommendations for Enertime, feel free to drop us an email at <info@enertime.io>

If you would like to keep up-to-date with our latest developments - subscribe to our Linktree and corresponding social profiles found within!

<https://linktr.ee/eppy.enertime>

\---------------------------------------------------------------------------------------------


