Zone d'activité

De WikiPlee.

La zone d'activité décrit la partie du monde qui est mise à jour lors d'une itération du jeu. Sa taille peut être ajustée par un paramètre de la ligne de commande.

Un niveau peut être arbitrairement grand et contenir énormément d'objets. Il est très coûteux de les faire tous évoluer en permanence. Cependant, les joueurs ne voient à un instant donné qu'une petite partie du monde et, hors cas particuliers, ils sont indifférents aux événements se déroulant hors de cette partie visible. Ainsi, pour des raisons de performances, seuls les objets situés autour des joueurs ou autour de la caméra sont mis à jour lors d'une itération du jeu.

[modifier] Entrée et sortie des objets

Les objets sont prévenus de leur arrivée dans la zone d'activité du monde. Lorsqu'un objet entre dans cette zone, la méthode universe::physical_item::enters_active_region() est appelée. Tant qu'il est dans la zone, sa méthode engine::base_item::progress() est appelée. Lorsqu'il quitte la zone, c'est universe::physical_item::leaves_active_region() qui est appelée et, après cet appel, la méthode progress() n'est plus appelée jusqu'au retour de l'objet dans la zone.

[modifier] Objets insensibles à la zone d'activité

Si des objets doivent impérativement évoluer même s'ils ne sont pas dans la zone d'activité, tels que des plates-formes se déplaçant de manière synchrone, il suffit d'appeler la méthode physical_item_state::set_global(bool) avant de l'ajouter au monde.