A simple game of hexagonal tiles.
Note: This requires that you have the .NET 9 SDK installed on your machine.
- Clone the repository.
- Open the BadgerClan.sln file to load the solution.
- Select the "Client and Server" startup project

- Press F5 to run the game (or click the solid green "Start" button).
- A web browser will open to the BadgerClan lobby. Type in a name for your game and click the "Create New Game" button.
- You will also see a new terminal open (it may be minimized, check your taskbar). It should say something like "Welcome to the Sample BadgerClan Bot!"
- Go to "Running the game" below.
- Clone the repository
- Open the directory in VS Code
- In one terminal window, cd into the BadgerClan.Web directory (
cd BadgerClan.Web) and then rundotnet run - Open a browser to http://localhost:5172 Type in a name for your game and click the "Create New Game" button.
- In another terminal window, cd into the BadgerClan.Client directory (
cd BadgerClan.Client) and rundotnet run - Go to "Running the game" below.
- Copy the http://localhost address from the Client terminal window, and paste it into the "Custom" box back in the browser. Click the "Join Game" button.
- Now add a few of the other types of bots by selecting the bot type (e.g. Run & Gun) and clicking "Join Game"
- Once you have at least two bots joined in the game you can click the "Start Game" button.
- Notice that the terminal window with your Sample BadgerClan Bot is starting to spit out logs. That shows the server is talking to the client.

Don't forget to set the startup project to "Client and Server" (not BadgerClan.Client or BadgerClan.Web)
- Navigate to BadgerClan.Client and open its Program.cs file
- Look for the comment that says "Your code goes right here".
- The
requestobject gives you a list of Units with their locations. Your units are the ones whoseTeammatchesrequest.YourTeamIdvar myUnits = new List<Unit>(); foreach(var unit in request.Units) { if(unit.Team == request.YourTeamId) { myUnits.Add(unit); } }
Coordinate System: https://www.redblobgames.com/grids/hexagons/
- After some rounds of no units dieing, every Unit loses one hitpoint
- Count the Rounds
- If everyone dies as the same time (stalemate) tiebreakers are
- Team with most kills
- Most units before final hitpoint loss
- Track number of kills
- Units can act if they have at least 0.1 moves remaining
- Improve effectiveness of Medpacs, gameengine not giving enough medpacs
- Limit the number of players
- Ability to boot players from a game that hasn't started
- Host can end the game from the game page, in cases of stalemate or false start
- Timeout the calls to clients
- Limit the size of the client move list
- Don't make calls to dead teams
- Ability for the host to restart the game with the same players
- Add a game leader board
- Delete the weather and counter page
- Game Log
- Second Leaderboard with number of kills
- Ability for host to slow down the game, make tick interval variable
- If you click the join button after start, the UI is odd
- Validate the client endpoint with a request/response
- Limit the characters for name and urls
- Websocket occasionally disconnects from server
- Units can be placed off the board, if there are lots of units
- If there are multiple games created but not started, the radio buttons don't work right
- Game does not declare the correct winner
- Create game component not properly listening to game state change, specifically if another person adds a new team
- Only the host should have the start game button
- A bad response from the client crashes causes an exception that stops the server
- Review GameEngine.ProcessTurn(), Attack does not have the same rounding benefit as Walk, is that intentional?
- Example tutorial for moving around
- Example tutorial for determining boundaries
- Example tutorial for identifying nearest enemies
- Example tutorial for a sample bot
- Rename Unit.Moves to ActionsRemainingThisTurn (or something similar)
- Rename AttackCount to ActionsCostPerAttack (or something similar)
