- Authors:
This product is an exploration command center for the Island serious game.
- The
ca.mcmaster.se2aa4.island.team_XXX_.Explorer
class implements the command center, used to compete with the others. (XXX being the team identifier) - The
Runner
class allows one to run the command center on a specific map.
The exploration strategy is for now to stop exploring as soon as we start. We stay safe and fly back to base immediately.
mosser@azrael a2-template % mvn clean package
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.960 s
[INFO] Finished at: 2024-01-20T18:26:43-05:00
[INFO] ------------------------------------------------------------------------
mosser@azrael a2-template %
This creates one jar file in the target
directory, named after the team identifier (i.e., team 00 uses team00-1.0.jar
).
As the project is intended to run in the competition arena, this jar is not executable.
The project is not intended to be started by the user, but instead to be part of the competition arena. However, one might one to execute their command center on local files for testing purposes.
To do so, we ask maven to execute the Runner
class, using a map provided as parameter:
mosser@azrael a2-template % mvn exec:java -q -Dexec.args="./maps/map03.json"
It creates three files in the outputs
directory:
_pois.json
: the location of the points of interestsExplorer_Island.json
: a transcript of the dialogue between the player and the game engineExplorer.svg
: the map explored by the player, with a fog of war for the tiles that were not visited.
Each week, you'll have to tag
the version you want to submit for the competition. This version will be used in the weekly run. No tag means no competition.
The tag syntax is wX
, with X
the week number. So your product for the first week will be tagged w1
.
src/main/java/ca/mcmaster/se2aa4/island/team115/
├── Action.java # Action handling and execution
├── BatteryTracker.java # Battery management system
├── Coordinates.java # Coordinate system implementation
├── Direction.java # Direction enumeration
├── Drone.java # Drone control and navigation
├── Explorer.java # Main exploration logic
├── GridSearcher.java # Grid-based search algorithms
├── Info.java # Information processing
├── IslandFinder.java # Island detection and mapping
├── POIFinder.java # Point of Interest detection
├── POIMap.java # POI mapping and management
├── Runner.java # Application entry point
└── Translator.java # Command translation
- Language: Java 21
- Build Tool: Maven
- Testing Framework: JUnit 5
- Logging: Log4j 2.22.1
- Dependencies:
- Island Framework (Player & Runner) v3.0
- Apache Commons CLI
- JSON Processing
- Mockito (for testing)
-
Autonomous Navigation
- Grid-based exploration algorithm
- Efficient path planning
- Collision avoidance
-
Resource Management
- Battery level tracking
- Resource collection optimization
- Safe return path calculation
-
Mapping System
- Real-time island mapping
- POI detection and tracking
- Coordinate system management
-
Safety Features
- Battery level monitoring
- Emergency return protocols
- Boundary detection
The project includes comprehensive test coverage using JUnit 5 and Mockito. To run tests:
mvn test
The project includes several UML diagrams for better understanding:
- High-level class diagram
- Sequence diagrams
- Map representation diagrams
This project is licensed under the terms specified in the LICENSE.txt file.
- McMaster University SE2AA4 Course Team
- ACE Design Lab for the Island Framework