Skip to content

Releases: cmorman89/nyx-engine

v0.1.1-alpha

04 Jan 05:39
080951f

Choose a tag to compare

Release v0.1.1-alpha: (01/03/2025)

Further Optimizations

This update further optimizes the terminal printing performance by refactoring the HemeraTermFx class. The NyxEngine class has been updated to enforce game state consistency across the project, holding all instances of the major subclasses. Additionally, the requirements.txt file now includes line_profiler for performance testing to fix missing dependencies.

I will probably begin transitioning parts of the project to C because the Python interpreter is not fast enough for the performance I want to achieve. Once the transition is complete, I will be able to focus on implementing more complex features and optimizations that are currently out of reach due to Python's limitations. I am excited about the possibilities that this transition will open up and look forward to sharing the progress with you all.

Benefits using C include:

  • Allocatae memory for the various frame buffers and arrays and manage them directly.
  • Drastically improve the performance of the printing pipeline by speeding up the string buffer loop.
  • Improve printing performance by directly printing bytes to the terminal.
  • Completely avoid string generation for the terminal output by generating the ANSI escape sequences directly as bytes stored in a dedicated buffer.

What this means:

  • Implement full color support for 24-bit RGB colors (!!!)
  • Allow real-time conversion of video files to terminal output.

Changelog:

[0.1.1-alpha] - 2025-01-03

Added

  • Import npz files for multiple frames or sprites.

Changed

  • Refactor HemeraTermFx to further optimize terminal printing performance.
  • Update NyxEngine as the main enforcer of game state consistency across the project. It now holds all instances of the major subclasses.
  • Update requirements.txt to include line_profiler for performance testing.

v0.1.0-alpha

27 Dec 18:01
27b97d3

Choose a tag to compare

This release sees a significant improvement in printing speed after profiling and optimization of HemeraTermFx.

[0.1.0-alpha] - 2024-12-27

  • Added

    • New method and hooks in HemeraTermFx to enable line profiling for performance testing.
    • GIF demos in the examples/demos folder to showcase the project's capabilities.
    • Add an alien planet sprite to the current game demo in main.py.
  • Changed

    • Optimize terminal printing string generation for a 95% reduction in frame printing time.

v0.0.4-alpha

23 Dec 04:18
af41335

Choose a tag to compare

The first release of the NyxEngine rendering pipeline and game engine!

Much of the work so far has gone into the rendering pipeline, as can be seen in the demos in the README. This release has a launchable demo of a nostalgic, space-shooter like game scene. Future releases will have more usability as the engine becomes more capable.


Changelog

[0.0.4-alpha] - 2024-12-22

Added

  • Add unit testing for NyxEntity, ComponentManager and MoraiEntityManager
  • Add documentation for NyxEntity, ComponentManager, and MoraiEntityManager
  • Implemented printing/rendering moving sprites to the terminal.
  • Implemented NyxEngine for orchestrating the central game loop and managing resources.
  • Tilemap rendering now supports infinite scrolling in all directions.

Changed

  • Switch entity_id to an integer instead of UUID for easier readability and indexing in NyxEntity.
  • Simplify MoraiEntityManager by removing friendly name lookup/mapping and providing a method to clear the registry.
  • Simplify ComponentManager with less nested logic and simpler output. Components organized by type for fast system access.
  • Tilemap printing now uses a dedicated helper/manager TilemapManager and is no longer a NyxSystem.
  • Significant README and project documentation updates -- including animated demos of current project state.
  • Begin refactoring demo.py to use the new NyxEngine and allow for better usability and clarity.

Fixed

  • Incorrect printing iteration caused excessive new lines in animated sprites.

Regression

  • Terminal size updates are no longer working correctly. Manual window sizes must be specified.

Removed

  • Removed NyxComponentStore, TilesetStore, TilemapSystem as they are directly replaced by ComponentManager and TilemapManager.
  • Removed

[0.0.3-alpha] - 2024-12-13

Added

  • Delta Framebuffer Rendering:
    • Implemented delta-based framebuffer to track and render only changed pixels.
    • Utilized stacked NumPy matrices to track foreground (fg) and background (bg) colors separately.
    • Printing optimized with sparse updates by skipping unchanged pixels.
  • Subpixel Rendering:
    • Enabled subpixel resolution using doubled height rendering.
    • Updated calculations to support 256-color tilemaps rendered with subpixels.
  • File Imports:
    • Introduced .nyx file import system for loading assets as arrays, converted to ndarrays.
  • Refactoring and Documentation:
    • Added docstrings across all modules for improved maintainability.
    • Refactored AetherRenderer into a main class and supporting utility classes.
    • Updated file structure and naming conventions for clarity.
  • Readme Enhancements:
    • Introduced mythology section to explain the naming scheme.
    • Added static and animated screenshots/screen captures, exemplifying the terminal output when rendering.
  • Demo:
    • Implemented an animated, nostalgic starfield tilemap using the new rendering pipeline.

Changed

  • Renamed HemeraRenderer to HemeraTermFx as it handles terminal effects and rendering.
  • Renamed AetherCompositor to AetherRenderer as it manages the rendering pipeline.
  • Renamed NyxEntityManager to MoraiEntityManager to reflect the project's mythology/consistency.

Fixed

  • Debugged 3D-to-2D matrix iteration issues causing misaligned axes and anomalous subpixel rendering patterns.
  • Resolved cursor relocation inaccuracies during delta rendering, improving visual fidelity and performance.

[0.0.2-alpha] - 2024-12-08

Added

  • Tilemap Rendering:
    • Rendered tilemaps to the terminal using subpixel resolution.
    • Integrated foreground (fg) and background (bg) colors for zero tiles and gaps.
  • Caching and Storage:
    • Tilemaps are buffered after computation to improve performance.
    • Implemented a TilesetStore class for managing and storing tilemaps by ID.
  • Position and Scene Components:
    • Introduced PositionComponent for potential scrolling functionality.
    • Added SceneComponent as a global container/flag for managing tilemaps.

[0.0.1-alpha] - 2024-12-07

Added

  • Background Rendering:
    • Rendered solid color backgrounds to the terminal using 256-color ANSI codes.
    • Allowed resizing of background rendering smaller than the terminal dimensions.
  • Core ECS Framework:
    • Established core ECS with abstract base classes (NyxEntity, NyxSystem, NyxComponent) for modular development.
    • Built foundational rendering systems: NyxComponentStore, RendererSystem, AetherCompositor, and HemeraRenderer.
  • Basic Terminal Utilities:
    • Created term_utils.py for common terminal operations.