Giter Site home page Giter Site logo

precursor's Introduction

precursor's People

Contributors

wchaney98 avatar theadamsmith avatar ninja-rage avatar mitchellkazin15 avatar mileszcoker avatar

Watchers

 avatar  avatar

precursor's Issues

Sound effect framework

Use composition (ideally) to create component(s) for adding sound effects to enemy/player actions.

Synchronize Damage Exp and Other Underlying Values

Damaging enemies and giving exp should only come from the server. These should then be synced across clients. Confirm only 1 player gets exp for a kill. Stat upgrades should be controlled by the server as well

Add Stat Scaling System

Stats should increase as you level up, and possibly certain stats could get upgraded more than others with specific weapon upgrades chosen

Weapon Upgrade Improvements

Improve the upgrade system to ingest some type of custom Resource files that we can define. These files should define an upgrade path e.g. revolver -> rifle or shotgun -> machine gun or grenade launcher etc. Gun upgrades should also come with secondary upgrades e.g. increased health, move speed, etc

Be Able to Launch Enemies

Create a Test scene that lets you launch enemies a specified distance. Enemies should pass through walls when "airborn", and size should increase like an inverse parabola. Can use whatever controls you want in the test scene to launch enemy

Add zoom/viewport adjustement

We should add the ability to zoom or adjust the viewport while playing the game. This will be helpful for dev testing and will let us get a better feel for what the actual camera setting should be

Add basic Player Upgrades

When certain exp thresholds are hit, offer the player a choice of upgrades (speed, health, weapon, and others)

Complete Simple Game Loop

Create end game screen with option to return to main menu or quit game

  • When the enemy AI's health falls below 0, You win
  • If your health falls below 0, you lose

Get simple Multiplayer Game Loop Working

Building off the initial peer to peer system, now take the single player game loop and extend it to multiplayer: enemies spawn on your side, you kill them to send over to other side, if either player gets killed by enemies on their side, the game ends and winner is declared.

Catchall Multiplayer Polish

Update as we implement Multiplayer and realize issues/edge cases that don't fall under a specific ticket:

  1. Be able to rejoin a game if you disconnect

Unkillable boss mechanics

Give the boss a health pool.

  • make the boss slowly chase the closest player
  • when health pool reaches 0, have the boss rest to get back up

Create State Machine for Different Enemy Behavior

Add a state machine component and break out states into their own node so they can be reused. Add basic states like follow player, run from player, melee attack, ranged attack, and charge attack

Add Ranged Enemy

Add an enemy that shoots bullets at nearby players. Movement should behave differently from other enemies. Can run away or follow player until a certain distance, but should try to avoid melee range

Add a boss battle to the game

  1. Boss should spawn at 10 minutes of game time
  2. Boss should have special set of moves and animations
  3. Boss should have a large health pool
  4. Boss should give player a bunch of xp

Explore Basic Multiplayer

Initial steps to get multiplayer working, get simple peer to peer connection where two players can move around in the same map

Add Settings Menu

Menu should be able to be accessed from the Main menu, and within game. Menus selections should be saved and reload next time you run. Allow for basic selections, sound volume, window type, etc

Basic menu and game music

Add basic menu and game background music. Can just be placeholder for now, moreso want to just have the logic in place to easily swap it out later.

Create Lasso Ability

Lasso ability is thrown towards a group of enemies and collects them. Then trigger a way to launch them over to the other side. When they land, create aoe explosion that can damage both enemy players and creeps

Make Basic Enemy B

  • find or make an asset for an enemy character. not final does not need to be fancy
  • should have basic movement animation
  • should be able to follow a path
  • optional attack of some sort (can be added later)
  • we can do an enemy A and B so that we can develop 2 in parallel
    should coordinate if someone is working on enemy B so that you can use same enemy base class

Implement Health and Bullet Damage System for Enemies

As part of our ongoing game development efforts, we need to implement a health and bullet damage system for enemies in our Godot project. Currently, enemies lack a health mechanism, making combat interactions incomplete and less engaging for players. This ticket aims to rectify this issue by introducing a robust health system for enemies, allowing them to sustain damage and be defeated by player attacks.

Key Features to Implement:

  • Health System: Develop a health component for enemies that allows them to withstand damage from player attacks. Each enemy should have an initial health value and should decrement upon receiving damage.
  • Damage Calculation: Implement a mechanism to calculate the damage dealt by player bullets to enemies. This should take into account factors such as weapon type, bullet velocity, and enemy resistance.
  • Damage Effects: Introduce visual and audio effects to signify enemy damage, such as screen shakes, particle effects, and sound cues.
  • Enemy Death: Define conditions for an enemy to be considered defeated, such as reaching zero health. Upon death, enemies should trigger appropriate animations, sound effects, and any other relevant game events.

