Skip to content

A twin-stick Multiplayer Online Battle Arena shooter currently in development.

License

Notifications You must be signed in to change notification settings

OrnitOnGithub/moba

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unnamed MOBA

A Multiplayer Online Battle Arena game, focusing on the following values:

  • Being balanced (no hard-counter interactions)
  • Having brute-force anticheat
  • Having relatively simple but unique characters
  • Playing like a twin-stick top-down shooter
  • Looking hand-drawn but also 3D-ish
  • Being easy to learn but hard to master

Compile & run

Tested on Windows, Linux and OSX. Not in a very playable state, so no realeases yet.

Run the game:

cargo run --bin game --release

Run the server:

cargo run --bin server --release

You can change the server's IP in src/bin/game.rs:~211

Dependencies

On Linux, you need to additionally install libudev-dev.

TODO

Immediate

  • 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
  • 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
  • Correctly update info for each player
  • Extrapolation (clientside)
    • Gameobjects
    • Players

Get ready for playtest 1

  • "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
  • Decent map
    • Map "editor"

Playtest 1 issues

  • Aiming lazer too thin, weird result on OLED screens (maybe?).
  • Game too chaotic
    • Restrict players to map bounds
    • Make characters slower
    • Visual clarity
    • Respawning

Create gamemode (polish the game for PROPER playtesting)

  • UI
    • Gamemode UI
      • Make server send gamemode info
        • Rounds
        • Game time
        • Kills per player
        • Allied player's healths
  • 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

Irrelevant now, do after playtesting

  • 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)
    • 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

Issues that won't be solved

  • Fullcreen issue on Linux (can't exit fullscreen) (Macroquad issue)
  • Icon doesn't show up on Linux (Macroquad issue)