smclaughlan / gwj52 Goto Github PK
View Code? Open in Web Editor NEWGodot Wild Jam 52
Godot Wild Jam 52
Player can trade with NPCs for upgrades and blueprints.
Design a HUD for that purpose. Couple of panel containers and grid layout, with some interaction buttons.
Game should pause while the player is trading, so there's not too much time pressure to shop.
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
The game should get more difficult with each wave.
CreepSpawners should adjust their production rate and creep selection.
See also: day/night cycle, #11
Repro Steps
Expected Result
Creeps are knocked back and then continue moving
Actual Result
Some creeps stop moving after knockback
The player avatar is a spirit of light, inhabiting crystal golems.
The weapon should not be a 9mm handgun.
Make it a laser or something else.
Towers defend the village against creeps.
MVP will have basic towers.
Future releases could have upgrades, different types of towers, different types of weapons, special abilities, etc.
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.
some object has to manage when the next wave is coming and where it should come from.
Right now, creep spawners just spawn creeps in timers.
They should be modified to respond to a signal from the wave manager.
modify the creeps to be aware of the player state. No point munching on the corpse.
The player gun and towers should each have their own different bullets.
That'll make it easier to balance the gameplay.
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.
Suricato Guerrilheiro: plex since you are working on the towers do you mind changing the scale of the sprite to 4 instead of 6?
when a player clicks the mouse near the bottom of the screen, it's not registered because the button bar blocks mouse events.
From #59 We need a screen flash or an arrow indicating the direction of vital threats.
Those threats might include:
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.
Per discussion in #requests
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.
Change the towers to lasers instead of bullets.
Add lots of juice.
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.
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.
This would add juice when the enemy and Player take damage. Either we can work it through the sprites or through a shader.
The map feels too small with a static camera. Make it at least twice as big (maybe 4x) and have the camera follow the player.
Lasers should look much better.
https://www.youtube.com/watch?v=dg0CQ6NPDn8
We want the edges of the light-circles to be pixelated, so the artists are providing pixel art for the zones of light around the towers.
swap out the draw() function for a sprite that scales when the towers upgrade "bigger"
Bugs:
Design:
Backlog
The game design document calls for one projectile tower and one beam tower.
The beam tower should lock onto a target and deal continuous damage over time, so long as the target is in range.
As a player, I don't like the game to tell me NO all the time.
Towers should be placeable with fewer restrictions.
To solve this, we can either make the tower go down automatically at a point in front of the player (with no blueprint tower_buildmod). ie: instant placement when player clicks mouse.
Or, we can extend the range of the tower to the edge of the map.
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
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.
Suricato has provided a couple of tiles to serve as the foundation for a tile map.
We need to create tile map then set each tile randomly, with the clean tiles having the highest priority.
Repro Steps
Expected Result
Clicking the second option on the title bar makes the game full screen
Actual Result
Full screen option in title bar is grayed out and cannot be clicked
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.
Creep affordances
MVP creeps will have basic standard melee attack.
Future creeps may have different types of attacks.
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.
DifficultyManager
in the Battle
Scenedifficulty_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.difficulty_multiplier
Refer to #25
The art team is coming up with a variety of creep sprites. We'll need mechanics or variables for
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.
Basic 2D side-view player controller.
Different towers should apply different types of damage and status effects to creeps.
When we build turrets, there's a black sprite on the ground. I'm not 100% sure where it comes from yet.
In this thread: https://discord.com/channels/486990419230457876/1048710078347354122/1051552340672532611
They talk about CI tools in GitHub to make it easier to export for Mac.
Here's a yaml file someone used:
https://github.com/Lounge-Dev-Knights/gameoff-2022/blob/main/.github/workflows/release.yaml
Here's another workflow description:
https://github.com/firebelley/godot-export
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.
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.
Basic gauntlet-style creep spawner.
MVP map has set number of creep spawners, probably 3-5.
Future products could have creep spawners reproducing or spreading.
6:04 PM]Suricato Guerrilheiro: also the window size is not 16:9 rn , it should be 1024x576, unless you dont care about it which is fine
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)
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.
Issue: sometime images look fuzzy when you scale them up, especially images that are 16px x 16 px.
Here's a tutorial
https://www.youtube.com/watch?v=fvXaHQbkzxI
6:02 PM]Suricato Guerrilheiro: also the strife are not starting their walking animation right away because the playing option is not activated
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.