Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs: update the game description, split the contributor guide #61

Merged
merged 1 commit into from
Jan 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Contributor Guide
=================

## Development requirements

- JDK 16

## Desktop client

To run the standalone game client, use the following shell command:

```console
$ ./gradlew client:run
```

## Web client

To run the web version of the game, use the following shell command:

```console
$ ./gradlew web:frontend:build
```

Then open a file `web/frontend/build/www/index.html` using a web browser.

## Game server

To run the game server, use the following shell command:

```console
$ ./gradlew web:run
```

## Testing

To execute the test suite, run the following command in your shell:

```console
$ ./gradlew test
```

### Logging
For debugging purposes you might want to enable trace logging. To do that, open file `src/log4j.properties` and replace
`DEBUG` with `TRACE`.
62 changes: 22 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,37 @@
Hyperspace [![Status Umbra][status-umbra]][andivionian-status-classifier]
==========
Hyperspace is a network multiplayer game designed for two players, a re-implementation of [Slingshot][slingshot]. It consists of a dedicated server application and a client application.

Hyperspace is a [Slingshot][slingshot] clone written in Clojure and Kotlin.

Game Description
----------------
![Gameplay Footage][gameplay]

## Development requirements

- JDK 16

## Desktop client

To run the standalone game client, use the following shell command:

```console
$ ./gradlew client:run
```

## Web client

To run the web version of the game, use the following shell command:
Hyperspace is a turn-based physic simulator game. There are two players and a number of planets on the game field. Each player shoot a missile during each turn (but he could choose to skip the turn; that could also happen due to turn timeout); missiles behave as a bodies of mass in a static environment with Newtonian physics. Only missiles and planets have mass; missiles, planets and players also have a collision radius that should be taken into account by the simulation.

```console
$ ./gradlew web:frontend:build
```
If the player is hit by enemy's missile, he's dead. If the missile hits the planet surface, then the missile explodes. If the missile hits the game world boundaries, it's considered "lost".

Then open a file `web/frontend/build/www/index.html` using a web browser.
Player controls the shot power (in some diapason allowed by server) and direction.

## Game server
The player turns are performed simultaneously. If both of the players are hit by enemy missiles at the same turn, the game is a tie.

To run the game server, use the following shell command:
Current Project Status
----------------------
- [ ] Server implementation (ongoing)
- [ ] Client re-implementation
- [x] Obsolete local client (to be removed after the re-implementation)

```console
$ ./gradlew web:run
```
Usage
-----
For now, only run from sources is supported. See the [Contributor Guide][docs.contributing] for the information on that.

## Testing

To execute the test suite, run the following command in your shell:

```console
$ ./gradlew test
```

### Logging
For debugging purposes you might want to enable trace logging. To do that, open file `src/log4j.properties` and replace
`DEBUG` with `TRACE`.
Documentation
-------------
- [Contributor Guide][docs.contributing]
- [License (MIT]][docs.license]

[andivionian-status-classifier]: https://github.com/ForNeVeR/andivionian-status-classifier#status-umbra-
[docs.contributing]: CONTRIBUTING.md
[docs.license]: LICENSE.md
[gameplay]: docs/footage.gif
[slingshot]: https://web.archive.org/web/20120226132228/http://slingshot.wikispot.org/

[status-umbra]: https://img.shields.io/badge/status-umbra-red.svg

[gameplay]: docs/footage.gif
Loading