C:\Users\Kevin\Projects\Splash>

JavaScript • Crisp Game Lib • Basketball Simulator

Splash

A basketball shooting simulator built around one-button shot timing, aim control, randomized basket height, simple animations, and retro arcade-style scoring feedback.

project: cmpm 170 one-button game prompt library: crisp game lib role: full game design + programming

./project_summary

Project Overview

Concept

Splash is a one-button basketball shooting game where the player holds input to aim a shot, releases to launch the ball, and tries to score through the rim.

Prompt

The game was created for a CMPM 170 one-button game prompt, focusing on simple input that still gives the player control over timing and direction.

Role

I coded and designed the entire game, including the shooting mechanic, scoring logic, animations, sound feedback, and overall gameplay loop.

./gameplay_loop

Gameplay Loop

Idle Animation

  • Before each shot, the player sprite slowly dribbles up to take the shot
  • The animation uses multiple sprites that switch after timed intervals
  • Boolean checks control when the player is preparing, shooting, or moving away
  • The same animation logic is used after the shot when the player runs off screen

Shooting

  • The player clicks and holds to begin aiming
  • An arrow appears to show the shot angle
  • Releasing the input launches the ball at the selected angle
  • The mechanic keeps the game simple while still giving the player meaningful control

Scoring

  • If the ball hits the gold rim from the top, the player scores
  • A shot is worth 1 point if the ball hits the backboard
  • A clean rim shot without hitting the backboard is worth 3 points
  • A firework animation and different sound effect play for a 3-point shot

Basket Variation

  • The basket height changes within a set randomized range
  • This creates shot variation between attempts
  • The game stays readable while still slightly changing the target
  • The randomized hoop position keeps the loop from feeling identical every shot

./worked_well

What Worked Well

Animation

The simple running and dribbling animations looked good and helped give the game a more complete arcade basketball feel.

Shot Release

The ball release mechanic functioned well because the player could clearly understand the relationship between the aim arrow and the launched shot.

Readability

The game is easy to understand and has a retro basketball vibe that fits well with the limited visual style of Crisp Game Lib.

./potential_improvements

Potential Improvements

Physics

  • The physics are not perfect
  • The ball does not always bounce realistically
  • Future versions could improve rim, backboard, and ball collision behavior
  • A more consistent bounce model would make the scoring feel cleaner

Difficulty Scaling

  • The game does not significantly scale in difficulty over time
  • The main variation comes from randomized basket height
  • Future versions could increase shot pressure as the score rises
  • Additional scaling could include faster aiming, wind, or moving basket behavior

Color Limits

  • Crisp Game Lib has a limited color scheme
  • This made it difficult to use a realistic basketball color like orange
  • Future versions could use a custom renderer or different art approach
  • The current style still works as a retro arcade presentation

Expanded Feedback

  • Add more scoring effects for made shots
  • Create stronger miss feedback
  • Add more variation between 1-point and 3-point shots
  • Use extra visual polish to make high scores feel more rewarding

./tech_stack

Technical Focus

JavaScript Crisp Game Lib Visual Studio Code One-Button Design Basketball Simulation Timing Mechanics Projectile Motion Sprite Animation Arcade Scoring Retro Game Feel
Previous
Previous

Field Goal

Next
Next

Abscond