Single player 3d shooter written in Rust and based on fyrox engine
How to build
Cargo.toml contains hardcoded relative path to engine fyrox = { path = "../Fyrox" }, so you have to change this or put engine folder near the game folder to get game compile, because it always uses latest fyrox which could be not published on crates.io.
In other words you can do something like this:
git clone https://github.com/FyroxEngine/Fyrox
git clone https://github.com/mrDIMAS/rusty-shooter
cd rusty-shooter
cargo run --release
Or if you're updating to the latest version, do this:
cd fyrox
git pull
cd ../rusty-shooter
git pull
cargo run --release
Gameplay video
Keep in mind that it can be different from latest version!
Screenshots
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 - level loads asynchronously now.
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.
Open Source Agenda is not affiliated with "Rusty Shooter" Project. README Source: mrDIMAS/rusty-shooter