I'm wondering what is the best (or at least a good) way of managing enemies in a shoot-em-up.

Basically, what I'd do would be a class that manages displaying and updating positions of all the enemies. But how to create good deplacements for enemies? A list of where-to-go points? gravitating around some fixed points (with ponderation, distance evaluation etc.)?

Same question for the shoot patterns?

Can you please put me on a track?

  • \$\begingroup\$ I've never seen the word "deplacement" before. Can you explain what it means to you? (I assume it's to do with deployment and placement and movement, but wouldn't want to leave out something important.) \$\endgroup\$
    – chaos
    Feb 19, 2011 at 3:27
  • \$\begingroup\$ Sorry, english isn't my native language. You're right, i mean ennemies' movement : trajectory, how they are moving on the screen, for example right on the player, doing ellipses etc. \$\endgroup\$ Feb 19, 2011 at 11:07
  • \$\begingroup\$ (offtopic) What about using Python? It may get You more productive, You can prototype it faster. \$\endgroup\$
    – user712092
    Aug 30, 2011 at 12:34
  • \$\begingroup\$ I don't know about software but it might be possible to record some other SHMUP and make some statistics about movement of enemies. There exist programs which can find moving parts of image, and also programs which find function by which they move. \$\endgroup\$
    – user712092
    Aug 30, 2011 at 12:37
  • \$\begingroup\$ Ask experienced players or watch some proplayers talking about patterns. From my experience these patterns are simple circles, bouncing (remember Pong?), squares, zigzags or spirals. \$\endgroup\$
    – user712092
    Aug 30, 2011 at 12:39

2 Answers 2


Use BulletML to define shot patterns:

BulletML is the Bullet Markup Language. BulletML can describe the barrage of bullets in shooting games. (The storm of Progear, Psyvariar, Gigawing2, G DARIUS, XEVIOUS, ...)

Most simple enemy movement can also be expressed in BulletML; bosses may need a bit more state. It has been used in many games and prototypes.

The reference implementation is in Java. If you want to use C+++, you can use libBulletML.


It sounds like what you're asking is a general question, "what is a good enemy movement pattern / AI for a shmup?" - a design question more than a programming one. There is no single right or wrong answer here. It all depends on your game and especially the design of your level environments. For example, in a level without much maneuverability and lots of tight spaces, enemies that just sit there and do nothing can make sufficiently challenging obstacles, while enemies that pass through walls and head directly to the player are just mean. In a wide-open space, enemies with no movement would be trivial to avoid (unless there's a lot of them!) while enemies that track the player movement might work better.

My advice would be, play a lot of shmups, but as you play, pay attention to enemy movement patterns in relation to level design, and also which levels feel fun versus too easy versus really frustrating. After awhile you will probably get a good feel for what kinds of common patterns there are, and what makes them good or bad. But there is no simple answer other than that, I don't think, if I understand your question correctly.

  • \$\begingroup\$ Thanks for your answer, i will take it into account, but i was more asking for a technical point of vue than game-design-ish one. Once i'll have implemented a way to make even simple patterns, i'll be able to test different movements etc. \$\endgroup\$ Feb 20, 2011 at 12:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .