project 18

2D-tovenaarsgevecht & desktopsimulaties

Twee desktopgame- en simulatieprojecten, vanaf nul gebouwd op objectgeoriënteerde principes, een eigen game loop en een zelfgeschreven physics-engine.

Categorie
Games & Tools
Rol
Onafhankelijk ontwikkelaar — game loop, physics en interface
Jaar
2025 – 2026

gebruikte technologieën

  • Java
  • Swing
  • Graphics2D
  • C#
  • OOP
  • NetBeans

probleem

Probleem

Objectgeoriënteerde programmeerprincipes, collisie- en physics-algoritmes en dynamische pathfinding-logica moesten in een desktopomgeving worden gesimuleerd zonder framerateverlies.

oplossing

Oplossing

In Java en Swing heb ik een modulaire game engine-structuur gebouwd rond overerving, polymorfisme en encapsulatie. AABB-collisiedetectie, projectielmechanica, levensbalken en toestandsbeheer heb ik vanaf nul ontwikkeld, evenals pathfinding-algoritmes over een dynamisch grid en mijnenveld.

resultaat

Resultaat

Het resultaat is een reeks desktopapplicaties en simulaties zonder geheugenlekken en met een vloeiende framerate, waarin twee spelers gelijktijdig via toetsenbordbesturing kunnen strijden.

belangrijkste functies

  • 01Modulaire game engine-structuur rond overerving, polymorfisme en encapsulatie.
  • 02Zelfgeschreven AABB-collisiedetectie, projectielmechanica en levens-/energiebeheer.
  • 03Pathfinding-algoritmes over een dynamisch grid en mijnenveld.
  • 04Een game loop met vloeiende framerate waarin twee spelers gelijktijdig via het toetsenbord strijden.

waarom deze keuzes

Waarom geen kant-en-klare game engine?

Het doel was niet een game uitbrengen, maar begrijpen hoe de game loop en physicsberekeningen werken door ze zelf te schrijven. Een kant-en-klare engine verbergt die laag. Mijn eigen loop met vaste tijdstap op Graphics2D schrijven maakte threadbeheer en timinglogica direct zichtbaar.

Waarom vaste tijdstappen?

Framerate-afhankelijke updates geven op snelle en trage machines ander physicsgedrag. Met een vaste tijdstap levert de physics overal hetzelfde resultaat; renderfrequentie en simulatiefrequentie lopen onafhankelijk van elkaar.

Denk je aan een soortgelijk project?