@netforge/engine 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GAME-DESIGN.md +195 -0
- package/LICENSE +21 -0
- package/NOTICE +30 -0
- package/README.md +147 -2
- package/dist/api/appearance.d.ts +37 -0
- package/dist/api/appearance.js +41 -0
- package/dist/api/cards.d.ts +105 -0
- package/dist/api/cards.js +133 -0
- package/dist/api/collector.d.ts +114 -0
- package/dist/api/collector.js +204 -0
- package/dist/api/dungeon.d.ts +58 -0
- package/dist/api/dungeon.js +216 -0
- package/dist/api/harness.d.ts +149 -0
- package/dist/api/harness.js +549 -0
- package/dist/api/idle.d.ts +71 -0
- package/dist/api/idle.js +104 -0
- package/dist/api/race-harness.d.ts +3 -0
- package/dist/api/race-harness.js +148 -0
- package/dist/api/registry.d.ts +241 -0
- package/dist/api/registry.js +394 -0
- package/dist/api/scheduler.d.ts +56 -0
- package/dist/api/scheduler.js +160 -0
- package/dist/api/schemas.d.ts +958 -0
- package/dist/api/schemas.js +859 -0
- package/dist/api/tower.d.ts +127 -0
- package/dist/api/tower.js +183 -0
- package/dist/game/adapter.d.ts +69 -0
- package/dist/game/adapter.js +341 -0
- package/dist/game/arena-bot.d.ts +66 -0
- package/dist/game/arena-bot.js +188 -0
- package/dist/game/bot.d.ts +95 -0
- package/dist/game/bot.js +285 -0
- package/dist/game/compile.d.ts +97 -0
- package/dist/game/compile.js +476 -0
- package/dist/game/director.d.ts +42 -0
- package/dist/game/director.js +179 -0
- package/dist/game/earn-source.d.ts +122 -0
- package/dist/game/earn-source.js +386 -0
- package/dist/game/earn.d.ts +49 -0
- package/dist/game/earn.js +55 -0
- package/dist/game/index.d.ts +37 -0
- package/dist/game/index.js +25 -0
- package/dist/game/platformer.d.ts +156 -0
- package/dist/game/platformer.js +619 -0
- package/dist/game/profile.d.ts +97 -0
- package/dist/game/profile.js +140 -0
- package/dist/game/race.d.ts +177 -0
- package/dist/game/race.js +386 -0
- package/dist/game/racer.d.ts +98 -0
- package/dist/game/racer.js +379 -0
- package/dist/game/runner.d.ts +286 -0
- package/dist/game/runner.js +824 -0
- package/dist/game/threats.d.ts +23 -0
- package/dist/game/threats.js +49 -0
- package/dist/game/view.d.ts +47 -0
- package/dist/game/view.js +123 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +24 -0
- package/dist/net/bits.d.ts +33 -0
- package/dist/net/bits.js +135 -0
- package/dist/net/client.d.ts +75 -0
- package/dist/net/client.js +151 -0
- package/dist/net/index.d.ts +23 -0
- package/dist/net/index.js +23 -0
- package/dist/net/input.d.ts +49 -0
- package/dist/net/input.js +112 -0
- package/dist/net/interpolation.d.ts +37 -0
- package/dist/net/interpolation.js +97 -0
- package/dist/net/netsim.d.ts +22 -0
- package/dist/net/netsim.js +52 -0
- package/dist/net/prediction.d.ts +31 -0
- package/dist/net/prediction.js +101 -0
- package/dist/net/profile-client.d.ts +75 -0
- package/dist/net/profile-client.js +173 -0
- package/dist/net/protocol.d.ts +208 -0
- package/dist/net/protocol.js +8 -0
- package/dist/net/room-client.d.ts +57 -0
- package/dist/net/room-client.js +144 -0
- package/dist/net/schema.d.ts +78 -0
- package/dist/net/schema.js +121 -0
- package/dist/net/sim-adapter.d.ts +134 -0
- package/dist/net/sim-adapter.js +22 -0
- package/dist/net/snapshot.d.ts +61 -0
- package/dist/net/snapshot.js +301 -0
- package/dist/rules/adapter.d.ts +53 -0
- package/dist/rules/adapter.js +261 -0
- package/dist/rules/cards.d.ts +115 -0
- package/dist/rules/cards.js +547 -0
- package/dist/rules/collector.d.ts +161 -0
- package/dist/rules/collector.js +732 -0
- package/dist/rules/genres.d.ts +13 -0
- package/dist/rules/genres.js +38 -0
- package/dist/rules/harness.d.ts +16 -0
- package/dist/rules/harness.js +127 -0
- package/dist/rules/idle.d.ts +115 -0
- package/dist/rules/idle.js +370 -0
- package/dist/rules/index.d.ts +16 -0
- package/dist/rules/index.js +14 -0
- package/dist/rules/kit.d.ts +171 -0
- package/dist/rules/kit.js +88 -0
- package/dist/rules/tower.d.ts +214 -0
- package/dist/rules/tower.js +655 -0
- package/dist/runtime/arena.d.ts +86 -0
- package/dist/runtime/arena.js +269 -0
- package/dist/runtime/assets.d.ts +26 -0
- package/dist/runtime/assets.js +35 -0
- package/dist/runtime/camera.d.ts +113 -0
- package/dist/runtime/camera.js +247 -0
- package/dist/runtime/crowd.d.ts +18 -0
- package/dist/runtime/crowd.js +62 -0
- package/dist/runtime/feel/audio.d.ts +150 -0
- package/dist/runtime/feel/audio.js +327 -0
- package/dist/runtime/feel/clock.d.ts +52 -0
- package/dist/runtime/feel/clock.js +80 -0
- package/dist/runtime/feel/flash.d.ts +28 -0
- package/dist/runtime/feel/flash.js +60 -0
- package/dist/runtime/feel/index.d.ts +27 -0
- package/dist/runtime/feel/index.js +16 -0
- package/dist/runtime/feel/kit.d.ts +159 -0
- package/dist/runtime/feel/kit.js +226 -0
- package/dist/runtime/feel/knockback.d.ts +41 -0
- package/dist/runtime/feel/knockback.js +70 -0
- package/dist/runtime/feel/noise.d.ts +6 -0
- package/dist/runtime/feel/noise.js +30 -0
- package/dist/runtime/feel/numbers.d.ts +91 -0
- package/dist/runtime/feel/numbers.js +172 -0
- package/dist/runtime/feel/rumble.d.ts +40 -0
- package/dist/runtime/feel/rumble.js +58 -0
- package/dist/runtime/feel/sound.d.ts +96 -0
- package/dist/runtime/feel/sound.js +176 -0
- package/dist/runtime/feel/spring.d.ts +42 -0
- package/dist/runtime/feel/spring.js +95 -0
- package/dist/runtime/feel/trauma.d.ts +48 -0
- package/dist/runtime/feel/trauma.js +76 -0
- package/dist/runtime/feel/tween.d.ts +66 -0
- package/dist/runtime/feel/tween.js +180 -0
- package/dist/runtime/feel/types.d.ts +30 -0
- package/dist/runtime/feel/types.js +5 -0
- package/dist/runtime/index.d.ts +28 -0
- package/dist/runtime/index.js +26 -0
- package/dist/runtime/input.d.ts +38 -0
- package/dist/runtime/input.js +159 -0
- package/dist/runtime/interpolate.d.ts +6 -0
- package/dist/runtime/interpolate.js +13 -0
- package/dist/runtime/render/animation.d.ts +63 -0
- package/dist/runtime/render/animation.js +128 -0
- package/dist/runtime/render/atmosphere.d.ts +32 -0
- package/dist/runtime/render/atmosphere.js +59 -0
- package/dist/runtime/render/crowd-motion.d.ts +68 -0
- package/dist/runtime/render/crowd-motion.js +163 -0
- package/dist/runtime/render/decals.d.ts +64 -0
- package/dist/runtime/render/decals.js +222 -0
- package/dist/runtime/render/highlight.d.ts +29 -0
- package/dist/runtime/render/highlight.js +110 -0
- package/dist/runtime/render/index.d.ts +35 -0
- package/dist/runtime/render/index.js +22 -0
- package/dist/runtime/render/lighting.d.ts +50 -0
- package/dist/runtime/render/lighting.js +142 -0
- package/dist/runtime/render/particles.d.ts +117 -0
- package/dist/runtime/render/particles.js +289 -0
- package/dist/runtime/render/post.d.ts +92 -0
- package/dist/runtime/render/post.js +191 -0
- package/dist/runtime/render/presets.d.ts +57 -0
- package/dist/runtime/render/presets.js +116 -0
- package/dist/runtime/render/quality.d.ts +113 -0
- package/dist/runtime/render/quality.js +180 -0
- package/dist/runtime/render/rig.d.ts +29 -0
- package/dist/runtime/render/rig.js +107 -0
- package/dist/runtime/render/sprite.d.ts +34 -0
- package/dist/runtime/render/sprite.js +58 -0
- package/dist/runtime/render/stack.d.ts +74 -0
- package/dist/runtime/render/stack.js +132 -0
- package/dist/runtime/render/vat.d.ts +78 -0
- package/dist/runtime/render/vat.js +219 -0
- package/dist/runtime/renderer.d.ts +19 -0
- package/dist/runtime/renderer.js +18 -0
- package/dist/runtime/stats.d.ts +11 -0
- package/dist/runtime/stats.js +29 -0
- package/dist/runtime/styles/handdrawn/ground.d.ts +11 -0
- package/dist/runtime/styles/handdrawn/ground.js +282 -0
- package/dist/runtime/styles/handdrawn/index.d.ts +4 -0
- package/dist/runtime/styles/handdrawn/index.js +94 -0
- package/dist/runtime/styles/handdrawn/ink.d.ts +31 -0
- package/dist/runtime/styles/handdrawn/ink.js +68 -0
- package/dist/runtime/styles/handdrawn/looks.d.ts +18 -0
- package/dist/runtime/styles/handdrawn/looks.js +42 -0
- package/dist/runtime/styles/handdrawn/paint.d.ts +59 -0
- package/dist/runtime/styles/handdrawn/paint.js +129 -0
- package/dist/runtime/styles/handdrawn/palette.d.ts +49 -0
- package/dist/runtime/styles/handdrawn/palette.js +70 -0
- package/dist/runtime/styles/handdrawn/textures.d.ts +27 -0
- package/dist/runtime/styles/handdrawn/textures.js +150 -0
- package/dist/runtime/styles/handdrawn/vfx.d.ts +14 -0
- package/dist/runtime/styles/handdrawn/vfx.js +73 -0
- package/dist/runtime/styles/index.d.ts +9 -0
- package/dist/runtime/styles/index.js +32 -0
- package/dist/runtime/styles/kit.d.ts +193 -0
- package/dist/runtime/styles/kit.js +1 -0
- package/dist/runtime/styles/pixel/index.d.ts +46 -0
- package/dist/runtime/styles/pixel/index.js +167 -0
- package/dist/runtime/styles/ps1/index.d.ts +29 -0
- package/dist/runtime/styles/ps1/index.js +41 -0
- package/dist/runtime/styles/ps1/lights.d.ts +47 -0
- package/dist/runtime/styles/ps1/lights.js +146 -0
- package/dist/runtime/styles/ps1/materials.d.ts +62 -0
- package/dist/runtime/styles/ps1/materials.js +285 -0
- package/dist/runtime/styles/ps1/pipeline.d.ts +52 -0
- package/dist/runtime/styles/ps1/pipeline.js +111 -0
- package/dist/runtime/styles/ps1/surfaces.d.ts +44 -0
- package/dist/runtime/styles/ps1/surfaces.js +228 -0
- package/dist/runtime/styles/toon/index.d.ts +5 -0
- package/dist/runtime/styles/toon/index.js +178 -0
- package/dist/runtime/styles/toon/ink.d.ts +39 -0
- package/dist/runtime/styles/toon/ink.js +73 -0
- package/dist/runtime/styles/toon/look.d.ts +10 -0
- package/dist/runtime/styles/toon/look.js +112 -0
- package/dist/runtime/styles/toon/material.d.ts +74 -0
- package/dist/runtime/styles/toon/material.js +208 -0
- package/dist/runtime/styles/toon/normals.d.ts +26 -0
- package/dist/runtime/styles/toon/normals.js +127 -0
- package/dist/runtime/styles/toon/shadows.d.ts +24 -0
- package/dist/runtime/styles/toon/shadows.js +42 -0
- package/dist/runtime/styles/toon/vfx.d.ts +15 -0
- package/dist/runtime/styles/toon/vfx.js +47 -0
- package/dist/runtime/styles/view.d.ts +35 -0
- package/dist/runtime/styles/view.js +34 -0
- package/dist/runtime/styles/voxel/core.d.ts +114 -0
- package/dist/runtime/styles/voxel/core.js +577 -0
- package/dist/runtime/styles/voxel/geometry.d.ts +27 -0
- package/dist/runtime/styles/voxel/geometry.js +40 -0
- package/dist/runtime/styles/voxel/index.d.ts +21 -0
- package/dist/runtime/styles/voxel/index.js +23 -0
- package/dist/runtime/styles/voxel/kit.d.ts +6 -0
- package/dist/runtime/styles/voxel/kit.js +11 -0
- package/dist/runtime/styles/voxel/look.d.ts +10 -0
- package/dist/runtime/styles/voxel/look.js +16 -0
- package/dist/runtime/styles/voxel/props.d.ts +9 -0
- package/dist/runtime/styles/voxel/props.js +52 -0
- package/dist/runtime/styles/voxel/shapes.d.ts +41 -0
- package/dist/runtime/styles/voxel/shapes.js +83 -0
- package/dist/runtime/styles/voxel/world.d.ts +49 -0
- package/dist/runtime/styles/voxel/world.js +422 -0
- package/llms.txt +183 -0
- package/package.json +82 -3
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The monster collector genre (template "collector"): a shared marsh where
|
|
3
|
+
* each player walks their keeper, meets wild creatures in tall grass,
|
|
4
|
+
* fights them turn by turn with a team of three, snares the ones worth
|
|
5
|
+
* keeping and levels them up, while the whole room wears down one warden
|
|
6
|
+
* before dusk.
|
|
7
|
+
*
|
|
8
|
+
* Every roll (encounters, accuracy, damage spread, snares, the foe's move)
|
|
9
|
+
* comes from the state's own PRNG, so a run replays exactly from its
|
|
10
|
+
* inputs. Battles are private: a player's view shows their own battle and
|
|
11
|
+
* team; the others see only the creature beside them.
|
|
12
|
+
*/
|
|
13
|
+
import type { GameManifest } from "../api/registry.js";
|
|
14
|
+
import { type CreatureDef, type MarshDef, type MoveDef } from "../api/collector.js";
|
|
15
|
+
import type { RulesContext, RulesGenre } from "./kit.js";
|
|
16
|
+
/** Metres per tile. */
|
|
17
|
+
export declare const MARSH_TILE = 2;
|
|
18
|
+
/** Actions (RulesInput.act). */
|
|
19
|
+
export declare const CollectorAct: {
|
|
20
|
+
readonly Pick: 1;
|
|
21
|
+
readonly Move: 2;
|
|
22
|
+
readonly Swap: 3;
|
|
23
|
+
readonly Snare: 4;
|
|
24
|
+
readonly Flee: 5;
|
|
25
|
+
readonly Challenge: 6;
|
|
26
|
+
};
|
|
27
|
+
/** What a battle log line says happened. */
|
|
28
|
+
export declare const LogKind: {
|
|
29
|
+
readonly Hit: 1;
|
|
30
|
+
readonly Miss: 2;
|
|
31
|
+
readonly Heal: 3;
|
|
32
|
+
readonly Guard: 4;
|
|
33
|
+
readonly Swap: 5;
|
|
34
|
+
readonly Snared: 6;
|
|
35
|
+
readonly Slipped: 7;
|
|
36
|
+
readonly Fled: 8;
|
|
37
|
+
readonly Won: 9;
|
|
38
|
+
readonly Fainted: 10;
|
|
39
|
+
readonly Wiped: 11;
|
|
40
|
+
readonly Level: 12;
|
|
41
|
+
readonly Met: 13;
|
|
42
|
+
readonly Warden: 14;
|
|
43
|
+
};
|
|
44
|
+
export interface Mon {
|
|
45
|
+
species: number;
|
|
46
|
+
level: number;
|
|
47
|
+
hp: number;
|
|
48
|
+
xp: number;
|
|
49
|
+
guard: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface LogLine {
|
|
52
|
+
readonly n: number;
|
|
53
|
+
readonly kind: number;
|
|
54
|
+
/** 0: yours, 1: the foe. */
|
|
55
|
+
readonly who: 0 | 1;
|
|
56
|
+
readonly move?: number;
|
|
57
|
+
readonly dmg?: number;
|
|
58
|
+
/** 1 strong, -1 weak, 0 plain. */
|
|
59
|
+
readonly eff?: number;
|
|
60
|
+
readonly value?: number;
|
|
61
|
+
}
|
|
62
|
+
interface Battle {
|
|
63
|
+
foe: Mon;
|
|
64
|
+
warden: boolean;
|
|
65
|
+
turn: number;
|
|
66
|
+
}
|
|
67
|
+
interface Keeper {
|
|
68
|
+
team: Mon[];
|
|
69
|
+
active: number;
|
|
70
|
+
box: number;
|
|
71
|
+
snares: number;
|
|
72
|
+
snaresBought: number;
|
|
73
|
+
battle: Battle | null;
|
|
74
|
+
log: LogLine[];
|
|
75
|
+
logN: number;
|
|
76
|
+
lastTile: number;
|
|
77
|
+
cooldown: number;
|
|
78
|
+
toCamp: boolean;
|
|
79
|
+
catches: number;
|
|
80
|
+
wins: number;
|
|
81
|
+
wipes: number;
|
|
82
|
+
wardenDamage: number;
|
|
83
|
+
x: number;
|
|
84
|
+
z: number;
|
|
85
|
+
yaw: number;
|
|
86
|
+
joinedTick: number;
|
|
87
|
+
}
|
|
88
|
+
export interface CollectorState {
|
|
89
|
+
rng: {
|
|
90
|
+
s: number;
|
|
91
|
+
};
|
|
92
|
+
ctx: RulesContext;
|
|
93
|
+
tick: number;
|
|
94
|
+
dusk: number;
|
|
95
|
+
wardenHp: number;
|
|
96
|
+
wardenMax: number;
|
|
97
|
+
wardenDown: boolean;
|
|
98
|
+
/** Players who hurt the warden (they share its fall). */
|
|
99
|
+
wardenHurt: Set<number>;
|
|
100
|
+
keepers: Map<number, Keeper>;
|
|
101
|
+
activity: number;
|
|
102
|
+
battlesWon: number;
|
|
103
|
+
catches: number;
|
|
104
|
+
wipes: number;
|
|
105
|
+
peakBattles: number;
|
|
106
|
+
}
|
|
107
|
+
export interface CompiledMarsh {
|
|
108
|
+
readonly w: number;
|
|
109
|
+
readonly h: number;
|
|
110
|
+
readonly blocked: Uint8Array;
|
|
111
|
+
readonly water: Uint8Array;
|
|
112
|
+
/** Grass zone index + 1 per tile, 0 for none. */
|
|
113
|
+
readonly grass: Uint8Array;
|
|
114
|
+
readonly camp: readonly [number, number];
|
|
115
|
+
readonly warden: readonly [number, number];
|
|
116
|
+
}
|
|
117
|
+
export interface CompiledCollector {
|
|
118
|
+
readonly marsh: MarshDef;
|
|
119
|
+
readonly map: CompiledMarsh;
|
|
120
|
+
readonly creatures: readonly (CreatureDef & {
|
|
121
|
+
id: string;
|
|
122
|
+
el: number;
|
|
123
|
+
moveIdx: number[];
|
|
124
|
+
})[];
|
|
125
|
+
readonly moves: readonly (MoveDef & {
|
|
126
|
+
id: string;
|
|
127
|
+
el: number;
|
|
128
|
+
})[];
|
|
129
|
+
readonly starters: readonly number[];
|
|
130
|
+
readonly wardenSpecies: number;
|
|
131
|
+
readonly pools: readonly {
|
|
132
|
+
rate: number;
|
|
133
|
+
pool: {
|
|
134
|
+
species: number;
|
|
135
|
+
weight: number;
|
|
136
|
+
level: readonly [number, number];
|
|
137
|
+
}[];
|
|
138
|
+
}[];
|
|
139
|
+
}
|
|
140
|
+
export declare function compileCollector(m: GameManifest): CompiledCollector;
|
|
141
|
+
/** Strong (1), weak (-1) or plain (0): each element beats the next in the cycle. */
|
|
142
|
+
export declare function effectiveness(attack: number, defend: number): number;
|
|
143
|
+
/** A stat at a level: +12% a level. */
|
|
144
|
+
export declare const statAt: (base: number, level: number) => number;
|
|
145
|
+
/** Max health at a level. */
|
|
146
|
+
export declare const hpAt: (base: number, level: number) => number;
|
|
147
|
+
/** XP to the next level. */
|
|
148
|
+
export declare const xpNeed: (level: number) => number;
|
|
149
|
+
/** The tile at a fixed-unit point (marsh centred on the origin), or -1 off the map. */
|
|
150
|
+
export declare function marshTile(map: Pick<CompiledMarsh, "w" | "h">, x: number, z: number): number;
|
|
151
|
+
/** A tile's centre in fixed units. */
|
|
152
|
+
export declare function marshCenter(map: Pick<CompiledMarsh, "w" | "h">, tx: number, ty: number): {
|
|
153
|
+
x: number;
|
|
154
|
+
z: number;
|
|
155
|
+
};
|
|
156
|
+
/** Tiles from `from` to `goal` (excluding `from`), around blocked tiles; empty when there is no way. */
|
|
157
|
+
export declare function marshRoute(map: CompiledMarsh, from: number, goal: number): number[];
|
|
158
|
+
export declare function collectorGenre(m: GameManifest): RulesGenre<CollectorState> & {
|
|
159
|
+
readonly game: CompiledCollector;
|
|
160
|
+
};
|
|
161
|
+
export {};
|