TubagusDafa
Academic / University
Game Development

YuSurg

RoleSoftware Engineer
Timeline2025-112025-12
OrganizationUniversity of Indonesia - Computer Engineering Undergraduate

Developed YuSurg, a 2D medical simulation game requiring players to perform emergency surgical procedures, manage fluctuating patient vitals, and strategically treat randomized maladies. The project was built using the Java-based LibGDX framework to demonstrate mastery of the four pillars of Object-Oriented Programming (OOP) and six GoF Software Design Patterns.

yusurg.png

Software Architecture & Design Patterns

Constructed the core application using a Model-View-Controller (MVC) architecture, decoupling business logic, UI rendering, and input handling:

  • Singleton Pattern: Applied in the core GameManager class to prevent data duplication and manage a single, global source of truth for the game state across all rendered screens.
  • Factory Pattern: Implemented a MaladyFactory to instantiate randomized patient illnesses based on user-selected difficulty parameters and scaling algorithms.
  • Observer Pattern: Designed a decoupled PatientObserver interface to link backend data models with the UI layer, enabling real-time graphical updates for fluctuating patient vitals (e.g., pulse and core temperature).
  • State Pattern: Structured PatientState logic to dynamically alter patient behavior (e.g., variable pulse decay rates) based on their current condition, using defined states such as StableState, CriticalState, and DeadState.
  • Template Method Pattern: Established a standardized algorithmic framework within the abstract SurgicalTool class, allowing specific subclass tools to execute distinct validation checks, animations, and mathematical effects.
  • Command Pattern: Encapsulated UI button interactions within ToolCommand interfaces, separating input handling from the business logic of surgical instruments.

Object-Oriented Programming (OOP) Principles

  • Encapsulation: Secured Patient data variables behind private access modifiers, exposing only validated getter and setter methods to enforce data access contracts during state transitions.
  • Inheritance: Designed a hierarchical tool system where specific surgical instruments (e.g., Scalpel, Defibrillator, Stitches) inherit properties and operational methods from a unified abstract parent class.
  • Polymorphism: Leveraged method overriding within the state pattern architecture, allowing the generic update() method to execute different mathematical and rendering behaviors depending on the patient's active state.
  • Abstraction: Hid internal execution requirements and RNG (Random Number Generator) fail-rate algorithms behind a simplified use() method interface.

Backend Infrastructure (REST API)

  • Framework: Built a backend REST API using Spring Boot 3 (managed via Gradle) to manage player progression logic and global leaderboards. Integrated Lombok to reduce boilerplate across data model classes.
  • Database & ORM: Configured dual-environment database support combining H2 Database for local development and a PostgreSQL database hosted on Neon Cloud for production. Adopted Spring Data JPA/Hibernate for Object-Relational Mapping (ORM).
  • Security: Implemented JWT-based authentication and route-level access control via Spring Security.

FinalReport_Kelompok25_OOP.png

Core Competencies

Java, LibGDX, Spring Boot, PostgreSQL, Object-Oriented Programming (OOP), Software Design Patterns, REST API Architecture