Skip to content

jepotter1-archive/rusty-shooter

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1

rusty-shooter is a first-person shooter game written in Rust, intended to serve as an example project for the rg3d game engine.

Building

Cargo.toml contains a hardcoded relative path to the game engine, like this:

rg3d = { path = "../rg3d" }

In turn, rg3d hardcodes a relative path to its components rg3d-ui, rg3d-core, rg3d-sound, and rg3d-physics. This is to ensure that the latest Git versions of rg3d and all of its components are used, which are not yet published on crates.io.

In other words, you need to do something like this in order to build:

git clone https://github.com/mrDIMAS/rg3d
git clone https://github.com/mrDIMAS/rusty-shooter
cd rusty-shooter
cargo run --release

To update rusty-shooter and all the rg3d dependencies to the latest versions, do this:

cd rg3d
git pull
cd ../rusty-shooter
git pull
cargo run --release

Gameplay video

Keep in mind that it may differ from the latest version!

Gameplay video

Screenshots

2

3

4

5

Plan

  • Player movement
    • Walk
    • Jump
    • Crouch - it does not check if you have enough space to stand up and may push you off level. Also when standing up character jumps.
    • Run
  • Weapons
    • AK47
    • M4
    • Plasma
    • Grenade launcher.
    • Rocket launcher.
    • Lightning gun.
    • Machine gun.
  • Projectiles. More should be added.
    • Bullet
    • Plasma ball
    • Rocket
    • Grenade
    • Nail
  • Level - shitty version of legendary q3dm6 level is implemented. Good enough for tests, bad gameplay wise.
  • Jump pads - works similar as in Quake 3: actor touches jump pad, it shoots you in specified position.
  • Items. List should be extended when new weapons or items are added.
    • Health pack
    • AK47 ammo
    • Plasma ammo
    • M4 ammo
  • Respawn - player and bots will respawn after death. Still need to think a way of how this will work with game modes.
  • Spawn points - done, actors will respawn on points with least amount of enemies nearby.
  • Stupid bots - dumb bots that follows you in a straight line are done. Next iteration needed.
  • Main menu
    • New game
    • Save game
    • Load game
    • Options
    • Quit
  • Options
    • Controls
      • Common key bindings
      • Mouse sensitivity
      • Mouse inversion
      • Reset to defaults
      • Mouse smoothing
      • Camera shaking
      • Unique key binding
    • Graphics
      • Resolution
      • Fullscreen - checkbox is not doing anything
      • Spot shadows
      • Soft spot shadows
      • Spot shadows distance
      • Point shadows
      • Soft point shadows
      • Point shadows distance
    • Sound
      • Sound volume
      • Music volume
      • HRTF
  • Save/load - game state can be saved/loaded at any time.
  • HUD
    • Ammo
    • Health
    • Armor
    • Game mode specific score
      • Death match
      • Team death match
      • Capture the flag
  • Bot whip attack - bots can punch you in the face you stand too close to them.
    • Damage
  • Bots animations - more or less done, bots are fully animated and has configured animation machines. This can change if there will be a need for more animations.
  • Sparks when projectile hit surface.
  • Ability to pickup dropped weapons.
  • Drop weapons when actor die.
  • Give player some weapon on respawn.
  • Events log - simple text-based event log - it shows all significant events - death of an actor, damage, etc.
  • Pathfinding - based on navmesh.
  • Death zones - places where actor dies immediately (space, death fog, squashed, telefragged, etc) is added
  • Level editor - some simple level editor would be nice, for now I'll continue use ancient 3ds max 2012. Game items are placed on level using dummies which then are substituded with real items, this works but very uncomfortable because it is not WYSIWYG editor.
  • Restyle UI. Main menu also should have some sort of background, not just black void.
  • Loading screen - currently game just hangs for 8+ seconds until it load a level, this should be done async.
  • Environment interaction - its implemented partially - any actor can use jump pads, pick up items.
  • More bots - there are only three bot kind available, there are a lot of free models on mixamo.com which can be used to add more bots.
  • More levels - currently there is only one level which is boring as fuck.
  • Add small interval between bots/player respawn
  • Add something like "You died" text on HUD when player dies.
  • Bots AI
    • Vertical aiming
    • Bots walking from item to item and shooting nearby targets
    • Vision frustum for bots - bots can "see" only in front of them.
    • Automatic weapon selection
    • Remove "wall hack" from bots - currently bots can see thru walls and will try to shoot there.
    • Make behaviour more natural
  • Win/loss mechanics
  • Bots hit reaction - partially done, bots have hit reaction animation but there is still no visual "proof" that is was hit. Some sort of blood splashes should be added as well as hit sound.
  • Improve sound - many events in game still does not have sound. There are plenty of free sources with sounds, this should be used.
    • Step sounds
    • Shot sounds
    • Music
    • Item pickup
    • Damage sound
    • Jump sound
    • Ambient sound
  • Leader board - game mode specific leader board should be added.
    • Bind to specific key
    • Time limit
    • Deathmatch
      • Table of Name, Kills, Deaths, K/D Ratio
    • Team death match
      • Header with team score: Red Team Frags - Blue Team Frags
      • Table of Name, Kills, Deaths, K/D Ratio
    • Capture the flag
      • Header with team score: Red Team Flags - Blue Team Flags
      • Table of Name, Kills, Deaths, K/D Ratio
  • Match options
    • Time limit
    • Match type
    • Map
    • Deathmatch
      • Frag limit
    • Team deathmatch
      • Frag limit
    • Capture the flag
      • Flag limit
  • Hit marks on surfaces - there is no "visual proof" that projectile has hit surface
  • Deathmatch game mode - easiest game mode to implement.
    • Count kills per actor
    • Game ends when an actor hits frag or time limit
    • If timelimit hit, but there are more than one actor with same score - game continues.
  • Capture the flag game mode - similar to Q3 game mode is nice to have.
    • Count flags per team
    • Game ends when team hits flag limit or time limit
    • If timelimit hit, but flag score is even - game continues.
  • Team deathmatch game mode - again similar to Q3.
    • Count frags per team
    • Game ends when team hits frag limit or time limit
    • If timelimit hit, but frag score is even - game continues.
  • Explosive decorations, this will diverse gameplay a bit.
    • Barrels
    • Mine
  • Player's ability to punch enemies in face by weapon.

About

3d shooter written in Rust using rg3d

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%