Testing and Debugging: Thoroughly test the implemented systems to ensure they function as intended in various gameplay scenarios. Debug any issues or inconsistencies that arise during testing.

By completing this ticket, we aim to enhance the overall gameplay experience by adding depth and challenge to combat encounters. Additionally, a functional health and damage system for enemies lays the groundwork for further enemy behavior customization and game mechanics in future development iterations.

Synchronize Player Abilities

Each client should be able to see when a player is dashing or using other abilities. Animations and other minor things should be synced as well

Make a basic enemy A

  • find or make an asset for an enemy character. not final does not need to be fancy
  • should have basic movement animation
  • should be able to follow a path
  • optional attack of some sort (can be added later)
  • we can do an enemy A and B so that we can develop 2 in parallel

should coordinate if someone is working on enemy B so that you can use same enemy base class

Design player character

  • find or make an asset to be the player character. not final does not need to be fancy
  • make basic (2 frame) animation for player
  • implement basic movement for the player

Add basic weapon to player

  • add the base weapon type to the player character
  • should be able to be instance so we can have multiple weapons on the character
  • should be able to shoot some kind of projectile
  • find some basic asset to use for the gun

Add Single Player basic AI

Spawn an AI controller player character to play against in Single Player.

  • Should navigate the map in a simple way (maybe just do circles)
    • If you want to be fancy, it can be smart and avoid running into enemies
  • Kill enemies spawning on it's side
  • Accept upgrades when exp thresholds reached (less important)

Figure out how to do inheritance/Composition

Figure out to properly do inheritance/composition.

My java pilled brain wants to refactor different things into "classes" that can be re-used through inheritance/instancing, but according to this reddit post https://www.reddit.com/r/godot/comments/129sgc8/what_is_the_intended_workflow_for_inheriting/ that is not the correct way to go about development in godot.

So we should figure out how to properly do composition as a template for a lot of the scenes we will be building. For example, we will have several different enemy types that will all have HP and some sort of pathing. We should be able to create multiple enemy types with out recreating the pathing/HP logic for each different enemy.

A potential good resource is this video that I have not yet watched https://www.youtube.com/watch?v=W8gYHTjDCic

Spawn Enemies in Multiplayer

The server should spawn enemies and sync them across clients. Enemies should have a Multiplayer synchronizer node to sync position and any other necessary variables

Add basic UI

implement a basic UI

  • should have basic start button
  • detect player death and allow for game restarts
    can be done now or later:
  • player health
  • score
  • xp

Add Player and enemies to level

once we have the level/players/enemies we should incoorperate them into the level

  • player spawn
  • enemy spawn
  • player navigation
  • enemy pathing

Implement different Enemy types

Use the state machine to implement different enemy behavior. Implement these different types and allow them to spawn at different configurable rates and with different base stats and scaling

Spawn Gun and Bulets for all Multiplayer Peers

Currently in a multiplayer game, The players can spawn a gun on their screen, but other players can't see it.

Create a system for clients to trigger a gun spawn that will sync with the server and all other client. RPC will need to be be "reliable". A similar spawning system should be used for bullets when the gun fires

Add Dash Abilities

Add basic dash that can push enemies out of the way and offers brief invulnerability. This dash can then be upgraded to have different effects per the Miro board

Create basic level design

create a basic level layout that matches this general design
image
should have a background and something to indicate the edge of the map. Does not need to be fancy

Set up System to Select Teams/Arenas

In the Lobby, be able to see which side you will be on and be able to change sides. Let's stick with 2 arenas still for now. Teams with less players should be supplemented with computer players. Spawn the second arena and players in the correct arena

Implement Charging Enemy

Use the new state machine to implement a charging enemy, that follows the player and once it gets in a close range, start a charge attack that needs to charge up, selects a direct towards the player, and charges at the direction. Charge goes on cooldown for a short period after

Improve weapon targeting performance

With a large amount of enemies/players/guns the weapon targeting causes a lag in performance. This because we scan every enemy for every revolver every frame. We can fix this by reducing the number of times we calculate the targeting, caching the nearest enemies so we don't re poll all the enemies every time, or using some sort of area detection to poll enemies in a smaller area

Add AOE Ability

Maybe Q or E/tringger button ability that creates an AOE around the player with certain effects (knockback, stun, damage, etc)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.