Aller au contenu

Checkpoints

Saul

Les checkpoints permettent de préserver la patience du joueur et de centrer l’expérience sur les passages les plus difficiles. L’accumulation de checkpoints peut aussi réduire les conséquences des actions du joueur et ainsi nuire à la tension du jeu.

  1. load.js
    const PNG = [
    "flag",
    "grass",
    ]
  2. load.js
    const MP3 = [
    "signal",
    "wooosh",
    "off",
    ]
  3. config.js
    const TILE_CONFIG = {
    "P": () => [ // checkpoint
    sprite("flag"),
    area(),
    anchor("bot"),
    pos(0, 10),
    rotate(),
    checkpoint(),
    swing({
    on: false,
    amplitude: 10,
    speed: 4,
    }),
    ],
    "#": () => [ // player 1
    sprite("bean"),
    platformerController(),
    jumpController(),
    sleep(),
    alive(),
    opacity(),
    scale(),
    health(1, 4),
    area(),
    body(),
    respawn(),
    falling(),
    rotate(),
    pos(0, -20),
    anchor("center"),
    ],
    "=": () => [ // block
    sprite("grass"),
    area({ collisionIgnore: ["agent"] }),
    body({ isStatic: true }),
    anchor("bot"),
    offscreen({ hide: true }),
    tile({ isObstacle: true }),
    ],
    }
  4. game.js
    scene("game", () => {
    const tiles = { ...TILE_CONFIG, ...LEVELS[CURRENT_LEVEL].tiles }
    const config = { ...LEVEL_CONFIG, ...LEVELS[CURRENT_LEVEL].config, ...{tiles:tiles}}
    const map = LEVELS[CURRENT_LEVEL].map.split('\n')
    const level = addLevel(map, config)
    const utility = add([
    multiplayerCamera(),
    ])
    setGravity(config.gravity)
    setBackground(config.backgroundColor)
    on('checkpoint on', 'checkpoint', (obj) => obj.swingSwitch(true))
    on('checkpoint off', 'checkpoint', (obj) => obj.swingSwitch(false))
    on('checkpoint on', 'checkpoint', () => play('signal'))
    on('jump', 'player', () => play('wooosh'))
    on('drop', 'player', () => play('off'))
    on('respawn', 'player', (obj) => obj.play('idle'))
    on('sleep', 'player', (obj) => obj.play('sleep'))
    on('awake', 'player', (obj) => obj.play('idle'))
    on('jump', 'player', (obj) => obj.play('jump', { speed: 4, onEnd: () => obj.play('idle') }))
    on('drop', 'player', (obj) => obj.play('worry'))
    }
  5. level.js
    const LEVELS = [
    {
    map: `
    # P P
    ===== === ===
    `,
    },
    ]
checkpoint()
example
config.js
checkpoint({
onInteract: true,
forAllPlayer: true,
tag: "player"
}),
swing()
example
config.js
swing({
delay: 0.4,
amplitude: 4,
speed: 1,
on: true
}),