JAM
Features HistoryLatest version: 1.0.10
This page shows features added in the past, features currently in progress, and ideas for future releases.

Version x.y.z (ideas for future versions)

IdeaComments
Custom menuCustom menu to allow more features, such as menu skinning, icons, etc.
Pause / Resume togglePause menu option does not become "resume" when paused. (may require re-design of menu system)
Alpha-blended objects / custom ink effectsWould really require higher level functions. May be impossible with current functionality of Jamagic.
PrimativesOptions to set objects to associate with primative shapes (rectangles + ellipses) to allow better normal angle calculation and realistic physics simulations.
Zoom featureAlthough zooming the displayed surfaces would be easy, it would cause slowdown and may be difficult to impliment mouse position detection.
Multiple screen supportSeems to be more work than gain, so unlikley in near future.
Save / Load settingsAdd the ability to save / load current window & player setup.
Port to C++?Once I know enough C++, large parts of JAM could possibly be ported into C++ shared libraries for speed improvements. May also allow more control over drawing (i.e. alpha blending & custom ink effects :P)


Version 1.0.14 (ideas scratchpad)

IdeaComments
Auto save/load player setupAutomatically save and load the player setup, including chosen controller, key mappings, and button mappings for all gamepads/joysticks. This will allow players to return to the game with no need to repeat the setup, and re-plug devices which are immediately configured for the game.
Still more controllsProgress bars, Spinners (aka Throbbers), Text areas, Toggle switches and Tree views planned. Text areas may be delayed until 1.0.16.
Icon selectorsBased on the code already used for the JAMedit add object fragment (see screenshots) - will allow 32-bit (alpha transparent) .ico files but NOT 32-bit PNGs or icon libraries (.ico files with multiple image formats).
Face RecognitionAdd face recognition to the Webcam object, for identifing face position, size, rotation, and basic expression. Tests with this are promising, but still at a very early stage.


Version 1.0.12 (in development)

FeatureProgressComments
Hardware AccelerationThe ever-ellusive feature makes a comeback, and this time it's here to stay. JAM can now (optionally) render hardware accelerated, but there's still a lot to convert before it gets a genuine speed-boost. Most features still work, and it is 100% compatable with non-HWA-aware objects and fades.
Keyboard navigationTab and Shift-tab can now be used to cycle through interactive objects (currently Button, Checkbox, Radio button and Scrollbar). When an object is selected, any keyboard input is sent to the object. This allows space-to-press, arrows-to-select, up/down/left/right/page up/page down to scroll. This makes using programs created in JAM more intuitive, and opens the way for edit objects and more.
Cursor changingObjects can now define a favoured mouse cursor which is automatically displayed when the mouse is over the object. This is currently only used by the edit object (to display an I-beam when enabled).
Yet more user controlsEdit object added. Selectors, lists and spinners still to go.
Gamepad button mappingAllow actions to be named by the programmer, and assigned to generic buttons (i.e. R1, START, SQUARE, A, etc.) When a controller is chosen, it's R1, START, etc. button locations are found in a database and combined with these choices for initial mappings. The user can then edit the mappings through setup windows. This will also extend the functionality of the keyboard mappings.
Runtime flipAdd the ability to flip objects horizontally & vertically at runtime. (should this be done before or after rotation?...)
General bugfixFix all known bugs from previous versions and any new bugs.


Version 1.0.10 (current release)

FeatureComments
Path movement switchingPath movement now stores nodes instead of instances, so setting up a single movement for many objects and switching between movements is easier. Many functions have been changed by this, so all path movements in projects will need to be updated.
Path movement node namesPath movement nodes now have names, and it is possible to check if currently at a named node.
Window objects with own backgroundBackgrounds are now handled much better, with each frame able to define it's own on creation (previously it had to be defined within the startup code), and this extends to Window objects able to define a custom background. Complete with layers, parallax, opacity and foregrounds.
Object groupsObjects can be added to groups so that a single event can change all of them at once, even if they are different classes (i.e. moving a collection of actives and buttons)
Finish collision detectionJAM now uses Jamagic's sprite functions to detect collisions, making it much faster. It has also been made far better at detecting collision angles, making platform movements work properly.
Child objectsObjects can contain child objects, for example a scrollbar made of buttons. This automatically caters for movement and rotation.
ScrollbarsScrollbars have been added. Simple. Other objects have been postponed to 1.0.12 due to complications with keyboard input.
Mini-map objectA simple object which can be told to keep track of any objects and display them as dots in a scaled-down view of the level.
Joystick improvementsPlayer objects now support up to 6 axis and 32 button joysticks, as well as joystick recognition. This has also been split into a seperate 3dd which will be released separately.
WebCam improvementsWebcam object now auto-detects camera resolution, allows device switching and offers more information.
Text improvementsText object now has CanDisplay and Set/GetDefaultCharacter to help with handling characters not supported by the chosen font. It also now has a built-in mono font (courier new) and password font (dot for every character) and the font can be changed with constants (FONT_ARIAL/FONT_VARIABLE, FONT_COURIER/FONT_MONO and FONT_PASSWORD).
Reflection objectSimple object to make reflection effects. Supports 4 reflection directions (up/down/left/right) and a scale coefficient (e.g. scale = 2 to squash the reflected image)
Fade CleaningFades have been combined, trimmed, modified, extended, extrapolated, polished and painted. Kinda. Fades are now more complete, and include fewer oddities.
General bugfixAll known bugs from the previous version have been fixed.


Version 1.0.8

