You can input in single quotation marks ( " ) by typing two quotation marks ( "" ) in the Expression Editor.
" ""Hello World"" " returns "Hello World"
Collisions are layer dependent. If Object A is on layer 1 and Object B is on layer 2, the two objects can never trigger any collision related event.
Likewise, you can improve performance by splitting collisions across layers.
Does not apply to physic-related collisions. These collisions are not layer dependent and thusly can cause a collision on any layer.
Hot spots determine at what pixel an object's position is calculated at. If you try to get an object's position and the hot spot is located at (0,0), the position expression will always return the object's top left corner coordinates.
Hot spots also determine the center point when an object rotates. Ball objects should have hot spots in the center of the object while platform objects should have hot spots placed at the object's "feet."
Mass Hot Spot, Action Point, Crop:
Control + Shift + <Click on the Respective Button>
Each tool also has their respective hotkey which you can view by hightlighting the tool.
Clickteam Fusion uses Short Circuit Evaluation when events are processed. Essentially, if you have an event with 30 conditions and the first condition is false, the other 29 conditions are not even checked.
As such, unless proper object scoping is needed, you should leave performance heavy events, such as overlaps, towards the bottom of an event's condition list. This simply trick greatly improves performance.
In MMFusion, you may keep your events bundled in the Event Editor or you may spread your events throughout the editors.
The order of execution for the various editors is as follows:
1. Event Editor (top to bottom)
2. Global Event Editor (top to bottom)
3. Behaviours (top to bottom)
a. Executed in order of object (not instance) creation during edittime
b. Executes even if no instances of the object exist during runtime
You can easily limit the range of a variable by using the Range() function within Clickteam Fusion which has the following format:
Range(MyVariable, lower-limit, upper-limit)
In Multimedia Fusion 2, you will need to use the following expression:
Max( Min( MyVariable, upper-limit), lower-limit)
Explanation of other native MMF2 and Clickteam Fusion functions can be found in the "Extension Editor Basics" reference guide.
Always place, sort, and organize your events into groups! Groups are a way to organize code within MMFusion. You can name groups, protect groups with a custom password, nest groups within other groups, and enable/disable groups during runtime. Furthermore a group is deactivated, all events and sub-groups within the group are also deactivated!
Group manipulation is a powerful technique and can open many new doors within MMFusion.
You can enable HWA (Hardware Acceleration) by changing the Display Mode to Direct3D 8 or Direct3D 9 (preferred). HWA allows the application to execute with more optimizatoin and consequently run faster.
The Create Object's conditions are fast compared to an object's Alterable Variable comparision condition. Like really fast. EXTREMELY FAST.
When you have performance issues with object selection, try scoping with any condition from the above image, specifically from the "Pick objects with reference to their value"
While there is no explict equation to retrieve the window dimension for an application, you can implicitly extract the dimensions with the following equations:
X Right Frame - X Left Frame
Y Bottom Frame - Y Top Frame
Below is a simple expression to find the coordiantes of the window's center.
X Left Frame + ( ( X Right Frame - X Left Frame ) / 2 )
Y Top Frame + ( ( Y Bottom Frame - Y Top Frame ) / 2 )
Generic Easing Formula:
Current or Offset Value + ( Min( Ease Speed, Abs( Distance between values ) ) * ( ( Distance between values ) / Abs( Distance between values ) ) )
Easing Formula with Object Position:
Current Position + ( Min( Ease Speed, Abs( Current Position - Destination Position ) ) * ( ( Current Position - Destination Position ) / Abs( Current Position - Destination Position ) ) )
This formulas are intended to be used with the "Set X-Position" and "Set Y-Position" of object actions. The subtrahend of both equations represents the actual displacement of the object. If the easing formula eases in the opposite direction, you may need to change the '+' symbol to a '-' symbol.
Initial example expression:
- Set Object's X Position to <MyObject's X Position> + ( Min(3, Abs(-75 ) ) * ( (-75 ) / Abs(-75) ) )
which simplifies during runtime to:
- Set Object's X Position to <MyObject's X Position> + ( 3 ) * ( -1 )
which further simplifies during runtime to:
- Set Object's X Position to <MyObject's X Position> - 3
Easing Example (Clickteam Fusion only)
You can retrieve the sign of a number with the following equation:
Return the Sign of a Number:
Number / Abs(Number)
If 1 is returned
Number is positive
If -1 is returned
Number is negative
Be sure to test if the number is 0 to avoid possible runtime errors.
If you need to force a value to be a multiple of another value, use the formula below:
Grid or Forced Multiple Formula:
( Input Variable / Base Multiple ) * Base Multiple
All of the above values should be integer values.
- Set <Result> to ( InputVariable / Base Multiple ) * Base Multiple
If you want to created a frame-based counter use the following formula:
- Add 1 to <some value>
- Set <some value> to <some value> mod <incrementing timer>
+ If <some value> mod <incrementing timer> = 0
- <Insert Set of Actions here>
For example if you wanted to make a timer that triggers every 7 seconds
- Add 1 to MyCounterValue
- Set MyCounterValue to MyCounter Value mod (7 * <Max Application Framerate>))
+ If MyCounterValue mod (7 * <Max Application Framerate>)) = 0
- <Insert Set of Actions Here>
- <Do Whatever>
The limit for names for any object during runtime is 24 characters. Any character past the 24th is cutoff. Keep object's names under 24 characters to avoid possible oddities in your program.
If an application uses any physic movements/objects, do not delete the Physic Engine Object attached to the object during runtime! If a required Physic Engine Object is missing, the entire application crashes.
The object scope before and after a fastloop differs from the original object scope if the fastloop executes any actions. These changes are typically unintentional so be aware of the possible change in object scope!