precursor's Introduction
precursor's People
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
Add Different Tiers of Mobs
Some mobs are trash mobs that give less exp, do less damage, and are easier to kill, and some are higher tier with all around more stats. Each higher tier should be rarer than the last. Good starting place would be to follow the document Will created here https://docs.google.com/spreadsheets/d/1XgiQJQm0qCMozAhRyjbKAeVkCxvzBKCsjmrjSj0ytD8/edit?gid=0#gid=0
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 other basic weapon types
Shotgun, sniper, assault rifle, and bazooka
create system to spawn enemies
we should have a way to spawn multiple enemies around the map
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 Multiplayer Game Loop
When all players in an arena die, the other team win. Option to return to the lobby or quit
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
Add Enemy Scaling System
Enemies should get stronger as the game progress and give more XP. @wchaney98 laid out some initial design here: https://docs.google.com/spreadsheets/d/1XgiQJQm0qCMozAhRyjbKAeVkCxvzBKCsjmrjSj0ytD8/edit#gid=0
Add Laser to Sniper to help line up Shots
Add a visual indicator to the sniper that shows where the bullet will go. Laser should pass through mobs but not through walls to help line up piercing shots
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.
Add Visual Indicator to Enemy Spawns
Delay the instant spawn of enemies and add a visual indicator so they player has a chance to dodge
Catchall Multiplayer Polish
Update as we implement Multiplayer and realize issues/edge cases that don't fall under a specific ticket:
- Be able to rejoin a game if you disconnect
Make a Cool Background
Maybe flowing looking lava surrounding the arenas
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 Visual Indicator of Enemy Death
Add a boss battle to the game
- Boss should spawn at 10 minutes of game time
- Boss should have special set of moves and animations
- Boss should have a large health pool
- 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
Be able to Push Creeps out of the way
The player character should be heavier than basic creeps and be able to push them out of the way when moving
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.
Add weapon targetting
make the gun shoot at enemy
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
Develop Upgrade system for Creeps sent Over to Other Player
As we kill creeps and gain exp, we want to upgrade creeps we send over (higher health, damage speed etc)
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
Send Over Creeps to Other Player When you Kill Them
Every x number of kills on enemy creeps should send 1 over to the other player
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
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.