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

Sylvan Row

A Multiplayer Online Battle Arena game, with the ambition of being balanced (with no hard-counter interactions), having simple but unique characters, playing like a twin stick shooter (PC and controller), while having a working anticheat despite being FOSS.

An anthro lioness in armor

This game is still incomplete, but will be worked on more when I'm less busy. You can copy the repository yourself if you want a template. The assets directory is strictly licensed.

Play

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.

Dependencies

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

To do

Engine

  • 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
      • Rethink kit
  • 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
    • Wall sprites
    • Bullets
  • Decent map
    • Map "editor"

Playtest 1 issues

  • Aiming lazer too thin, weird result on high res OLED screens (maybe?).
  • Game too chaotic
    • Restrict players to map bounds
    • Make characters slower (really necessary?) (if playtest reveals a necessity for this...)
    • Visual clarity (bruh what did i mean by this)
    • Death and respawning
      • Death state (server communicates whether alive or dead)
      • Death spectator camera
        • Camera "system"

Make a FUNCTIONAL game

  • UI
    • Gamemode UI
      • Make server send gamemode info
        • Rounds
        • Game time
        • Kills per player...? (not necessary yet)
        • Allied player's healths on top...?
  • When dashing straight into a wall, you get stuck, because the server won't stop trying to make you go until you've traveled the desired dash distance.
  • Create a gamemode
    • Basic eathmatch gamemode
    • Add rounds
    • Arena gamemode
      • Requires a death state that can be maintained until round restart
        • Death state
  • Io(Kind(UnexpectedEof)) error (buffer size increased)
  • Improve existing characters
    • The bunny is bland
      • Dash ability
      • Redo main attack
        • Vamp for tethered teammate, shiv-like relationship with dash...
      • Modify secondary to heal self less
    • The queen is bland
      • Dash ability
      • Secondary has a trail (clientside)
    • The wolf just sucks
      • Dash ability

Second round of playtesting

  • Once the characters are satisfactory, Create a unique gamemode

Once a functional game is made, make it pretty, make it clean, make it good.

  • Sounds
    • Find a sound engine
    • Proper sound design (not good sounds, but one sound for everything)
      • Credit sounds when necessary in license file
  • 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?
  • 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.
      • Also a pop-up for Linux users to install the dependency.
    • Allow use of different ports
      • clientside
      • serverside
  • Further network-related de-jittering measures than simple extrapolation.
  • Map editor
  • Offload work to client if possible (probably just minimize server work)
  • Custom font?
    • Figure out TTF or make own monospace font engine
  • Proper render order

Issues that won't be solved

  • Fullcreen issue on Linux (can't exit fullscreen) (Macroquad issue)
    • Holy shit they fixed it
  • Icon doesn't show up on Linux (Macroquad issue)

Notice

OrnitOnGithub is no more and this project is now owned by KatTheGit.

About

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

Topics

Resources

License

Stars

Watchers

Forks