Skip to content

Al-rimi/splash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gameplay Cover Page

Content

Overview

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.

Release Summary

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

View detailed change log

Key Features

  • 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

Screenshots

Welcome Screen Main Menu Gameplay
Welcome Screen Main Menu Gameplay
Store Settings Game Over
Store Settings Game Over

Installation

Prerequisites

  • Java 21 JDK
  • Maven 3.6+

Build & Run

git clone https://github.com/Al-rimi/splash.git

cd splash

mvn clean package

java -jar target/splash-1.0.0.0.jar

Windows Installer

Download the pre-built installer for Windows:
Splash_Setup.exe

Game Architecture

Splash follows a modular, component-based architecture with clear separation of concerns:

Software Architecture

Layers:

  1. Presentation Layer: JavaFX UI components and rendering
  2. Application Layer: Screen management and transitions
  3. Domain Layer: Core game logic and entities
  4. Data Layer: Persistent storage and resource management

Class Diagrams

Entity Hierarchy

Entity Class Diagram

Game Systems

Game Systems Diagram

Screen Management

Screen Management

Game Systems

Collision Handling

Collision Process

Game Loop

Game Loop

Data Persistence

Data Flow

Key Implementation

// 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);
}

Future Enhancements

  • 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

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

JavaFX-based Game

Topics

Resources

License

Stars

Watchers

Forks