WildSim is a ecosystem simulation application built in Java that models biological interactions between different organisms in a virtual environment. The project demonstrates advanced object-oriented programming principles, real-time visualization, and database integration to create a dynamic ecosystem where plants, herbivores, and carnivores interact according to realistic biological behaviors.
- Real-time visualization using JavaFX with custom graphics rendering
- Dynamic ecosystem evolution with configurable simulation parameters
- Multi-organism interactions including predator-prey relationships
- Object-oriented design with inheritance hierarchies for organisms and environments
- Singleton pattern implementation for service management
- Strategy pattern for different organism behaviors
- MVC architecture separating business logic from presentation
- MongoDB integration for persistent data storage
- CRUD operations with dedicated management interface
- CSV logging system for activity tracking and analysis
- Real-time database synchronization during simulation steps
- Intelligent movement algorithms with vision range and pathfinding
- Energy-based life cycles with realistic survival mechanics
- Adaptive feeding behaviors specific to organism types
- Population dynamics with birth, death, and evolution tracking
WildSim/
├── src/main/java/com/wildsim/
│ ├── Main.java # Application entry point
│ ├── config/ # Configuration classes
│ ├── environment/ # Ecosystem and positioning
│ ├── model/
│ │ ├── organisms/ # Animal and plant hierarchies
│ │ └── environment/ # Environmental elements
│ ├── service/ # Business logic services
│ ├── ui/ # JavaFX user interface
│ └── mongodb/ # Database utilities
├── src/main/resources/
│ └── images/ # Organism sprites and textures
├── docker-compose.yml # MongoDB container configuration
├── build.gradle # Gradle build configuration
└── README.md
- Singleton Pattern: Database and service management
- Factory Pattern: Organism creation and initialization
- Observer Pattern: UI updates and event handling
- Strategy Pattern: Different behavioral algorithms for organisms
- Energy Generation: Autonomous growth and energy production
- Reproduction: Threshold-based propagation
- Ecosystem Role: Primary producers and food source
- Foraging Behavior: Intelligent plant-seeking with vision range
- Movement: Strategic pathfinding to food sources
- Survival Mechanics: Energy consumption and predator avoidance
- Hunting Behavior: Advanced predator algorithms
- Prey Selection: Optimal target identification within vision range
- Mercy Mechanics: Probabilistic prey survival (20% chance)
- Java 11+: Primary development language
- JavaFX: Rich desktop application framework
- MongoDB: NoSQL database for data persistence
- Gradle: Build automation and dependency management
- Docker: Containerized database deployment
- MongoDB Java Driver: Database connectivity
- JavaFX Canvas: Custom graphics rendering
- BSON: Document serialization and deserialization
- Java Development Kit (JDK) 11 or higher
- Docker and Docker Compose
- Gradle 7+
# Clone the repository
git clone https://github.com/andreiOpran/WildSim.git
cd WildSim
# Start MongoDB container
docker-compose up -d
# Build and run the application
gradle clean build
gradle run
The application connects to MongoDB running in a Docker container with the following settings:
- Host: localhost:27017 (via Docker)
- Database: wildsim
- Authentication: root/root (admin database)
- Initialize Ecosystem: Set organism populations and environment parameters
- Run Simulation: Execute evolution steps with real-time visualization
- Monitor Progress: Track population dynamics and ecosystem health
- Data Management: Use CRUD interface for detailed organism management
- Create: Add new organisms with custom parameters
- Read: View detailed organism statistics and positions
- Update: Modify organism properties during simulation
- Delete: Remove organisms from the ecosystem
- Advanced OOP: Inheritance, polymorphism, encapsulation, abstraction
- Design Patterns: Singleton, Factory, Strategy, Observer
- Data Structures: Collections, matrices, spatial indexing
- Algorithms: Pathfinding, collision detection, optimization
- Clean Architecture: Separation of concerns, modularity
- Database Design: NoSQL schema design, CRUD operations
- UI/UX Development: Interactive desktop applications
- DevOps Practices: Containerization with Docker
- Build Automation: Gradle build system
- Biological Modeling: Ecosystem dynamics, population biology
- Simulation Theory: Agent-based modeling, emergent behavior
- Mathematical Modeling: Energy systems, probability distributions