Create Command
The create
command is used to create the source content of a touch adaptation bundle (or unpacked bundle for short), or add new layouts to an existing unpacked bundle.
This is a quick entry point for getting started with adding touch adaptation to a game.
The following table shows the different sub commands that are available to use with the create
command. Note that the create
command cannot be used by itself and a sub command must be provided.
Sub-commands | Description |
---|---|
bundle |
Creates a new unpacked touch adaptation bundle for development |
layout |
Creates a new layout based on a template in an existing unpacked touch adaptation bundle |
Create Bundle
The create bundle
sub command provides a quick creation of all the source content required for a new touch adaptation bundle. It is a starting point to touch adaptation if an existing unpacked bundle does not exist for a game.
It creates all the directories and files necessary to get started with a new bundle. This includes the root layouts directory which contains the JSON layout files for different languages, the root assets directory which contains the assets for various DPIs per language, the root bundle configuration file (takxconfig.json
) that describes the bundle, and an empty context file for dynamic layout state and reusable layout definitions.
Options
Use the options in the following table to configure the creation of an unpacked touch adaptation bundle.
Options | Description |
---|---|
--destination --name |
REQUIRED. Destination path to place the unpacked bundle. This can be a simple name or a full path. [!NOTE] If any files or directories exist in the destination, the --overwrite-destination option must be used to delete them first.[!NOTE] If a simple name is used instead of a path, the current working directory will contain the created bundle. |
--layouts-directory-name --layouts-dir --layouts |
Name of the subdirectory to store the touch control layouts. This is the root layouts directory. Default: layouts . |
--assets-directory-name --assets-dir --assets |
Name of the subdirectory to store the touch control assets. This is the root assets directory. Default: assets . |
--layout-languages |
List of IETF language tags to use for language directory creation under the root layouts directory. neutral will always get created.Default: empty list. |
--asset-languages |
List of IETF language tags to use for language directory creation under the root assets directory. neutral will always get created.Default: empty list. |
--version |
Content version for the bundle. Default: 1.0.0.0 . |
--version-name |
Name of the content version for the bundle. Default: Empty string. |
--context-file-name --context-file --context |
Name of the context file for the bundle. Default: context.json . |
--templates |
List of one or more template layouts to add to the bundle upon creation. The templates are always added to the neutral layout language directory, as well as any language directories corresponding to languages specified in --layout-languages .View list of available templates. Default: Blank . |
--no-templates |
Do not add any templates to the bundle. Cannot be used if --templates is specified.Default: false . |
--overwrite-destination --overwrite |
Deletes any previous content in the destination. This is REQUIRED if the destination is not empty. Default: false . |
Examples
The following examples demonstrate how to create a new unpacked touch adaptation bundle.
Create a simple new unpacked bundle with the default blank template
D:\CreateBundleExamples> tak create bundle --name SampleBundle
Creating loose touch adaptation bundle 'SampleBundle'.
Creating bundle config file.
Creating layouts and assets directories.
Creating language directories.
Creating context file.
Added 1 templates to bundle.
Created loose touch adaptation bundle at 'D:\CreateBundleExamples\SampleBundle'.
Output:
D:.
└───CreateBundleExamples
└───SampleBundle
│ context.json
│ takxconfig.json
│
├───assets
│ └───neutral
│ ├───@1.0x
│ ├───@1.5x
│ ├───@2.0x
│ ├───@3.0x
│ └───@4.0x
└───layouts
└───neutral
blank.json
Create a new bundle in a different drive, with some layout languages, templates, and custom directory names
C:\> tak create bundle --destination D:\CreateBundleExamples\SomeFolder\AnotherFolder\SampleBundle --layout-languages fr fr-FR en-US --templates Menu Cinematic RacingBasic RacingAdvanced --layouts-dir touch-control-layouts --assets-dir touch-control-assets --context-file touch-control-context
Creating loose touch adaptation bundle 'SampleBundle'.
Creating bundle config file.
Creating layouts and assets directories.
Creating language directories.
Creating context file.
Added 4 templates to bundle.
Created loose touch adaptation bundle at 'D:\CreateBundleExamples\SomeFolder\AnotherFolder\SampleBundle'.
Output:
D:.
└───CreateBundleExamples
└───SomeFolder
└───AnotherFolder
└───SampleBundle
│ takxconfig.json
│ touch-control-context.json
│
├───touch-control-assets
│ └───neutral
│ ├───@1.0x
│ ├───@1.5x
│ ├───@2.0x
│ ├───@3.0x
│ └───@4.0x
└───touch-control-layouts
├───en
│ └───en-US
│ cinematic.json
│ menu.json
│ racing-advanced.json
│ racing-basic.json
│
├───fr
│ │ cinematic.json
│ │ menu.json
│ │ racing-advanced.json
│ │ racing-basic.json
│ │
│ └───fr-FR
│ cinematic.json
│ menu.json
│ racing-advanced.json
│ racing-basic.json
│
└───neutral
cinematic.json
menu.json
racing-advanced.json
racing-basic.json
Note
that since in the above command --layout-languages
specifies both fr
and fr-FR
, templates are added to both of the respective directories, while since only en-US
is specified, templates are only added to the en-US
directory and not its parenting en
directory. The neutral
directory will always get the template layouts added to them.
The bundle configuration file (takxconfig.json
) produced will reflect a configuration representing the paramters passed to the create bundle
command.
{
"$schema": "https://raw.githubusercontent.com/microsoft/xbox-game-streaming-tools/main/touch-adaptation-kit/schemas/takxconfig/v1/takxconfig.json",
"layouts": {
"path": "touch-control-layouts"
},
"assets": {
"path": "touch-control-assets"
},
"context": {
"path": "touch-control-context.json"
},
"version": "1.0.0.0",
"versionName": "Initial"
}
Create Layout
The create layout
sub command enables adding a new layout to an existing unpacked bundle. The output produced by create bundle
can be used as the input for the create layout
by providing the takxconfig.json
file created at the root of the unpacked bundle as the value for the --takx-config-file
option.
Similar to create bundle
, a template can be used for layout creation in this command, or default to Blank
. Adding layouts to multiple layout language directories is also supported, and the same rules regarding the file not existing or --overwrite
being required also apply.
Options
Use the options in the following table to configure the creation of a layout in an unpacked touch adaptation bundle.
Option | Description |
---|---|
--takx-config-file --takxconfig |
REQUIRED. Path to the bundle configuration file. Must be named takxconfig.json . |
--name |
Name of the layout. This will also be its file name. It is recommended that layouts are named as they best fit the game. Default: name of the template used (e.g., shooter-basic.json ). |
--languages |
List of IETF language tags for which the layout should be added. The layout will always get added to the neutral layout language directory regardless of the value passed here. If a language tag is specified here while no matching directory is found for it under the root layouts directory, the directory(s) will get created.Default: empty list. |
--all-languages --all |
Create the layout in all language subdirectories found under the root layouts directory specified in the bundle configuration file (takxconfig.json ).Cannot be set to true when --languages is specified.Default: false |
--template |
Template to use for the layout. View list of available templates. Default: Blank |
--overwrite |
Overwrite any existing layout files with the same name. This is REQUIRED if any language subdirectories under the root layouts directory contain JSON files with the same name. For example, if --name is test , --languages is set to en-US , and the en-US directory does not contains a file named test.json while neutral does, the command will not execute without --overwrite being specified.Default: false |
--set-default --default |
Set the layout created as the default layout in the bundle configuration file (takxconfig.json ).Default: false |
Examples
The following examples demonstrate how to create a new layout in an existing unpacked touch adaptation bundle.
Create a simple new layout using the default Blank
template.
D:\CreateLayoutExamples\SampleBundle> tak create layout --name sample-layout --takxconfig .\takxconfig.json
Verifying bundle configuration file (takxconfig.json).
Verification complete. 0 error(s), 0 warning(s) and 0 note(s) found.
Created layout 'sample-layout' using template 'Blank' in 1 directories.
Output:
D:.
└───CreateLayoutExample
└───SampleBundle
│ context.json
│ takxconfig.json
│
└───layouts
└───neutral
sample-layout.json
Create a new layout using a specific template for several languages in the bundle.
D:\CreateLayoutExamples> tak create layout --takxconfig .\SampleBundle\takxconfig.json --template ShooterBasic --languages ja-JP en en-US
Verifying bundle configuration file (takxconfig.json).
Verification complete. 0 error(s), 0 warning(s) and 0 note(s) found.
WARNING: A language directory for 'ja-JP' does not exist under the root layouts directory. It will be created, as well as any relevant parenting directories if applicable to the language.
WARNING: A language directory for 'en' does not exist under the root layouts directory. It will be created, as well as any relevant parenting directories if applicable to the language.
WARNING: A language directory for 'en-US' does not exist under the root layouts directory. It will be created, as well as any relevant parenting directories if applicable to the language.
Created layout 'shooter-basic' using template 'ShooterBasic' in 4 directories.
Output:
D:.
└───CreateLayoutExample
└───SampleBundle
│ context.json
│ takxconfig.json
│
└───layouts
├───en
│ │ shooter-basic.json
│ │
│ └───en-US
│ shooter-basic.json
│
├───ja
│ └───ja-JP
│ shooter-basic.json
│
└───neutral
shooter-basic.json
Note
that the layout was created under the en
directory while not under the ja
directory, as only the former was explicitly defined for --languages
.
Create a new layout for all languages
D:\CreateLayoutExamples> tak create layout --takxconfig .\SampleBundle\takxconfig.json --all-languages
Verifying bundle configuration file (takxconfig.json).
Verification complete. 0 error(s), 0 warning(s) and 0 note(s) found.
Created layout 'blank' using template 'Blank' in 5 directories.
Output:
D:.
└───SampleBundle
│ context.json
│ takxconfig.json
│
└───layouts
├───en
│ │ blank.json
│ │ shooter-basic.json
│ │
│ └───en-US
│ blank.json
│ shooter-basic.json
│
├───ja
│ │ blank.json
│ │
│ └───ja-JP
│ blank.json
│ shooter-basic.json
│
└───neutral
blank.json
shooter-basic.json