The Chaos Jam

[Reusable] The Chaos Jam v1.1

This thread contains content that may be reused, modified, or ported by anyone.


Community Noise Maker
Sonic Team Junior
Most of the maps are either very good or outstanding. However, there is an issue with Slime Canyon in which many of the emerald spawns are stuck inside the walls of the map, usually rendering it impossible to obtain super or to use the emerald tokens to respawn the map's rings and monitors (of which there are very few to begin with).

It's nice to see people taking their own shot at custom enemies! If I could give a point of critique, a lot of attacks are not well-telegraphed or have very fast-moving projectile attacks, and it can make some of the enemies frustrating to play against. The "vanilla" Chaos enemies are very explicit about when an enemy is about to fire, often having both clear visual and audio cues, and they make sure that players have enough time to see the projectiles moving toward them -- the super turret explicitly uses a modified Jetty-Syn bullet projectile instead of the typical industrial turret fire, the latter of which is extremely fast and not very easy to see due to its small size. It might be hard to come up with good visual effects using exclusively SOC states and actions, so try incorporating some lua into your enemy code. For example, here's how Chaos's superturret does the special glow effect just before and during its firing animation:

    if mo.state == S_TURRETCHARGE2 or mo.state == S_TURRETFIRE -- These are the object's pre-firing state and firing state respectively
        local ghost = P_SpawnGhostMobj(mo) -- Spawns a ghost instance of the object's current sprite. The ghost is automatically set to disappear after ten or so frames.
        ghost.colorized = true
        ghost.color = SKINCOLOR_YELLOW -- This w/ "colorized" paints the ghost yellow
        ghost.destscale = $<<1 -- Makes the ghost grow to twice its current size
    -- Since this is a MobjThinker hook, a ghost object will be spawned on every frame during those two states, allowing for a continuous sort of "glow" effect

This is a good starting point for anyone still familiarizing themselves with the language. The above ghost effect is a technique I use on the Crawla Commander as well, color coding its various states according to which attack it's performing. Similarly, the jettysyns themselves are directly colorized with flashing red, blue, and yellow colors as they are slowing down, making it visually obvious that their state has changed and they are about to fire (but if you apply colors directly to the object and not a ghost, just be sure to unset mo.colorized once the state is over!)

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)