This Is Lit

Don’t play with fire 🔥

This update adds support for spawning energy objects:

That is the only apparent change; other significant changes include:

  • Rendering has changed from OpenGL to Vulkan.
  • Early support for teams.
  • Object deletion at the end of a sequence.

The new version can be downloaded on itch.io.

Play

Energy Spawning

Energy spawning

Energy spawning

Energy objects are now spawnable in game, expanding game play possibilities. This is one step towards enabling:

  • Actions based on a sequence of control buttons.
  • Charged shots.

Create

Configuration

Object Deletion Via next

Previously, Will accepted a sequence ID to switch to when a sequence ended, or the application would choose a default.

Now, Will still accepts a sequence ID, but it also accepts the following values:

  • none: If there is a default sequence transition, use that. Otherwise, remain on the last frame.
  • repeat: Repeat the current sequence.
  • delete: Delete the current object.
1
2
3
4
5
[sequences.hover]
  next = "" # defaults to "none"
  frames = [
    # ..
  ]

This change was made to allow the fireballs to disappear after they hit or are hit by another object.

New Type: Energy

There is a new type – energy. This is used to represent energy blasts and visual effects.

Right now it has 3 sequences:

  • hover: Default sequence when the energy is hovering.
  • hit: Sequence the energy switches to when it is hit by another object.
  • hitting: Sequence the energy switches to when it hits another object.

The following shows the object definition used for the fireball object in the video:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[sequences.hover]
  [[sequences.hover.frames]]
    wait = 4
    sprite = { sheet = 0, index = 0 }
    body = [{ box = { x = 15, y = 6, w = 39, h = 21 } }]

    [[sequences.hover.frames.interactions]]
      hit = { repeat_delay = 20, hp_damage = 15, stun = 90 }
      bounds = [{ box = { x = 15, y = 6, w = 39, h = 21 } }]

  [[sequences.hover.frames]]
    wait = 4
    sprite = { sheet = 0, index = 1 }
    body = [{ box = { x = 15, y = 6, w = 39, h = 21 } }]

    [[sequences.hover.frames.interactions]]
      hit = { repeat_delay = 20, hp_damage = 15, stun = 90 }
      bounds = [{ box = { x = 15, y = 6, w = 39, h = 21 } }]

[sequences.hit]
  next = "delete"
  frames = [
    { wait = 1, sprite = { sheet = 0, index = 2 } },
    { wait = 1, sprite = { sheet = 0, index = 3 } },
    { wait = 1, sprite = { sheet = 0, index = 4 } },
    { wait = 1, sprite = { sheet = 0, index = 5 } },
  ]

[sequences.hitting]
  next = "delete"
  frames = [
    { wait = 1, sprite = { sheet = 0, index = 2 } },
    { wait = 1, sprite = { sheet = 0, index = 3 } },
    { wait = 1, sprite = { sheet = 0, index = 4 } },
    { wait = 1, sprite = { sheet = 0, index = 5 } },
  ]

Spawns

Energy objects are spawned using the spawns frame element. The position and velocity of the spawned energy can be specified, which is be relative to the position and velocity of the entity that spawns it.

The following shows an example of a spawns frame element:

1
2
3
4
5
6
7
8
[sequences.stand_attack_1]
  [[sequences.stand_attack_1.frames]]
    # ..

    [[sequences.stand_attack_1.frames.spawns]]
      object = "default/fireball" # Slug of the energy object to spawn
      position = [45, 35, 0]      # Position relative to the sprite's top left corner
      velocity = [6, 0, 0]        # Velocity that the object begins with.

Multiple spawns may be specified to spawn multiple objects.

Spriting

Fireball

Fireball

Energy objects, like characters, need multiple sprites to form an aesthetic animation. The spritesheet above shows two sprites used during the hover sequence, and 4 sprites used during the hit and hitting sequences.

What’s Next

A significant portion of the next period will be dedicated to integrating the atelier-assets library into Amethyst, so there may not be very much feature development in Will. That said, I shall try to fit something in.

Support Me

The game is still in an early stage, but if you would like to support me, please consider becoming a Patron.