-
Notifications
You must be signed in to change notification settings - Fork 0
[RELEASE] v0.1.1-alpha #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…, AetherRenderer, HemeraTermFx, etc. This commit merges foundational work across multiple versions (0.0.1-alpha to 0.0.3-alpha) for the NyxEngine project. The changes include the establishment of core systems, optimizations for rendering, and comprehensive refactoring of the underlying codebase. Key Highlights: - Initial Setup (0.0.1-alpha): - Establish core ECS framework with abstract classes (`NyxEntity`, `BaseSystem`, `BaseComponent`). - Create basic terminal utilities and implement initial background rendering. - Tilemap and Subpixel Rendering (0.0.2-alpha): - Add tilemap rendering to the terminal with subpixel resolution and color handling. - Integrate caching and storage mechanisms to optimize performance. - Introduce the `PositionComponent` and `SceneComponent` for more flexible (future) map management. - Core System Refinement & Performance Optimizations (0.0.3-alpha): - Implement Delta Framebuffer Rendering, tracking only changed pixels for improved performance. - Enable Subpixel Rendering with a doubled height approach, allowing for higher fidelity rendering. - Introduce asset import system with `.nyx` files for efficient asset handling. - Refactor and document core modules, including the `AetherRenderer`, `MorosEntityManager`, and `HermeraTermFx`, improving clarity and modularity. - Enhance documentation with module explanations, changelog, and updated examples.
… registry (#20) feat: remove friendly name checks and add a full-reset for the entity registry.
- feat: Add sprites to rendering using: - `PositionComponent` - `VelocityComponent` - `MovementSystem` - feat: Update tilemap rendering to: - Render outside the ECS system. - Cull, tile, and roll the tilemap based on frame size and tilemap position. - feat: Begin `NyxEngine` implementation to be the central orchestrator of the game loop and systems. - tests: Add some more tests; more to come. I want to continue cleaning up the architecture first. - feat: Update demo to use `NyxEngine` and began cleaning up demo code. - docs: Significant documentation updates (docstrings, README).
) - Avoid tuple creation by storing foreground and background color sums in the delta frame's background channel. - Introduce row summation to skip rows with no changes. - Skip individual pixel processing for unchanged pixels. - Compute background color inline to reduce expensive memory lookups. - Move variable initialization and comparison values outside of loops for reuse. - Replace string concatenations with list operations and io.StringIO for better string management. - Remove unnecessary row booleans by relying on implicit checks for row updates. - Reduce redundant caching for "null" pixels to avoid unnecessary processing.
feat: Create dict maps for fg and bg colors, generated at runtime to further limit string manipulation within the loop refactor: Improve sum check and bg retrieval by splitting the array and ensuring uint16 datatype for the summed array. refactor: Moved line profiling into its own wrapper method with logic to activate or bypass. feat: Added a method to import npz (multiple ndarrays) from file quickly (used during testing) docs: Updated docstrings across the project.
- Direct commit to develop
…main subclasses (#39) * feat: add singleton pattern to NyxEngine class to maintain a global state * refactor: replace class-level vars with instance vars in NyxEngine - remove `ComponentManager` class references - replace class-level vars in `MoraiEntityManager` - replace `AetherRenderer` and `AetherDimensions` class-level calls * fix: catch`OSError` when trying to use in a non-term environment (such as testing or output to file, etc) - Specifically fixes the `MoiraiEntityManager` testing failures from the class attribute refactor rounds * fix: update dependencies (numpy, line_profiler) and python (3.10.8) version in github action
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bug
Something isn't working
documentation
Improvements or additions to documentation
enhancement
New feature or request
hemera-term-fx
Terminal printing
nyx-engine
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Release v0.1.1-alpha: (01/03/2025)
Changelog:
[0.1.1-alpha] - 2025-01-03
Added
Changed
HemeraTermFxto further optimize terminal printing performance.NyxEngineas the main enforcer of game state consistency across the project. It now holds all instances of the major subclasses.requirements.txtto include line_profiler for performance testing.