A Multiplayer Online Battle Arena game, with the ambition of being balanced (with no hard-counter interactions), simple but unique characters, playing like a twin stick shooter (PC and controller), while having a working anticheat despite being FOSS.
One day this game will be complete, but you can copy the repository yourself if you want a template. The assets
directory is strictly licensed.
Tested on Windows, Linux and OSX. Not in a very playable state. There is a playtest release, but it's very rough. A properly playable release is being worked on.
Run the game:
cargo run --bin game --release # or ./client.sh
Run the server:
cargo run --bin server --release # or ./server.sh
You can change the server's IP in the file that gets created in the same directory the game is run. Default is 0.0.0.0.
On Linux, you need to additionally install libudev-dev
.
- Add healing, from attacks
- Bullets only hit people once
- Non-piercing bullets need to be deleted once they hit
- Bullet hit-radius depends on character
- Temporary health bar
- Bullet collisions with walls
- Fix (delete) bullet ID thingy
- Player collisions with walls
- Might need to increase the size of the network packet reception buffers.
- very rough UI
- Health bar and count
- Secondary attack bar and count
- Implement dash mechanic
- Client sends dash info
- Server cooks
- Client cooperates
- Put the logic in a common function
- Design some characters
- Implement first 3 characters
- Healer
- Primary (single shot)
- Dash (short dash)
- Secondary (healing aura...?)
- Sniper
- Primary (single shot)
- Dash (semi-long dash)
- Secondary (wall placement)
- Assassin
- Primary (sword, splash)
- Dash (long dash)
- Secondary (position revert)
- Render it
- Healer
- Correctly update info for each player
- Extrapolation (clientside)
- Gameobjects
- Players
- "Fix" getting stuck inside walls (push out)
- Fix hp overheal
- Server charcter queue
- Implement
- Test
- Read IP from file
- Balance changes
- Very rough art
- Character top-down views
- Impove
- Wall sprites
- Bullets
- Character top-down views
- Decent map
- Map "editor"
- Aiming lazer too thin, weird result on high res OLED screens (maybe?).
- Game too chaotic
- Restrict players to map bounds
- Make characters slower
- Visual clarity
- Death and respawning
- UI
- Gamemode UI
- Make server send gamemode info
- Rounds
- Game time
- Kills per player...? (not necessary yet)
- Allied player's healths...?
- Make server send gamemode info
- Gamemode UI
- Create a gamemode
- Deathmatch gamemode
- Arena gamemode
- Requires a death state
- Sounds
- Find a sound engine
- Proper sound design (not good sounds, but one sound for everything)
- Credit sounds when necessary in license file
- Io(Kind(UnexpectedEof)) error (buffer size increased)
- Improve existing characters
- The bunny is bland
- Dash ability
- Redo main attack
- Modify secondary to heal self less
- The queen is bland
- Dash ability
- Secondary has a trail (clientside)
- The wolf just sucks
- Dash ability
- The bunny is bland
- Make the game not look like doodoo
- Good looking tiles (TAKE INSPIRATION FROM OTHER GAMES)
- Background tiles
- Create a second layer of map tiles
- Draw
- Foreground tiles
- Create wall types to have wall variety
- Draw
- Better characters?
- Background tiles
- Good looking tiles (TAKE INSPIRATION FROM OTHER GAMES)
- Clean up the code
- More stuff in common functions
- Different files for each thread or something
- Network packets are HUGE
- Maybe use interpolation instead of extrapolation, could result in delay, but will look far better.
- Clean up code
- Hunt for more vulnerabilities
- If client sends big packet, server crashes
- If client sends incorrect packet, server crashes
- Improve camera
- Vertical sorting of gameobjects and drawing layers
- Animations
- Tie together the game. (Menu, gamemodes, matchmaking server, etc)
- Create main menu
- Create matchmaking server
- Allow a quick-play mode for developer use only
- Canvas flipping
- Anticheat
- Anticheat still doesnt work since a client can report false packet intervals. The server needs to calculate the intervals the client is sending at as an average. This will be ignored for the sake of working on the rest of the game.
- Hide certain stats if player not within visual range
- Figure out port and firewall shenanigans
- No issues on Windows and OSX
- Pop-up for Linux players who might need to manually make firewall rules.
- Allow use of different ports
- clientside
- serverside
- Further network-related de-jittering measures than simple extrapolation.
- Map editor
- Offload work to client if possible
- Custom font?
- Figure out TTF or make own monospace font engine
- Fullcreen issue on Linux (can't exit fullscreen) (Macroquad issue)
- Icon doesn't show up on Linux (Macroquad issue)