JavaScript EditorFree JavaScript Editor     Ajax Editor 



Main Page
  Previous Section Next Section

Summary

This chapter investigated the concept of emergence and its presence and importance in computer games:

  • Emergence is a phenomenon whereby combinations of simple rules cause intricate patterns.

  • Intuitively, emergence is associated with patterns that are not expected, deductible, nor reducible, but with added complexity.

  • Emergence can be the only way to create patterns, the most efficient way, or used as a means to find new patterns.

In games, behaviors are the most common manifestation of emergence:

  • At the individual level, emergence can arise by independent combination or sequence of actions.

  • Both behaviors and strategies can emerge in NPCs.

  • The advantages in creating emergent behaviors lie primarily in efficiency, because reactive behaviors can be used.

  • One particularly popular way to exploit emergence is to make the environments smarter.

  • The objects in the world are associated with functionality and affordances.

  • When the environment broadcasts this information, purposeful behaviors can arise from simple NPC reactions.

  • The design of the AI is thereby greatly simplified.

Finally, it's possible to harness emergence generally by following certain designs and methodologies borrowed from agile development:

  • Feature-driven development with extensive testing

  • Rapid iterations with extensive refactoring

Creating complex NPCs using reactive behaviors is possible using emergence. The benefits are tremendous for game AI, and the methods described in this chapter will certainly help the engineer reach that goal.

Practical Demo

An animat known as Penguin illustrates the ideas in this chapter. Penguin has an extremely simple AI, but interesting patterns arise when it's placed in the world in large numbers. The animats notably gather to keep warm and run around in groups.


      Previous Section Next Section
    



    JavaScript EditorAjax Editor     JavaScript Editor