This page documents updates between various updates to SGDK 2.0. If you're interested in the differences between the 1.x versions and version 2.0, see the What's New section of the Introduction.
This section describes updates between versions 2.1.5 and 2.1.6.
- Upgrade to Visual C# 2010 Express.
- Upgrade IDE to .NET 4.0 (projects should still work on 2.0).
- Updates for Windows 7 compatibility
- Compile temp assembly is UserAppDataPath instead of %temp%.
- Register file association to current user instead of system.
- Turn off Windows 7 Aero when entering map editor to eliminate flickering when scrolling map editor.
- Eliminate unused System.Design.dll reference from generated game compiles.
- Implement support for ClickOnce deployment.
- Upgrade to latest SandCastle Help File Builder. Use MAML content to define help files instead of HTML.
- Limit Frame Rate to 30 FPS in sample project.
- Change ReturnToPreviousMap function to re-load map if unload = true and no previous map exists instead of ignoring the request.
- Change GetNearestSpriteIndex to ignore the current sprite.
- Correct distance calculation in PushTowardSprite.
- Change SetInputsTowardCategory to turn off all directional inputs if no sprite in target category exists.
This section describes updates between versions 2.1.4 and 2.1.5.
- Fix sprite selector in map editor so other controls don't overlap it making some sprites unselectable.
- Correct tile drawing in map editor so it doesn't exhibit glitch after drawing plan paths.
- Prevent error when closing map editor when plan selection list is active.
This section describes updates between versions 2.1.3 and 2.1.4.
- Fix an error that prevented multiple displays from being open simultaneously.
- Implement the ability to sort sprites in the map editor.
- Improve error handling when attempting to run the project if it is already running.
- Allow a layer to be created with a null tileset to represent the designer background layer (allow user-created layer to refer to no tileset).
- Stop riding on a platform if it is deactivated while riding it.
- Prevent debug-mode errors when a platform is deactivated and a sprite is riding on it.
- Change CheckNextCoordinate to proceed to the next target if the distance from the current target exactly matches the target distance.
- Prevent the user from creating a layer with zero tiles.
- Implement ExecuteRulesInternal so that ExecuteRules can be overridden in an intermediate class.
- Implement BaseClass property for plans and sprites to allow inheriting from customized code instead of only PlanBase and SpriteBase.
- Make ProcessSprites overridable.
- Implement IsSpriteWithinPolygon function for plans.
- When resetting source code to a template that imports decapsulated source code files, be sure to import the referenced code because the project into which the code is being imported will not know how to find the template's decapsulated files.
- Add OpenTK.dll.config to source control.
- If a plan contains a SpriteBase-derived member, show a drop-down list of the appropriate sprites in the map editor when this plan is selected.
- Prevent invalid sprite and plan names from being specified in the map editor.
- Change most SpriteBase and PlanBase members to be protected instead of private.
- Change most SpriteBase and PlanBase members to be virtual so they can be overridden by an intermediate base class.
- Change SpriteBase.TouchTiles to return a strongly typed collection of results.
This section describes updates between versions 2.1.2 and 2.1.3.
- Upgrade to OpenTK 1.0.0 beta 2.
- Fix dropper tool to also function on row 0 and column 0 of graphic editor pane.
- Eliminate a couple compiler warnings on generated projects.
- Fix TestCollisionRect so that it can be used from the Plan and Sprite rule editors.
- Implement default designer-only background layer in map editor. When no opaque layer exists, the map editor will still draw nicely with this design-mode-only layer active.
- Automatically default new layers to next available Z-Index.
- Change Reflect.dll to build with .NET 2.0.
- Add SpriteRecorder code object to library for recording scripted sprite movements.
- Implement PlayMusic function that cross-fades background music.
- Implement FadeMusic function to fade out background music.
- Specify REUSE instead of FREE when playing FMOD sound to try to avoid sound scrambling occurring in some project(s).
- Improve FMOD code reuse - fmodbase.cs and fmod.cs are now delivered only in the Sound directory of the library, and all delivered templates refer to these files.
- Automatically sort main tree view.
- Correct bug that updated all children of a tile category in the tree view when the parent name was changed.
- Avoid error when pressing delete key on frameset editor when nothing has been selected.
This section describes updates between versions 2.1 and 2.1.2.
- Upgrade to OpenTK 0.9.8.
- Check if graphic sheet (texture) is larger than supported by the OpenGL driver in order to provide a better error message if it's too big.
- Add TileCategoryTouched function to provide simpler ability to check when a sprite touches a tile in a category.
- Use frame's color modulation when drawing the frame with DrawCounterAsTile.
- Correct handling of TouchTiles for non-square sprites.
- Correct TileAddSprite to register old position as initial position.
- Create TileChangeTouched function to change one tile at a time.
- Deliver standard functions for pushing and repelling sprites.
- Improve error handling when converting rules to source code.
- Remove dllmap from configuration file because Microsoft .NET cannot handle it. Plan to use a hard link or symbolic link to new filename libfmodex.so instead (linked to versioned libfmodex-v.so).
- Improve some sprite rule function implementations.
- Implement limited support for generating Linux projects.
- Prevent errors when null rule parameters are encountered while compiling.
- Improve drawing of gradient rings (2-D torus) in graphics editor.
- Upgrade FMOD to stable version 4.20.06.
This section describes updates between versions 2.0 and 2.1.
- Upgrade to .NET 2.0: SGDK2 and the projects it generates now rely on .NET Framework version 2.0 and take advantage of new features added in this version. The SGDK2 Project itself requires Visual C# 2008 or .NET 3.0 to compile, but can run on any system that has .NET Framework 2.0. It also knows how to compile game projects on any system with .NET 2.0.
- OpenGL Framework: Version 2.0 was based on Managed DirectX. SGDK 2.1 uses the OpenTK library to access the OpenGL interface to video hardware, allowing SGDK2 to and the projects created with it to potentially be more easily ported to other platforms. This also provided an apparent performance boost.
- Improved Message Functions: Displaying messages is now an integrated function in SGDK2 instead of a custom object. Furthermore, it now uses a tileset as the font instead of using the fonst support provided by the system (because as of this writing, OpenTK does not properly support fonts). This means, however, that you can use graphics and animated tiles/characters in your messages. A new message preview window is provided to assist in laying out the message at design time.
- Frame Rate Limit: If your game runs too fast on some systems, you can now use the LimitFrameRate function to control the speed.
- Cut Rules: It's now possible to cut a group of rules when using a rule editor. This can also be used to delete hierarchies of rules.
- Upgrade Documentation: This help file is now being built with Sandcastle and Sandcastle Help File Builder instead of NDOC because NDOC did not support .NET 2.0. As a result the build process is somewhat simplified and the content is better linked with some other improvements wrapped in too.
- Convert Rules: In the sprite rule editor and plan rule editor, you may now select the "Convert to Function" command to convert rules into source code that can be directly maintained in the code editor. If you have huge trees of complex rules, this may help you significantly simplify your sprite definitions, and make them more managable.
- Call Sprite Functions from Plan Rules: Now you can select "<Select sprite function...>" from the function list in the plan rule editor if you want to directly call a function on a sprite from a plan. This can be particularly handy if you've converted a set of rules on a sprite into a function that you want a plan to be able to easily trigger directly.
If this list seems short, notice that the first two items are relatively large, and also that the goal was to get the major update out to folks and in use before proceeding with a multitude of smaller updates. That way everyone doesn't have to wait for all the small updates to be complete before being able to use the updated framework.