@pkmn/engine 0.1.0-dev.dfd46bbb → 0.1.0-dev.e0e37c1b
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/README.md +5 -5
- package/build/tools/debug.js +3 -1
- package/build/tools/debug.js.map +1 -1
- package/package.json +3 -3
- package/src/lib/common/protocol.zig +331 -331
- package/src/lib/gen1/mechanics.zig +199 -199
- package/src/lib/gen2/README.md +0 -1
- package/src/lib/gen2/data.zig +1 -1
- package/src/lib/gen2/generated.zig +5 -11
- package/src/lib/gen2/mechanics.zig +522 -308
package/README.md
CHANGED
|
@@ -142,7 +142,7 @@ documentation](docs/PROTOCOL.md) goes into greater detail on the specifics of up
|
|
|
142
142
|
potential logs that may result.
|
|
143
143
|
|
|
144
144
|
*The snippets below are meant to merely illustrate in broad strokes how the pkmn engine can be used
|
|
145
|
-
\- the [`examples`](
|
|
145
|
+
\- the [`examples`](examples) directory contains fully commented and runnable code.*
|
|
146
146
|
|
|
147
147
|
### C
|
|
148
148
|
|
|
@@ -167,7 +167,7 @@ while (!pkmn_result_type(result = pkmn_battle_update(&battle, c1, c2, &options))
|
|
|
167
167
|
if (pkmn_error(result)) exit(1);
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
[(full code)](
|
|
170
|
+
[(full code)](examples/c/example.c)
|
|
171
171
|
|
|
172
172
|
The C API doesn't export any helpers for creating or accessing the opaque battle objects - it's
|
|
173
173
|
instead intended to be used as the foundation for more ergonomic bindings in [other
|
|
@@ -202,7 +202,7 @@ while (!(result = battle.update(c1, c2)).type) {
|
|
|
202
202
|
console.log(result);
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
-
[(full code)](
|
|
205
|
+
[(full code)](examples/js/example.ts)
|
|
206
206
|
|
|
207
207
|
By default, the `@pkmn/engine` package compiles the engine with `-Dshowdown`, though by running
|
|
208
208
|
`install-pkmn-engine` directly and passing in `--options` you can override this default and build
|
|
@@ -214,7 +214,7 @@ library should be seamless.
|
|
|
214
214
|
|
|
215
215
|
Despite relying on the native engine code, the `@pkmn/engine` code is designed to also work in
|
|
216
216
|
browsers which support [WebAssembly](https://webassembly.org/). Running `npm run start:web` from the
|
|
217
|
-
[`examples`](
|
|
217
|
+
[`examples`](examples/js) directory starts a server that can be used to demonstrate the engine
|
|
218
218
|
running in the browser.
|
|
219
219
|
|
|
220
220
|
### Zig
|
|
@@ -244,7 +244,7 @@ while (result.type == .None) : (result = try battle.update(c1, c2, &options)) {
|
|
|
244
244
|
std.debug.print("{}\n", .{result.type});
|
|
245
245
|
```
|
|
246
246
|
|
|
247
|
-
[(full code)](
|
|
247
|
+
[(full code)](examples/zig/example.zig)
|
|
248
248
|
|
|
249
249
|
The Zig package also supports some APIs which are difficult to expose elsewhere such as the
|
|
250
250
|
`FixedRNG` which allows you to fully specify the exact RNG frames (which can be useful for ensuring
|
package/build/tools/debug.js
CHANGED
|
@@ -60,6 +60,8 @@ function display(gens, data, error, seed) {
|
|
|
60
60
|
let offset = 0;
|
|
61
61
|
const showdown = !!view.getUint8(offset++);
|
|
62
62
|
const gen = gens.get(view.getUint8(offset++));
|
|
63
|
+
const N = view.getUint16(offset, data_2.LE);
|
|
64
|
+
offset += 2;
|
|
63
65
|
const lookup = data_2.Lookup.get(gen);
|
|
64
66
|
const size = data_2.LAYOUT[gen.num - 1].sizes.Battle;
|
|
65
67
|
const deserialize = (buf) => {
|
|
@@ -83,7 +85,7 @@ function display(gens, data, error, seed) {
|
|
|
83
85
|
partial.parsed.push(r.value);
|
|
84
86
|
r = it.next();
|
|
85
87
|
}
|
|
86
|
-
offset += r.value;
|
|
88
|
+
offset += N || r.value;
|
|
87
89
|
if (offset >= view.byteLength)
|
|
88
90
|
break;
|
|
89
91
|
partial.battle = deserialize(data.subarray(offset, offset += size));
|
package/build/tools/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/tools/debug.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAEzB,qCAAmD;AAEnD,gCAAmE;AACnE,oDAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/tools/debug.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pkmn/engine",
|
|
3
|
-
"version": "0.1.0-dev.
|
|
3
|
+
"version": "0.1.0-dev.e0e37c1b",
|
|
4
4
|
"description": "A minimal, complete, Pokémon battle simulation engine optimized for performance",
|
|
5
5
|
"repository": "github:pkmn/engine",
|
|
6
6
|
"license": "MIT",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"ignorePatterns": [
|
|
122
122
|
"dist/",
|
|
123
123
|
"node_modules/",
|
|
124
|
-
"
|
|
124
|
+
"examples/zig",
|
|
125
125
|
"build/"
|
|
126
126
|
],
|
|
127
127
|
"env": {
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"parserOptions": {
|
|
138
138
|
"project": [
|
|
139
139
|
"./tsconfig.json",
|
|
140
|
-
"./
|
|
140
|
+
"./examples/js/tsconfig.json"
|
|
141
141
|
]
|
|
142
142
|
}
|
|
143
143
|
},
|