Looking for just the new fixes/features? Here they are:
- A Special Function that activated a series of other special functions would
not play a media clip if one was associated with it. Fixed.
- Minimizing the layer quick view window would cause an error and could
corrupt the window settings preventing it from displaying correctly until
its registry entry was deleted. Fixed.
- In the map editor, drawing a sprite path that was very far off the edge of
the current display could cause an overflow error. Fixed.
- A collision test between sprites that are more than 32767 pixels apart would
cause an overflow error. Fixed.
- VBScript does not support SavePicture. A feature has been implemented in
GameDev's script hosting object to support this using code like:
HostObj.DoCommand Array("SavePicture", CurrentDisplay.ScreenShot, "C:\A.BMP")
- GameDev now warns the user that the action is not officially supported when
trying to create a tileset with more than 255 tiles in it. Also, the
dialog where categories and solidity are defined was causing a terminal
error when dealing with such a tileset. Now it displays an error message
and fails more gracefully without terminating.
- Changing the name of a layer that had tile animations and paths linked to it
would break all the references between the layer and its animations and
paths. Now the references are maintained when a layer name is changed, and
the tile animation dialog fails more gracefully if a reference to a layer is
broken while it is active (due to a layer being deleted or whatever).
- An error would occur in rare circumstances when multiple sprites reaching
the end of their paths at same time activated functions to delete sprites. (fixed)
- Scripted sprites on background layers caused sprites on foreground layers
to ALL be treated as scripted sprites. (fixed)
- Deleting a tileset would not check to see if the tileset was being referenced
by an inventory item before allowing the delete. (fixed)
- Deleting a tileset and saving the game before navigating to the player
settings dialog could result in inventory tileset references being shifted
to refer to the wrong tileset. (fixed)
- Scripting wizard would error if recording was set to begin on a function
that is triggered before gameplay begins. (fixed)
- Map Editor was slow when drawing a small tile on a large screen without using tile
matching due to a bug in the map editor code. After this was fixed, map editor operates
significantly faster in this situation.
- A sprite set to follow nearest sprite was ignoring solidity when there was no sprite
to follow. Fixed.
- The Switch to Sprite function now properly implements switching to a sprite on another layer.
- Tile interactions that trigger special functions would not handle the Switch Map
function well. Fixed -- it's now possible to have a tile properly trigger a switch map function.
- If "prevent player edits in map editor" option is checked in the options dialog, the map editor
will now prevent the Save Game function from loading a game, which would seriously alter the project.
- Error messages and handling improved. Some errors were being cleared before they were
- Creating an empty tile animation and saving the project would corrupt the project. Fixed.
- GameDev now prevents the creation of duplicate sprite names within a map. Attempting
to create a sprite whose name is already used by other sprite in the same map gives an appropriate
- The scripting wizard distributed with versions 1.3 through 1.4.3 was from version 1.2.
The correct version of the scripting wizard (with many fixes and features) is being distributed
with the 1.4.4 install.
- Improved validation of inventory items. If an inventory display definition would access a
tile outside the bounds of the tileset, an appropriate error message is displayed. (For example,
if you try to create an item that uses tile number 99 and is set to "increase icon index", if your
tileset only contains 100 tiles, 0 to 99, and the max quantity of the item is more than 1, you will get an
error message indicating that there aren't enough tiles for that.)
- GameDev installation no longer overwrites Quartz.dll. When it did this,
DirectX Media (DirectShow) no longer worked if the machine had an older
version of DirectX installed than the machine that created the install
(mine) which has DirectX 9. (If you are experiencing this problem,
installing version 1.4.3 will NOT fix it. You must upgrade DirectX to 9.0
or later, or delete Quartz.dll from your System32 directory, and re-install
your current version of DirectX.)
- The install packager no longer creates scripts that install Quartz.dll
- The install packager has been upgraded to use and require NSIS version 2.0,
which generates installers with a much nicer user interface.
- The player settings dialog had a typo for resolution "1024x786" which has
been fixed to read "1024x768".
- Sprites that did something other than cycle to the first point at the end of
their path were not working properly in some cases. They would activate
the end of path action immediately if the sprite was set to start somewhere
other than its default location. This has been fixed.
- Error checking on the interactions tab of the maps dialog has improved.
- The "Switch to Sprite" function was ignoring the setting "Follow path
relative to sprite's starting point". The setting was only being used for
the create sprite function, but now both functions heed this setting when
creating a new sprite.
- The quick tutorial has been updated to reflect new palette from version
- The "Follow flat floor" type sprite was fixed again to address problems
seen in the Ethereal Peace project.
- When a platform is destroyed, the sprite riding the platform could have
accumulated a lot of vertical velocity from gravity that was never reset,
and would cause the sprite to fall very fast. Normally it is reset when
the sprite steps off the platform, but this did not occur if the platform
was unexpectedly destroyed. Now the vertical velocity of a sprite riding
a platform is maintained at 0 when riding a platform.
- If no tileset was selected in the tilesets dialog, the program would abort
if you tried to click the update button. Now an appropriate error is
- The icon used for GameDev projects is now distinct from the icon
used for GameDev.exe and GDPlay.exe itself. (Restarting windows may
be required, or you can go to Folder Options in windows explorer and
pretend to modify an icon; then it will update all icons.)
- GameDev was designed to run GameDev.vbs (if it exists) from the
GameDev.exe directory when gamedev starts. However, this was only occurring
if the "/e" switch was specified on the command line, so it wasn't a very
useful mechanism for developing GameDev plug-ins. Now it will run even when
no parameters are present on the command line. The only times it doesn't
run is when another script is specified or "/p" is specified on the command
line (to play a project without going into the editor).
- Bug fix: The map editor was hard coded to scroll based on a 640x480
resolution, so in 1024x768, the map would start scrolling long before the
mouse reached the edge of the display. Now it works as you'd expect.
- Bug fix: Pressing alt-tab at the same time a message was appearing would
cause an error (this was possible if, for instance, you forgot to set a
message function to activate only on initial touch, and tried to use alt-tab
to get out).
- Version 1.4.0 altered the behavior of initial touch functions so they
would not activate if the function was at the location where the player
starts out on the map. This has been reverted to the old behavior and
improved to ensure that such a function is ALWAYS activated.
- Bug fix: Sprites designed to "Follow flat floor" would sometimes freeze when
they hit a left wall if they started out in the air. Now they are sure to
keep moving if possible.
- The default color palette in the tileset editor has a much better set of
colors now (same number and layout, just different colors).
- The scripting docutorial had a reference to "line 386" of GoldYoink.vbs, but
the reference was wrong. Fixed to refer to "line 396."
- The help file for GameDev has an entry for GoldYoink.vbs so you can view the
script with line numbers by itself. This link has been modified so that the
script appears in a window of its own, so you can view other topics at the
- Step 1 of the tutorial was referring to old color positions in an old
palette. It has been modified to refer to the newest palette colors.
- Bug Fix: Adding a sprite without specifying the required parameters used to
add a blank sprite definition if a path was selected. Now if you get an
error message when adding a sprite, you can be sure that nothing was
added to the sprite list.
- Radeon video cards have problems with GameDev. Version 1.4.0 made the
problems worse: games with a graphical title screen would be unable to
properly display messages. 1.4.1 fixes that problem. Using catalyst
drivers version 3.4 (or later, hopefully) GameDev 1.4.1 seems to work
- Automatically unload tilesets while switching maps. In version 1.4.0
and earlier, if your project contained more than 50 tilesets, you could
hit the limit when playing through the whole game when the 51st tileset
was loaded because tilesets were never unloaded once they were loaded.
Version 1.4.1 fixes this problem and also minimizes memory usage in this
* Items marked with an asterisk indicate possible backwards compatibility
issues. A game may not play exactly as it did before, but largely, there should
be no real issues with these changes.
Main New Features
New "Loading Screen" functionality allows specification of a 400x250-pixel
bitmap to display with a progress bar while loading the project GDP and map
files. (Empty value behaves as before.)
Display of inventory can now be selective for maps. Each map can display a
specific subset of the available inventory. (By default, all inventory is
displayed, as before.) Note, if the total number of inventory item types
available is greater than 255, any items beyond the 255 limit will
automatically be displayed.
Tile interactions can now interact with quantities of inventory greater than 1
(a single tile can alter an inventory quantity by any number).
Multiple resolutions are now supported. Games can be played in 320x240,
640x480, 800x600 and 1024x768 resolutions. Map Editor will use the same
resolution except for 320x240 mode, which will display the map in the top left
quadrant of a 640x480 display.
Tile interactions can now trigger special functions.
New concept of “trigger points” allow you to create sprites, copy sections of
map or teleport the player relative to the trigger point instead of having to
specify an absolute or player-relative coordinate. The trigger point is set
when the player touches an interaction tile, when a sprite terminates at the
end of a path activating a function, when two sprites collide, and when the
player touches a special function (all actions that can trigger special
functions). When a tile interaction sets the trigger point, it is set to the
tile’s location (in pixels). When a sprite reaches the end of a path and
activates a function, it is set to the last position of the sprite. When two
sprites collide, it is set to the coordinate of sprite A. When the player
touches a special function, it is set to the coordinate of the player. This can
be used, for instance, to create an explosion sprite at the location of two
sprites colliding (even if neither are the player sprite).
There is a new activation parameter for special functions called “Global” that
allows the function to be checked regardless of the player’s position. It acts
as if the function covers the entire layer, but the nice thing is, it won’t be
drawn over the entire layer, blocking your view of other functions when you are
looking at functions. Also, it’s a bit more optimized since it knows the player
is always touching it. This will be handy for creating functions that only
require button presses to activate, like a button to drop a bomb, no matter
where you are.
Save game support has been added as a new special function. The new Save/Load
game function allows you to save a game under a specified name, load a game of
a specified name, delete a game of a specified name, activate another function
if the specified game exists or activate another function if the specified game
does not exist. The specified name is defined as part of the function, so the
available save game “slots” are defined by the game developer, but there are an
unlimited number of slots (determined by how many different names are used).
Saved games are perfect and, when loaded, should restore exactly to the point
where the player left off.
Sprites can now follow paths relative to their starting point. For example, if
you define a path that follows an arc to the right, you can now create that
sprite anywhere and it will follow that arc to the right of its starting point
instead of heading toward the paths absolute position. This could be handy, for
example, to allow the player to throw items no matter where the player is
standing (no scripting required).
Paths can now have pause points in them. Pressing P while creating a path
allows you to enter a number specifying for how many frames the sprite will
become inert after reaching that point. Delay points can also be added and
deleted in the sprites and paths dialog.
Special functions can now be triggered based on any of the buttons configured
in the controller configuration screen instead of just up, down and button 1.
The new buttons available for activation parameters are left, right, button 2,
button 3 and button 4.
It is now possible to remember the current map when switching to another map.
The map is put on a “stack” so that you can return to it later by activating
another “Switch Map” function set to “<Return to old map>”. There can be
up to 5 remembered maps. This is handy for cases where there are multiple ways
to get to a map and you want to return to wherever you came from… particularly
useful for a menuing system (jumping quickly to a map where you can select a
save game or something).
It is now possible to switch to a map without re-initializing the sprites.
Don’t want to forget that the player had killed the big boss monster on this
map? Just un-check the box that restarts the sprites in the switch to map
Media clips can now be interrupted and re-triggered. Before, if a media clip
was triggered and it was already playing, you couldn’t hear anything new, but
now you can check the “Allow interrupt/restart” box to allow such clips to
re-play from the start when this occurs.
There is a new auto-validation setting in the options dialog (turned on by
default) that determines whether a project is automatically validated before
game-play begins. Right now this just confirms that all your sprites have at
least one frame in each available state.
When triggering a function based on button presses, it’s now possible to
require multiple buttons be simultaneously pressed. By checking the “All at
once” box, you can specify that the function will only activate if all the
checked buttons are pressed at once instead of when any of them are pressed
- There are 3 new "Auto delete" settings available in the motion
tab of the sprites and paths dialog. They allow a sprite to be deleted
when it hits a solid (when its velocity is altered because of solid pixels
on the map). There are 3 new variations combining this criteria with
- Pressing a button to trigger a function can now restrict the triggering of
the function to only the initial press instead of repeatedly triggering the
function as long as the button is pressed. (This is a similar idea to
"Initial touch only" but applies to the button press instead of
the player touching the function area.) This is accomplished by checking the
"Initial press only" option in the Activation Paremeters for a
- When specifying which buttons can trigger a function, it is now possible to
exclude key combinations where extra buttons are being pressed. For
instance, if you have a function to shoot left and another to shoot right,
but you don't want to allow the player to be able to shoot left and right
at the same time, then make sure that the activation parameters for the
function that shoots left has the "And nothing else" option
checked. If the function is activated by a button press, then this
option will ensure that only that button is being pressed; if others
are also being pressed, then the function will not activate.
- Tileset graphics may now be up to 128x128 pixels per tile as
opposed to the old limit of 64x64 pixels. When the width or height of
tiles in a tileset exceeds 64, the tileset editor will come up in 800x600
mode instead of 640x480 mode. That means your video card better support
800x600 in the color depth you have selected for the tileset editor if you
want to edit tiles larger than 64x64. A number of tile display windows
throughout GameDev have been enlarged to allow display of the larger tile
size. Perhaps the most notable of these is the support for larger graphics
in the Sprites and Paths dialog.
- New sprite motion types are available in the "Controlled by"
dropdown list on the motion tab in the Sprites and Paths dialog.
- Path vector - Whenever a sprite of this type it created, it
immediately takes on an initial velocity determined by the first
two points in its path. The sprite's direction will be determined
by the direction from the first point on the path to the second
point on the path. The speed will be determined by the sprite's
movement speed setting.
- Follow path random direction - Same as "Follow approximate
path" except the sprite will randomly change direction on
- Follow path random points - Same as "Follow approximate
path" except each time the sprite reaches a point in the path
it will pick the next point at random instead of going to the next
point on the path. The points that it picks from are determined by
the distance between the first and second point on the path. If
the first point is 50 pixels from the second point, the sprite will
only pick a point within 50 pixels of the current point to head
toward next. (Only points from the current path are candidates.)
- Strict path random direction - Same as "Follow path random
direction" except this follows the path exactly instead of
- Strict path random points - Same as "Follow path random
points" except this follows the path exactly instead of
- There are now twice as many colors in the palette in the tileset editor
(4 rows of 30 instead of 2 rows of 30).
Minor Improvements / Behavior Changes
Optimized special function handling. Now you can have any number of special
functions created with the “Add function” button (not positioned within the
map) and they will not be looked at during every frame; only when activated by
another trigger. Only functions within the bounds of the current layer will be
tested for player touching during each frame.
Sprites now terminate when outside the visible map window instead of when they
would be off the entire screen space. Before, a sprite set to be deleted when
“off display” would remain active until it left the boundaries of the physical
screen rather than the map window.*
When using the “repelling” functionality of a sprite collision, you can now
click both “A Repels B” and “B Repels A” and get desired results. However, A
repelling B will take precedence. The new behavior is that, if B is blocked by
solid tiles, it will push back on A, preventing A from pushing it any farther,
and preventing A from walking through B.*
Instructions are displayed on screen while creating a path in the map editor.
The frame rate limit set in the player settings dialog is now applied to the
map editor also.
Special functions and selection rectangles in the map editor are now clipped to
the edges of the map display instead of being allowed to draw in the area
between the edge of the map and the edge of the screen.
The volume slider on the media clip management dialog now adjusts for the fact
that the volumes are logarithmic. You should be able to get a more linear
volume out of this slider now like you do with the standard Windows volume
Quick Tutorial has a new note about using Alt-Tab.
New checkbox in tile import window to snap the import selection rectangle to
The tileset management dialog will now prevent you from removing a tileset from
the project if the tileset is in use by sprite definitions or map layers.
- GameDev.exe and GDPlay.exe will automatically attempt to "register"
(in the windows registry) BMDXCtls.dll and ScrHost.dll on startup. This is
required for proper operation. That means you should now be able to
un-install a game package created with the install packager, and then
run GameDev or another game without errors, if BMDXCtls.dll and ScrHost.dll
are in the same directory as the EXE.
- There is now a way to hide the splash screen on start up if you really want
to do that. Contact me for more information.
- MSComCtl.ocx is now delivered as part of a self-installing game package
because it is required by the progress bar for the loading screen in
case the project uses a loading screen.
- You can now use the shift-key when selecting tiles (in the sprites and paths
dialog or any of the many other dialogs that have a tile selection window).
This allows you to select a range of tiles with a single click. When you
shift-click a tile, that tile will be selected along with all the tiles to
the next nearest selected tile.
- Selecting the "Activate series of special functions" effect would
sometimes display an invalid function in the activation sequence, if the
function used to be a different type. Now it initializes to blank instead.
- When clicking on a special function whose effect has not been defined,
GameDev used to leave the existing effect listed, but now it clears the
selection indicating no effect has been selected for the current function.
Unhandled (terminal) error could occur if tileset bitmap file was not available
when attempting to edit categories on that tileset. Now a proper error is
Errors could occur if a sprite collision triggered switching to a new map. Now
these potential errors are avoided, allowing sprite collisions to switch maps
Map file loading was incorrect, but did not seem to cause errors for normal
projects. It did, however, result in an infinite loop when loading a corrupted
project in some cases. (ie. A project saved by an old version of GameDev and
manually edited to have a newer version number or vice versa). This has been
If a sprite was set to be automatically deleted when it was off the map or
display and also set to be deleted when it was motionless, there would
occasionally be an error: if the sprite was the last sprite in the array, the
game would terminate with an error message, otherwise additional sprites might
be improperly deleted. This has been fixed.
Clicking the button to update a map in the maps dialog now validates the map
view parameters before updating the map. Before, this validation was only being
done on the creation of a new map.
Exiting the game while a video clip was playing would cause errors as GameDev
attempted to “fade out” the video. Now when you quit a game, any video clips
that are playing will stop abruptly to avoid this error.
Pressing a button to cancel the playback of a modal media clip was checking the
wrong flag (it was checking of the clip was suspending other clips instead of
if it was modal). Now you can properly cancel modal media clips with a button
Inventory quantities exceeding 32767 could be drawn incorrectly or cause an
error. This has been fixed.
Special functions that displayed a message were improperly sizing the message
frame when the message contained hidden text (text inserted by the message
wizard to format the message). This has been fixed.
If there is an error storing the player settings after clicking OK on the
Player Settings dialog, it will now stay open instead of closing.
Left/right sprites with gravity would sometimes jump for no reason immediately
after landing due to a glitch in the sprite’s ReactToSolid function. This has
The flag to reset a sprite’s current frame when it stops moving was operating
incorrectly when the animation speed was not correlated with the movement
speed. This has been fixed.*
Some bugs in the sprites and paths dialog have been fixed including one that
causes a sprite to be incompletely loaded when it contains more states that the
previously loaded sprite.
Tile import functionality would not import a complete tile unless it was
entirely visible in the import selection window. Now it will import properly
even if the tile is partially scrolled off the window.
Tile import window now reports the correct coordinates in the title bar (they
were incorrect when the window was scrolled).
The tileset re-slicer would not import the proper number of columns or rows for
certain bitmap widths and heights. The math rounding problem has been fixed.
Attempting to edit a tileset whose bitmap file could not be found would cause a
terminal error. Now the proper “nice” error message is displayed instead.
Attempting to save a tileset that was already part of the project but whose
image file could not be found used to cause a terminal error. This has been
replaced with a nicer non-terminal error.
Attempting to open (double-click) a tileset whose image file could not be found
used to cause a terminal error. This has been replaced with a nicer
- Creating a new map would not properly store the background color for the
new map until you used the update button. This has been fixed.
- In the player settings and inventory dialog, switching the tileset for an
inventory item or switching from an inventory item using one tileset to
an inventory item using another tileset or no tileset was not showing up
properly. This has been fixed.
- After initially entering the map editor, if you tried to copy a block of tiles,
and the end drag point is above or to the left of the starting point, an error
would occur. This has been fixed (the copy is silently cancelled).
- A left/right type sprite with separate accelerating states and drifting states
would sometimes appear as accelerating when it was drifting.
- The tileset window in the sprites and path dialog would "remember"
an old tileset after loading a new project when it should have been cleared
- Creating a new tile animation was properly preventing a duplicate name, but
it was still possible to rename an existing animation to a name that was
already in use. This has been fixed.
- Tile matching definitions would not prevent duplicate names. This resulted in
the inability to access a definition if it had the same name as another, but
wasn't the first one. Now GameDev prevents duplicate tile matching
Effects on Scripting
* Items marked with an asterisk indicate possible backwards compatibility
issues. A game may not play exactly as it did before, but largely, there should
be no real issues with these changes.
NewInteraction method added to Engine object (global method) to create new
NewMatchDef method added to Engine object.
NewPlayer method added to Engine object.
New values "frmLoadScreen" and "frmMapInventory" added as valid inputs to
New values "Interaction" and "MatchDef" added as valid inputs to NewGameDevObj
Map object has new methods SerializeRuntime and DeserializeRuntime to store and
load runtime-only information like sprite instances and positions.
Sprite definitions are now case-sensitive when you refer to them by name using
the SpriteDefs property of the map class.*
New SpriteDefExists property on a map object indicates if a sprite definition
exists by the specified name on that map.
Media clip object now has a “StartClip” function that properly handles the
“allow interrupt/restart” flag properly. Use this instead of the “Play” method
for most cases.
New InsertPoint method on a path allows insertion of a path point anywhere
along a path without having to recreate the path from the beginning. (Delay
points have negative X corresponding to delay time.)
New bIgnoreValidate property on Player object allows script to turn off
automatic validation if they know the project looks invalid, but probably is
valid (GoldYoink version 1.1 and later uses this).
New playback resolution properties are exposed on the Player object.
“PlaybackResolution” can be any value from the Resolution Enum (1=320x240,
2=640x480, 3=800x600, 4=1024x768). New read-only properties
“VerticalResolution” and “HorizontalResolution” will return the respective
values based on the Resolution setting.
SerializeRuntime methods exist on Map and Player objects to serialize the data
that is stored for a saved game. Only the data not saved by standard save
methods are serialized by these functions.
New method “SaveRuntime” on the project object effectively saves the game in
the specified slot name. “LoadRuntime” loads a specified save-game from a slot.
“DeleteSave” deletes it.
New “Validate” function on the project returns a string containing any
validation errors that may exist.
New “SetLoadingStatus” method on project object manipulates the loading screen
(I see no real use for this from script).
New methods “PushLocation” and “PopLocation” on the player object allow you to
remember and return to a map (up to 5).
New Method “PrepareMapInventory” is called before playing on a map to prepare
the cached array of inventory items that will be displayed on this map. (If you
switch maps manually, you may have to call this yourself.)
The following new Enum values are available to use with the Flags property of a
SpecialFunction object: INTFL_ALLBUTTONS (mask returns only button-related
flags), INTFL_REMEMBER_SPRITES (0=“Restart Sprites”), INTFL_REMEMBER_MAP. Flags
for the Load/Save Game function: INTFL_LOADGAME, INTFL_CHECK_EXIST,
INTFL_IF_NOT_EXIST, INTFL_DELETE_GAME (default is save game when all flags are
The new Enum value INTFL_ACTIVATE_FUNCTION can be added to the Flags property
of an Interaction object to indicate that its media clip property is actually a
special function name. (New property “ActivateFunction” returns the same string
as “Media” property.)
The following new Enum values are available for use with the SpecialFunction
object’s new Flags2 property: INTFL2_ALLATONCE, INTFL2_ACTONBUTTON2,
INTFL2_ACTONBUTTON3, INTFL2_ACTONBUTTON4, INTFL2_ACTONLEFT, INTFL2_ACTONRIGHT,
INTFL2_ALLBUTTONS (mask returns only button-related flags), INTFL2_GLOBAL
SaveGameFuncName property on SpecialFunction object returns the name of the
special function that can be activated by a “Save/Load game” function. (It is
stored in the same location where a sprite name is stored for other function
New enum value FLAG_RELATIVE_PATH available for use with the SpriteDef’s Flags
New WaitCounter property on sprite object returns a negative value
corresponding to the X coordinate of a delay point in a path. (The x coordinate
is a negative number indicating how many frames to wait). When WaitCounter
reaches X, sprite stops waiting.
Sprites have new PathOffsetX and PathOffsetY properties indicating the offset
of their starting point from the path starting point (if the relative path flag
New SetAll method in a TileGroup object allows you to set all bits of a tile
group to true (add all tiles to a group or, in the case of map inventory, add
all items to the map’s inventory display).
- New TranslateCtlActions method in the Player object will convert action flags
as represented by CtlActions and the eActionBits enum into Special Function
flags and the INTERACTION_FLAGS and INTERACTION_FLAGS2 enum. (Note, the flags
representing buttons in the INTERACTION_FLAGS enum do not overlap the flags
representing buttons in the INTERACTION_FLAGS2 enum, so they can be combined
into a single bit map without losing any informaton.)
- There is a new bHitSolid property on every sprite object that gets set to
True during the call to ReactToSolid if the sprite hits a solid (used for
the new auto-delete options for hitting solids).
- There is a new NextRandomPoint function on every sprite object that returns
the index of a point that the sprite can head toward next if it is one of
the types that follows paths randomly.
- The tileset editor class ("TileEdit") has new properties to
describe the screen resolution being used: EditResolution,
HorizontalResolution and VerticalResolution.
- Prevent deletion of tile categories and solidity definitions that
are in use. (Instead of allowing it and having serious errors
- Improved error handling in a few places to prevent terminal errors
- Layer Quick View would have a terminal error after playing the map
if it was left active. This has been fixed.
- Attempting to move a layer down in the layer sequence without selecting
a layer had a terminal error, which has been fixed.
- Moving a layer in the layer sequence now keeps the layer selected as
it moves through the list.
- A function that was set to activate on startup and remove after use
would cause an error on startup after being activated. This has
- After editing a tileset (without saving it), playing the game and then
editing the map could lose the changes to the tileset. This is fixed
- Jump height was sometimes editable even when "Up requires
not checked. Now Jump height follows movement speed when this is not
checked because it affects vertical movement speed of any sort.
- The fixes for the scripting wizard in version 1.3.0 were not compiled
into the released binary files, but this has now been done for
- Attempting to play a project containing media clips without saving it
at all would result in an error. This has been fixed.
- Fixed support for large maps (again?) so it's possible to have map
that's 32,767 tiles wide or high instead of just 32,767
pixels wide or high.
- Introduction of GDPlay.exe which is a runtime-only version of
GameDev.exe. Use GDPlay.exe with the install packager to create
an install for your game that doesn't also install obvious support
for editing the game. It also makes for significantly smaller
- New special function type to alter inventory implemented.
- Functions are now exposed to script that convert the project to
and from XML (possibly handy for saved game support).
- Browse button added to the Create Shorcut dialog to browse for
- Prevent duplicate naming of tile Animation Definitions (AnimDefs).
- Fixed error when attempting to shoot in end level of sample game.
- Fixed the "Play Clip" button on the Media Clips dialog to
automatically reset when a clip finishes.
- New flags added on sprite dialog (Frames tab) to allow correlation
between animation speed and movement speed to be optional.
- New flag on sprite dialog (Frames tab) to allow reset to first frame
when sprite stops moving.
- Sprite dialog Path selection improved: Selecting a new path will not
clear the current template selection if it can be retained now.
- Selecting New or Open from the main file menu now closes all open
- New button in Maps dialog (Special Functions tab) to allow special
functions to be renamed.
- Selecting "Follow Nearest Sprite" now allows you to specify which
classes of sprite you are interesting in following.
- Scripting wizard would generate incorrect code for an 8-state sprite
that had separate drifting and accelerating states. This has been
- Updating a media clip and the reference to the map's background music
had a problem which has been fixed.
- Jump velocity is a new separate setting on the Motion tab of the
Sprite dialog instead of using the movement speed to determine the
- When a map or layer is renamed in the maps dialog, it is now
immediately reflected in the map or layer listbox.
- New frame rate limiting functionality added for more consistent
performance accross a range of system performance. See Player Settings.
- New field in Movement tab of Sprite dialog that allows you to
set when a sprite will be automatically deleted (when off screen,
- New field in Movement tab of sprite dialog to allow specification
of what happens when a path-following sprite reaches the end of its
path (jump to start, cycle to start, delete, activate functions).
- Error occurred when selecting blank area after tile number 256 in
map editor. This has been fixed.
- New event OnFrameStart added which executes even when the game is
inactive (even when OnAfterMoveSprites etc is not executing).
- Now it's possible to disable the script timeout by setting
HostObj.ScriptTimeOutSeconds = 0.
- New checkbox in Special Function Activation Parameters tab that
allows any special function to raise an event for script.
- New field in Player Settings dialog to allow specification of a
default play script that will be executed with the project if started
with "/p" on the command line and no other script is
- Re-select the current tileset after importing a tile into it.
- New field in Maps dialog to specify the background for a map -- the
color to draw around the edge of the layers and behind the inventory
when the specified map is active.
- New special function type to activate a series of other special
- New button on Special Function tab to create a "dummy"
special function off the edge of the map. This allows quick creation
of functions that are activated only by other functions or
collisions and do not need a specific location.
- Extra large sprites are now handled better in the Sprites dialog
rather than displaying an error. Although I don't officially claim
they're fully supported, they're more likely to work now if you
really want to use them.
- TilePic tool had been integrated into GameDev tools menu -- allows
re-slicing of tilesets, dividing up into individual files or combining
files into single bitmap.
- Install packager incorporated into GameDev tools menu.
- Using Ctrl key it's now possible to select multiple sprite frames
and drag them into the state preview all at once in the Sprites
- "Display Message" Special Function enhanced with the
abililties to change font, color, background picture, size.
- New Message Wizard assists in creating special functions to display
- New "Quick View" button in layers tab of Map dialog allows
quick viewing of individual layers in a window, as well as ability to
zoom in and out and see sprite and path names.
- New option when switching sprites (Special Function) to retain
old velocity and state, etc. when applicable.
- Tileset editor would not keep the "lclip" picture clean
when repeating copy command. Now clip is cleaned up before copy
- New "A Repels B" functionality in sprite collision dialog
provides much better sprite "repellance" that old A & B swap
velocities. Sprites can be more solid.
- Using the "Remove function after use" option now works OK
on functions that switch to another map.
- Switching to another sprite and then back to the original player
sprite now functions better than before.
- Improved general speed/efficiency.
- All documentation reviewed and updated.
- The collision definition dialog
now allows you to add inventory conditions to a collision
test. It also allows you to add sound effects (media
clip) when a collision test is activated.
- Player map interactions now
include support for sound effects.
- Special functions can now be
activated once before gameplay begins -- useful for
things like title screens.
- The "Display a message" special function now
allows you to display a picture instead of just text.
- A new special function exists to delete sprites.
- The Create Sprite special function allows you to limit
the number of sprites.
- Special functions from all layers now appear in the map
editor dialog whereas previous versions restricted this
list to functions on the player sprite's layer because
only the player sprite can trigger a special function.
Now all are displayed so you can at least delete them, if
not use them as a function activated by game startup.
- Create shortcut files to play games with the new Make Shortcut dialog.
- There's a new Quick Start Tutorial in the Help menu.
- There's a new Options dialog
(see the View menu) to allow you to:
- Disable unwanted edits by the player sprite in
the map editor
- Toggle a warning message displayed before playing
the game from the editor environment
- Toggle the storing of the project in memory
before play so that it can be restored after play
- Specify a default color depth for map and
- Great speed improvements in the number of sprites you can
have on the map (3 to 4 times as many).
- Built in support for exporting and importing the project
and maps as an XML file.
- Memory-resident backup of the project (as XML string)
during the play command allows restoring the state of the
project after play.
- Toolbar on the main project window.
- Miscellaneous bug fixes.