FeatureComments
Active object rotationAll objects can now be rotated with SetRotation
Split collisionSince collision is so complex, it has been split into a separate 3DD which is used by JAM.
Smooth zoom objectAllows a section of screen to be zoomed to twice it's size using a smooth scaling algorithm similar to 2xSaL. Works best on low colour images. Can be slow with large areas
Alias prediction objectAllows predictive anti-aliasing of objects in a given area - works on same logic as zoom mentioned above, but blends instead of scaling. Slow with large areas
Mouse confinementMouseKeyboard object allows the cursor to be confined / released from a zone
More user controlsCheckboxes & Radio buttons created. Also added more theme options (Olive and Blue XP themes, and an AUTODETECT theme which will pick the best match for the user)
Inbuilt screensaver supportWhen built as .scr, uses frame 1 as main screen saver, frame 2 as preview and frame 3 as settings. Also has inbuilt settings INI. When testing, shows options to choose which screen to show at start (main, preview or settings). However, all startup code must be within a function named Screensaver due to the way Jamagic works.
General bugfixAll known bugs from old version fixed (appart from menu-based bugs). All new bugs fixed.


Version 1.0.6

FeatureComments
Send bulk over networkAll functions now default to cumulating information to send later in bulk, but this can be overriden.
WebCam objectAllows PS EyeToy style games to be created relatively easily.
Window debugSee realtime debug information in a seperate window, or in the command window. Note: there is an odd crash if the command window has focus when it is being used for this.
Fix some movementsMovements now run before user code, so no flicker in platform movement, etc. Movements also tidied up
"Set" function for activesAllows an instant change to a picture or animation with the option to loop or return to initial state when finished, as requested in the forums
General bugfixMost bugs fixed, some (mentioned above) are still a problem. Also, menu-based bugs are still a problem.


Version 1.0.4

FeatureComments
Internal variables more readableNames changed to be more descriptive in some places. Not all changed yet.
Revise main menu handlingCustom menu system planned, but not included due to complexity. Will be included in a later release
Simplify by breaking upMore generic functions / objects split into separate 3DDs which are wrapped by JAM
Counters to n decimal places.Counters can be forced to show n decimal places, and can be rounded to the nearest 10, 100, 1000, etc.
General bugfixAll known bugs from old version fixed (appart from menu-based bugs). All new bugs fixed.


Version 1.0.2

FeatureComments
Code more readableAll important areas converted. Variables to be renamed to be more descriptive later
Moved strings to bankMost game strings moved to bank for easy changing / other language support
Revised rendering engineFaster background / foreground rendering + supports cameras
CamerasCreate a window in the level which points to another location. Useful for split-screens
Improved collision detectionNew method found. Still not perfect (slow with big objects and some failures) but it'll do for now :)
New movement / transition viewerMovements source completley revised + includes path movement. New transitions. Transition viewer unchanged.
Network object improvementsSend only changed information option added. Bugs fixed.
Instant joystic removal detectionShows an alert if a joystick which is in use is removed while playing
General bugfixAll known bugs from old version fixed (appart from menu-based bugs). All new bugs fixed.


Pre-1.0.0 releases: (different versioning system used)

FeatureCommentsVersion 
Include objectsFundamental part of JAM0.00
Unique properties for object instancesFundamental part of JAM0.00
Resize object instances at runtimeFundamental part of JAM0.00
Unique IDsFundamental part of JAM0.00
Unlimited frame sizeFundamental part of JAM0.00
Resizable windowDifferent resize modes added over time. Bugs fixed too0.21
Fullscreen optionsFirst added in v0.21 Bugs with menu found later0.96
Parallax background optionsFundamental part of JAM0.00
Custom object creationBasic layout defined from v0.00, but more features added later0.75
Custom movement creationHandling method changed many times0.30
Custom fade creationIncluded from the start, but improved later0.23
Custom overlay creationVery simple. More effects added over time.1.00
Special objectSimple functions in v0.00 Expanded later1.00
Sound objectBase features in v0.35 Expanded later0.95
Storyboard object + FramesSingle frame support in v0.00 Different methods used later1.00
Timer objectSimple functions in v0.00 Expanded later0.12
MouseKeyboard objectBase features in v0.00 Expanded later0.99
Player objectVery basic in v0.30 Improved several times0.65
MainMenu objectSimple support in v0.50 Improved later0.96
Network objectAdded in v0.97 Better methods and more features added later0.99
Debug objectVery simple information in v0.00. Split into separate object later, and more features added in later releases1.00
Draw modes for objectsOnly Jamagic draw modes supported. First added in v0.101.00
Re-ordering tools (bring to front / back / etc.)Basic options avalible from v0.001.00
Unlimited global & alterable valuesSlow access method in v0.10 Improved later0.15
Object flagsAvalible from v0.12 Improved significantly later0.20
Object hotspotsFirst added in v0.22 Parts fixed later1.00
Main background + Collision maskAlso PasteIntoBackground. PasteIntoBackground completed in v0.260.25
Collision detection + normal angleVery basic method in v0.35 Still looking for better method1.00
Active objectCrude animation compatability from the beginning, more features such as special animations and directions added later1.00
Counter objectNumerial mode from v0.24 other modes and bug fixes later1.00
Button objectBasic features from v0.60 largely re-written later on1.00
About box :PSimple details about who has contributed to the project. Changes with each release0.20
Pause featureIncluded from v0.10, but buggy. Improved in later releases0.41
Dialogue boxesStarted in v0.960.98
DocumentationStarted in v0.11 Expanded repeatedly1.00

JAM © 2005 no one in particular
Project started by David Evans in 2005