iDT Module Development: Getting Started
Thanks for showing interest in developing modules for the Imagination Works Desktop! I hope that the following information will get you going quickly and without any issues.

This and other tutorial articles are meant to ease you into understanding how iDT works and how to use MMF to develop your own modules. There is a basic assumption that you already have some general knowledge of how MMF works.

To begin, you will need a copy of Multimedia Fusion 1.5 Build 119. Previous builds may work, but extensive testing has not been attempted, use previous versions at your own risk. Also, with the advent of Multimedia Fusion 2, it is likely *.ccn files produced with MMF 2 will not be compatibile with iDT. I hope to release an MMF 2 version of iDT as time permits, providing that existing modules produced with MMF 1.5 remain compatible.

Required/Recommended Events

iDT modules require very few events to function properly within iDT. There are however three recommended events that you insure are included in your module.
  • In the first frame only
    • Every module has an ID number which iDT uses to refer to while running. It is also important for your module to know it's ID number
    • Build a counter and assign it as a global object (any global value will do)
    • Enter a "Start of Frame" condition, then add an action that sets your counter to Global Value B (which is inherited from iDT)
  • In all frames
    • Create a counter that can be used as the basis for whether an iDT user has focused on your module. In other words, whenever this counter=1 then the user has focused on your application.
    • Enter a condition that compares whether Global Value A is equal to your module's "ID" counter. The action should set your "Focus" counter to 1.
    • Enter a condition that compares whether Global Value A is NOT equal to your module's "ID" counter. The action should set your "Focus" counter to 0.
    • The purpose of these two events, is to insure that when multiple modules are being run, your application will only operate while the iDT user has focused on your module. When your module is inactive is however up to you, these events are simply guidelines. Think of the "Focus" counter as a means of defining a "pause" feature.

General Guidelines

There are also a few other guidelines to keep in mind while you are building your module
  • Try to keep your modules simple and small. The purpose of iDT is not running full-screen, memory intensive games. You can build those stand-alone as they simply won't run as well within iDT
  • Try to avoid using specialized MMF extensions. *.ccn files do not inherit all the extensions that you may have built into them, which basically means that if the parent program (iDT) doesn't refer to the extension you are using, it will not work.
    • It's important to note that subsequent updates will address specific extensions which were not part of the original iDT release. If you require an extension to be supported by iDT, e-mail the Imagination Works with a copy of the extension. There is no garauntee an update will be released, but a reply e-mail should be sent giving you an idea of what will occur
  • Size matters, and in this case, smaller is usually better, both in file and screen size. Larger files will download more slowly, and larger screen sizes (as well as heavier graphic usage) result in system slowdowns
  • It is recommended you do not include the file menu bar, or allow headings in your overall module properties

Compiling and the *.idtmod File

One thing that sets module files apart from stand-alone programs is rather than compiling the program into an executable file (*.exe) as you normally would, you must instead select "Build">"Internet Application" when compiling. MMF will then generate a *.ccn file which is ultimately your module file.

In order to function within iDT, there is one more critical file you require before iDT will even give your module a second thought, and that is an *.idtmod file. You can download the template file here. This file basically gives iDT your module's information and tells iDT how to run your module. The file (which can be read in Notepad) is structured as follows)
  • KEY="104nb64js9f6vg74632k"
    • A series of characters unique to your module to reduce the potential that another module with the same name overlaps your own. In this case, iDT uses the key to define individual modules, not titles. The key may be any length but should be as random as difficult to duplicate as possible
  • TITLE="String"
    • The module title which will appear throughout iDT and also in iDT Update
  • CREDITS="string"
    • The author or authoring company's name
  • VERSION="real number"
    • A real value (allowing decimal places). It is used by iDT Update to compare for newer versions of the same module. The program will not function properly if you enter a string here
  • CATAGORY="string"
    • This string defines which catagory iDT will place this module under. Depth may be added by entering "string1/stringX where string1 = root catagory and stringX represents a sub-catagory, you may enter more than one sub-catagory as well
  • iDTVERSION="real number"
    • The version of iDT that this module was tested with, preferably the most recent release of iDT. iDT has an internal list of compatibility which it will compare against this value to determine whether that version of iDT is compatible with your module
  • SHORTDESCRIPTION="string"
    • A short description of your module, keep it short as possible as it appears only in mouse rollovers
  • FOOTPRINTX="integer"
    • The X size in pixels that your module will occupy within iDT
  • FOOTPRINTY="integer"
    • The Y size in pixels that your module will occupy within iDT
  • PREVIMGX="integer"
    • The X size in pixels that screenshots of your module will appear when a user chooses to enlarge them
  • PREVIMGY="integer"
    • The Y size in pixels that screenshots of your module will appear when a user chooses to enlarge them
  • HELPX="integer"
    • The X size in pixels that the help file of your module will appear
  • HELPY="integer"
    • The Y size in pixels that the help file of your module will appear
  • ONEINSTANCE="true/false"
    • Instructs iDT whether only one instance of this module should run or not
  • MODE="1,2"
    • Some modules require windows focus to function properly. If you use any windows data entry boxes or other similar extensions, it is recommended you change this value to 2
  • CCNFILE="integer"
    • The number representing the file (listed later in the module file) defined as the module's *.ccn file
  • HELPFILE="integer"
    • The number representing the file (listed later in the module file) defined as the module's help file. "0" indicates that there is no help file. Also note that the help file can be a large variety of file types, HTML and real-text files are recommended
  • IMGFILE="integer(,integer)"
    • The number(s) that represent the files defined as the module's screenshot files. Please note that multiple values can be entered, seperate the numbers with a comma (no space). "0" indicates that there are no image files
  • ASSOCIATEDFILES
    • Listed below this heading are all files assosiated with this module that must be present when the module is loaded by iDT
  • 1,filename.ccn,1.0
    • Is an example of a file listed below the ASSOCIATEDFILES heading where "1" is the file ID, "filename.ccn" is the filename and "1.0" represents that specific file's version (to be used when looking for updates using iDT Update
  • ENDOFFILES
    • Defines where the list of associated files within this module ends

Putting it all together

Once you have built your *.idtmod file, you must place this file, as well as your module's *.ccn file in the "idt/modules" directory in order for iDT to recognize, and run your module. Please note that all other associated files you have entered into the module's *.idtmod file also must be present in this same directory.

It's time to try it out! Run iDT and see what happens when you try to run your module. Conduct a few tests by running the module in as many varying conditions (such as multiple modules at a time).
Back