- Project Overview
- Key Features
- Screenshots
- Installation
- Game Architecture
- Class Diagrams
- Game Systems
- Future Enhancements
- License
- Changelog
Splash is a JavaFX-based Feeding Frenzy-style game where players control a fish navigating an underwater environment. The game features size-based progression mechanics, intelligent NPC behavior, parallax scrolling, and multilingual support. Developed as part of the Comprehensive Java Practice course at Zhejiang Normal University.
v1.0.0.1 - June 8, 2025
Splash 1.0 introduces core gameplay with size progression, intelligent NPC behaviors, and multilingual support. Highlights include:
- Size-based progression system
- Three-tier NPC intelligence
- Localization (EN/AR/ZH)
- Profile saving/loading
- 6 interactive game screens
- Size-based progression system - Grow by consuming smaller fish
- Hierarchical AI - Three intelligence levels for NPC fish (basic, intermediate, advanced)
- Parallax rendering - Depth-based visual effects for underwater immersion
- Optimized collision detection - Circular hitboxes with size-based resolution
- Multi-language support - English, Arabic, and Chinese localization
- Data persistence - Save/load player profiles and configuration
- Screen management system - Smooth transitions between game states
- Configurable settings - Adjust difficulty, rendering, and gameplay parameters
| Welcome Screen | Main Menu | Gameplay |
|---|---|---|
![]() |
![]() |
![]() |
| Store | Settings | Game Over |
|---|---|---|
![]() |
![]() |
![]() |
- Java 21 JDK
- Maven 3.6+
git clone https://github.com/Al-rimi/splash.git
cd splash
mvn clean package
java -jar target/splash-1.0.0.0.jarDownload the pre-built installer for Windows:
Splash_Setup.exe
Splash follows a modular, component-based architecture with clear separation of concerns:
- Presentation Layer: JavaFX UI components and rendering
- Application Layer: Screen management and transitions
- Domain Layer: Core game logic and entities
- Data Layer: Persistent storage and resource management
// NPC Advanced AI Behavior
private void advanced(double deltaTime) {
FishEntity player = findNearestPlayer();
FishEntity nearestEnemy = findNearestEntity(true);
if (player != null && player.size < size)
pursue(player.getX(), player.getY(), speed*1.2, 0.1);
else if (player != null)
fleeFrom(player.getX(), player.getY(), speed*1.2, 0.1);
if (nearestEnemy != null)
fleeFrom(nearestEnemy.getX(), nearestEnemy.getY(), speed*1.2, 0.1);
else
wander(deltaTime, directionChangeInterval*0.5, speed, 0.05);
}- Multiplayer support - Online leaderboards and PvP modes
- Flocking behaviors - Realistic fish school simulations
- New environments - Arctic waters, coral reefs, deep-sea trenches
- Power-up system - Temporary abilities and boosts
- Ecosystem simulation - Complex food chain dynamics
- Environment-aware navigation - AI that navigates around obstacles
This project is licensed under the MIT License. See the LICENSE file for details.













