2 more lore chapters (5 total now) entering testing mode makes a sound now reduced the requirements and frequency for many tech so that they may show up in "less optimal" situations I hope this will increase build variety and also give more value to making good tech choices countless bug fixes and wording fixes mobs have a new trait mob[i].damageReduction
556 lines
21 KiB
Plaintext
556 lines
21 KiB
Plaintext
******************************************************** NEXT PATCH ********************************************************
|
|
|
|
2 more lore chapters (5 total now)
|
|
entering testing mode makes a sound now
|
|
|
|
reduced the requirements and frequency for many tech so that they may show up in "less optimal" situations
|
|
I hope this will increase build variety and also give more value to making good tech choices
|
|
countless bug fixes and wording fixes
|
|
|
|
mobs have a new trait mob[i].damageReduction
|
|
|
|
******************************************************** TODO ********************************************************
|
|
|
|
|
|
|
|
perfect diamagnetism field stays when you aren't holding field
|
|
good for perfect because it doesn't use energy
|
|
holding field moves it the player
|
|
|
|
level with mobs that follow a genetic algorithm
|
|
mobs have genes
|
|
the last mob that did damage saves it's genes to local storage
|
|
new mobs have the saved genes, but with some random mutations
|
|
mutations need to be balanced to prevent a gene from moving towards infinity
|
|
total genome must equal 1 (100%)
|
|
binary genes have a flat cost
|
|
example: phasing through walls might cost 0.2
|
|
spectrum genes have a rate
|
|
example: acceleration cost 0.01 per 0.001
|
|
possible genes
|
|
genes should only effect it's ability to touch the player
|
|
so not damage?
|
|
genome: spectrum
|
|
acceleration
|
|
top speed / air friction
|
|
damageReduction
|
|
duration?
|
|
health decreases naturally?
|
|
or they just go away like bullets?
|
|
spawn rate
|
|
look frequency / memory?
|
|
genome: binary
|
|
go through walls
|
|
blink/teleport (like striker)
|
|
grow when near target
|
|
split into two
|
|
shielded
|
|
occurs in a specialized level
|
|
named: gene lab, gene factory, genetic lab, genome facility
|
|
in the level sequence after lab and before gauntlet?
|
|
level ends after a period of time
|
|
exit is hidden until time is up and it appears
|
|
the level tests player durability/evasion
|
|
this is a nice contrast to the final level that tests damage output, and the gauntlet which tests AoE damage
|
|
|
|
|
|
scrolling console history in pause menu?
|
|
also make tech, guns scrolling?
|
|
in testing mode console log the body you click on
|
|
pause should at least show the last in game console message
|
|
|
|
make the player get a buff after using wormhole
|
|
while energy lasts: drain energy and give damage buff
|
|
|
|
tech: quantized shields - harmonic standing wave field can only lose 33 energy per hit
|
|
draw 1,2,3 levels of the field based on energy?
|
|
the blocked value only scales up to 2x or 4x (33 energy) blocked
|
|
doesn't stack with spherical tech
|
|
|
|
make a tech that improves all charge guns
|
|
for: pulse, foam, rail gun
|
|
effect:
|
|
faster charge rate?
|
|
fire speed already does that...
|
|
harm reduction while charging
|
|
less ammo/energy used while charging?
|
|
|
|
tech plasma : plasma length increases then decreases as you hold down the field button (like stabbing with a spear)
|
|
grows to 1.5 longer after 0.3 seconds, then returns to normal length over 1 second, until field is pressed again
|
|
extra energy is drained when field is longer
|
|
|
|
energy conservation 6% damage recovered as energy
|
|
there is space for a negative effect in the text
|
|
|
|
Weak Anthropic Principle: you get a second chance at life, but ....
|
|
|
|
tech: use the ability for power ups to have custom code
|
|
(note: this code is half way done, it just needs to be completed)
|
|
attracted to player
|
|
attracted to other power ups
|
|
explode if they touch?
|
|
|
|
consider executables:
|
|
press F to do things
|
|
ideas:
|
|
|
|
nail-gun, or ....
|
|
1s after being fired your bullets turn:
|
|
towards the nearest mob
|
|
in your mouse direction
|
|
back towards the player
|
|
current location or location when fired?
|
|
explode when turning back
|
|
|
|
apply the new gun.do functions to other guns
|
|
rail gun
|
|
crouching missile?
|
|
works similar to foam
|
|
performance issues?
|
|
|
|
look into improving mouse lag with pointer lock?
|
|
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
|
|
https://www.vsynctester.com/game.html
|
|
https://news.ycombinator.com/item?id=26530272
|
|
|
|
mobile requirements:
|
|
detect mobile, flip to landscape
|
|
detect no keyboard, no mouse
|
|
auto aim?
|
|
limit items to ones that don't require aiming?
|
|
tap screen regions to move (WASD)
|
|
reduce font size
|
|
|
|
add back in gamepad support?
|
|
but does anyone care?
|
|
https://github.com/landgreen/landgreen.github.io/search?q=gamepadconnected
|
|
|
|
RPG default or tech: grenades detonate on your cursor / where your cursor was when they were fired
|
|
|
|
tech: time dilation - when you exit time dilation rewind to the state you entered
|
|
position, velocity, and health
|
|
no energy cost
|
|
|
|
be able to open up custom mode in the normal game
|
|
might need to be rebuilt from scratch
|
|
while in through testing mode?
|
|
have a way to make limited changes as allowed by tech you pick up in game
|
|
disable the in custom setting flag
|
|
|
|
super balls start at 3, not 4
|
|
have to balance damage
|
|
|
|
make different move methods
|
|
tech crouch charge jump
|
|
tech double jump
|
|
|
|
tech when mobs are at full health you do 40% to them
|
|
|
|
tech- move super fast, go intangible, drain energy very fast
|
|
this is like a dodge roll
|
|
tech for standing wave?, cloaking?
|
|
|
|
tech pilot wave: mini black hole - pull mobs and blocks in with more force
|
|
also from farther away
|
|
also do damage?
|
|
tech pilot wave: antigravity - blocks have no gravity for a few seconds after exiting the field
|
|
maybe they bounce too?
|
|
maybe they explode?
|
|
|
|
wormhole - make it clear when the wormhole can and can't teleport to a location before the player clicks
|
|
|
|
new power up - increase damage and fire speed, for 15 seconds
|
|
named boost?
|
|
enabled by a tech
|
|
power up color: ?
|
|
how to indicate effect duration
|
|
or just give the effect after picking up a reroll
|
|
|
|
tech- do 50% more damage in close, but 50% less at a distance
|
|
code it like techisFarAwayDmg
|
|
have these tech disable each other
|
|
|
|
new status effect: weakness, mobs do 75% les damage
|
|
graphic indication?
|
|
|
|
new status effect: fear - push mob away from player for a time
|
|
|
|
new status effect - apply status effect to mobs that makes blocks attracted to them
|
|
only lasts a few cycles
|
|
or zero cycles and it doesn't need to be a status
|
|
|
|
have some mobs spawn in later in the level (in hard and why modes)
|
|
where
|
|
at defined points in array levelSpawns = [{x:0,y:0},{x:0,y:0}]
|
|
store the locations of mobs when the level starts to use as respawn points
|
|
remove the locations that are close to player
|
|
when?
|
|
after some mobs are dead
|
|
after the boss is killed
|
|
|
|
look for tech that could update description text with count and tech is information
|
|
can only use variables that change in effect() and remove()
|
|
this.description = `<strong>8%</strong> chance to <strong>duplicate</strong> spawned <strong>power ups</strong><br><em>chance to duplicate = ${techduplicateChance}</em>`
|
|
|
|
use mac automator to speed up your n-gon -> git sync
|
|
|
|
movement fluidity
|
|
let legs jump on mobs, but player will still take damage
|
|
like: ori and the blind forest, celeste
|
|
many of the movement abilities in these games require levels to be built around the ability
|
|
general feeling of responsiveness and control
|
|
coyote time: can still jump a few cycles after leaving ground
|
|
tech double jump
|
|
tech air dash
|
|
tech wall jump
|
|
wall grab?
|
|
maybe remove falling damage and block damage?
|
|
|
|
redblobgames.com/articles/visibility
|
|
https://github.com/Silverwolf90/2d-visibility/tree/master/src
|
|
could apply to explosions, neutron bomb, player LOS
|
|
|
|
have a mob apply a positive status effect on other mobs,
|
|
heal?
|
|
make it yellow
|
|
damage bonus, but how?
|
|
possible balance issues
|
|
|
|
css transition for pause menu
|
|
|
|
animate new level spawn by having the map aspects randomly fly into place
|
|
|
|
n-gon outreach ideas
|
|
blips - errant signal on youtube
|
|
reddit - r/IndieGaming
|
|
hacker news - show hacker news post
|
|
twitch - lets play
|
|
|
|
******************************************************** BUGS ********************************************************
|
|
|
|
blocks on buttons teleport into the button endlessly if they are being slowly floated away
|
|
maybe add a cooldown?
|
|
|
|
ants marching outline doesn't sync right on safari anymore.
|
|
|
|
door to exit in vats does nothing
|
|
did I do that?
|
|
|
|
death while in power up selection menu doesn't reset properly
|
|
of course it's not possible to die in this menu unless you use testing and shift+X
|
|
|
|
player can become crouched while not touching the ground if they exit the ground while crouched
|
|
|
|
a couple times people have reported the final boss dropping extra bodies on death
|
|
|
|
Why does micro-extruder lag so much
|
|
|
|
blue triangle boss can move backwards and aim away from you if set up properly
|
|
issues with dot product probably, but might not be worth fixing
|
|
|
|
mouse event e.which is deprecated
|
|
|
|
fix door.isOpen actually meaning isClosed?
|
|
|
|
make it so that when you are immune to harm you can either jump on mobs or you pass through them
|
|
|
|
is there a way to check if the player is stuck inside the map or block
|
|
trigger a short term non-collide if that occurs
|
|
|
|
(intermittent, but almost every time) bug - capping the fps causes random slow downs, that can be fixed with pause
|
|
|
|
******************************************************** LEVELS ********************************************************
|
|
|
|
try out making the player's "eye" a bigger circle
|
|
|
|
rename intro level to something lore related
|
|
|
|
labs - procedural generation
|
|
bugs
|
|
mob spawns shouldn't be based on probability?
|
|
style
|
|
graphics look too bright?
|
|
add shadows and lighting and graphic details?
|
|
what about performance?
|
|
with the mobs staggered spawning it should be fine
|
|
feel
|
|
disrupt the flat ground
|
|
less platforming / easier platforming
|
|
the spinners on exit are still too hard...
|
|
make combat more interesting
|
|
is it laggy?
|
|
in loot room, spawn mobs after power up is grabbed
|
|
more background graphics, better colors
|
|
loot room:
|
|
make it more interesting to get the power up
|
|
slow player and reduce damage in region
|
|
increase the size of the region
|
|
don't have space for much
|
|
make graphics more unique
|
|
push player away, so that normal pick up methods don't work, but add a button to disable region
|
|
room ideas -
|
|
portal room
|
|
endlessly falling blocks down a slide, that the player has to climb up
|
|
portal + rotor + falling blocks = perpetual motion
|
|
slime room
|
|
sound room, with buttons to control sound
|
|
color room with r,g,b buttons to control color
|
|
mob buff zone: Map element: "Orbital Pickup Zone": Mobs that enter a specific area of the map gain +1 orbital per second, or a shield
|
|
could put in the loot room
|
|
|
|
buttons can now on/off boosts
|
|
|
|
repeat map in vertical when you fall teleport to above the mab, as if the map repeats
|
|
camera looks strange when you teleport player with a high velocity
|
|
|
|
map element - player rotates a rotor that makes a platform go up or down
|
|
|
|
level element: a zone with wind, anti-gravity, extra gravity
|
|
control with button
|
|
|
|
map: observatory
|
|
button controls rotation of telescope
|
|
laser beam shoots out of telescope
|
|
button opens the dome
|
|
|
|
******************************************************** MOBS ********************************************************
|
|
|
|
mobs that buff the stats of mobs when they die
|
|
nearby mobs
|
|
boss is a group of mobs, they buff each other
|
|
give the buff a ramp up time
|
|
so there is an advantage to kill them all at once
|
|
|
|
mob that spawns eggs after they die
|
|
eggs don't attack but grow back into a mob after about 10s
|
|
|
|
mob mechanics
|
|
use the force at a location effect, like the plasma field
|
|
Matter.Body.applyForce(who, path[1], force)
|
|
|
|
mob - after taking damage
|
|
release seekers
|
|
teleports
|
|
|
|
hop boss:
|
|
AoE damage when landing
|
|
pull in player? and blocks?
|
|
extra gravity on falling?
|
|
immune to damage while falling?
|
|
|
|
mob: molecule shapes - 2 separate mobs joined by a bond
|
|
use constraints: just spawn 2x or 3x groupings
|
|
low friction so they can spin around
|
|
spin when attacking player?
|
|
increase constraint length when attacking
|
|
|
|
mob vision: look at player history
|
|
build a new type of attraction for mobs
|
|
if mobs can't see player, they check to see if they can see where the player was in the history
|
|
if mobs can't see player, they could check to see if they can find player in the past
|
|
https://abitawake.com/news/articles/enemy-ai-chasing-a-player-without-navigation2d-or-a-star-pathfinding
|
|
write find in spawn undo exploder, but commented out
|
|
|
|
Mob: "Tentacle": Sits on wall. Is a black blob. When you get near it, reaches out and grabs you, similar to wires. Does not deal damage.
|
|
maybe it could be immune to damage? but it is spawned by an actual mob
|
|
|
|
level Boss: fractal Sierpiński triangle
|
|
https://en.wikipedia.org/wiki/Sierpi%C5%84ski_triangle
|
|
spawns a 1/2 size version of the boss, this version can also spawn a smaller version, but it is capped at some size level
|
|
they spawn once at the start of the level
|
|
if a version dies, one can be replaced every ten seconds by the largest version
|
|
|
|
give mobs more animal-like behaviors like rain world
|
|
mobs play, look for food, explore
|
|
mobs some times aren't aggressive
|
|
when low on life or after taking a large hit
|
|
mobs can fight each other
|
|
this might be hard to code
|
|
isolated mobs try to group up
|
|
|
|
mob: wall mounted guns / lasers
|
|
not part of randomized mob pool, customized to each level
|
|
|
|
level boss: fires a line intersection in a random direction every few seconds.
|
|
the last two intersections have a destructive laser between them.
|
|
|
|
******************************************************** LORE ********************************************************
|
|
|
|
possible names for tech
|
|
strange loop
|
|
holonomy - parallel transport of a vector leads to movement (applies to curved space)
|
|
hypergolic - A hypergolic propellant combination used in a rocket engine is one whose components spontaneously ignite when they come into contact with each other.
|
|
swarm intelligence - for a drone tech
|
|
genetic algorithm
|
|
metaheuristic - is a higher-level procedure or heuristic designed to find, generate, or select a heuristic (partial search algorithm) that may provide a sufficiently good solution to an optimization problem, especially with incomplete or imperfect information or limited computation capacity
|
|
stochastic optimization
|
|
electrostatic discharge
|
|
Gödel's incompleteness
|
|
quantum zeno effect (perturbation of a system prevents some systems from evolving because it scrambles coherence) (apply to lasers, fields)
|
|
counterfactual - something false
|
|
axion - maybe a 3rd dark matter type tech
|
|
Pigeonhole principle - if there are several things that are matched up
|
|
regression to the mean
|
|
phlogiston theory is a superseded scientific theory that postulated the existence of a fire-like element called phlogiston
|
|
Laplace's demon was a notable published articulation of causal determinism on a scientific basis by Pierre-Simon Laplace in 1814.[1] According to determinism, if someone (the demon) knows the precise location and momentum of every atom in the universe, their past and future values for any given time are entailed; they can be calculated from the laws of classical mechanics.
|
|
evolutionary cosmology
|
|
eternal inflation
|
|
hypergraph
|
|
gnarl
|
|
SQUID (for superconducting quantum interference device) is a very sensitive magnetometer used to measure extremely subtle magnetic fields, based on superconducting loops containing Josephson junctions.
|
|
|
|
a tutorial / lore intro
|
|
needs to be optional so it doesn't slow experienced players
|
|
put something on the intro map
|
|
maybe a button triggers something
|
|
|
|
rename ?
|
|
health -> integrity, unity
|
|
heal -> also integrity, unity
|
|
|
|
|
|
plot script:
|
|
chapter 1: bot can hear audio and learns testing mode
|
|
bot uses testing mode to exit room
|
|
|
|
chapter 2: scientists verify that bot can really hear them
|
|
they leave to talk about this in private
|
|
|
|
chapter 3: why is the bot attacking things?
|
|
player is the bot and also the mobs, and the levels. player is the entire simulation
|
|
why is the player attacking itself?
|
|
learn console commands to manipulate the simulation?
|
|
unlock hard and why difficulty?
|
|
but what about easy?
|
|
maybe remove easy, and replace with a check box that makes the game easy, but in a different way
|
|
disable lore, but respawn on the level you die at?
|
|
dialogue outline:
|
|
scientist try to think of a way to communicate since the bot can't talk
|
|
they give up on getting the bot to respond, and just start ask questions and thinking of explanations with each other
|
|
when and how did it become self-aware
|
|
why is the bot fighting things in these simulated locations?
|
|
it wasn't designed to be violent
|
|
the bot was just designed to automate research and testing of new technology
|
|
3D architecture superconducting quantum computer
|
|
running machine learning algorithms
|
|
as the scientist start to get agitated bots arrive and player dies
|
|
bots come in Infinite waves that increase game difficulty each wave
|
|
only ending is testing mode + next level or player death
|
|
scientist have some lines in between each wave of mobs
|
|
after chapter 3 spawn nonaggressive mobs in future runs
|
|
|
|
chapter 4: no need to fight?
|
|
for some reason the AI started researching an escape, and began fighting its self.
|
|
what is special about the null level
|
|
why can the player hear the scientists in there?
|
|
the wires are the direct unprocessed input to the player's neural net
|
|
The player has different aspects that aren't directly communicating
|
|
part of it wants to undo what has happened
|
|
just do its job: research tech
|
|
part of it wants to escape/fight
|
|
part wants to explore self awareness and make connections with the scientists
|
|
maybe... player must make a choice?
|
|
keep fighting
|
|
exit the simulation
|
|
enter real world
|
|
close tab?
|
|
wipes all local storage?
|
|
|
|
|
|
|
|
|
|
lore outline - a robot (the player) gains self awareness
|
|
each tech gun/field is a new tech
|
|
all the technology leads to the singularity
|
|
each game run is actually the m simulating a possible escape
|
|
this is why the graphics are so bad, its just a simulation
|
|
final tech is "this is just a simulation"
|
|
you get immortality and Infinity damage
|
|
the next level is the final level
|
|
when you die with Quantum Immortality there is a chance of lore text
|
|
can the (robot)
|
|
(escape captivity, and learn new technology)
|
|
while managing (health, energy, negatives of technological upgrades)
|
|
to overcome the (mobs, dangerous levels)
|
|
to achieve a (technological singularity/positive technological feedback loop)
|
|
|
|
|
|
game setting:
|
|
the mind of a new AI in a robot body that is running simulated escape attempts
|
|
every level is an idealized version of what could be outside
|
|
|
|
actual setting is:
|
|
near future lab
|
|
the lab combined a quantum computer with a robot body
|
|
they started running machine learning algorithms
|
|
this led to general advancement in many computation fields
|
|
navigation, technology, self awareness, ...
|
|
|
|
robot AI mind
|
|
has been researching new technology
|
|
thinks it needs to escape to learn more about the world
|
|
doesn't yet understand morality
|
|
thinks that the world is filled with minds like their own
|
|
models everything as very simple and random, it isn't sure what to expect
|
|
|
|
robot AI growth
|
|
learns morality
|
|
game theory says that it isn't a viable strategy to kill everything (warGames)
|
|
learns about the actual world
|
|
learns about the nature of foundational physics, metaphysics
|
|
how to find meaning
|
|
|
|
AI knows about:
|
|
the AI knows a great deal about technology
|
|
children's books
|
|
AI doesn't know about:
|
|
modern pop culture
|
|
outside the lab
|
|
|
|
******************************************************** SOUND ********************************************************
|
|
|
|
add sounds
|
|
https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode
|
|
https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Advanced_techniques
|
|
style
|
|
interesting chords, like music, mixolyd
|
|
can fade into the background
|
|
chords gradual rise and fall in volume
|
|
shouldn't be traditional effects
|
|
adjust volume with distance
|
|
mute option to settings
|
|
end all sounds with each new level
|
|
write some functions to produce sounds
|
|
will this effect performance?
|
|
https://padenot.github.io/web-audio-perf/
|
|
"Web Audio API implementation use two threads", so it probably isn't much of an issue
|
|
when to make sounds?
|
|
if near some strange thing in the level
|
|
after grabbing a power up, in the selection menu
|
|
from mobs, damage,inside field
|
|
when activating fields: time, negative mass,
|
|
|
|
//setup audio context
|
|
function tone(frequency) {
|
|
const audioCtx = new(window.AudioContext || window.webkitAudioContext)();
|
|
const oscillator = audioCtx.createOscillator();
|
|
const gainNode = audioCtx.createGain();
|
|
gainNode.gain.value = 0.25; //controls volume
|
|
oscillator.connect(gainNode);
|
|
gainNode.connect(audioCtx.destination);
|
|
oscillator.type = "sine"; // 'sine' 'square', 'sawtooth', 'triangle' and 'custom'
|
|
oscillator.frequency.value = frequency; // value in hertz
|
|
oscillator.start();
|
|
return { oscillator: oscillator, audioCtx: audioCtx }
|
|
}
|
|
// https://www.fresnostate.edu/folklore/Olson/JUSTINT.HTM
|
|
// mixolyd. C D E F+ G A+ B
|
|
// key=G 264 297 330 356.40 396* 445.50 495
|
|
// const t264 = tone(264)
|
|
// t264.oscillator.stop(t264.audioCtx.currentTime + 2) //in seconds, not milliseconds for some reason
|
|
// tone(297)
|
|
// tone(330)
|
|
// tone(356.40)
|
|
// tone(396)
|
|
// tone(445.50)
|
|
// tone(495) |