Skip to content

Refactor: Unify Cellular Automata with a New Engine#2

Draft
google-labs-jules[bot] wants to merge 1 commit into
masterfrom
refactor-cellular-automata
Draft

Refactor: Unify Cellular Automata with a New Engine#2
google-labs-jules[bot] wants to merge 1 commit into
masterfrom
refactor-cellular-automata

Conversation

@google-labs-jules

Copy link
Copy Markdown
Contributor

This change introduces a new, unified engine for all cellular automata animations. It replaces a complex and duplicative class structure with a modular, runner-based architecture. This simplifies the code, reduces redundancy, and makes the system more extensible. The core logic is now centralized in an AutomataAnimator, which can be configured with different computation backends (CPU, WebGL, WebGPU).

This commit refactors the entire cellular automata system to use a new, unified engine with a runner-based architecture. This significantly reduces code duplication and improves maintainability.

Key changes:
- Introduced a new core `AutomataAnimator` class in `js/automata-engine.js` to handle all animation, state management, and rendering logic.
- Created a "runner" strategy (`CPURunner`, `WebGLRunner`, `WebGPURunner`) to encapsulate the computation logic for different backends.
- Replaced the previous complex inheritance structure with a composition-based model, where the animator is configured with a specific runner.
- Consolidated all shared utilities into the new engine file.
- Deleted the old, redundant `cellular-automata.js` and `cellular-automata-shared.js` files.
- Refactored `js/main.js` (previously `gpu-cellular-automata-manager.js`) to act as a clean entry point that initializes the new system.

Note: `game-of-life.js` has been partially refactored to use its own runner but still uses a separate animator. A future improvement would be to extend the main `AutomataAnimator` to handle 2D grids to fully unify all automata.
@google-labs-jules

Copy link
Copy Markdown
Contributor Author

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll acknowledge your comments with a 👀 emoji and then get to work. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

I will automatically address your feedback on specific files or sections of files. For any comments you don't want me to act on, just include `(aside)`.

PS: Responding to comments on the entire PR are not yet supported but coming soon.


For security, I will only act on instructions from the user who triggered this task for this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants