Skip to content

Releases: Kraken-Engine/PyKraken

Kraken Engine v1.5.0

01 Jan 15:30
d1ef173

Choose a tag to compare

The "Tilemap Update"

This update completely reworks how tile maps function in the Kraken Engine. By replacing the 2-year-old custom XML parser with the third-party tmxlite library, Kraken gains broad, first-class support for nearly all TMX map features while improving correctness and performance.

What's New

  • tilemap submodule containing the following classes:
    • Map (the only instantiatable one)
    • ImageLayer (extends Layer)
    • ObjectGroup (extends Layer)
      • MapObject
      • TextProperties
    • TileLayer (extends Layer)
      • TileLayer.Tile
    • TileSet
      • TileSet.Tile
      • TileSet.Terrain
  • New Vec2 methods:
    • move_toward and moved_toward
    • scaled_to_length
    • normalized
    • rotated

Breaking Changes

  • Removed several math submodule functions (see "What's New" above for replacements):
    • math.scale_to_length
    • math.normalize
    • math.rotate
  • Removed the from_polar function from the math submodule which asked for a PolarCoordinate object since that object already has a method to convert to Cartesian coordinates.
  • Removed <, >, <=, and >= operators from the Vec2 class due to ambiguity with element-wise comparisons.

Bug Fixes

  • A visual artifact where textures would render slightly offset when using the camera has been fixed by flooring the camera's coordinates before rendering.
  • Improved performance when passing arrays between Python and C++:
    • Kraken now correctly handles pybind11 reference semantics to avoid unnecessary copying.
    • Affected APIs are typically exposed as classes ending in "List".

Full Changelog: v1.4.2...v1.5.0

Kraken Engine v1.4.2

22 Dec 05:24
3fc79fb

Choose a tag to compare

This update introduces the abilities to make render target textures and control the scaling method of textures. With render target textures come functions to set and unset them.

What's New

  • TextureAccess enum for choosing the access type of a texture:
    • STATIC for your usual texture (read-only).
    • TARGET for a texture to draw onto, good for pixel artists and shader work.
  • TextureScaleMode enum for choosing the scale mode of a texture when rendering:
    • LINEAR for linear scaling, good for high-resolution games.
    • NEAREST for nearest neighbor scaling.
    • PIXEL_ART for a special scaling method that looks best with pixel art games.
    • DEFAULT for the default scaling mode set via the renderer.set_default_scale_mode function.
  • New Texture constructor for making a render target texture of a given size and scaling mode.
  • renderer.set_target added for setting/unsetting a render target texture to render to.
  • renderer.set_default_scale_mode and renderer.get_default_scale_mode functions for setting/getting the program's default texture scale mode to mitigate repetitive code.

Breaking Changes

  • renderer.get_res function renamed to renderer.get_target_resolution.
  • window.create function params changed to just title and size.
  • Removed AnimationController.texture property.
  • Removed the file_path parameter from the AnimationController.load_sprite_sheet method.

Full Changelog: v1.4.0...v1.4.2

Kraken Engine v1.4.1

19 Dec 04:30
181481b

Choose a tag to compare

Minor Update

  • New rotate_by function in the fx submodule to rotate by delta in a direction.
    • rotate_to rotates in a given direction now too.
  • Text objects now have shadow_color and shadow_offset properties for rendering a drop shadow.
    • Shadows will only be drawn if shadow color isn't completely transparent and if the offset isn't zero.
  • renderer.draw has improved draw logic, where size is determined in an order an fallbacks, in this order:
    1. Transform size
    2. Source rectangle's size
    3. Full texture size

Full Changelog: v1.4.0...v1.4.1

Kraken Engine v1.4.0

18 Dec 06:09
0970c80

Choose a tag to compare

What's New

  • Orchestrator class for timeline-based transform animations.
    • With this comes the fx submodule which needs to be explicitly imported from pykraken,
    • Each effect function returns an Effect object to give the orchestrator via its next or parallel methods.
  • Transform object encapsulating position, size, scale, angle, positional anchor, and rotational pivot.
  • Inheritable Sprite class for drawable game objects, encapsulates:
    • Attributes for texture, transform, velocity, and an optional "clip" (src) rect.
    • Methods for updating (must be implemented), drawing, and moving.
  • log submodule for logging errors, warnings, and general information.
    • kn.init's new optional debug parameter must be set to True for log messages to output.
    • Enabling debug mode includes logging of device information on launch.
  • Added new event types for pinch gestures, screen keyboard showing/hiding, and if display's usable bounds were changed.
  • SheetStrips can now accept floats for fps values.
  • event.start_text_input and event.stop_text_input now available for use with the TEXT_INPUT user event.
  • The window is now resizable during runtime.

2025-12-1721-10-38-ezgif com-video-to-webp-converter

