https://github.com/evertras/awf
https://github.com/evertras/awf
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/evertras/awf
- Owner: Evertras
- Created: 2019-03-06T00:21:35.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-07T02:50:30.000Z (about 3 years ago)
- Last Synced: 2025-02-12T06:37:39.748Z (over 1 year ago)
- Language: Go
- Size: 1.95 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Advanced Warfare: Fantasy Battles
[](https://travis-ci.org/Evertras/awf)
[](https://goreportcard.com/report/github.com/Evertras/awf)
Planned to be a simple Advance Wars clone-ish with asymmetric fantasy style units
and an objective capture point system to determine a winner instead of total defeat
in order to promote interesting tactical decisions without a long slog near the end.
## Requirements
* [Task](https://taskfile.dev/#/installation)
* [go-wasm-rpc](https://github.com/Evertras/go-wasm-rpc).
You can run the following script to install all dependencies besides Go:
```bash
./tasks/deps.sh
```
## Gameplay Goals
See [Gameplay doc](docs/Gameplay.md) for more details.
* Selectable factions with asymmetric strengths in unit types
* Play on a predefined level against either a dead simple AI or another player (network)
* Fog of war necessitates scouting and encourages sneakiness
* Turn-based gameplay, units can move and/or attack once per turn
* Begin with one unit, spawn more each turn along your starting border
* Capture an objective by moving onto it with certain kinds of units
* Gain points for each controlled objective every turn
* Playable on web via HTML5
* A full game should be completed in about 10-20 minutes (narrow later based on what's actually fun)
## Technical Goals
* Write the core gameplay in Go, focused on the server
* Create a facade interface for a front end to reach in via WASM to know where things are
* Have the option to reasonably write a native front end (Ebiten?) in a similar fashion as web without much fuss
* No duplicate logic in back end and front end
* Use protobufs as data schemas for all code; not sure if this is a good idea, but want to try it to find out
## Initial Non-Goals
* No persistance or logins, everything is ephemeral in memory directly on the server
## Milestones
### 0.1.0 - Boilerplate
* [x] Server serves static content
* [x] WASM built that simply says "Hello World" to console when run
* [x] Index.html is mostly placeholder that loads WASM
* [x] Typescript compiled from main.ts entrypoint
* [x] Travis CI working and passing
* [x] A dummy test is passing in Typescript and Go lands
To verify, should see "Hello World" in console when loading page via server.
### 0.2.0 - Data definitions
* [x] Units defined in code
* [x] Terrain defined in code
* [x] Can load unit/terrain types via YAML
* [x] Map data defined in code
* [x] Sample prototype map can be loaded on demand
* [x] Game in progress defined in code with units belonging to different players on map
### 0.3.0 - Foundational logic
* [x] Functionality to determine potential movement for a unit on a map
* [x] General framework for commands and state changes
* [x] Ability to move a unit in code via command
### 0.4.0 - Front End Basic
* [x] A level is loaded via WASM call
* [x] The level is visible on screen with distinguishable terrain tiles
* [x] A few units are loaded via WASM call and visible on some tiles
* [x] The player can click the unit and see potential destinations, then click again to move the unit there (via WASM)
* [ ] The player can hit 'end turn' to start a new turn (no opponents yet)