GithubHelp home page GithubHelp logo

gwj52's People

Contributors

imafirehazard avatar mikuwasnotlucky avatar plexsoup avatar ravensherald avatar rcsira avatar smclaughlan avatar ty1176 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gwj52's Issues

Create NPCs

NPCs primarily exist to give the player things.
They can also take damage from creeps, and possibly die.

Interacting with an NPC will spawn a trade interface: issue #10

Some creeps hit with melee will stop moving

Repro Steps

  1. Equip melee weapon
  2. Wait for creeps to spawn
  3. Hit creeps with melee attack

Expected Result
Creeps are knocked back and then continue moving

Actual Result
Some creeps stop moving after knockback

Create towers

Towers defend the village against creeps.

  • initialize with a construction animation or timer
  • have a weapon
  • rotate the weapon to face creeps
  • once construction is complete, shoot a projectile or AoE attack
  • take damage
  • die

MVP will have basic towers.
Future releases could have upgrades, different types of towers, different types of weapons, special abilities, etc.

Player's bullets need more juice

bullets should be about twice as fast as they are now, have speed trails, and come out of the gun with a bit of jitter. They should also have an impact animation (probably particles).

We might want to try and apply a slow-motion effect for critical hits. May or may not be effective.

Briefly modifying "Engine.time_scale" should slow down all physics_processes, timers, yields and animations.

Need more bullets

The player gun and towers should each have their own different bullets.
That'll make it easier to balance the gameplay.

Create virtual wires connecting towers to each other and the central power source

The "wires" are a system of Lenses and mirrors connecting a central magical chandelier to the towers. They power the towers. They should be represented on screen. They should provide the player with some "affordances".

Player can connect or disconnect them as required, in order to manage a limited power supply and stave off the creeps from all directions.

Change tower sprite scale to 4

Suricato Guerrilheiro: plex since you are working on the towers do you mind changing the scale of the sprite to 4 instead of 6?

FEATURE: Add alert indicators

From #59 We need a screen flash or an arrow indicating the direction of vital threats.

Those threats might include:

  • new wave
  • village under attack
  • tower destroyed

Create tower upgrade mechanics

Players expect to be able to upgrade their towers.

We need to figure out exactly how they do that.

Do we need upgrade buttons on each tower? Maybe the construction wrench will upgrade a tower if you "shoot" a tower while holding the wrench.

How do players choose what type of upgrade? How long should an upgrade take? How much does it cost? What types of upgrades are there?

Most tower defence games don't have a player running around, so it's easy to upgrade things through menus.

Create a player-spawn mechanic.

Writers and artists are talking about having the player be a spirit which inhabits crystal golems.

We need a method to move the spirit around after a golem dies, and a method to inhabit a new body (on proximity, no button press required)

Maybe a player state that's Spirit form, with no active collision shapes.

Create a basic village / base

The village is the base the player is trying to defend against the horde/waves of creeps.

NPCs in the village can be attacked by creeps.
Maybe the creeps attack buildings as well.

After a certain amount of damage the game should enter a lose condition and present a restart option.

Create Player weapons (and ammo + projectiles)

Weapons should go onto the player controller.
Player can choose a weapon.
Player can upgrade a weapon.

MVP is basic bullets
Future weapons should have interchangeable ammo. Fire a stream, spread, ray, aura, etc.

Various - notes from mtg Dec 11

Bugs:

  • Laser knock back is broken after introduction of melee knockback
  • Initial towers don't have active collision shapes. (make them bases+turrets, not just turrets)

Design:

  • What's the win condition? Maybe player buys their "win" with currency (light) at the base
  • Move the shopping interface to the base so the player has to divide their time between hunting and defending
  • Tower placement needs maximum range so player can't spread too quickly
  • Tower placement needs more obvious feedback about requirements - insufficient cash, distance, etc.
  • Player needs some starting cash, so they can place a couple of towers.
  • Need a softer landing / onboarding / tutorial. (Maybe scene 1 is a small tutorial zone where they place the first 4 towers that show up when they start the real game)
  • If the player is off hunting, they should get an edge-of-screen alert when the base is under attack.
  • maybe give an edge of screen wave alert if the player is at the base and an offscreen spawner fires up a new wave.
  • Make the village an exclusion zone, so no towers can be placed there (this might be auto-solved based on tower minimum distance requirements)
  • Player should be able to destroy towers for a refund.
    • right click on tower while holding the construction wrench? Or interaction key (e or f)
  • Towers, when placed, will snap to a grid, so they don't look untidy.