Breaking Changes

  • Frame object (from AnimationController.current_frame) removed.
    • This means each animation in the controller holds a list of src rects instead of frames.
    • AnimationController[.texture/.clip] takes the place of AnimationController.current_frame[.tex/.src], respectively.
  • The two old renderer.draw functions have been replaced with a unified one, utilizing the Transform object.
  • Old transform submodule functions for manipulating PixelArray objects have moved to the pixel_array submodule.

Bug Fixes

  • Creating a window of equal size as the display while having scaled set to True no longer makes a 0x0 window.
  • Texture's angle property moved to the Transform object.
  • AnimationController.progress can now reach 1.0 when not looping.
  • Rect.clamp would squish the rect when clamped, now fixed.
  • If a Text's internal font pointer goes out of scope or was unset, the text throws an error instead of silently failing.
  • When window is fullscreen, the mouse coordinates are now returned correctly adjusted to the visual dimensions.

Full Changelog: v1.3.1...v1.4.0

Kraken Engine v1.3.1

15 Nov 07:21
60124a3

Choose a tag to compare

Highlights

  • New ellipse draw function in the draw submodule.
  • New scroll method for PixelArray for offsetting the pixel content.

Breaking Changes

  • EasingAnimation no longer accepts start and end positions for its constructor, but are instead now properties able to be changed at any time.
  • Renamed cancel_scheduled to unschedule in the event submodule.

Bug Fixes

  • Tiles still held onto rotation angle in degrees, causing rendering bugs. Now changed to radians.
  • Text rendering wasn't affected by camera offset, now fixed and with slightly more accurate positioning.

Full Changelog: v1.3.0...v1.3.1

Kraken Engine v1.3.0

11 Nov 07:03
cc23e49

Choose a tag to compare

Highlights

  • New viewport submodule for rendering only in portions of the screen, with a layout helper function to generate split-screen viewports (2-4 screens only).
  • Font class now has properties for height, descent, ascent, line spacing, outline, and kerning.
  • event submodule contains new functions for creating and scheduling custom user events.

viewports

Breaking Changes

  • Removed sampler_count parameter from ShaderState constructor (for the time being).
  • Anchor enum constants are no longer global and must be accessed explicitly (e.g. kn.Anchor.BOTTOM_RIGHT)

Bug Fixes

  • draw.circle was having the camera position offset applied to it twice, making it "move" twice as fast than other rendered objects when the camera moves.
  • Some objects didn't have their copy methods binded, but now are.
  • A couple event types weren't completely given all their attributes, fixed.
  • (Probably) fixed builds for linux distros using Wayland

Full Changelog: v1.2.1...v1.3.0

Kraken Engine v1.2.1

08 Nov 04:21
247ea20

Choose a tag to compare

Minor Update

  • Vec2 class now has a distance_squared_to method and a length_squared property
  • math submodule now has a rotate function for non-mutating vector rotations
  • AnimationController can append more than one sprite sheet again

Full Changelog: v1.2.0...v1.2.1

Kraken Engine v1.2.0

05 Nov 19:50
0c51b49

Choose a tag to compare

Highlights

  • New Text class to separate logic from Fonts
  • AnimationController.load_sprite_sheet now loads animation texture atlases
  • New SheetStrip class for the aforementioned method update
  • Polygons now have properties for getting perimeter, area, centroid, bounds, and some transformation methods

...and extra properties for AudioStream and AnimationController

Breaking Changes

  • AnimationController.load_sprite_sheet change means all related animations must be put into one large texture atlas (may change in the future)
  • The separation of Font and Text could be problematic

Bug Fixes

  • Text would "squish" to the right of its width, fixed
  • Internal font now is shut down after text objects are freed
  • Internal audio buffers and streams are freed before audio engine is shut down
  • Shader states are now freed before the backend shuts down

Thanks to @mayamayomaya for the extra Polygon functionality and @Lookey-Lookey for finding the now-resolved text rendering bug.


Full Changelog: v1.1.1...v1.2.0

Kraken Engine v1.1.1

08 Nov 18:20

Choose a tag to compare

Hotfix Release
pydantic wasn't marked in pyproject.toml as a dependency, but now is.

🖼️ Kraken Engine v1.1.0 💥

08 Nov 18:23
d46821d

Choose a tag to compare

Highlights

  • New ShaderState and ShaderUniform classes for applying fragment/pixel shaders to rendered textures!
  • New collision submodule for checking overlap and containment between two shapes
  • Color object instances can now be negated, multiplied, and divided by scalar values
  • TileLayer objects now have get_from_area and get_tile_at methods for fast tile indexing and iteration

shaderexample

Breaking Changes

  • Rect and Circle no longer have their collision checking methods as they've been moved to the collision submodule
  • Layer has been renamed to TileLayer

Bug Fixes

  • Tile.collider with undefined behavior fixed due to minor typo
  • Game crashing with undefined user events fixed as now all modern key pressed have been added to API

Full Changelog: v1.0.0...v1.1.0