Mountain Group 105 is a rogue-like video game originally created as part of a software design course, with the following premise:
You are a group of four weary travellers. You have been walking for so long that you no longer have any memory of where you came from or who you are. You cannot recall anything but the endless action of putting one foot in front of the other, traversing this empty landscape. Suddenly, you look up, startled out of your reverie. An imposing mountain looms before you. Your party steps forward, drawn to it for some inexplicable reason. You crane your neck to see if you can make out the peak, but the morning mist impedes your view. You all know you cannot go back to wherever you came from. You have to keep going. You have to climb the mountain. Maybe whatever waits for you up there will remind you of who you are… and what you’re searching for.
IntelliJ IDEA (IDE) Instructions
First download the latest source code from here and extract it.
Next, open the project in IntelliJ by going to to
File > Open, and navigating to the folder created in the last step.
Next, if IntelliJ does not immediately recognize the fact this is a Gradle project (you can tell by the lack of a
Gradle tab on any of the edges), navigate to the
build.gradle file in the IDE.
An icon with an elephant should appear, click it.
There should now be a
Gradle tab on one of the edges.
Finally, open the
Gradle tab and navigate to
course-project-group-105 > Tasks > application and double-click
Command-Line (CLI) Instructions
First, this project requires Java 17, so make sure that is installed.
Next download the source code and change into that directory which can either be done by
fossil clone https://vcs.pta.gg/mg105
if you do not have Fossil installed.
Finally, this is a standard Gradle project, so to start the application simply run
in the Windows CMD, or
on any Unix-like operating system (or the built-in IntelliJ IDEA terminal).
As a complete game, Mountain Group 105 features
- a randomly generated room-based map,
- the ability to change the character on the map,
- a progressively updating minimap that only shows currently discovered rooms,
- a turn-based battle sequence,
- an inventory system (with health potions and upgrade tokens),
- an item-based character upgrade system,
- an interactive controls display,
and it has been balanced so that it plays decently well!
Exercise to the reader: match a feature to each of the four screenshots at the top of this README.
Being part of a specific course, this project strictly adheres to Robert Martin's Clean Architecture.
The code is packaged by layers where
com.mg105.entitiescontain the enterprise business rules,
com.mg105.use_casescontain the application business rules,
com.mg105.interface_adapterscontain the interface adapters, and
com.mg105.data_controlboth contain frameworks and drivers.
Additionally the code makes use of a plethora of design patterns including
- facade pattern in
- simple factory pattern in
- builder pattern in
- chain of responsibility pattern in
- observer pattern in
- mediator pattern in
- dependency injection in essentially all the classes.
Changes Since Initial Release
Since the original release, the only changes have been a complete UI overhaul (the core functionality and overall architecture is essentially unchanged). The marking scheme allocated no marks for how pretty it looked, and so no time was spent on that. In particular the overhaul aims to improve
- lack of consistent game resolution,
- unintuitive and inconsistent controls (some buttons, some keyboard), and
- lack of any real graphics or use of colour.
A full diff of these changes can be found here.
Note for Apple Silicon Users
Mountain Group 105 has a hard dependency on JavaFX, which has been flaky on Apple Silicon chips. The game may not be playable on your hardware.
Note for Tiling Window Manager Users
Put your window manager into its floating mode before starting the game. The game expects a constant, self-set resolution, which tiling window managers tend to violate.