this is the second iteration of the idea of an abstract tower defence game this is weirdly more inspired by risk of rain that it is bloons or mindustry alot of how you buff towers will be through items that give effects, think tesla coil from ROR1/2
ok so rundown, you exist ur a small person runnin around a giant area and theres a timer in your inventory you have a couple basic components to build defences
the goal of the game will be to survive both your own defences and the enemies pursuit of you
the way the defences work will be the main thing, so you get a base and you can give it a head that will give it the ability to attack not neccicary but like very reccomended, currently i have like 4 ideas for heads:
- flamethrower
- laser turret
- rocket(possibly unneciary)
- generic gun
each of these attacks will have proc coefficents based on their defult rate of hit per second so any on hit effects with the laser turret arent broken af you upgrade the towers by placing modifiers next to their base (yes this means modifiers can effect multiple towers) the normal modifers like dmg up will only take up a 1x1 tile, bases take up 2x2 some better upgrades might take up liek 2x2 or 1x2 depending on their power
the two interesting things about this aside from the emergent gameplay with funny effects and tinkering with them, is how the towers attack yes both two things are that one thing
basically they dont target by default, by default they will just rotate their head and shoot without any regard of the enemies or your position you will be ably to add targeting system modifiers (in the game modifiers will be called modules, hence the name) that will focus on things and shoot instead of shooting randomly this is where thing 2 comes in
you arent considered diffeent by the towers so if you get hit by a projectile you will get hurt just like the enimies do and if you give it targeting system 1 it will target you as well (target system 2 does then recognise you) and you can get caught in crossfire
now why owuld this be an issue, you will be away from the towers and the enimies spawn wave by wave
wrong, enemies will be coming constantly and you wanna know how you upgrade sure hope theres a section about that
so you can find resources on the map and you spawn with some but enemies drop wepons and armor which can eb decrafted into resources so easy, why is this intresting its interesting cos enemies drop their shit where they die, and they will die realistically near your towers so you have to approach your machines of death to try get these resources and these machines unless very upgraded will not be able to tell u from enemies
so towers will level up and get minor stat boosts cos of that, you can spend cash to level em up too but thats silly towers will ‘mutate’ every 5 levels and gain a positive boost and a negative boost, these can b fun if i do em well like lunar items from risk of rain, you dont get to choose what mutation they get, but you can choose wether to let it happen the first 3 times, after that it does it anyway
modules will be placed around towers, towers will have a range and if the modues are out of that range(probably like 1 tile around em, ill probably let users increase it at late levels) they dont get the effect say if you have a 2x2 module and only half of it is in, im unsure on wether or not to either fully allow the effect or only slightly
also modules and towers can be destroyed
multiple modules of the same type are aimed to be not busted cos there is always the issue of maxing dmg and attck speed ranges will be based on the tower type and can be done in a bunch of ways and tower bases can be a bunch of sizes but generally they are 2x2
every base will get generated wants normally 2 positives and 1 negative so all upgrades in the positive respect would be doubled (after scaling) and then the negatives would applied by a small amount per modules
i want enemies to naturally upgrade themselves, depending on how much valuables they steal from u by destroying your towers and time progression itd be fun to have like a tree wherein they can obtain properties and add them to the tree so you can easily keep track of their weaknesses
depending on their strength i will assign them enums, to dictate their y and x length also i want all modules to be upgradable pretty easily all modules and towers blow up when you destroy them, this is the only way to get rid of them, they cannot be sold
- dmg up
- attack speed up
- proc chance up
- regen up
- dmg multiplier up
- attack rate up
- attack speed up
- rotspd up
exotic - T1/T2/T3 (mechanical changes aka changes how it fires) ie targeting computer or the gun head yellow
- random shoots in random directions but constantly shoots this only makes sense in ranged,im not implementing it anywhere else except maybe area (maybe), could make it have the starting point somewhere random but nearby
- homing melee - not done (i do this by moving the point it goes around in the direction to the nearest enemy, and back when theres no enemy) gas - done spike - done laser - done bullet - done area - done
- predictive ranged - done area - done melee - not done, will be done by targeting where the enemy will be
- rapidFire all - done
- returning only makes sense for ranged which its done for
- spdUp all - done
- polar only makes sense for ranged, which its done for
i want to have like 6 bars and you put more of certain ingredients in to change the ratios on the bars the closer you are to the perfect ratio the better it will be each resource will mean a specific thing there will be 2 components to how good a thing is:
- how close it is to the desired ratio the higher this is, the higher the chance of mutations is
- how many resorces you put into it the higher this is, the more potent it is like multiple stacks in risk of rain
these two components mean that you need to figure out things by adjusting the amount youre putting in and you cant just shovel in a fuck ton of resources into a good recipie you find
high damage all enemies red(ish, maybe)
electricity stronger enemies dark blue (very different to soul)
exotic components enemies but you need to be close whitey blue
things that are oddly powerful/create life damaging yourself green
everything really fast enemies gray
fire weapons towers exploding, then killing the enemies that were caught in the explosion red/orange
i am calling inventories decks like a sylladex from homestuck they will be similar as in there are different types based off different data structures i will not store resources in the deck because the deck is for single quantity crafted items
so the way enemies will work is they will have a collection of modifiers to combine into a tree there will be multiple trees and on tree creation they will be given certain “adjectives”
- smart -> finds flaws in your defences and targets them
- fast -> aims entirely on speed
- offensive -> aims on attacks and health
- clustering -> aims on rushing through your defences in one strong mass
- tricky -> built to dodge and be hard to hit smart+tricky would be hellish
- flying -> able to avoid ur defences and fly through
if adjectives cant give you anything instresting it goes by relentless
- relentless -> focuses on health mainly and production
the things that the tree could go is
- cluster?
- speed
- health
- attacks
- damage
- attack rate
- modifiers
- properties
you will start against a relentless tree then later in the game the it will generate a few more trees the later trees will be given more adjectives and eventually will be very difficult the way to figure out the amount of adjectives the new tree has is reversefib(floor(n/10)) round 10 will change any trees created at this point to have 1 adjectives round 20 will change any trees created at this point to have 2 adjectives round 30 will change any trees created at this point to have 3 adjectives round 50 will change any trees created at this point to have 4 adjectives round 80 will change any trees created at this point to have 5 adjectives round 130 will change any trees created at this point to have all adjectives
there would be a bunch of cost based upgrades and the tree would work out how good each would be and then choose the most cost effective ones there would be a pressure rating and the game would aim to keep it at a constant amount via sending certain waves and getting upgrades that would ensure it is kept high the upgrade based way this would work is via the game would work out a win/cost based system for every upgrade where it would generate the cost effectiveness of the tower and compare itwith (avgpressure per dollar) * time to upgrade this would work out wheter the upgrade is worth the time spend and each upgrade would have a cost and a pressure every round each tree gets some points and can spend the points on a upgrade decided by the above metric
pressure it would be a combination of
- damage player is taking
- difficulty of enemies * qty
it would slowly rise and fall in a way that when the player has been taking it easy from the enemies they will go hard
the amount of points the enemy gets to apply on sending bloons is calculated by doing max(const * (const - pressure) * abs(sin(round/4)),100) each tree will have a cost based on not its upgrade but the number of adjectives then you will do sum(upgradePressure)/costFunc(adjectives) to work out the cost prossure coefficent the priority will have a random value the using priortity you work out how much cost you get on each attack and the more you buy of each type the more value you get so it shouldnt send many different tree attacks at one
bases can be various sizes and shit and generally have a range with at least a radius of 2 idealy certain ones can be smaller or like have notched edges each tower will generate a certain set of properties they want which will have 2 positives and 1 negative so itd be like “hi yes i want to be a tower that shoots lighting, pulls enemies closer but has slow attack speed” or “let me be a applying flame, has good aiming and low damage” i think all the properties will be based off a module
i want to cover all towers from bloons and all towers from factorio
- raycast
- area damage
- single projectile
- spot based (maybe)
- landmine esc
all of these will be able to go into the respective tree some of these can be represented as just a base with a module ie bidirectional so i am unsure about adding them cos like omni, bi, funnel and homing should all be modifiers in my opinion
i want each “turret” to have a rotspd which defines how fast they can rotate and then each head will have a like range of degress they can snap to so if you are aiming at an enemy at 30 degress and it dies say the next enemy is at 35 degress you can just snap to it multiple shots will be handled in two ways
- funnel funnel gives like a head more heads so like they are with a small degree apart so one head it as -5 degrees and the other is at +5 degrees
- bidirectional this gives heads in a way that they have large coverage so like one shoots at 0 degrees and the other does so at 180 degrees
turrets have a rotspd and this can be upgraded
- funnel shots every time you shoot enemies it will shoot multiple shots with a degree of seperation
- bidirectional the closest head moves towards the enemy and the other head also shoots
turrets have no rotspd and will fix to an enemy that is being targeted
- funnel shots every time you shoot enemies it will shoot multiple shots with a degree of seperation like 1 degrees
- bidirectional every time you shoot at the front you also shoot at the back
the targeting system would have to be done to find the best enemy that is also near, i would need to balance which to shoot out of a enemy near the player and a enemy near the turret though currently there is no targeting so i guess i could just ignore any factors other than how near it is to the head (possibly) i greatly prefer the medium and cooler ways but they are harder to do and i want to get the game at a demoable point slowing down is always bad
- star - only in weak spots 4 sides - attacks quadruoupled + more weak spots
- circle - default hemisphere - weak at the back quaterfoil - regens
- square - stronger rectangle - strong + fast octagon - super fucking strong + big
- triangle - fast furious diamond - spawns 2 triangles curvilinear - speeds up nearby enemies, normal speed
this will shoot a single instant laser at the enemy and peirce through ti homing: it will bounce to enemies
consistant damage version of raycast
rapid shot, pew pew, flame
this will deal damage to all around it
this will shoot out ukelele blasts to all the entities in its range that bounce 3 times max how do i measure the bounces, have a list lmao
this will shoot out gas which disapperates and becomes weaker it will be projected in a direction but slow down over time
neon asthetic aka bright colors and dark colors will need to redo
- crafting box
- deck box
- item cards
- all items
- all bases
- ui sidebar
- ui topbar
#1a1f2a - background #1a1b26 - alt background #a9b1d6 - forground #ff1178 - pink #fe0000 - red #fff205 - yellow #01fff4 - blue #7cff01 - green #f2a400 - dirk orange #0715cd - john blue #6c00da - gamzee purple #de0266 - gay pink #f5a9b8 - trans pink #5bcefa - trans blue
i am thinking of allowing dynamic sprite loading, having some asset related stuff in a xml file maybe i could have lua code in the xml file allowing all the assets to be coded in the thingy i intend on using moonsharp for the C# lua interpretation www.moonsharp.org the problems i see are getting C# to generate classes from lisp and the other problem i see is getting C# to run finite state machines with lua functions
i think my solution will be items and shit in xml all attacks, debuffs ,procs and modules should be in lists with names the item database and waves will be loaded via xml
custom attacks, debuffs and procs aka classes will be loaded in via C# dll this all works well in theory
ok so what the game is about is building turrets, yes why build turrets well because there are enemies
what do the enemies want then they want uuhhhhh a gold orb what does the gold orb do? uhhhh everything in its range gets homing and 2x attack speed
why do the enemies attack the player then uhhh the player has the orb why cant the player just drop the orb uhhhh they can but enemies can attack it then
so how do the enemies move cos of this well they just want the orb so they pathfind to wherever that is
they move to the orb they avoid other stuff
stuff to show minus name and icon
- means referance
hp debuffs type power stability
*stats procs attacks type properties power stability
*stats procs attacks type properties
hp effect power stability type in range
debuffs hp regen type
center and aim position need to be abstracted to a function
- dagger (mid) random -> attacks random directions at full distance homing -> doesnt reset center returning -> n/a polar -> n/a
- hand + sword (mid) default -> arm goes half sword length away and then swipes, cant move while swiping predictive -> predictive + always moving random -> attacks random directions at within range homing -> center slowly moves towards an enemy returning -> n/a polar -> n/a
- tenticle (v.hard)
normal -> tentacle goes to enemy, the entire tenticle is collision boxes
random -> attacks random directions within range
homing -> it will become 2 tenticles, the middle focuses on one enemy, the other focuses on another
returning -> the start and end are at the center and it sorta loops back around on itself
now i know that sounds dumb BUT it will only look dumb if it is
homing and returning will need to be implemented in a way that you have one tentacle, this tentacle can be made of a bunch of seperate tentacles so homing -> 1/2 at enemy 1, 1/2 at enemy 2 returning -> 1/2 at enemy 1, 1/2 at center returning + homing -> 1/3 at enemy 1, 1/3 at enemy 2, 1/3 at center this will be hard to do, but v interesting, modulo be like, spends days working on a synergy between 2 special properties on a single attack, we have like 12 unique attacks wtf polar -> n/a fuck that shit
- beam (easy) normal -> goes to the nearest enemy and when going through them it deals damage, length will be equal to range random -> spins, doesnt aim randomly, just spins homing -> center moves to enemy +random -> center goes around the range perimiter, maybe click to cycle through shapes returning -> n/a polar -> n/a
explosion on hit (total) pulls enemies in (base) shoots lasers to nearby enemies (total) makes an enemy leave a poisionous trail (base) stuns them (base) delayed explosion (total) pushes enemies away (base) knocks hit enemy back (total) slows enemy down (base) changes side (base) leaves a toxic splash on the floor (base) all enemies that touch it get poisioned (base) changes into a different enemy (na) decreases attack speed (base) increases own strength (base) turns gold and drops double cash (base) absorbs hits and then applies them to all enemies around it (base) spawns things that home onto enemies (total) halves its health (na) if below half health turn invincible for 5 secs, else kill (na) make all movement in the wrong direction (base) deal 5x damage (total) reset all cooldowns (na) make a saw orbit it (total) make the enemy constantly do tesla coil effect on nearby enemies (total) it takes damage for every meter itmoves (base) collapse risk of rain (base) if close 2x deal damage (na) heals perent for all the damage dealt (total) the faster an enemy is moving the more damage it takes (total) makes enemy do negative damage turn into shrapnel shoot two shots in opposite directions confuses enemies black hole that pulls in everything creates a temporary mega high priority target creates a quaddirectional laser beam reverses any healing spawns a bouncy saw
walls: power linearly effects health
towers: power effects dmg, max health, attack rate by the function f(power)=pow(power,1/3)
special properties modules: cannot be stacked hrngr attack modules: can be stacked f(power,multiplier) { (dmg,attackRate) *= sqrt(power*multiplier)} stacking purely adds another attack, though i could have it go through the list of attacks and have it add to the power and multiplier
proc modules: can be stacked stacks are applied easily the multiplier and power will need to be done creatively for each module
stat modules: stacks easily multiplies easily
ugh ook so im revisitng this after like a while now i had a concept for components but uhhh now i do not
basically it will go as such, you have a grey orb, this can be fasioned into either a red orb or a green orb there are also blue orbs dropped by your towers
now red orbs are made in a red orb machine, they take log2 time of how much you make, they also sap health away from any thing in its radius, the more things nearby the faster it saps
green orbs are made in a green orb machine the time they take is constant no matter how many you put in but it relies on you being there for the entire time
all orbs are dropped based on the power of the damageable object enemies drop grey orbs based on their level towers drop blue orbs based on their power
blue orbs are collected by enemies, and they level up based off an exponential graph the amount of xp to level up is determined by 2^(level-1)
i think generally this should be good
why the fuck did i implment components
components will be spawned by running playerbehavior.me.SpawnComponent(