Skip to content

A clone of the classic Arcade games Pac-Man / Ms. Pac-Man with a JavaFX UI (2D+3D).

License

Notifications You must be signed in to change notification settings

armin-reichert/pacman-javafx

Repository files navigation

A JavaFX UI (2D + 3D) for Pac-Man and Ms. Pac-Man

ℹ️ Online version available

An older release of Pac-Man and Ms. Pac-Man (2D) can be played online:

This has been made possible thanks to the WebFX transpiler technology (👏 to Bruno Salmon).

About this project

This is an implementation of the classic Arcade games Pac-Man and Ms. Pac-Man in a JavaFX user interface. The game implementation is completely decoupled from the user interface such that also different user interfaces (e.g. a Swing UI) can be implemented without any change to the game code. (When developing the game, I originally maintained a Swing and a JavaFX UI in parallel to validate the UI abstraction, however the Swing UI got outdated and has been abandonded.)

There is a 2D-only user interface version and an extended version where the play scene can be switched between 2D and 3D, even during the gameplay (key combination Alt+3). The game implementation tries to mimic the original Arcade version as good as possible, however there are some differences, e.g. in the "attract mode" behaviour, or the bonus behaviour in the Ms. Pac-Man game.

How to run

In each release you find attached 3 installers.

  • On Windows, the application must be uninstalled first (if already installed), otherwise the installer crashes (no idea why).
  • The Linux (.deb) installer has only been tested on Ubuntu inside a VM, it worked after installing the FFMPeg library (see linux-issues.md).
  • The Mac-OS (.dmg) version has not been tested at all, any help is appreciated.

How to build

Prerequisites: You need to have JDK 21 and Git installed on your computer.

  • git clone https://github.com/armin-reichert/pacman-javafx.git
  • cd pacman-javafx
  • ./gradlew jpackage or just make (Windows)

This will create

  • an installer (.msi/.deb/.dmg depending on your platform) for the 2D-only game (subdirectory ui-2d/build/jpackage)
  • an installer for the full game (subdirectory ui-3d/build/jpackage)
  • an installer for the map editor (subdirectory mapeditor/build/jpackage)

Running the application(s) using Gradle

  • Pac-Man 2D: ./gradlew ui-2d:run
  • Pac-Man 3D: ./gradlew ui-3d:run

To be able to create the Windows executables, you need to have the following tools installed:

as described in the JavaPackager guide (👏 to Francisco Vargas Ruiz).

I also had to add the paths "C:\Program Files (x86)\WiX Toolset v3.11\bin" and "C:\Program Files (x86)\Inno Setup 6" to my PATH variable.

How to use the application

Start screen:

  • V, LEFT Select next game variant
  • RIGHT Select previous game variant
  • ENTER or SPACE Start game

Intro screen:

  • 5 Add credit ("insert coin")
  • 1 Start the game
  • H Show/hide context-sensitive help

The keys 5 and 1 have been chosen because the MAME emulator uses them too.

Pac-Man steering:

  • Pac-Man is steered using the cursor keys. When the dashboard is open, the cursor keys might also change slider values etc. To avoid this, you can also steer using CTRL+cursor key.

General shortcuts:

  • F11 Enter full-screen mode
  • Esc Exit full-screen mode
  • Alt+3 Toggle 2D and 3D display of play scene
  • QQuit current scene and show start screen
  • Alt+M Mute/unmute

Intro screen shortcuts:

  • Alt+C Play the cut scenes

Play screen shortcuts:

  • F1 or Alt+B Toggle the dashboard display
  • F2 Toggle the picture-in-picture view
  • Alt+Shift+E Open the Map Editor (available only for Pac-Man XXL game variant)
  • Alt+LEFT Select previous camera perspective
  • Alt+RIGHT Select next camera perspective

Cheats:

  • Alt+A Toggle manual/autopilot steering mode
  • Alt+E Eat all pellets (except the energizers)
  • Alt+I Toggle immunity of player against ghost attacks
  • Alt+L Add 3 player lives
  • Alt+N Enter next game level
  • Alt+X Kill all ghosts outside of the ghost house

How it looks (Click to play video)

2D Play Scenes

Pac-Man Play Scene

Pac-Man Play Scene New

Ms. Pac-Man Play Scene

3D Play Scenes

Pac-Man Play Scene

Pac-Man Play Scene New

Ms. Pac-Man Play Scene

Tile map editor

Map Editor