Skip to content

Commit cdc6167

Browse files
committed
feat(game/mp/slime): add speed multiplier options
1 parent 8d26312 commit cdc6167

4 files changed

Lines changed: 29 additions & 5 deletions

File tree

‎docs/pages/game/slime.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Slime Volleyball Multiplayer
33
date: "2017-05-09 22:33:05 -0600"
4-
mdate: 2025-12-28 18:00:00 -0700
4+
mdate: 2025-12-29 17:00:00 -0700
55
entry: app_game_mp_slime
66
---
77
{% import 'game.html' as game %}

‎docs/pages/game/slime_rules.html‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Slime Volleyball Multiplayer Rules
33
date: "2025-12-27 20:00:00 -0700"
4-
mdate: 2025-12-28 16:00:00 -0700
4+
mdate: 2025-12-29 17:00:00 -0700
55
---
66
{% import 'game.html' as game %}
77
{{ game.tab(page_url, 'slime') }}
@@ -19,7 +19,6 @@ <h1>Future features</h1>
1919
<ul>
2020
<li>Bots
2121
<li>Client-side Prediction (Extrapolation, and possibly interpolation)
22-
<li>Options for game speed, player speed, ball speed, and gravity
2322
</ul>
2423
</p>
2524

@@ -36,3 +35,15 @@ <h2>Serve</h2>
3635

3736
<h2>Intermission Time / s <small>(default: 1, min: 0, max: 3)</small></h2>
3837
<p>Time between rounds after a point is scored.</p>
38+
39+
<h2>Game Speed <small>(default: 100%, min: 0.25, max: 8)</small></h2>
40+
<p>The game speed is multiplied by this factor.</p>
41+
42+
<h2>Player Speed <small>(default: 1, min: 0.25, max: 8)</small></h2>
43+
<p>The player speed is multiplied by this factor.</p>
44+
45+
<h2>Ball Speed <small>(default: 1, min: 0.10, max: 8)</small></h2>
46+
<p>The ball speed is multiplied by this factor.</p>
47+
48+
<h2>Gravity <small>(default: 1, min: 0.10, max: 8)</small></h2>
49+
<p>The gravity is multiplied by this factor.</p>

‎scripts/game/mp/slime/SlimeGame.svelte.ts‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { formatHexColor } from '@/util'
1+
import { clamp, formatHexColor } from '@/util'
22
import { ByteReader } from '@gmc/game/ByteReader'
33
import { filterChat } from '@gmc/game/CommonGame.svelte'
44
import { RealTimeClient, RealTimeGame } from '@gmc/game/RealTimeGame.svelte'
@@ -166,6 +166,10 @@ export class SlimeGame extends RealTimeGame<SlimeClient> {
166166
protected override processWelcomeMode (m: ByteReader): void {
167167
this.mode.optServe = m.get() & 3 // 2 bits exactly
168168
this.mode.optIntermission = Math.min(Number(m.getUint64()), 3000)
169+
this.mode.optGameSpeed = clamp(m.get(), 25, 800)
170+
this.mode.optPlayerSpeed = clamp(m.get(), 25, 800)
171+
this.mode.optBallSpeed = clamp(m.get(), 10, 800)
172+
this.mode.optGravity = clamp(m.get(), 10, 800)
169173
}
170174

171175
protected override processRoundInfo (m: ByteReader): void {

‎scripts/game/mp/slime/gamemode.ts‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ export const roomCreateOptions = [
99
'random'
1010
]],
1111
['optIntermission', 'i', 1000, 'Intermission Time / ms', 'time after round ends, in milliseconds', 0, 3000],
12+
['optGameSpeed', 'i', 100, 'Game Speed / %', 'game speed multiplier', 25, 800],
13+
['optPlayerSpeed', 'i', 100, 'Player Speed / %', 'player speed multiplier', 25, 800],
14+
['optBallSpeed', 'i', 100, 'Ball Speed / %', 'ball speed multiplier', 10, 800],
15+
['optGravity', 'i', 100, 'Gravity / %', 'gravity multiplier', 10, 800],
1216
] as const
1317

1418
export type SlimeMode = GamemodeFromOptions<typeof roomCreateOptions>
@@ -18,5 +22,10 @@ export function defaultMode (): SlimeMode {
1822
}
1923

2024
export function getGameModeString (mode: SlimeMode): string {
21-
return `${['alternate', 'winner', 'loser', 'random'][mode.optServe]} serve, ${mode.optIntermission / 1000}s intermission`
25+
return `${['alternate', 'winner', 'loser', 'random'][mode.optServe]} serve`
26+
+ `, ${mode.optIntermission / 1000}s intermission`
27+
+ `, (${mode.optGameSpeed / 100}x game`
28+
+ `, ${mode.optPlayerSpeed / 100}x player`
29+
+ `, ${mode.optBallSpeed / 100}x ball) speed`
30+
+ `, ${mode.optGravity / 100}x gravity`
2231
}

0 commit comments

Comments
 (0)