Read "Usage" section for instructions on running
Name | Handle | Maintains | Code Reviews | Tests | Git log |
---|---|---|---|---|---|
Dylan McKay | @mckaydyla | Pathfinding, Game logic | Entity, Parsing | git log --author="Dylan McKay" |
|
Mark Metcalfe | @metcalmark | Entity system | Parser | git log --author="Mark Metcalfe" |
|
Jacob Woods | @mckiewjaco | Controller, Audio | Game logic | Graphics | git log --author="J Woods" |
Jordan Milburn | @milburjord | Map parser | Entity, Pathfinding | git log --author="Aposematism" |
|
Josh Weir | @weirjosh | Game Graphics | GUI, Game logic | git log --author="Josh" |
Name | Link |
---|---|
Commit log | GitLab |
Branch list | GitLab |
Commit versus time graphs | GitLab |
History tree | GitLab |
Here Be The Title uses Maven for compilation and running tests.
All generated class files and executables are placed into the target/
folder.
The JAR must be run alongside the res/
folder. It is sufficient to create the JAR,
and put the res/
folder next to it to get it working.
# Creates an executable JAR file
# Will be placed at target/herebethetitle-0.0.1.jar
mvn package
# Compiles and runs all JUnit tests
mvn verify
All source code is located in the src/
folder.
All third-party libraries can be found in JAR form inside the lib/
folder.
com.swen.herebethetitle.pathfinding
This library implements the A* search algorithm.
This is used by the other libraries to perform tasks such as plotting a path for an enemy to take in order to attack the player.
Tests are located inside the com.swen.herebethetitle.pathfinding.test
package.
Pathfinding is done via the Graph
class with the findPath
method in particular.
This library is responsible for all updates to the game state.
In order to move a player on the board, interact with objects, or even attack an enemy,
the GameLogic
class is used.
This library is also responsible for
- Controlling the non playable characters, such as monsters.
- Timing and triggering of discussions with non-playable characters
Tests are located inside the com.swen.herebethetitle.logic.test
package.
com.swen.herebethetitle.entity
(and its subpackages)
This library implements both interative and static game objects such as items, NPCs, terrain elements and the like.
This is used by other libraries to load, save, interact and draw the game objects.
Interactions are handled by interact(), of which every entity has its own implementation.
Tests are located inside the com.swen.herebethetitle.entity.tests
package.
com.swen.herebethetitle.control
This library wraps the game graphics in a JavaFX application and handles events from user input. The Graphics library is used to draw the world. Menus are built here using JavaFX.
Controller also handles the "main loop", running from a JavaFX timeline that periodically calls update() internally, which calls internal methods and methods in GameLogic to update the game state and then renders the world.
Through the UI built by Controller, the player can load and save the game with the parsing library.
Library for playing sounds and songs in the main JavaFX thread. Loads all sounds as AudioClips internally on construct, which are then played when observer-pattern methods are called on it by the game logic, or externally by use of integer soundcodes to play specific sounds or songs.
com.swen.herebethetitle.parser
This library is responsible for rendering the game, World and HUD included. It has helper classes
for drawing text boxes, health bars, inventory slots, and also manages the transformation of
game world coordinates (grid based) into screen coordinates (pixel based).
com.swen.herebethetitle.graphics