Convex Merger is an area maximisation game based on the idea of merging convex shapes. The goal of the game is to claim as large an area as possible while competing against your opponents that try to do the same. To do this you can either claim new objects for your own or merge already claimed objects with other objects to also claim the area between them. It is possible to play the game with up to 4 players of which some can be AIs and it is also possible to play online multiplayer. The game ends when the active player has no moves left.
The goal of the game is to maximise the area of the playfield you own by claiming and merging objects into new convex objects. In every turn you can do the following:
- Click an unowned object to claim it for yourself.
- Click an object you already own and then select a second object either owned by you or unowned. If there are no objects on what will become the boundary of the new convex object the merge will succeed. Objects fully contained in the newly created convex object will be stolen from their current owner.
The game ends when the player whose turn it is has no possible moves available. You can visualise merging two objects as spanning an elastic band around both objects, the resulting shape is the new convex object. A merge of two objects is shown below:
When generating the playfield you can control the object size, density and spacing. The exact function of these parameters is as follows:
- Object size: Controls the size of the playfield objects.
- Density: Controls how much of the playfield is initially covered by objects.
- Spacing: Controls how much space there is between the objects. The spacing also affects the object size, with a larger spacing resulting in smaller objects.
Requires Java 8 or higher
The game has built in support for playing online multiplayer. Here one player will act as the host and all other players will connect to this host. If the host and all other players are on the same local network (e.g. WiFi), then players can connect to the host using the local IPv4 address of the host. If you want to play with remote players, then it is required for the host to portforward port 11111 and players can then connect using the external IP of the host. Please make sure you know what you are doing if you set this up and only play with people you trust.
- Roan: Game Design & Implementation
- RockRoller: UI Design & Logo
- Thiam-Wai: Playfield Generation
- Emiliyan: Vertical Decomposition
- Phosphor Icons: UI Icons
- Cadson Demak: Pridi Font
This is an Eclipse + Gradle project with Util as the only dependency. Development work can be done using the Eclipse IDE (already setup) or using any other Gradle compatible IDE (manual setup). CI will check that all source files use Unix style line endings (LF) and that all functions and fields have valid documentation.
Project development started: 20th of November, 2021.
Project due date: 30th of January, 2022.