# AquaDX

Multipurpose game server powered by Spring Boot, for ALL.Net based games

This is a forked maintaining attempt of the [original Aqua server](https://dev.s-ul.net/NeumPhis/aqua)

### Supported Games

Below is a list of games supported by this server. 

| Game                      | Ver  | Codename      | Thanks to                                  |
|---------------------------|------|---------------|--------------------------------------------|
| SDHD: CHUNITHM (Chusan)   | 2.16 | SUN Plus      | [@rinsama](https://github.com/mxihan)      |
| SDEZ: MaiMai DX           | 1.40 | BUDDiES       | [@肥宅虾哥](https://github.com/FeiZhaixiage)   |
| SDED: Card Maker          | 1.34 |               |                                            |
| SBZV: Project DIVA Arcade | 7.10 | Future Tone   |                                            |
| SDDT: O.N.G.E.K.I.        | 1.39 | bright MEMORY | [@Gamer2097](https://github.com/Gamer2097) |

Check out these docs for more information.
* [Game specific notes](docs/game_specific_notes.md)
* [Frequently asked questions](docs/frequently_asked_questions.md)

### Notes
* Some game may require additional patches and these will not provided in this project and repository. You already found this, so you know where to find related resources too.
* This repository may contain untested, experimental implementation for few games which I can't test properly. If you couldn't find your wanted game in the above list, do not expect support.
* This server also provides a simple API for viewing play records and edit settings for some games.

### Usage
Requirements:
* Java 17 or above (for running JAR)
* Optional databases: MariaDB 10.6.x (recommended) or MySQL 8.0.x

Run `java -jar aqua-x.x.xx-RELEASE.jar`

By default, Aqua will use sqlite and save user data in data/db.sqlite.

If you want to use optional databases, edit configuration file then it will auto create the table and import some initial data.

### Configuration
Configuration is saved in `config/application.properties`, spring loads this file automatically.

* The host and port of game title servers can be overritten in `allnet.server.host` and `allnet.server.port`. By default it will send the same host and port the client used the request this information.
This will be send to the game at booting and being used by following request.
* You can switch to MariaDB (or MySQL) database by commenting the Sqlite part.
* For some game, you might need to change some game specific config entries.

### Building
You need to install JDK on your system. However, you don't need to care about Gradle, as wrapper script is included.
```
gradlew clean build
```
The `build/libs` folder will contain an jar file.

### Credit
* **samnyan**: The creator and developer of the original Aqua server
* **Akasaka Ryuunosuke** : providing all the DIVA protocol information
* Dom Eori : Developer of forked Aqua server, from v0.0.17 and up
* All devs who contribute to the [MiniMe server](https://dev.s-ul.net/djhackers/minime)
* All contributors by merge request, issues and other channels
