Extensions are segments of code added to an application in modular nature to increase its capabilities. Extensions help expand the functionality of The Games Factory and Multimedia Fusion by providing extra events, conditions, and actions. Essentially, they are special DLL files that are designed to interface directly with Click programs; they can do anything from adding simple math functions to controlling aspects of the runtime engine. A list follows:
- 1 Graphical
- 2 Sound and Music
- 3 Data Storage
- 4 Functional
The Lens Object is an extention that allows the user to distort an area of the frame as if it was behind glass, either zooming in like a magnifying glass, or refracting. The Lens Object features many customizable options, allowing effects such as reflecting another location of the screen or the illusion of ripples on the screen, however, it takes a proper understanding to get the right effect, and it can cause much slowdown if used at a decently large size, or in high count. A possible alternative for some of the effects one may want this for is the Perspective Object, ironically by the same creator as the Lens Object. The Perspective object is usually much faster but at the cost of not allowing custom distortion maps.
The Mode 7 Object is an extension that provides a "Mode 7" type of effect. Many complain about its low framerates, but its performance can be increased greatly by disabling interpolation and mip-mapping.
The Perspective Object is an extension that allows users to distort the perspective of a location on the frame, though it appears to not act properly if not fully on screen. Unlike the Lens Object, the Perspective Object uses much less power, but also has that much more limitations. The effects it can create include Perspective, which gives a Mode 7 esqe flattening effect, Panorama, which gives an impressive kind of "barrel" type effect, such as one segment in The Legend of Zelda: The Minish Cap, Sine Wave, an effect comparable to the effect used in water levels in games such as Yoshi's Island, and Custom, which lets the user control how each "line" of the object is distorted. While impressive, these effects are somewhat lacking in customization, for example, the Sine Wave can be used for a heat wave or underwater distortion, however, the center of the Sine Wave appears hardly distorted while the outer areas are highly distorted. Skillful use of this object can produce a striking 3D illusion.
In MMF1.5, the Layer Object vastly expanded the capability to change the Z-order of objects, and to allow various types of sorting. When MMF2 and TGF2 were released, the object was updated to interface with the new layer system, giving the user the ability to show, hide, and move layers during runtime.
Sound and Music
The Direct Media Control object is an extension allowing one to load Modules, Samples, or Streams and play a large number of them simultaneously and across frames, as well as modifying the system's volume settings. A second revision of this extension, DMC2 was also released.
Onu Audio Series
This is actually a group of related objects (engineers), bound together by the Audio Controller. Currently, it includes OGG and Module engineers (though these two formats are already supported by MMF), along with a few visualizer extensions. The extension author is planning to release an engineer SDK to allow others to create support for other formats.
Compatibility: Multimedia Fusion 2
Note: Multimedia Fusion 2 has built in playing of many of the audio types that the above extensions were commonly used for.
An Array is any organised collaboration of data, whether a list, table, or block. Values or strings can be written to an X position in a 1D array, XY positions in a 2D array, and XYZ positions in a 3D array. Arrays are highly useful for storing information such as external level formats, where the grid-like nature of a 2D array can store tile information exactly where it would be located in-game, and a 3D array can additionally store Z-depth data. 1D arrays can be used to store player input, which can then be reloaded as replay data. Arrays, especially 3D arrays, can become quite large very quickly, so it is important to use them with care.
The Data Store (or Data Store 2) object reads and writes numeric values to any type of file.
Global Store X
The Global Store X object functions like a more complex version of the several 1,000 Global Values/Strings type objects used to bypass MMF's limited global value count. It can store integers, Boolean switches, and strings -- however many the user chooses -- in both 0 and 1-based modes. It also has the ability to save some or all the values to either an INI or a raw binary file, letting it be used as both a global value object and a save game object.
INI objects allow rudimentary saving of data. However, the data can easily be changed in a text editor unless encryption is used. The INI object does not include encryption or compression, so those have to be done externally. Windows INI objects are limited to 64KB.
INI++ is a vastly improved version of the original INI object. The working INI is stored in memory as opposed to being modified on-disk, which makes most operations more efficient. This also makes encryption and compression (both built-in to the object) faster, since the file does not need to be decrypted/decompressed to read/write data and encrypted/compressed again afterwards. In addition, it supports convenient features like counting the number of groups and the number of items in a group, something missing from the original. It also supports item default values (what the INI should return if a given item does not exist), and a custom "subgroups" system, among other things. Finally, it supports INIs larger than 64KB.
Compatibility: Multimedia Fusion 2
The SaveGame object is similar to the INI Object, but is more complex to use. It is also more secure than using INI files.
The DLL object allows MMF to access DLL files. DLL files, like extensions, allow the user to do things they normally would not be able to do in MMF. DLLs intended for various purposes are widely available on the internet.
Fastloop helps speed up certain events by running them many times per MMF/TGF loop. Thus, they are useful for static engines, where they are normally used to push objects out of floors and walls without an overlap being seen. Fastloops are also useful when many objects need to be created or positioned at once. The Fastloop extension assigns an ID number for each loop that is run. MMF includes built-in Fastloops, however these use assigned ID strings instead.
Replaces the built-in platform movement, and provides a quick and easy alternative to static engines. The Platform object gives the user many features to adjust, such as acceleration, gravity, one-way platform emulation, and slope detection.
Pop-Up Window Object
Allows games to display a pop-up window after a certain event is triggered. Available for both TGF and MMF, the pop-up window object isn't used often in games, mainly just for RPGs or the occasional sprite lib.
The Lua objects "give" MMF2 a scripting language; Lua scripts can be loaded from external files, from another text object in the application, or from the object itself. An advantage of using Lua is that it makes many complicated sections of code easier to perform than by using MMF itself.
The Lua+ object includes some improvements over the original Lua object, however it is currently incomplete. It does, however, allow direct access to an app's objects, which would normally involve extra coding within MMF.
XLua was programmed by Retriever II, originally as a clone of Lua+ (with a larger set of interface functions and much better stability); eventually, it was expanded to support interception of Windows messages and keyboard input, and other extensions can be compiled with its function library in order to interface directly with its MMF interface.
Compatibility: Multimedia Fusion 2