Backlog

  • Plexsoup is still working on the tower wiring network.
    • If the path to the source breaks, all downstream towers should lose power.
    • When towers are depowered they should light up again when a new (powered) tower is placed nearby
    • player can't build in the dark, towers have a light aura / radius. new towers only go in the light. if part of the grid is dep-powered, there's no building there.

Create a light/dark mechanic

Light and dark are integral to the concept, so we need a mechanic which provides light and shadow.

It's a bit challenging to rely shaders to detect when a creep is lit or not, so we'll probably use Area2D nodes to simulate the light area. Anything inside one of those Areas will be considered lit.

But so what? From the player's perspective, besides being able to see well, what happens differently when an area is light or dark?

In any case: We'll need

  • flashlight
  • gaslamps
  • village could emit light, from homes maybe
  • NPCs might have a small light radius
  • some towers could emit light

Upgrades should be available to boost the light

We might also need an energy source. Ghost essence fuels the lights. If a tower runs out of ghost essence, it goes dark.

Figure out the primary currencies and trade ratios

If sunlight is a currency, the player should be able to run around and collect it (much like in Plants vs Zombies)

If ghost essence is a currency, the player should be able to collect it from defeated creeps.

The currency or currencies should be tradeable for upgrades and blueprints at NPCs.

Ideally a good game will have multiple currencies that come from different sources and face varying degrees of scarcity and conversion rates. Our MVP may only have a single currency.

Create basic enemy creep

Creep affordances

  • spawned by creep spawners
  • march toward village
  • pathfind around towers
  • fight the protagonist
  • attack the village and/or villagers
  • attack towers if there's no path to the village
  • take damage
  • die if zero health

MVP creeps will have basic standard melee attack.
Future creeps may have different types of attacks.

Dynamic Difficulty

I have an idea for this game difficulty and I'm gonna write it down here for me to take down notes easily. Since our current win condition is buying a certain amount to win. Players might prolong the game so I have this crazy idea that prolonging the game especially if you have enough currency to buy a win condition is a risky move.

Work task:

  • A DifficultyManager in the Battle Scene
  • A difficulty_multiplier variable that is used by creep's attack, health, or even speed. Starts with 1 value and increments by 0.15 for every wave started.
  • Multiply the stats of the creeps by the difficulty_multiplier

Refer to #25

Create pickup objects

Whatever the currency is (#12), it'll probably be picked up off the ground.

So we'll need an Area2D with a collision signal to detect the player.

Create Player Controller

Basic 2D side-view player controller.

  • move
  • choose weapon
  • attack
    • melee
    • shoot
  • build tower
  • repair tower
  • attack creeps
  • interact with NPCs (trade currency for blueprints or upgrades?)
  • take damage
  • get knocked out temporarily if health < 0
  • after timeout, spawn in place or spawn in village, depending on game design

towers have a shadow?

When we build turrets, there's a black sprite on the ground. I'm not 100% sure where it comes from yet.

FEATURE: Make creeps explode when tower is placed on top of them

I think creeps might be blocking placement of towers (not 100% sure on this). If that's the case, it won't feel good for the player to keep hearing NO, you can't build there.

So creeps should not block tower placement.
Make them instagib or knock back if player puts a tower on top of them.

Create crystal golems for the player to inhabit and control

The player's avatar is a Dwarf Queen ghost, made of light.
The dwarf queen spirit can inhabit crystal golems / automatons.
These bodies serve as the game "lives". If the player runs out of golems, it's game over.
There should be a variety of golems scattered around the map for the player to discover and inhabit.

The player needs a spirit form and one or more golem forms.

Create creep spawners

Basic gauntlet-style creep spawner.

  • spawns creeps at intervals
  • takes damage from PC or Towers
  • dies if health < 0

MVP map has set number of creep spawners, probably 3-5.
Future products could have creep spawners reproducing or spreading.

enemies need better knock back

enemies are getting hung up on each other when they're knocked back.

turn off their NPCs layer collision bit before knock back so they don't get blocked.
(or disable their collision shape altogether)

Create day/night cycle

Creeps only come during one of the 12hr periods (probably night). This gives the players some respite from the siege. Time to shop and build.

First wave should be paused until the player is ready to start.

Subsequent waves can be accelerated so the player doesn't face too much downtime.

Figure out creep navigation

We probably need a navigation2d node, a navigation polygon, and a method for removing towers and walls from navigable space.

When the player constructs a tower, a signal should go to the navigation polygon so it can remove that outline from the map.

Set the "Interact [E]" label to be updated from the Input Map

May be low priority, but we have a lot of stuff hard coded to the E key for interact.
(Labels on towers and Home Base say [E])
We should write a script to set the letter dynamically from whatever the input is.
That way, if we change the input key mapping, we won't have to change every label.

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.