Skip to content

Commit 0f93da2

Browse files
committed
chore: build option
1 parent 9bd18ef commit 0f93da2

File tree

4 files changed

+52
-38
lines changed

4 files changed

+52
-38
lines changed

example/index.html

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,53 +51,53 @@
5151
</input>
5252
<input type="checkbox" id="client2Rollback" @click="checkboxClick">
5353
Rollback
54-
<canvas id="client2" style="width: 950px; height: 70px; display: block; padding-top: 10px;"></canvas>
55-
</div>
54+
<canvas id="client2" style="width: 950px; height: 70px; display: block; padding-top: 10px;"></canvas>
55+
</div>
5656
</div>
5757
</body>
5858
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
5959
<script>
6060
const data = { hello: "1111", statusDelay: 0, statusJitter: 0 };
6161
const vm = new Vue({ el: "#app", data });
6262

63+
const client1 = new StateSync.Client(
64+
1,
65+
document.getElementById("client1"),
66+
{ left: "a", right: "d" }
67+
);
68+
const client2 = new StateSync.Client(
69+
2,
70+
document.getElementById("client2"),
71+
{ left: "ArrowLeft", right: "ArrowRight" }
72+
);
73+
const server = new StateSync.Server(document.getElementById("server"));
74+
75+
const Net = StateSync.Net
76+
vm.hello = "aaaa";
77+
Net.delay = 100;
78+
Net.jitter = 20;
79+
data.statusDelay = Net.delay;
80+
data.statusJitter = Net.jitter;
81+
Net.client1 = client1;
82+
Net.client2 = client2;
83+
Net.server = server;
84+
6385
function checkboxClick(event) {
6486
const t = event.target;
6587
console.log(t.id, t.checked, t.value);
66-
switch(t.id)
67-
{
88+
switch (t.id) {
6889
case "serverJitter":
6990
Net.jitter = Number(t.value);
7091
data.statusJitter = Net.jitter;
7192
break;
7293
case "serverDelay":
7394
Net.delay = Number(t.value);
7495
data.statusDelay = Net.delay;
75-
7696
break;
97+
case "client1Predict":
98+
client1.isPrediction = t.checked
7799
}
78100
}
79-
80-
const client1 = new StateSync.Client(
81-
1,
82-
document.getElementById("client1"),
83-
{left: "a", right: "d"}
84-
);
85-
const client2 = new StateSync.Client(
86-
2,
87-
document.getElementById("client2"),
88-
{left: "ArrowLeft", right: "ArrowRight"}
89-
);
90-
const server = new StateSync.Server(document.getElementById("server"));
91-
92-
const Net = StateSync.Net
93-
vm.hello = "aaaa";
94-
Net.delay = 100;
95-
Net.jitter = 20;
96-
data.statusDelay = Net.delay;
97-
data.statusJitter = Net.jitter;
98-
Net.client1 = client1;
99-
Net.client2 = client2;
100-
Net.server = server;
101101
</script>
102102

103103
</html>

example/index.ts

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ export abstract class Base {
2424

2525
c1!: Entity;
2626
c2!: Entity;
27-
server!: Entity;
27+
remote!: Entity;
28+
isPrediction = false;
29+
isInterpolation = false;
30+
isRollback = false;
2831

2932
private _preTimestamp = 0;
3033
private _fixedTimeAccumulator = 0;
@@ -124,20 +127,25 @@ export abstract class Base {
124127
trans2.pos.y = 35;
125128
trans2.pos.x = 30;
126129

127-
const server = new Entity();
128-
server.add(ServerTime);
130+
const remote = new Entity();
131+
remote.add(ServerTime);
129132

130133
this.c1 = ent1;
131134
this.c2 = ent2;
132-
this.server = server;
133-
this.domain.reg(server);
135+
this.remote = remote;
136+
this.domain.reg(remote);
134137
this.domain.reg(ent1);
135138
this.domain.reg(ent2);
136139
}
137140

138141
onKeyDown(ev: KeyboardEvent): void {}
139142

140143
onKeyUp(ev: KeyboardEvent): void {}
144+
145+
receive(data: any) {
146+
if (this.isPrediction) return;
147+
this.domain.setData(data);
148+
}
141149
}
142150

143151
export class Server extends Base {
@@ -153,14 +161,14 @@ export class Server extends Base {
153161

154162
fixedUpdate() {
155163
const Time = this.time;
156-
const serverTime = this.server.get(ServerTime)!;
164+
const serverTime = this.remote.get(ServerTime)!;
157165
serverTime.timestamp = Time.fixedTimestamp;
158166

159167
const c1 = Net.client1;
160168
const c2 = Net.client2;
161169
const data = this.domain.asData();
162-
Net.send(data).recv(c1.domain.setData, c1.domain);
163-
Net.send(data).recv(c2.domain.setData, c2.domain);
170+
Net.send(data).recv(c1.receive, c1);
171+
Net.send(data).recv(c2.receive, c2);
164172
}
165173
}
166174

@@ -220,11 +228,11 @@ export class Client extends Base {
220228
trans.serverMove(dirX * this.time.fixedDeltaTime * 0.1, 0);
221229

222230
const data = this.domain.asData();
223-
Net.send(data).recv(Net.server.domain.setData, Net.server.domain);
231+
Net.send(data).recv(Net.server.receive, Net.server);
224232

225-
const serverTime = this.server.get(ServerTime)!;
233+
const serverTime = this.remote.get(ServerTime)!;
226234
this.time.timestamp =
227235
this.time.timestamp * 0.5 + serverTime.timestamp * 0.5;
228-
console.log(serverTime.timestamp, this.time.timestamp);
236+
console.log(serverTime.timestamp - this.time.timestamp);
229237
}
230238
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"lint-staged": "^10.5.4",
2626
"prettier": "^2.2.1",
2727
"rollup": "^2.39.0",
28+
"rollup-plugin-serve": "^1.1.0",
2829
"rollup-plugin-typescript2": "^0.30.0",
2930
"ts-node": "^9.1.1",
3031
"tslib": "^2.1.0",

rollup.config.example.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import typescript from "rollup-plugin-typescript2";
22
import cjs from "@rollup/plugin-commonjs";
3+
import serve from "rollup-plugin-serve";
34

45
export default {
56
input: "example/index.ts",
@@ -14,5 +15,9 @@ export default {
1415
tsconfig: "./example/tsconfig.json",
1516
tsconfigOverride: { compilerOptions: { declaration: false } },
1617
}),
18+
serve({
19+
open: true,
20+
contentBase: "example",
21+
}),
1722
],
1823
};

0 commit comments

Comments
 (0)