Welcome to the gateway of seamless transition from 001 Game Creator to the ever-expanding world of Open Dev Kit! In this comprehensive cheat sheet, we’ll draw parallels of ODK’s features to their counterparts in 001 Game Creator. Whether you’re familiar with switches, sprites, or actor templates in 001, this guide will help you navigate ODK’s new development environment. Keep reading below to realize the possibilities that ODK has to offer, building upon the foundation you’ve laid in 001 Game Creator thus far.
Script Events
Functions
Events are now properly called Functions, and can be found in the Script Editor, similar to 001.
Custom Events
Functions
Custom events are now properly called Functions, which can be setup on a per-project basis and are found in the Script Editor, similar to 001.
Game Templates
- Click on the Functions Editor in the toolbar.
- Click the “Create Function” toolbar button.
Advanced Method
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Function” toolbar button.
Triggers
Events
Triggers are now properly called Events, and can be found in various places such as in instances of Scenes and Windows (objects and controls) or in global objects such as Timers.
Controls/Input-Sets
Keybinds
Similar to 001, controls and input-sets are managed in the Keybinds Editor (Game Templates) or the Resources Editor (Advanced). Each Keybinds resource can be enabled or disabled, similar to enabling/disabling Input-Sets. The process is now much more streamlined, as every key is presented right in front of you.
Game Templates
- Click on the Keybinds Editor icon in the toolbar.
- Click the “Create Keybinds” toolbar button to create a new set of keybinds or double-click an existing one to edit it.
Advanced Method
- Click on the Resources Editor icon in the toolbar.
- Click the “Create Resource” toolbar button.
- Double-click “Keybinds” under the “Game” category.
Global Variables
Variables
Global Variables in ODK, created in the Globals/API Editor, let you define and manage project-wide data types, much like the Variables in 001.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Variable” toolbar button.
Set the variable’s Type according to what data you need it to store. For example, “Integer” for numbers without decimals, “Float” for numbers with a decimal part, “String” for alphanumeric characters such as numbers and letters together (text), etc…
Switches
Variable of Type “bool”
Switches in 001 are akin to boolean variables in ODK, managed in the Globals/API Editor and offering the same logical functionality.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Variable” toolbar button.
- Set the Type to “bool” for a boolean variable similar to switches.
Collections
Variable with “Array” Flag
In ODK, Collections are replicated by using Variables with the “Array” Flag, a feature accessible in the Globals/API Editor, mirroring the functionality in 001.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Variable” toolbar button.
- Check the “Array” Flag box to replicate a collection like in 001.
Tables
Class with “Array” Flag Variable + Variable
You can replicate the behavior of 001 Tables in ODK, by having multiple classes with nested arrays (serving as dimensions) with each pointing to their previous one, and then use a variable (unnested) which is going to be representing the table itself.
Note that it is also possible have as many nested arrays of classes as you want, opening possibilities for a few cool things to do.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Class” toolbar button. This should be repeated as many times as the desired number of table dimensions (e.g. “Table_X”, “Table_Y”, “Table_Z”, all these separate classes are required for a 3D table).
- Click the “Create Variable” toolbar button.
- Set the Type of the first dimension (nested variable of the first class) to whatever data you need it to store and make sure to check the “Array” Flag box.
- Then for every other class’s variable set its Type to be pointing to the previous class/dimensions. (for example, “Table_Z” should have it’s Type set to “App.Table_Y”). And make sure to check the “Array” Flag box for all these as well.
- Click the “Create Variable” toolbar button while making sure none of the classes are selected, as this variable shouldn’t belong to any class whatsoever.
- Set its Type to the name of table’s last dimension/class (in the case of a 3D table, it should be “App.Table_Z”).
To get a better understanding of replicating tables in Open Dev Kit, please take a look at a more real-world example below, specifically using examples of 1D, 2D, and 3D arrays:
Collection/1D Table:
This involves a variable of a class that has any number of members (properties or attributes). For example:
Object.Color = "Red"
Object.Variety = "Fox"
Alternatively, you can use an array of strings:
Collection_X(5) = "Value"
2D Table
This involves an array of a class that has any number of members. For example:
Table2D(5).Color = "Red"
Table2D(5).Variety = "Fox"
Alternatively, you can have an array of a class that itself has an array of strings:
Table2D_X(5).Table2D_Y(3) = "Value"
3D Table
This involves an array of “ClassA” that has an array member of another “ClassB” that has any number of members. For example:
Table3D(5).Location(3).Color = "Red"
Table3D(5).Location(3).Variety = "Fox"
Alternatively, you can have an array of “ClassA” that has an array member of another “ClassB” that itself has an array of strings:
Table3D_X(5).Table3D_Y(3).Table3D_Z(7) = "Value"
While we do realize that this is indeed a somewhat roundabout way of replicating the behavior of tables in Open Dev Kit, we’d like to inform you that there will eventually be multi-dimensional arrays with support for unlimited dimensions (whereas 001 only had up to 3).
Sprites/Tile-Sets
Resources or Tiles/Sprites Editor
Manage your sprites and tile-sets easily in the Tiles/Sprites Editor (easily accessible from the toolbar) or take a more advanced approach using the Resources Editor.
Game Templates
- Click on the Tiles/Sprites Editor icon in the toolbar.
- Click the “Create Sprite” toolbar button.
Advanced Method
- Click on the Resources icon in the toolbar.
- Click the “Create Resource” toolbar button.
- Double-click “Sprite” under the “Game” category.
Tiles
Tile-Patches
When you pick a tile from the tiles tab in the scene editor and place it on the map, a “Tilepatch” is spawned. A “Tilepatch” is essentially a collection of individual tiles which are grouped together.
Actors/Doors/Pickups/Fields
Actors or Characters
Scene objects (Actors, Lights, Cameras, Views) and window controls (Textbox, Label, Button) are now called instances. “Actors” are generic game scene objects, while “Characters” contain extended RPG-specific scripting.
While having a Scene loaded, with double-clicking either an “Actor” or “Character” to place it.
Custom Actor Properties
Class of Type “Actor” + Property
In order to add new properties to the base actor class, you must create a new class and have it inherit the properties of the actor class. Then you can add your own custom properties to the new class.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Class” toolbar button.
- Set the Base Type to “Actor”.
- Click the “Create Variable/Function/etc.” to add new properties to your actor.
Custom Character/Item Properties
Class of Type “Character” or “Item” + Property
In the RPG template, you can modify the existing “Character” or “Item” classes directly to add new properties or functionality.
- Click on the Globals / API Editor in the toolbar.
- Select the “Character” or “Item” class.
- Click the “Create Variable/Function/etc.” to add new properties to your character/item.
Map/Interface Properties
Map/UI Class + Property
Each scene resource has a corresponding class. You can add properties, functions, etc. directly to the scene by modifying that class. Please note you must have “Intermediate” difficulty mode enabled in user options to see scene classes.
- Click on the Globals / API Editor in the toolbar.
- Expand the “Maps/UI” folder (Or the location of the Scene resources of the project)
- Select a Map/UI class object (such as “_Res_Forest” or “_Res_HUD”).
- Click the “Create Variable/Function/etc.” to add new properties to your map/interface.
Actor Templates
Class of Type “Actor”
In order to create the equivalent of an actor template, you must create a new class and have it inherit the properties of an existing class. Then you can add your own custom properties to the new class.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Class” toolbar button.
- Set the Base Type to “Actor”.
NOTE: If you wish to have the RPG-specific scripting for your template then use “Character” or “Item” as Base Type instead.
Party
Party Array Global Variable of Type “Character”
Parties are a pre-defined global variable array of type “Character” that are used by the default RPG templates scripting.
- Click on the Party icon in the toolbar. (Game Templates)
- Click on the Globals / API Editor in the toolbar. (Advanced Method)
- Select the “gParty” entry.
- Change Party size by clicking “+” or “-” beside Default Object.
Statistics
Statistics Class
In the RPG template, statistics have been set up for you via the “Stat” and “Statistics” classes. You can easily create or remove any of the existing statistics to suit your projects needs.
Game Templates
- Click on the Statistics Editor in the toolbar.
- Click the “Create App.Stat” toolbar button.
Advanced Method
- Click on the Globals / API Editor in the toolbar.
- Select the “Statistics” class.
- Click the “Create Variable” toolbar button.
- Set the Type to “Stat”.
List Parameter Type
Enumeration + Constants
In order to create list parameters for custom functions or editor properties, you can create them directly within the API editor and reuse them throughout your project.
- Click on the Globals / API Editor in the toolbar.
- Click the “Create Enumeration” toolbar button.
- With the enumeration selected, click the “Create Enumeration/Flag Constant” toolbar button.
Networking Events
Functions with Networking Flags
Networking functions allow a server to run the client, or vice-versa. Please note you must have “Advanced” difficulty mode enabled in user options to see networking flags.
- Click on the Globals / API Editor in the toolbar.
- Select the function you wish to turn into a networking event and check the desired Network Flags