August 23rd-26th 2013 :: Theme: 10 Seconds

Ludum Dare 27 — August 23rd-26th, 2013
[ Results: Top 100 Compo, Jam | Top 25 Categories | View My Entry ]
[ View All 2213 Games (Compo Only, Jam Only) | Warmup ]

IMPORTANT NOTE: If you want to place in the final results, you NEED votes. The easiest way to get votes is by rating other games. Judging lasts for 3 weeks following the end of Ludum Dare. For best effect, rate 20 games as soon as possible. Rating more games is encouraged.


Back to Browse Entries

Trigger Warning

by Dark Arts and Sciences - Jam Entry

*** This isn't finished, but it's headed somewhere interesting. I'm posting what I have now and hoping social pressure will make me finish it instead of sending it to the Island of Forgotten Prototypes. ***

Flash "protoype": Requires only a web browser with Flash.
Python rewrite: Requires python and pygame. Download the file from the pastebin as "" and run it from the command line via "python"
Source: Contains both Flash and Python versions, all source files and resources, and git logs from start to finish (the folder might be invisible, but they're there). Bonus: script for displaying competition time left, works with GeekTool.

Controls - Flash: Hold down the mouse to attract boids, release it to scare them away.
Controls - Python: Hold down the mouse to attract boids. Attract the boids to the triggers; they'll turn yellow if you succeed. Press R to rewind time by 1/4 second.

Boids set off triggers that they touch.

Boids are yellow if they have touched a trigger, blue if they're angry about other boids flying too close, and red if they're very angry.

Luckily for you, I ran out of time and did not implement any painful triggers. (You're welcome.)

For future pain-enhanced versions, visit:

Longer notes:

No, it isn't complete. Here's what IS finished:

The flying dots are Boids []. Boids are an artificial life form that use simple rules to produce complex behavior simulating a flock of birds. Each boid INDIVIDUALLY looks at rest of the flock and chooses where to fly next.

I did not invent Boids; the original algorithm was developed in 1986. I started with this pseudocode [], converted it into Flash, realized that a: With more than five boids, Flash doesn't have enough power to calculate that many nested for loops in one frame on a MacBook Air and b: I quit using ActionScript and learned Python for many Very Good Reasons. And re-converted it into Python.

I don't regret starting over, but I do regret not giving up on the Flash version sooner. The two versions may have similar features, but the Flash code is at touch-anything-and-everything-breaks while the Python version is still fun to work on. If I'd moved on sooner, I'd have something much more playable.

Anyway, my core idea is to stick a few more rules on top of the emergent behavior already in Boids and see what happens. Boids. Ten seconds. Trigger. Warning.

Thus, the rest of the rules:

Triggers have warnings (the red text) and an effect (any function) that happens ten seconds later. Like the intro says, you can't edit THAT ten seconds, but you CAN edit time itself.

Time is pausable and rewindable. Watch the intro closely. That isn't your computer lagging; game time actually STOPS (on "itself" and "can", if it's synced right).

Editing time affects when warnings and effects happen. Boids are not affected directly, but will immediately react to any changes in the game world.

The trigger system actually creates everything except the intro text and the first two trigger dots. The red "Warning!" message is the first warning. It takes ten seconds to fade out, then triggers the "start game" effect, which turns on the trigger dots and creates the boids. Those triggers then turn boids that touch them yellow.

Boids have moods which affect their behavior. ("Angry Boids" would not be an inaccurate alternate title.)

In the Python version, the only mood is anger, which goes up when a boid has to fly around another boid and goes down over time. If you make the boids fly into each other (by holding the mouse down and waiting for them to fly to it), they will turn blue and eventually red. It's hard to see, but angrier boids have a higher maximum speed.

In the Flash version, boids have separate anger/red, fear/blue and tired/green variables, which combine smoothly to set the boid's color. Angry boids won't try to avoid collisions with other boids. Boids that are startled by noise/mouse clicks, fly too fast, or almost hit other boids become fearful. Tired boids will drop to the bottom of the screen and rest for ten seconds, which regenerates all their moods.

Flash only: When you release the mouse button, boids are startled away from that point for ten seconds. They remember the startle point instead of avoiding the mouse's current location.

Here's what ISN'T finished:

The initial two triggers should rewind time by a second whenever a boid touches them. (I almost got this in right before the deadline, but Python didn't like where I was accessing the time offset variable from. If I had more of a game by that point, I'd have called it a game-breaking bug and spent a few more minutes passing references around. Rewinding works, triggering it doesn't.)

Once you've messed with time enough, the real levels should start. If you don't figure out what you're supposed to be doing within ten seconds, a help message appears explaining the controls, something like "Click and hold and the mouse on a green thing until a white dot hits it and turns yellow. Look what the timer did. Now do that nine more times because a: theme and b: I want to be SURE you understand the controls."

Real levels. I don't have ANYTHING implemented here, but here's the design document I wrote during the competition. [http://www.darkartsandsciences/trigger-warning-design] Short version: you don't control the boids directly, but you can create and/or fire triggers that affect their behavior.

Downloads and Links




Croze says ...
Aug 27, 2013 @ 2:29am

Isn't even a game... Is this even playable?

Aug 27, 2013 @ 2:40am

Would be nice if you could have a little tutorial on how to play your game.

megashroom says ...
Aug 27, 2013 @ 4:03am

Nice game/simulation (it was a little esoteric).
The boid flocking was pretty nicely done too.
Also, you might want to put a link to pygame in the description, so that some more people could download it.

Qaterknan says ...
Aug 27, 2013 @ 9:43am

It is good concept.

rylgh says ...
Aug 27, 2013 @ 9:33pm

Wasn't sure what to do, but the movement simulation was very lifelike... "trigger warning" is an apt name as I could see how someone with aversion to bugs would be freaked out by this. Kind of made me itchy while playing with it... movement's too realistic. Neat :)

Darien says ...
Aug 29, 2013 @ 2:31pm

What's here seems to work more or less as advertised, but it's not much.

Jacic says ...
Aug 30, 2013 @ 8:49pm

I don't really understand what's going on, but I like the physics.

alts says ...
Sep 5, 2013 @ 7:23am

I'm impressed that you had time to port the game to Python. I am, however, surprised that the game performs better in Python than AS3. I wouldn't have expected that.

Despite being incomplete, the primary interaction felt nice, and the potential for "herding" games with it seemed interesting.

Spelchan says ...
Sep 13, 2013 @ 10:45pm

Interesting flocking mechanism but not much of a game.

sans_seraph says ...
Sep 14, 2013 @ 8:41am

Very interesting prototype! It looks nice and was fun to play with. I'd be interested to see a full game come out of it, you could do a lot of cool stuff with this.

You must sign in to comment.

TEAMS: Teams entering the Jam should pick a single representative to submit your game, or create a team specific account you can share. We currently do not support Team Voting, but sharing an account and together playing and rating games is acceptable.

NOT LOGGED IN?: If you get a message about not being logged in, even though you are, it’s because your web browser cached the non-logged in page. You can fix this by either refreshing your cache or clearing your cache. CTRL+F5 in many browsers. Chrome is a bit more work. Press F12 to enable Developer Mode, then you can right click on the refresh button and select “Empty Cache and Hard Reload”. This option is unavailable if you are not in Developer Mode.

PORTS: Ports to other platforms can be done after the deadline. That said, the sooner you finish your port, the sooner people can play your game, improving your chances of placing in the final results. For best results, provide a Web version of your game, or a Windows version with no dependencies. Also be sure to rate about 20 games to improve your visibility.

MY GAME DOESN’T SHOW UP: If you can’t find your game, it’s usually because the URL to your downloads are missing ‘http://‘. Fix your URLs ( and you will show up.

MY GAME CRASHES, IS UNBEATABLE, OR I MADE A TYPO: We allow you to fix crash or win condition bugs after the deadline (in a sense, like “porting” to support more players). We also allow “typo” bugs. I.e. A true that should have been a false, a word that should have been a different word, very tiny changes that you would have caught if you had more sleep. We leave this open to interpretation, but generally speaking your game should be identical to the game you submitted. No new features, just things you messed up last minute. Typos.

[cache: storing page]