next step is to pick a real direction -- MMBN-like (+STS-like) or
Survivors-like -- and adapt to match. I am likely to completely remove
the energy system and use permanent autofire, freeing both fire buttons
for more interesting tasks. It loses the opportunity to create a dynamic
around baiting an enemy to keep shooting so its shields don't recover,
but I don't think it loses a lot else.
Either energy management needs to become really important and the game
becomes strategic and tactical, or it needs to be a non-issue and it is
an arcade game. Tyrian itself did not make the energy system interesting
and it was just a tax, so making it interesting would be doing something
new. But I think it's a kind of "interesting" that almost nobody would
adopt unless I go _very hard_ into creating a tactical/strategic shmup.
A shmup that is actually a strange kind of RTS sounds... really cool,
actually, but I'm not at all confident I could design it.
Removing energy entirely gives us a button _and_ a meter back, which
can be used for XP (Survivors-like) or rearm time (MMBN-like).
Instead of doing a special case for 1HP, 0HP is survivable, ships die
at negative HP instead. all ship health is adjusted to match, assuming
the weakest shot is 0.5hp, which is currently true. the "real" game will
totally rebalance all ships and weapons anyway.
we're getting close to when I have to stop dawdling and implement the
real game, the engine is _there._
it was showing the bar intended as the warning that there's no HP
under the shield. but I tried it and that bar just makes it look like
there *is* a sliver of health, which there isn't. so it's better off
without that in either mode.
some guns do less than one damage per shot (vulcan gun does 0.5), so
Instant Death Mode needs to max at 0x0.0001, the smallest nonzero value
in Pico-8's fixed-point numeric type.
One Hit Mode is just a comment for now, but I've been uncommenting it
to test it. Note that replacing the health meter with a "!" is triggered
by max HP + max shield <= 1 because 1 hp shows an empty bar.
this needs some more special cases for low-HP ships with active shields.
10s generator is too slow -- 10 seconds ago is an eternity in a shmup
and a player who has stopped firing should recover much faster. The
generator's max capacity is much lower and shield cost has been
rebalanced to match.
The Protron is much more expensive to fire, it was previously just
easy mode.
Shields now recover faster _once they start recovering_ (every second
if energy is available) but getting hit causes a "penalty cooldown"
that is much longer than the standard recovery interval. This behavior
is taken from Halo and basically every modern FPS that came after it;
it's unlike Tyrian, which had consistent shield recovery behavior.
But I think Halo's rule plays much better.
a batch change from ship to self broke the thing that kept the player on
the screen. also spawn_goodie got missed in the migration to `_ENV` for
looking up stuff by name.
Vacuum Gambit is about to stop being a Tyrian clone. The hybrid of
Mega Man Battle Network and Slay the Spire mechanics lends itself better
to Galaga than Tyrian. updatedshmup.p8 remains an excellent basis for a
Tyrian-like shmup, especially since it has a (demo of a) level loading
engine that reads strings, and maybe I'll even implement something along
those lines someday -- but I'm about to tear it all down to build it up
again, starting with the entire model for levels and progress, followed
shortly by the "energy" system and its interaction with shields.
(long-term plan: shields will auto-recover after every "flotilla", but
health will be more difficult to recover. Player shots will be limited
entirely by ammo and cooldown, replacing the "burst throughput" vs.
"sustain throughput" system created by the generator, although some
enemy firing patterns may recreate that behavior.)
(plan for the "level" system: create Galaga-style flotillas. I think
ship behaviors can reasonably be declared in the 8 bits available in
sprite flags, meaning I can program simple enemies entirely from the
sprite sheet and draw flotillas on the map.)
marshaling through a table is a waste of time, the duplication betweeen
positive and negative thrust vectors is pointless, and pre-multiplying
thrust complicates "stay in a box" goals later on.
commit b91ebeb775
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:33:00 2023 -0800
fix boss
it works now except for a square being drawn in the shield. good enough
commit ab687f8f6d
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:23:29 2023 -0800
adjust spawning
now it runs for a little tiny bit!
commit bef95df6a1
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:18:20 2023 -0800
typo
commit 24435a3c15
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:18:01 2023 -0800
move guns before ships
commit 0c3a36f1fd
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:15:34 2023 -0800
defer zap_gun creation until it exists
commit a39c419e5f
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:13:51 2023 -0800
fix mknew
commit 9ef762268f
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 13:04:13 2023 -0800
many assorted syntax errors
commit e50f516b11
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 12:00:34 2023 -0800
allow strings when spawning guns
commit f9e28fa0e2
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 11:59:20 2023 -0800
fix missing paren
commit 38a054dec1
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 11:48:08 2023 -0800
candidate conversion to csv for level format
commit fd391ff3bc
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 11:40:11 2023 -0800
use _ENV to get rid of level_events and spawns
commit fbd9f97429
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Wed Dec 20 11:33:59 2023 -0800
maybe fix the level parser
commit 2a61e8b5d6
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Sun Oct 15 21:09:12 2023 -0700
partial conversion to CSV-based levels, does not run yet
commit 4ccbe1dc35
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Fri Oct 13 01:02:43 2023 -0700
okay honestly this all can and should just be CSVs
commit b536d2c987
Author: Kistaro Windrider <kistaro@gmail.com>
Date: Sun Oct 8 00:41:24 2023 -0700
base for representing a level as a string
avoids time rollover! not doing this for `distance` because I don't intend any level script to exceed five minutes, but freeze time could be much longer