This repository contains the Part 1 "Abstract Engine" codebase for INF1009 Object Oriented Programming. The goal for Part 1 is to build a non-contextual engine (no simulation/game-specific logic) that can be reused for many simulations.
Base package: sg.edu.sit.inf1009.p2team2
- Java 17
- Gradle (wrapper included)
- libGDX (
core+lwjgl3)
./gradlew lwjgl3:runcore/: engine code shared by all platformslwjgl3/: desktop launcher (LWJGL3)
Key entrypoints:
core/src/main/java/sg/edu/sit/inf1009/p2team2/Main.java(placeholder application)lwjgl3/src/main/java/sg/edu/sit/inf1009/p2team2/lwjgl3/Lwjgl3Launcher.java(desktop launcher)
This repo currently contains a skeleton implementation (class names + file structure + method signatures + TODOs). Do not add context-specific simulation logic in Part 1.
Managers (must-have):
-
Scene Management (Owner: Ivan)
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/managers/SceneManager.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/scenes/Scene.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/scenes/MenuScene.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/scenes/SettingsScene.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/scenes/LeadershipBoardScene.java
-
Entity Management (Owner: Nat)
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/managers/EntityManager.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/ecs/Entity.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/ecs/Component.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/ecs/components/*
-
Movement Management (Owner: Hasif)
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/managers/MovementManager.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/systems/MovementSystem.java
-
Input/Output Management (Owner: HongYih)
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/managers/InputManager.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/input/*core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/managers/OutputManager.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/output/*
-
Collision Management (Owner: Cody)
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/collision/*
-
Configuration Management (Owner: Alvin)
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/config/*
Shared wiring:
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/core/EngineContext.javacore/src/main/java/sg/edu/sit/inf1009/p2team2/engine/world/World.java
UI models (used by scenes):
core/src/main/java/sg/edu/sit/inf1009/p2team2/engine/ui/*
- One owner per core file. Only the owner edits their file unless agreed.
- Use feature branches:
feature/<name>-<area> - Keep commits small and descriptive (avoid sweeping reformatting).
- Before pushing/PR:
./gradlew :core:compileJava :lwjgl3:compileJava- Ivan: implement scene stack behavior + transitions + UI input handling.
- Nat: extend ECS/entity lifecycle and provide safe iteration/query helpers.
- Hasif: integrate MovementManager/System with EntityManager queries and delta-time updates.
- HongYih: wire libGDX input + rendering + audio implementations behind the facades.
- Alvin: implement config load/save, observers, defaults, and typed accessors.
- Cody: implement collision detection/resolution + collision events.