Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a first-person shooter demo #849

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Feb 18, 2023

Work-in-progress first-person shooter demo, with a retro art style. Features one weapon (shotgun) and one enemy type (hitscanner). Also contains rain with collision using GPUParticles3D, boxes that can be pushed by firing a weapon on them, moving platforms, and a pool with swimmable water.

We've had 3D platformer and racing (Truck Town) demos for years, now is time to finally have a full-blown FPS demo 🙂

This effectively implements #1, as the IK demo which featured a minimal FPS example won't be updated for 4.0 (IK needs to be redone after 4.0).

Technical note:

  • CharacterBody3D's is_on_floor() is not used. Instead, a ShapeCast3D is used to allow for stair climbing without having to add clip planes on top of every staircase.

There are still things to improve before merging this:

  • Finish level design (add more different structures and textures).
  • Add sounds when jumping and landing.
  • Add sounds when taking damage and dying (both for player and enemies).
  • Add bullet impact sounds on surfaces.
  • Add sounds for moving platforms when they begin and end their travel.
  • Restore camera animation when landing (the code is there, but it doesn't work).
  • Add a second projectile-based weapon (probably a rocket/grenade launcher), as an example of demonstrating weapon switching.

Preview

First-Person Shooter

This is a retro-inspired FPS with a 2.5D aesthetic.

TODO:

- Finish level design.
- Add crouching and swimming.
- Add weapons (shotgun, machinegun, rocket launcher, energy rifle) with ammo pickups.
  - Player owns all weapons by default but no ammo for most of them.
- Add enemies (hitscan, projectile, melee).
- Add screenshot and README.
…er audio muffle

TODO:

- Make boxes pushable by the player's movement.
- Add level material shader (not currently used due to engine bugs).
- Work around sprite rotation by removing normal map support
  (still need to implement mirroring UV when needed).
… weapon kickback

- Add crosshair color by health and opacity by weapon state.
- Make boxes have particle collision.
- Reduce bullet damage, increase number of bullets shot by the shotgun.
… effect

- Fix stair snapping on steep slopes.
- Add large plane surrounding the level with invisible walls
  to prevent the player from falling out.
- Add ReflectionProbe to water pool.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant