snengame/README.md

63 lines
2.0 KiB
Markdown
Raw Normal View History

2021-07-16 15:52:18 -04:00
# Defense of the SnederDome
A quick and dirty prototype of a game server for snengame.
2021-07-23 12:10:49 -04:00
Contains local debug isntance (engine), server (server), and a client (client).
2021-07-16 15:52:18 -04:00
Written in-between concussion dizzy spells; some decisions made to minimize having to think hard about them.
2021-07-23 12:10:49 -04:00
Other decisions made to deal with Websockets, which I'm learning as I go, and having multiple games running.
2021-07-16 15:52:18 -04:00
## What's implemented
* Most cards (Jokers are Valkyires)
* Playing, moving, attacking cards
* A hacky loop to test out game commands
2021-07-23 12:10:49 -04:00
* Janky client and server
2021-07-16 15:52:18 -04:00
## What's not implemented
* Ready checking
2021-07-23 12:10:49 -04:00
* Multiple matches in server
* picking who goes first
## How to build
Run "make all" to generate all three binaries (engine,client,server).
Otherwise, run "make [binary name]" to geneerate a specific one.
2021-07-16 15:52:18 -04:00
## How to test
2021-07-23 12:10:49 -04:00
Run the engine binary to use the built in game loop.
2021-07-16 15:52:18 -04:00
Commands are entered like so:
2021-07-16 15:53:50 -04:00
2021-07-16 15:52:18 -04:00
s|a <player id> <command character> arguments
State Commands:
2021-07-16 15:53:50 -04:00
2021-07-16 15:52:18 -04:00
d: Print debug screen
g: Print game screen
b: Begin game
s: Start turn
e: End turn
Action Commands:
2021-07-16 15:53:50 -04:00
2021-07-16 15:52:18 -04:00
s: Scry your life points in cards
d <x>: Draw card at position x from your most recent scry
p <x> <y>: play card at postion x in your hand to postion y on your side of the board (from the left)
m <x> <y>: move card at position x on the board to position y on the board
a <x> <y>: attack position y with card at position x on the board
Example Commands:
2021-07-16 15:53:50 -04:00
2021-07-16 15:52:18 -04:00
s 1 d: (available to both players at any time) show debug screen
s 1 g: (available to both players at any time) show game screen
s 1 s: Start Player 1 (Sentinal)'s turn
a 2 p 0 1: Player 2 (Scourge) places the card at hand position 0 on board position 1
a 2 d 2: Player 2 (Scourge) draws the card at position 2 of their most recent scry
## Other notes:
Player 1 (the top side of the board) is known as Sentinal.
Player 2 (the bottom side of the board) is known as Scourge.
Yes these are from DOTA Allstars
Any player can begin the game; whichever player presses the start command first goes first