Commit Graph

86 Commits

Author SHA1 Message Date
dd143060ac
squash: refactor bullets to remove enemy flag
commit ead2a7d874
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Mon Sep 2 14:45:56 2024 -0700

    fix remaining `vulcan`-family bug

commit 571412b15e
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Mon Sep 2 14:15:56 2024 -0700

    fix chasey xl offsets

commit 907bd8318c
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Mon Sep 2 14:12:35 2024 -0700

    several more fixes, now runs to the end but shot offset is wrong

commit 7170552448
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Mon Sep 2 13:41:42 2024 -0700

    first three waves of bug fixes

commit 01ab6d3969
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Mon Sep 2 12:59:49 2024 -0700

    maybe the rest of the refactor?

commit 7869192dee
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Tue Aug 20 01:21:13 2024 -0700

    partial refactor continued

commit a4658e3ef4
Author: Kistaro Windrider <kistaro@gmail.com>
Date:   Mon Aug 19 16:00:16 2024 -0700

    halfway through bullet refactor
2024-09-02 14:46:51 -07:00
60b685d94b
save a copy of vacuum_gambit.p8 as last_tyrianlike
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).
2024-08-18 15:04:17 -07:00
cc1e7ea5b7
surive at 0hp and adjust hp values to match
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._
2024-08-18 14:57:29 -07:00
6b8efe3438
fix HP-only mode
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.
2024-08-18 14:49:44 -07:00
c2668cefea
handle 0 shield and 1 max HP cases 2024-08-18 14:40:11 -07:00
eebd84544b
one hit comment now shows correct value to use
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.
2024-08-18 01:57:53 -07:00
965fc0d688
major rebalances
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.
2024-08-18 01:46:39 -07:00
cc3ed20f76
fix overshield 2024-08-18 01:29:27 -07:00
fa0cff1ffc
one hit mode, fix vertmeter
full height meters overflowed p8num range
2024-08-18 01:28:12 -07:00
4f8b861cdb
okay I special cased it 2024-08-18 01:14:05 -07:00
5dc259c094
the Secret Hit Point: you have 1hp when the meter is empty
this won't work if your maxhp is 1, will need to special case that
2024-08-18 01:13:25 -07:00
51629376f2
adjust HUD
Health and shields now share one bar. one hit point is (about) the same
size in each. There is an indicator splitting the two categories of HP.
2024-08-18 01:10:20 -07:00
c5e49740c4
reorganize UI 2024-08-17 23:22:42 -07:00
59738d0376
use constraints to make chasey chase; now it is not wiggly 2024-08-16 19:48:44 -07:00
f736f50870
port improvements to autobrake_test too, excluding the weird calc_targets thing 2024-08-16 19:37:43 -07:00
ccb897af24
fix calculation 2024-08-16 19:37:05 -07:00
c130f4cf52
actually invoke calc_targets 2024-08-16 19:25:10 -07:00
cf48497432
ymin and ymax for player 2024-08-16 19:23:20 -07:00
9dc36a95ee
port ship constraints logic 2024-08-16 19:20:30 -07:00
d33d7ad6d1
xmax constraint -- imperfect but good enough 2024-07-27 18:49:48 -07:00
00678f97fd
Fix brake location calculation; was applying it to the wrong spot. 2024-07-27 17:47:29 -07:00
8fa98e3132
handle undershot and ok cases 2024-01-28 01:33:25 -08:00
5d2dafa64c
I am baffled I never noticed this before 2024-01-27 13:25:47 -08:00
bd61ca2639
remove spark stub, not worth it in the test 2024-01-20 11:52:41 -08:00
54426be303
now it actually works! 2024-01-14 20:06:09 -08:00
84a803b828
fixed it! mostly 2024-01-14 20:02:45 -08:00
a4ed50d9e2
okay now i fucked it up differently 2024-01-14 19:59:51 -08:00
a1df463a16
braking distance and visualization. bad calculation
the visualization is really helpful for showing me that I fucked up my math
2024-01-14 19:57:22 -08:00
d0a17488d0
pull out calc_velocity
also prepare constraints to change color based on whether it changed the requested thrust
2024-01-14 19:33:57 -08:00
aa25f87c46
Full debug diagnostics display for autobrake_test 2024-01-14 19:03:34 -08:00
edbde8e689
ship mover, no constraint yet 2024-01-14 18:21:10 -08:00
5b668cf9c9
empty template for autobrake test cart 2024-01-12 11:14:54 -08:00
34af172ca5
Add code-of-conduct 2023-12-30 12:50:18 -08:00
4804402f32
fix search-and-replace damage from a while back
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.
2023-12-24 21:39:52 -08:00
97ddfb876b
fix weird line break 2023-12-22 00:40:01 -08:00
fbeb313078
ignore vscode config 2023-12-21 23:30:17 -08:00
a359bc5031
duplicating the file -- preparing for major changes.
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.)
2023-12-21 13:09:33 -08:00
cdf517c51c
fix missing self plumbing 2023-12-20 18:16:55 -08:00
9aac99ef30
replace grab_butts with act
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.
2023-12-20 18:14:39 -08:00
5fef5bad00
Squash level_parser into main: parse levels in CSV
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
2023-12-20 14:09:07 -08:00
2bbc4e598c
clean up macOS garbage 2023-12-19 16:26:11 -08:00
62fe5f51d3
val helper function 2023-10-07 23:57:27 -07:00
fd68ef88ec
document The Parser, take an emit function. 2023-10-07 23:53:40 -07:00
fd9866e963
The Parser 2023-10-03 22:41:52 -07:00
a5ce0fd020
update todo list 2023-10-01 14:39:34 -07:00
dae108c231
move spark_particle's mknew call to the right spot 2023-10-01 00:46:32 -07:00
2e46d87a84
refactor spark logic. this loses tokens; may need to revisit 2023-09-30 20:10:42 -07:00
a4590821be
pre-initialize palettes for blip. costs tokens, saves time 2023-09-30 19:45:07 -07:00
cf1e1153a3
lframe increment is now 0x0.0001
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
2023-09-30 19:30:21 -07:00
f3ac1f492c
Dithering-style fade
Higher performance, allows free use of other palettes, frees up compressed space.
2023-09-30 19:15:22 -07:00