Version 1.1.0 changelog


The new version 1.1.0 adds some features in the a few topics:


Resource Loading

==============

  • Animations can be initialized using a folder path that contains all image files.
  • Animations can be initialized using a spritesheet.
  • Spritesheets can include multiple rows of different animations or multiple rows of the same animation.
  • ImageReader and ImageRenderable offer crop functionality.
  • Sounds loaded by the same SoundReader are cached and will not be loaded again from disk unless the cache is cleared.
  • Changed default behavior for failure in loading sounds and images. When a sound cannot be loaded for the first time, a message box appears and the game continues. When an image or animation cannot load, it is replaced by a magenta square, and a message is logged to stderr. These behaviors can be customized by changing the default behavior for the message-levels ERROR and WARNING correspondingly.
  • Likewise, images are cached, together with their crop settings.


Input

=====

  • Added the movement_schemes package. The package contains various MovementSchemes that can control either a user-avatar or an AI-agent using common movement schemes: PlatformerMovementScheme, SteeringMovementScheme, RailMovementScheme, DirectionalMovementScheme, DragMovementScheme, and TargetMovementScheme (see Javadoc of each).
    These support either customizable keybindings/mouse, or user-specified functions that would tell the MovementScheme when and how to move.
  • Interface of UserInputListener expanded: can query if a key or mouse-button was pressed/released in this frame. Can also query which are currently pressed.


General

=======

  • New layers in GameObjectsCollection can be referred to without first adding objects to them.
  • Added a complete logging system, see WindowController.messages().
  • Added the convenience classes SwitchComponent and SwitchRenderable. These are respectively a Component and Renderable decorators, that choose the appropriate Component/Renderable to delegate to based on a supplied condition list.
    For example, the SwitchComponent can be used to assign a MovementScheme to the GameObject that switches between multiple actual schemes depending on the scenario.
    The SwitchRenderable can be used to render the idle Renderable if the object doesn't move and a running/jumping one if some condition holds.
  • Code examples were updated, and the AirEarthWater code example was added.

Files

DanoGameLab 1.1.0.zip 1.2 MB
Oct 17, 2023

Get DanoGameLab

Comments

Log in with itch.io to leave a comment.

Very cool, I'm going to use this for the students at my programming course!

I am so happy to hear! do share here some pics from what you or your students did!

See the included copyrights file for limitations on redistribution, i.e. refer the students to this page rather than distributing the files yourself.