Skip to content
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

Initial Rewrite of Apex Ecosystem Simulator #106

Open
14 tasks
dmccoystephenson opened this issue Nov 3, 2024 · 0 comments
Open
14 tasks

Initial Rewrite of Apex Ecosystem Simulator #106

dmccoystephenson opened this issue Nov 3, 2024 · 0 comments
Assignees
Milestone

Comments

@dmccoystephenson
Copy link
Member

dmccoystephenson commented Nov 3, 2024

Description

This work item covers the initial refactor of the Apex ecosystem simulator to a database-centric, client-server architecture using Viron as a 2D virtual world data management solution. The refactor will focus on splitting the system into ApexServer (the server-side data access layer) and ApexClient (the client for interacting with data). The rewrite will aim to replicate existing functionality while enhancing maintainability, scalability, and modularity.

The ApexServer will manage all data access through Java controllers, interfacing with Viron for database operations and exposing endpoints that allow ApexClient to retrieve and modify ecosystem data. ApexClient, implemented with libGDX for the UI, will display ecosystem entities and provide user interactions through services offered by ApexServer.

This initial rewrite will serve as the foundation for future functionality expansion, tracked in subsequent GitHub issues.

Acceptance Criteria

ApexServer Setup

  • ApexServer can connect to Viron and interact with the 2D virtual world database.
  • Database access is encapsulated in Python controllers, which abstract direct data operations.
  • The server exposes necessary endpoints for ApexClient, covering data retrieval, creation, updates, and deletion.

ApexClient Setup

  • ApexClient uses Graphik for the graphical UI and connects to ApexServer for data access.
  • The client UI can display all current ecosystem entities, including animals (chicken, pig, cow, wolf, fox, rabbit) and plants (e.g., Grass).
  • User actions in the UI can retrieve and update ecosystem data through the server (e.g., adding or removing entities, modifying entity states).

Core Functionality Replication

  • The refactored system accurately recreates the core functionality of the original version, including:
    • Basic entity lifecycle management (spawning, growing, dying).
    • The food chain system (predator-prey relationships, food consumption).
  • Functional tests confirm that interactions between entities (e.g., hunting, eating, reproduction) behave as expected.

Database-Centric Operations

  • All data persistence and retrieval are handled through the database, with no direct data manipulation outside the ApexServer’s controllers.
  • The system maintains data consistency across the ecosystem, ensuring state changes are accurately reflected in both the database and UI.

Initial Performance and Stability

  • ApexServer can handle basic data requests and updates with minimal latency.
  • ApexClient responds smoothly to server updates and reflects data changes in real time.

Documentation and Future Development

  • Documentation exists for the refactored architecture, including server-client interaction and database structure.
  • GitHub issues track current and future functionality requirements, serving as a backlog for post-rewrite development.
@dmccoystephenson dmccoystephenson changed the title Transition to using Viron for data management Initial Rewrite of Apex Ecosystem Simulator Nov 3, 2024
@dmccoystephenson dmccoystephenson self-assigned this Nov 3, 2024
@dmccoystephenson dmccoystephenson added this to the v0.3.0 milestone Nov 3, 2024
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

No branches or pull requests

1 participant