@datamoc/mw_games 0.23.0 → 0.24.1
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/CHANGELOG.md +44 -2
- package/README.md +42 -0
- package/dist/ai/Neural.d.ts +65 -0
- package/dist/ai/Neural.d.ts.map +1 -0
- package/dist/ai/Neural.js +169 -0
- package/dist/ai/Neural.js.map +1 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/board/tourney.d.ts +8 -1
- package/dist/board/tourney.d.ts.map +1 -1
- package/dist/board/tourney.js +8 -2
- package/dist/board/tourney.js.map +1 -1
- package/dist/core/Random.d.ts +1 -0
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +14 -17
- package/dist/core/Random.js.map +1 -1
- package/dist/mw_games.global.js +150 -116
- package/dist/simulation/Training.d.ts +143 -0
- package/dist/simulation/Training.d.ts.map +1 -0
- package/dist/simulation/Training.js +279 -0
- package/dist/simulation/Training.js.map +1 -0
- package/dist/simulation/index.d.ts +2 -0
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +1 -0
- package/dist/simulation/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +10 -1
- package/sbom.cdx.json +375 -375
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,50 @@ the public API may still change between minor versions.
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.24.1] - 2026-10-02
|
|
11
|
+
|
|
12
|
+
Dependency refresh: Babylon.js 9.29, `@capacitor/cli` held at 8.5.2 so it matches the other Capacitor
|
|
13
|
+
packages, and the SBOM and bundle-size baseline regenerated. The global bundle grew 2.5% gzipped
|
|
14
|
+
(356504 to 365318 B) from the newer Pixi and Babylon releases, which is accepted.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Updated npm dependencies; `cap:sync` verified against Capacitor 8.5.2 on Android.
|
|
19
|
+
- Refreshed `sbom.cdx.json` and `tools/bundle-size.json`.
|
|
20
|
+
|
|
21
|
+
## [0.24.0] - 2026-10-02
|
|
22
|
+
|
|
23
|
+
Small neural policies and renderer-free training now share game simulation rules,
|
|
24
|
+
with worker batches for larger workloads. A playable maze chase AI lab demonstrates
|
|
25
|
+
live controller switching, and chess search keeps the interface responsive.
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- A playable maze chase example with independent player and ghost AI selectors,
|
|
30
|
+
random turns, chase rules, path heuristics and a small neural policy trained
|
|
31
|
+
without a UI on the same original simulation rules. Includes keyboard and touch
|
|
32
|
+
steering, live mode switching, power dots and local-file browser checks.
|
|
33
|
+
|
|
34
|
+
- `ai.NeuralPolicy`: validated, dependency-free dense-model inference with shared
|
|
35
|
+
weights, legal-action masks, seeded softmax sampling, existing `JavaScriptAI`
|
|
36
|
+
behaviour integration and cancellable worker inference batches.
|
|
37
|
+
- `simulation.TrainingEnvironment`, `runRollouts` and `runRolloutsAsync`: seeded,
|
|
38
|
+
UI-free episodes over game-owned simulation rules, distinct termination and
|
|
39
|
+
truncation, bounded trajectories, resumable environment snapshots and worker
|
|
40
|
+
batches that reuse a model throughout each episode shard.
|
|
41
|
+
- A generated courier example with headless evolution training, resumable trainer
|
|
42
|
+
checkpoints, exported browser weights, serial/parallel benchmarks and a `file://`
|
|
43
|
+
regression check for frame time, input latency and cancellation of stale results.
|
|
44
|
+
- `searchTourneyAsync` returns `rootScores` for choosing among near-best moves using
|
|
45
|
+
the same worker search.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- Chess example fuzzy moves now search on workers, with cancellation on reset and
|
|
50
|
+
timeout. Clock and memory updates refresh text without rebuilding the board;
|
|
51
|
+
worker lanes are capped at four and timeout fallback selects a legal move without
|
|
52
|
+
blocking on another search.
|
|
53
|
+
|
|
10
54
|
## [0.23.0] - 2026-09-30
|
|
11
55
|
|
|
12
56
|
MIDI humanization and groove tooling (`audio`), plus RPG Maker map details from the MWGP
|
|
@@ -2350,5 +2394,3 @@ in it is new as of the tag, only now given a version number to refer to.
|
|
|
2350
2394
|
bounds-check), writing distances into the wrong cell once a search looked at the
|
|
2351
2395
|
step's origin rather than only its destination. Steps now refuse either end off
|
|
2352
2396
|
the map before any index is touched.
|
|
2353
|
-
|
|
2354
|
-
|
package/README.md
CHANGED
|
@@ -420,6 +420,48 @@ Frame-based `core.Recorder`/`Player` remains available for UI replay; command sc
|
|
|
420
420
|
not need a frame loop. Callers must bound automatic work inside each rule, for example
|
|
421
421
|
with `advanceToInput`.
|
|
422
422
|
|
|
423
|
+
## Neural policies and UI-free training
|
|
424
|
+
|
|
425
|
+
`ai.NeuralPolicy` runs small dense models without a runtime dependency. Policies
|
|
426
|
+
share weights across agents, mask illegal actions and integrate with `JavaScriptAI`.
|
|
427
|
+
`simulation.TrainingEnvironment` exposes seeded `reset`/`step` episodes over the same
|
|
428
|
+
rules a game uses during play. Training runs at simulation speed in Node, with no
|
|
429
|
+
canvas, DOM, audio or frame loop. `runRolloutsAsync` batches whole episodes across
|
|
430
|
+
workers; model files bundle into the playable `file://` output.
|
|
431
|
+
|
|
432
|
+
Try the generated courier task, whose optimizer belongs to the example:
|
|
433
|
+
|
|
434
|
+
```sh
|
|
435
|
+
npm run train:neural # train without any UI, export model and checkpoint
|
|
436
|
+
npm run train:neural -- --resume --iterations 40
|
|
437
|
+
npm run benchmark:neural # serial/parallel throughput and inference overhead
|
|
438
|
+
npm run example:neural:build # open examples/neural/dist/index.html directly
|
|
439
|
+
npm run neural:browser:check # workers, input latency and reset cancellation
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
Training checkpoints include environment state and randomness, model/schema
|
|
443
|
+
versions and trainer state. Use small predictions directly when they fit the frame
|
|
444
|
+
budget; worker startup and transfer costs pay off on larger simulation batches.
|
|
445
|
+
|
|
446
|
+
## Maze chase AI example
|
|
447
|
+
|
|
448
|
+
`examples/pacman` is a playable Pac-Man-style game with an original maze and drawn
|
|
449
|
+
shapes. Switch the player between keyboard control, random turns, a path-and-risk
|
|
450
|
+
heuristic and a trained neural policy. Ghosts independently select random turns,
|
|
451
|
+
direct chase rules (`JavaScriptAI`), path heuristics (`HeuristicAI`) or `NeuralPolicy`.
|
|
452
|
+
Selections take effect during the current game, preserving score and lives.
|
|
453
|
+
|
|
454
|
+
Arrows or WASD steer; P and G cycle the player and ghost controllers; Space pauses;
|
|
455
|
+
R starts a new game. Large dots make ghosts edible. The neural model uses UI-free
|
|
456
|
+
imitation training from the heuristic, sharing the playable simulation rules.
|
|
457
|
+
|
|
458
|
+
```sh
|
|
459
|
+
npm run example:pacman # development server
|
|
460
|
+
npm run example:pacman:build # open examples/pacman/dist/index.html directly
|
|
461
|
+
npm run train:pacman # retrain and export weights without rendering
|
|
462
|
+
npm run pacman:browser:check # selectors, WebGL, frame time and responsive layouts
|
|
463
|
+
```
|
|
464
|
+
|
|
423
465
|
## Roadmap
|
|
424
466
|
|
|
425
467
|
See [ROADMAP.md](https://github.com/datamoc/mwg/blob/main/ROADMAP.md) for open work and
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { AIAction, AIBehavior, AIValue } from './index.ts';
|
|
2
|
+
/** Flat row-major weights: output neuron first, then input feature. */
|
|
3
|
+
export interface DenseLayer {
|
|
4
|
+
inputSize: number;
|
|
5
|
+
outputSize: number;
|
|
6
|
+
weights: readonly number[];
|
|
7
|
+
biases: readonly number[];
|
|
8
|
+
}
|
|
9
|
+
/** Game-owned, redistributable weights and an explicit observation-schema version. */
|
|
10
|
+
export interface NeuralModel {
|
|
11
|
+
version: 1;
|
|
12
|
+
observationVersion: string;
|
|
13
|
+
layers: readonly DenseLayer[];
|
|
14
|
+
}
|
|
15
|
+
export interface NeuralObservation {
|
|
16
|
+
input: readonly number[];
|
|
17
|
+
/** Omitted means all actions are legal; false excludes an action. */
|
|
18
|
+
mask?: readonly boolean[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The self-contained evaluator shared by the local policy and serialized worker tasks.
|
|
22
|
+
* Limits apply before copying weights: at most 32 layers, 4096 neurons per layer and
|
|
23
|
+
* one million weights plus biases. Activations reuse buffers; returned outputs are owned
|
|
24
|
+
* by the caller. Hidden layers use ReLU, output scores remain linear.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createNeuralEvaluator(model: NeuralModel): {
|
|
27
|
+
predict(input: readonly number[], output?: Float64Array): Float64Array;
|
|
28
|
+
select(observation: NeuralObservation, random?: () => number): number | null;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* A small shared dense policy, usable inside existing JavaScriptAI behaviours.
|
|
32
|
+
* Model weights are copied on construction. Supply a seeded random callback to sample
|
|
33
|
+
* softmax scores; omit it for the first highest-scoring legal action. All-masked is idle.
|
|
34
|
+
* Async batches return detached results, never mutate game state; callers must discard
|
|
35
|
+
* results whose scene or position changed while awaiting them.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { NeuralPolicy, JavaScriptAI } from '@datamoc/mw_games/ai';
|
|
40
|
+
* const policy = new NeuralPolicy({ version: 1, observationVersion: 'v1', layers: [
|
|
41
|
+
* { inputSize: 1, outputSize: 2, weights: [-1, 1], biases: [0, 0] },
|
|
42
|
+
* ] });
|
|
43
|
+
* console.log(policy.selectAction({ input: [2] })); // 1
|
|
44
|
+
* const ai = new JavaScriptAI({ seed: 7 });
|
|
45
|
+
* ai.register({ id: 'npc', behaviors: [policy.behavior('neural',
|
|
46
|
+
* [{ type: 'left' }, { type: 'right' }], () => ({ input: [2] }))] });
|
|
47
|
+
* console.log(ai.decide('npc', { perception: null }).action?.type); // right
|
|
48
|
+
* const scores = await policy.predictBatchAsync([[2], [-2]]);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class NeuralPolicy {
|
|
52
|
+
private readonly model;
|
|
53
|
+
private readonly evaluator;
|
|
54
|
+
constructor(model: NeuralModel);
|
|
55
|
+
predict(input: readonly number[], output?: Float64Array): Float64Array;
|
|
56
|
+
selectAction(observation: NeuralObservation, random?: () => number): number | null;
|
|
57
|
+
exportModel(): NeuralModel;
|
|
58
|
+
behavior(id: string, actions: readonly AIAction[], observe: (perception: AIValue) => NeuralObservation, sample?: boolean): AIBehavior;
|
|
59
|
+
/** One cancellable worker batch: at most 65536 observations and one million input or output values. */
|
|
60
|
+
predictBatchAsync(inputs: readonly (readonly number[])[], options?: {
|
|
61
|
+
signal?: AbortSignal;
|
|
62
|
+
timeout?: number;
|
|
63
|
+
}): Promise<Float64Array[]>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=Neural.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Neural.d.ts","sourceRoot":"","sources":["../../src/ai/Neural.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhE,uEAAuE;AACvE,MAAM,WAAW,UAAU;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG;IAC1D,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IACvE,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC7E,CA2FA;AASD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IAErE,YAAY,KAAK,EAAE,WAAW,EAG7B;IAED,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,CAErE;IAED,YAAY,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjF;IAED,WAAW,IAAI,WAAW,CAEzB;IAED,QAAQ,CACP,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,iBAAiB,EACnD,MAAM,UAAQ,GACZ,UAAU,CAYZ;IAED,uGAAuG;IACvG,iBAAiB,CAChB,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,EACtC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GACtD,OAAO,CAAC,YAAY,EAAE,CAAC,CASzB;CACD"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { spawn } from '../threads/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The self-contained evaluator shared by the local policy and serialized worker tasks.
|
|
4
|
+
* Limits apply before copying weights: at most 32 layers, 4096 neurons per layer and
|
|
5
|
+
* one million weights plus biases. Activations reuse buffers; returned outputs are owned
|
|
6
|
+
* by the caller. Hidden layers use ReLU, output scores remain linear.
|
|
7
|
+
*/
|
|
8
|
+
export function createNeuralEvaluator(model) {
|
|
9
|
+
if (model?.version !== 1 || typeof model.observationVersion !== 'string' || !model.observationVersion.length)
|
|
10
|
+
throw new TypeError('unsupported neural model or observation version');
|
|
11
|
+
if (!Array.isArray(model.layers) || !model.layers.length || model.layers.length > 32)
|
|
12
|
+
throw new RangeError('a neural model needs 1..32 layers');
|
|
13
|
+
let parameters = 0;
|
|
14
|
+
for (let index = 0; index < model.layers.length; index++) {
|
|
15
|
+
const layer = model.layers[index];
|
|
16
|
+
if (!layer ||
|
|
17
|
+
!Number.isInteger(layer.inputSize) ||
|
|
18
|
+
!Number.isInteger(layer.outputSize) ||
|
|
19
|
+
layer.inputSize < 1 ||
|
|
20
|
+
layer.outputSize < 1 ||
|
|
21
|
+
layer.inputSize > 4096 ||
|
|
22
|
+
layer.outputSize > 4096)
|
|
23
|
+
throw new RangeError('neural layer dimensions must be integers in 1..4096');
|
|
24
|
+
parameters += layer.inputSize * layer.outputSize + layer.outputSize;
|
|
25
|
+
if (parameters > 1_000_000)
|
|
26
|
+
throw new RangeError('neural model exceeds one million parameters');
|
|
27
|
+
if (index && model.layers[index - 1].outputSize !== layer.inputSize)
|
|
28
|
+
throw new RangeError('neural layer dimensions do not connect');
|
|
29
|
+
if (!Array.isArray(layer.weights) ||
|
|
30
|
+
!Array.isArray(layer.biases) ||
|
|
31
|
+
layer.weights.length !== layer.inputSize * layer.outputSize ||
|
|
32
|
+
layer.biases.length !== layer.outputSize ||
|
|
33
|
+
!Array.from(layer.weights).every(Number.isFinite) ||
|
|
34
|
+
!Array.from(layer.biases).every(Number.isFinite))
|
|
35
|
+
throw new TypeError('neural weights and biases must be finite and match layer dimensions');
|
|
36
|
+
}
|
|
37
|
+
const layers = model.layers.map((layer) => ({
|
|
38
|
+
...layer,
|
|
39
|
+
weights: Float64Array.from(layer.weights),
|
|
40
|
+
biases: Float64Array.from(layer.biases),
|
|
41
|
+
buffer: new Float64Array(layer.outputSize),
|
|
42
|
+
}));
|
|
43
|
+
const predict = (input, output) => {
|
|
44
|
+
if (input.length !== layers[0].inputSize)
|
|
45
|
+
throw new TypeError('neural input must be finite and match the model');
|
|
46
|
+
for (let i = 0; i < input.length; i++)
|
|
47
|
+
if (!Number.isFinite(input[i]))
|
|
48
|
+
throw new TypeError('neural input must be finite');
|
|
49
|
+
const last = layers[layers.length - 1];
|
|
50
|
+
if (output && output.length !== last.outputSize)
|
|
51
|
+
throw new RangeError('neural output buffer has the wrong size');
|
|
52
|
+
let current = input;
|
|
53
|
+
for (let index = 0; index < layers.length; index++) {
|
|
54
|
+
const layer = layers[index];
|
|
55
|
+
for (let row = 0; row < layer.outputSize; row++) {
|
|
56
|
+
let sum = layer.biases[row];
|
|
57
|
+
for (let col = 0; col < layer.inputSize; col++)
|
|
58
|
+
sum += layer.weights[row * layer.inputSize + col] * current[col];
|
|
59
|
+
if (!Number.isFinite(sum))
|
|
60
|
+
throw new RangeError('neural activation overflow');
|
|
61
|
+
layer.buffer[row] = index === layers.length - 1 ? sum : Math.max(0, sum);
|
|
62
|
+
}
|
|
63
|
+
current = layer.buffer;
|
|
64
|
+
}
|
|
65
|
+
const result = output ?? new Float64Array(last.outputSize);
|
|
66
|
+
result.set(last.buffer);
|
|
67
|
+
return result;
|
|
68
|
+
};
|
|
69
|
+
const scores = new Float64Array(layers[layers.length - 1].outputSize);
|
|
70
|
+
return {
|
|
71
|
+
predict,
|
|
72
|
+
select(observation, random) {
|
|
73
|
+
const mask = observation.mask;
|
|
74
|
+
if (mask &&
|
|
75
|
+
(mask.length !== scores.length || !Array.from(mask).every((entry) => typeof entry === 'boolean')))
|
|
76
|
+
throw new TypeError('neural action mask must contain one boolean per output');
|
|
77
|
+
predict(observation.input, scores);
|
|
78
|
+
let best = null;
|
|
79
|
+
for (let i = 0; i < scores.length; i++)
|
|
80
|
+
if ((!mask || mask[i]) && (best === null || scores[i] > scores[best]))
|
|
81
|
+
best = i;
|
|
82
|
+
if (best === null || !random)
|
|
83
|
+
return best;
|
|
84
|
+
const draw = random();
|
|
85
|
+
if (!Number.isFinite(draw) || draw < 0 || draw >= 1)
|
|
86
|
+
throw new RangeError('sampling random must return a value in [0, 1)');
|
|
87
|
+
let total = 0;
|
|
88
|
+
for (let i = 0; i < scores.length; i++)
|
|
89
|
+
if (!mask || mask[i])
|
|
90
|
+
total += Math.exp(scores[i] - scores[best]);
|
|
91
|
+
let remaining = draw * total;
|
|
92
|
+
for (let i = 0; i < scores.length; i++) {
|
|
93
|
+
if (mask && !mask[i])
|
|
94
|
+
continue;
|
|
95
|
+
remaining -= Math.exp(scores[i] - scores[best]);
|
|
96
|
+
if (remaining < 0)
|
|
97
|
+
return i;
|
|
98
|
+
}
|
|
99
|
+
return best;
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//One batch per worker, never a worker per agent. The evaluator source has no imports.
|
|
104
|
+
function inferenceBatch(source, model, inputs) {
|
|
105
|
+
const create = new Function(`return (${source});`)();
|
|
106
|
+
const evaluator = create(model);
|
|
107
|
+
return inputs.map((input) => evaluator.predict(input));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* A small shared dense policy, usable inside existing JavaScriptAI behaviours.
|
|
111
|
+
* Model weights are copied on construction. Supply a seeded random callback to sample
|
|
112
|
+
* softmax scores; omit it for the first highest-scoring legal action. All-masked is idle.
|
|
113
|
+
* Async batches return detached results, never mutate game state; callers must discard
|
|
114
|
+
* results whose scene or position changed while awaiting them.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* import { NeuralPolicy, JavaScriptAI } from '@datamoc/mw_games/ai';
|
|
119
|
+
* const policy = new NeuralPolicy({ version: 1, observationVersion: 'v1', layers: [
|
|
120
|
+
* { inputSize: 1, outputSize: 2, weights: [-1, 1], biases: [0, 0] },
|
|
121
|
+
* ] });
|
|
122
|
+
* console.log(policy.selectAction({ input: [2] })); // 1
|
|
123
|
+
* const ai = new JavaScriptAI({ seed: 7 });
|
|
124
|
+
* ai.register({ id: 'npc', behaviors: [policy.behavior('neural',
|
|
125
|
+
* [{ type: 'left' }, { type: 'right' }], () => ({ input: [2] }))] });
|
|
126
|
+
* console.log(ai.decide('npc', { perception: null }).action?.type); // right
|
|
127
|
+
* const scores = await policy.predictBatchAsync([[2], [-2]]);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export class NeuralPolicy {
|
|
131
|
+
constructor(model) {
|
|
132
|
+
this.evaluator = createNeuralEvaluator(model);
|
|
133
|
+
this.model = structuredClone(model);
|
|
134
|
+
}
|
|
135
|
+
predict(input, output) {
|
|
136
|
+
return this.evaluator.predict(input, output);
|
|
137
|
+
}
|
|
138
|
+
selectAction(observation, random) {
|
|
139
|
+
return this.evaluator.select(observation, random);
|
|
140
|
+
}
|
|
141
|
+
exportModel() {
|
|
142
|
+
return structuredClone(this.model);
|
|
143
|
+
}
|
|
144
|
+
behavior(id, actions, observe, sample = false) {
|
|
145
|
+
if (actions.length !== this.model.layers[this.model.layers.length - 1].outputSize)
|
|
146
|
+
throw new RangeError('neural action mapping must match output size');
|
|
147
|
+
const mapping = structuredClone(actions);
|
|
148
|
+
return {
|
|
149
|
+
id,
|
|
150
|
+
decide: (context) => {
|
|
151
|
+
context.checkpoint();
|
|
152
|
+
const action = this.selectAction(observe(context.perception), sample ? context.random : undefined);
|
|
153
|
+
return action === null ? null : structuredClone(mapping[action]);
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/** One cancellable worker batch: at most 65536 observations and one million input or output values. */
|
|
158
|
+
predictBatchAsync(inputs, options = {}) {
|
|
159
|
+
const inputSize = this.model.layers[0].inputSize;
|
|
160
|
+
const outputSize = this.model.layers[this.model.layers.length - 1].outputSize;
|
|
161
|
+
if (inputs.length > 65536 || inputs.length * Math.max(inputSize, outputSize) > 1_000_000)
|
|
162
|
+
return Promise.reject(new RangeError('neural batch exceeds its observation or value limit'));
|
|
163
|
+
for (const input of inputs)
|
|
164
|
+
if (!input || input.length !== inputSize)
|
|
165
|
+
return Promise.reject(new TypeError('neural batch inputs must match the model'));
|
|
166
|
+
return spawn(inferenceBatch, [createNeuralEvaluator.toString(), this.model, inputs], options);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=Neural.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Neural.js","sourceRoot":"","sources":["../../src/ai/Neural.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { AlphaBetaGame, AlphaBetaOptions, AlphaBetaResult } from './search.ts';
|
|
2
|
+
export { NeuralPolicy } from './Neural.ts';
|
|
3
|
+
export type { DenseLayer, NeuralModel, NeuralObservation } from './Neural.ts';
|
|
2
4
|
export { alphaBetaSearch, firstWins, rootSplits } from './search.ts';
|
|
3
5
|
export type { AlphaBetaGame, AlphaBetaOptions, AlphaBetaResult, LuaAlphaBetaFunctions, LuaSearchValueAdapter, RootSplit, } from './search.ts';
|
|
4
6
|
export { personalScoreView, scoreWith, sideScoreView, subjectsWhere } from './score.ts';
|
package/dist/ai/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,SAAS,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EACN,OAAO,EACP,UAAU,EACV,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,aAAa,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhG,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AACzG,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,iBAAiB,CAAC;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,UAAU,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC;IAC1D,WAAW,IAAI,eAAe,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAa,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,YAAY,OAAO,GAAE,mBAAwB,EAI5C;IAED,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAWvC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,UAAU,CA8D1D;IAED,oFAAoF;IACpF,MAAM,CAAC,KAAK,EAAE,IAAI,EACjB,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,gBAAgB,GACvB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAE9B;IAED,WAAW,IAAI,eAAe,CAK7B;IAED,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAM3C;IAED,OAAO,IAAI,IAAI,CAGd;CACD;AAED,gFAAgF;AAChF,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,cAGC;CACD;AAED,mFAAmF;AACnF,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,cAGC;CACD"}
|
package/dist/ai/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { alphaBetaSearch } from './search.js';
|
|
2
|
+
export { NeuralPolicy } from './Neural.js';
|
|
2
3
|
export { alphaBetaSearch, firstWins, rootSplits } from './search.js';
|
|
3
4
|
export { personalScoreView, scoreWith, sideScoreView, subjectsWhere } from './score.js';
|
|
4
5
|
export { Aspects, Difficulty, Goals, HeuristicAI, RecruitmentPattern, defaultWeigh, goalScore, keepAwayScore, } from './Heuristics.js';
|
package/dist/ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
package/dist/board/tourney.d.ts
CHANGED
|
@@ -23,6 +23,11 @@ export interface TourneyResult {
|
|
|
23
23
|
nodes: number;
|
|
24
24
|
/** the deepest fully completed iteration */
|
|
25
25
|
depth: number;
|
|
26
|
+
/** async search only: every legal root move and its score from the side to move's view, in root order */
|
|
27
|
+
rootScores?: Array<{
|
|
28
|
+
move: BitboardMove;
|
|
29
|
+
score: number;
|
|
30
|
+
}>;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* The tournament engine's serializable task: a full iterative-deepening search over a
|
|
@@ -75,7 +80,9 @@ export declare function searchTourney(state: ChessState | BitboardState, options
|
|
|
75
80
|
* is a self-contained `tourneyThink` task over a structured-cloned bitboard, scored
|
|
76
81
|
* concurrently down a capped lane queue; the best child score from the opponent's
|
|
77
82
|
* view is the worst for us, so the root plays the move whose child scored lowest,
|
|
78
|
-
* with ties going to the earlier root move.
|
|
83
|
+
* with ties going to the earlier root move. `rootScores` exposes every candidate so
|
|
84
|
+
* games can choose near-best moves without repeating the search on the UI thread.
|
|
85
|
+
* An aborting signal rejects through
|
|
79
86
|
* `threads.spawn` and terminates the workers.
|
|
80
87
|
*
|
|
81
88
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tourney.d.ts","sourceRoot":"","sources":["../../src/board/tourney.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,cAAc;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IAC1D,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tourney.d.ts","sourceRoot":"","sources":["../../src/board/tourney.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,cAAc;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IAC1D,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACxF,aAAa,CAo0Bf;AAcD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,EAAE,OAAO,GAAE,cAAmB,GAAG,aAAa,CAO5G;AAuBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,kBAAkB,CACvC,KAAK,EAAE,UAAU,GAAG,aAAa,EACjC,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAmDxB"}
|
package/dist/board/tourney.js
CHANGED
|
@@ -952,7 +952,9 @@ function defaultTourneyJobs() {
|
|
|
952
952
|
* is a self-contained `tourneyThink` task over a structured-cloned bitboard, scored
|
|
953
953
|
* concurrently down a capped lane queue; the best child score from the opponent's
|
|
954
954
|
* view is the worst for us, so the root plays the move whose child scored lowest,
|
|
955
|
-
* with ties going to the earlier root move.
|
|
955
|
+
* with ties going to the earlier root move. `rootScores` exposes every candidate so
|
|
956
|
+
* games can choose near-best moves without repeating the search on the UI thread.
|
|
957
|
+
* An aborting signal rejects through
|
|
956
958
|
* `threads.spawn` and terminates the workers.
|
|
957
959
|
*
|
|
958
960
|
* @example
|
|
@@ -974,7 +976,7 @@ export async function searchTourneyAsync(state, options = {}) {
|
|
|
974
976
|
const root = toBitboard(state);
|
|
975
977
|
const moves = bitboardMoves(root);
|
|
976
978
|
if (!moves.length)
|
|
977
|
-
return tourneyThink(root, { depth, maxNodes });
|
|
979
|
+
return { ...tourneyThink(root, { depth, maxNodes }), rootScores: [] };
|
|
978
980
|
//one chain per lane over the shared move queue, the tools/compress-dist.mjs shape:
|
|
979
981
|
//scores land by index, so ties break in root order no matter who finishes first
|
|
980
982
|
const lanes = Math.max(1, Math.min(jobs, moves.length));
|
|
@@ -1008,6 +1010,10 @@ export async function searchTourneyAsync(state, options = {}) {
|
|
|
1008
1010
|
score: scores[bestIndex] ?? 0,
|
|
1009
1011
|
nodes,
|
|
1010
1012
|
depth,
|
|
1013
|
+
rootScores: moves.map((move, index) => ({
|
|
1014
|
+
move: { from: move.from, to: move.to, ...(move.promotion ? { promotion: move.promotion } : {}) },
|
|
1015
|
+
score: scores[index] ?? 0,
|
|
1016
|
+
})),
|
|
1011
1017
|
};
|
|
1012
1018
|
}
|
|
1013
1019
|
//# sourceMappingURL=tourney.js.map
|