Releases: cmorman89/nyx-engine
v0.1.1-alpha
Release v0.1.1-alpha: (01/03/2025)
Further Optimizations
This update further optimizes the terminal printing performance by refactoring the
HemeraTermFxclass. TheNyxEngineclass has been updated to enforce game state consistency across the project, holding all instances of the major subclasses. Additionally, therequirements.txtfile now includesline_profilerfor 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
HemeraTermFxto further optimize terminal printing performance. - Update
NyxEngineas the main enforcer of game state consistency across the project. It now holds all instances of the major subclasses. - Update
requirements.txtto include line_profiler for performance testing.
v0.1.0-alpha
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
HemeraTermFxto enable line profiling for performance testing. - GIF demos in the
examples/demosfolder to showcase the project's capabilities. - Add an alien planet sprite to the current game demo in
main.py.
- New method and hooks in
-
Changed
- Optimize terminal printing string generation for a 95% reduction in frame printing time.
v0.0.4-alpha
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,ComponentManagerandMoraiEntityManager - Add documentation for
NyxEntity,ComponentManager, andMoraiEntityManager - Implemented printing/rendering moving sprites to the terminal.
- Implemented
NyxEnginefor orchestrating the central game loop and managing resources. - Tilemap rendering now supports infinite scrolling in all directions.
Changed
- Switch
entity_idto an integer instead ofUUIDfor easier readability and indexing inNyxEntity. - Simplify
MoraiEntityManagerby removing friendly name lookup/mapping and providing a method to clear the registry. - Simplify
ComponentManagerwith less nested logic and simpler output. Components organized by type for fast system access. - Tilemap printing now uses a dedicated helper/manager
TilemapManagerand is no longer aNyxSystem. - Significant README and project documentation updates -- including animated demos of current project state.
- Begin refactoring
demo.pyto use the newNyxEngineand 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,TilemapSystemas they are directly replaced byComponentManagerandTilemapManager. - 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
.nyxfile import system for loading assets as arrays, converted to ndarrays.
- Introduced
- Refactoring and Documentation:
- Added docstrings across all modules for improved maintainability.
- Refactored
AetherRendererinto 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
HemeraRenderertoHemeraTermFxas it handles terminal effects and rendering. - Renamed
AetherCompositortoAetherRendereras it manages the rendering pipeline. - Renamed
NyxEntityManagertoMoraiEntityManagerto 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
TilesetStoreclass for managing and storing tilemaps by ID.
- Position and Scene Components:
- Introduced
PositionComponentfor potential scrolling functionality. - Added
SceneComponentas a global container/flag for managing tilemaps.
- Introduced
[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, andHemeraRenderer.
- Established core ECS with abstract base classes (
- Basic Terminal Utilities:
- Created
term_utils.pyfor common terminal operations.
- Created