Modding Manual
Camera
Press esc to toggle between orthographic and perspective camera. Press Backspace to return control of the camera to the game.
Orthographic Camera
Middle click to pan the camera. Scroll to zoom the camera. Press Backspace to return control of the camera to the game.
Perspective Camera
wasd to pan and zoom the camera. Middle click and drag to change the angle of the camera. Press Backspace to return control of the camera to the game.
Editor
Always backup any changes you are working on. Due to the nature of the interface it is super easy to accidentally destroy work without realising.
To work through some examples check out the editor-tutorial.
The pause screen is where all the editing action occurs. Make sure you are on the pause screen to make use of the following tools.
Game Flow
Use the following keys to alter the flow of the game
- Spacebar - step game
- H - Rewind
- J - Step rewind
- K - Step replay
- L - Replay
Editor Selector
Before editing anything you must first select what you wish to edit:
- 0 - Stage
- 1 - 1st entity
- 2 - 2nd entity
- 3 - 3rd entity
- 4 - 4th entity
Element Selection
Sometimes you need to make ANOTHER selection with your mouse. In different editor modes you can select different elements to modify them.
- Left click - Select one element
- Right click and drag - Select multiple elements
Modifiers
- Default - Delete the previous selection
- Shift key - Add to the previous selection
- Alt key - Remove from previous selection
Debug Displays
While in the relevant editor mode (keys 0-9) you can toggle various debug displays. Textual debug output is also written to stdout every time a frame is changed or modified. Use F1-F12 to toggle them.
Entity Editor (1-9)
Debug Displays
- F1 - Player physics
- F2 - Input
- F2 + Shift - Input difference
- F3 - Current action
- F4 - Timers and Counters
- F5 - Control stick (white) + C Stick vector (yellow)
- F6 - pre DI vector (red) + post DI vector (green)
- F7 - hitbox BKB vector (white) + hitbox KBG (blue)
- F8 - Display ECB and BPS
- F9 - Change between rendering modes: Model, Model+colboxes, colboxes, nothing
- F10 - Display player camera area
- F11 - Enable all debug displays
- F12 - Disable all debug displays
Frame editing
- V - Copy frame
- B - Paste frame
- N - Delete frame
- M - Insert frame, copies from previous frame
Collision Box editing
Most of these operations will apply to all selected colboxes:
- A - Move colboxes, left click to confirm
- D - Delete selected colboxes
- F - Insert hurtbox
- [ - Shrink selected colboxes
- ] - Grow selected colboxes
- Q - Set selected hitbox angles to point to the cursor
Stage Editor (0)
Debug Displays
- F1 - Display blast zone boundary
- F2 - Display camera boundary
- F3 - Display/edit spawn points
- F4 - Display/edit respawn points
- F11 - Enable all debug displays
- F12 - Disable all debug displays
Element Editing
The following operations apply to all selected platforms and re/spawn points
- A - Move element
- S - Connect/disconnect surfaces
- D - Delete element
- F - Place platform surface
- R - Place stage surface
- E - Place ceiling surface
- W - Place wall surface
- Q - Place decorative surface
- Z - Place spawn point
- X - Place respawn point
Command line
Press '~' to open the command line in Canon Collision. Alternatively you can use the cc_cli binary to send commands via your OS's terminal to Canon Collision. Note that when using cc_cli you will need to escape characters that have special meaning to your shell. e.g. quotes
The Canon Collision command line is very powerful, at the price of complexity. We recommend you work through the Command Line section of the Editor Tutorial if you have not yet worked with the Canon Collision command line tool. You can then come back here if you ever need a reference.
Breakdown
Lets give a quick breakdown of an example command. This command sets the weight of foo_entity to 1.2:
package.entities[foo_entity.cbor].weight:set 1.2
- package - property
- entities - property
- [foo_entity.cbor] - key
- weight - property
- set - command
- 1.2 - value
A command consists of:
- properties, indexes and keys to select an object.
- A command to do something to the selected object.
- Some commands require extra values to tell it what to do.
Actions
Different objects support different commands:
All objects support the following commands:
- help
- view an objects type, its attributes and its commands - set
- change an attribute to the specified size - get
- display an attribute, the depth argument is optional and specifies how deeply nested object attributes should be shown. - copy - copy the specified attribute
- paste - paste the copied attribute to the specified attribute (Must be the same type)
Getter
Get object properties with dot notation.
object.property
Indexing
Sometimes an objects properties require an index or key to access them.
property["key_string"]
select by keyproperty[0]
select by indexproperty[?]
select based on contextproperty[*]
select all
Context
There are many contexts available that allow you to quickly access the object you want to modify. Setting a colbox to radius 10 can be done the primitive way. Objects are chained together with '.' and indexed by [] like this:
package.entities["fighter.cbor"].actions[0].frames[0].colboxes[2].radius:set 10
However how are you supposed to know all of these indexes? o.0 Instead you can let Canon Collision use context to know what you want to modify. Select the hitboxes you want in game then run:
cc package.entities[?].actions[?].frames[?].colboxes[?].radius:set 10