// project

DodgeBall

DodgeBall

Overview

DodgeBall is a custom Garry's Mod gamemode built in Lua that recreates dodgeball as a complete round-based multiplayer experience inside the sandbox engine.

Rather than functioning as a simple weapon or minigame script, the project defines a full gameplay loop with scoring, round flow, ball interaction rules, bot support, admin controls, and map rotation behaviour.

It is a good example of general programming skill in gameplay systems design, because it combines rules, state management, AI behaviour, configuration, and player-facing feedback into a coherent multiplayer mode.

Key Features

Round-Based Match Flow

  • Players compete until a score cap is reached or the round timer expires
  • Winning conditions are enforced by gamemode logic rather than ad-hoc sandbox play
  • Supports structured sessions with clear start, end, and winner states

Ball Interaction Rules

  • Balls can be thrown, caught, dropped, and picked up according to timing-based rules
  • Catching requires correct player state and precision timing
  • Bounced balls become interactable after a delay, allowing rebound and recovery play
  • Uncollected balls are cleaned up after a configurable period

Player Flow and Equipment Recovery

  • If a player does not pick up a ball after a period of time, the mode gives them one
  • Keeps the match moving and prevents gameplay from stalling
  • Reduces downtime and supports a more reliable competitive loop

Bot AI

  • Includes built-in bot support with configurable difficulty
  • Bots can be enabled, disabled, added, or removed through commands
  • Makes the gamemode usable for testing, small servers, and non-full lobbies

Admin and Server Tooling

  • Includes a primitive admin menu
  • Includes optional map voting and MOTD systems
  • Exposes console commands for ending rounds and controlling bots
  • Allows operators to manage the mode without editing code directly

Feedback and Presentation

  • Includes kill announcer events such as first blood and multi-kill callouts
  • Improves match pacing and gives the mode a stronger arcade identity
  • Adds player feedback beyond basic damage and death events

Architecture

The gamemode layers a structured competitive ruleset on top of Garry's Mod's sandbox systems.

Player Input + Ball Entities
        ->
Gamemode Rules and Round State
        ->
Score / Timer / Win Conditions
        ->
Bot Logic + Admin Controls
        ->
Match Outcome and Rotation Flow

Technical Highlights

Full Gamemode Programming

This project is more substantial than a typical addon because it defines a complete gamemode rather than one isolated mechanic.

That includes:

  • scoring logic
  • round state transitions
  • player equipment flow
  • ball lifecycle rules
  • bot behaviour
  • map and server utility features

Rule-Driven Gameplay Design

Dodgeball only works well when the rules are explicit and enforced consistently.

The gamemode therefore had to define and coordinate:

  • when a ball counts as catchable
  • when it becomes pick-up eligible after a bounce
  • when it should be removed from the world
  • when a replacement ball should be issued
  • how wins and round endings are resolved

This is a strong example of translating a real-world game into deterministic game logic.

Bot and Multiplayer Support

Supporting bots inside a multiplayer Garry's Mod gamemode adds a layer of complexity beyond player-only scripting.

Bot support improves the project as a programming showcase because it demonstrates:

  • state-aware AI behaviour
  • game loop participation by non-player agents
  • configurable difficulty and control
  • support for incomplete or test lobbies

Operator-Focused Controls

The project includes administrative and server-facing tools such as map voting, menu toggles, and console commands.

That makes it practical for actual community use rather than only as a local prototype or proof of concept.

Example Use Cases

Community Server Gamemode

  • Run structured dodgeball matches on a Garry's Mod server
  • Offer a distinct rules-based experience separate from sandbox play

Bot-Assisted Testing and Play

  • Use bots to test balance and match flow
  • Fill lobbies when there are not enough real players

Event or Minigame Rotation

  • Add the gamemode as part of a larger server rotation
  • Use score caps and timers to support short, replayable sessions

Problem Solved

Garry's Mod makes it easy to spawn props and improvise games, but informal play usually lacks:

  • enforced rules
  • reliable scoring
  • proper round flow
  • consistent feedback
  • server controls

DodgeBall solves that by turning a familiar real-world game into a reusable multiplayer system with explicit mechanics and match structure.

Design Philosophy

  • Simple concept, solid rules: the game idea is easy to understand, but the implementation should feel dependable.
  • Fast feedback: keep players active and reduce downtime where possible.
  • Server-ready: include the controls needed for actual multiplayer hosting.
  • Replayable by design: use score caps, timers, and bots to support repeated short matches.

Outcome

DodgeBall was released on the Steam Workshop as a complete Garry's Mod gamemode and published alongside its source code on GitHub.

It remains a strong portfolio example of:

  • Lua gameplay programming
  • multiplayer rules implementation
  • game state management
  • bot integration
  • user-facing server tooling

Video Showcase