In a nutshell
- For a specific gameplay, you need a MAP file.
- MAP is built before the gameplay.
MAP file
The MAP file, an abbreviation for “Conditions-to-Events Mapping file”,
contains mapping components. The most primitive mapping component is Detection that
contains a list of conditions, used mainly for describing how to detect
a motion, and a list of events, used mainly for describing what to do
when a motion is detected.
An example of Detection “Right Punch” is the following.
- conditions: Right Hand is in front of Center Shoulder more than 35 cm.
- events:
Send a command to hold key Z until the end-of-motion (EoM), in other
words, until the time when “Right Punch” is no longer detected.
How to use MAP file
To understand how MAP files work, we recommend that you download sample MAP files and test them.
MAP Editor
There are three ways for opening MAP Editor for creating/editing MAP file.
- From the Main Menu, click "Other Menu," then "MAP Editor"
- From UKI dialog, click "Editor"
- From UserTracker, click "Tool," then "UKI MAP Editor"
MAP-file components
- Technical details are available in this publication (To be added, SoftwareX)
|
Components
- <Variable>:
- Variable: a temporary storage for storing numeric value (e.g. side, side_ready)
- <MAP>
- DetectionGroup: (e.g. SwitchSide, MoveX, MoveY, Attack)
- <Conditions>: conditions for all items in a group
- Detection: (e.g. Dash Forward, etc.)
- <Conditions>: conditions, which normally state "How to detect a motion"
- <Events>: events, which state what to do when the motion is detected
Details
- Within a group, only one motion can be detected at a time, and the priority of detection is from top to bottom. On the other hand, motions of different groups can be simultaneously detected and combined.
- For example, control configurations in 2D games are commonly divided into three different action dimensions: movements on the horizontal axis, movements on the vertical axis, and attack skills. Suppose “Walk Forward” and “Right Punch” are simultaneously detected, the combination of their outputs “► + Z”, corresponding to “Walk + Punch” in the game, will be sent; this results in execution of the “Heavy Punch” skill.
|
Detection (component)
|
Given an example of pressing Z, consider the following properties.
- Loop:
- With Loop: tap Z overtime (Press & Release over time)
- Without Loop: press & release Z once
- Priority:
- Without Priority: outputs from several Detection can be processed simultaneously (output combinations are allowed)
- With Priority: output from a Detection is ensured to be processed solely (output combinations are disallowed)
- For example, to execute a button combo as be low. Priority property should be activated

|
Condition (component)
|
Available types of Condition
- Relative Joints (a): This condition is represented as a relative
difference in positions between two body joints over a given axis.
- Atomic Posture (b): This condition is a frequently used posture. They can be combined to detect sophisticated motions.
- Motion from Database (c): This condition is used to queried a motion model (a list of conditions) from the Motion Database.
- Change-from-Initial (d): This condition indicates a change in the height of the spine/right knee/left knee.
- Time Within (e): This condition divides a motion into a sequence of postures.
- Variable (f): This condition is based on value of a Variable.
- Change Icon (g): This condition is used to provide visual feedback to a player though Icon.
|
Event (component)
|
Available types of Event
- Key (a): This event sends a simulated key to the targeted application;
- Press and Release: press a key.
- Hold until end-of-motion: hold a key as long as Detection is still detected.
- Hold: hold a specific key.
- Release: release a specific key if it is being pressed.
- Mouse Move (b): This event simulates cursor movement by either specifying amount of movement (Move by) or locating an exacted position to point the cursor at (Move to).
- Event from Database (c): (similar to Motion from Database)
- Key Replacement (d): This event works by inserting a replacing_map [key → key_new] into Replacing List. When key is sent by Key event, it will be replaced by key_new.
- Time Wait (e): This event separates concurrent events into a sequence of events.
- Variable (f): (similar to Variable type of condition)
- Change Icon (g): (similar to Change Icon type of condition)
|
Editing MAP file
|
- Button "Open": browse file
- Button "Save": save files
- Button image="icon": open saved directory (file\[UKI-Map])
- Button "Add": add a component of map file (depend on the selected node)
- Button "Edit": edit a component of map file
- Button "Delete": delete a component of map file
- Button "Other"
- Button "Expend All": expand all nodes
- Button "Collapse All": collapse all nodes
- Button "Localize MAP file": change condition[Motion from Database] to a list of conditions derived from the database
- Button "Decode Base Posture": change condition[Atomic Posture] to modifiable type of condition
- Button in Tree Item, image="Arrow": move a MAP component up/down
- Button in Tree Item, image="Copy/Pase": copy/paste a MAP component, can be copy from/paste to Databases
|
Editing Motion Database
|
- There is only one Motion Database
- Each Motion is equivalent to <Conditions>
- Motion can be queried by using condition "Motion from Database".
|
Editing Event Database
|
- There is only one Event Database
- Each Event is equivalent to <Events>
- Event can be queried by using event "Event from Database".
|
|
|