# Objects and Instances
When programming, it's convenient to cluster data into structures based on the things in the game world. A character structure owns variables for its health, position, movement attributes, etc., while articles, hitboxes, and even the stage have their own variables.
Most of a character's code works with the character's own variables, but you'll need to reference others to affect them.
An object is a type, like "Character" or "Hitbox" or "Cat".
An instance is an example of a type, like "the Zetterburn I'm playing now" or "the hitbox I created from my ftilt" or "my cat, Rosa".
Instances are made from objects. Instances contain variables, like my Zetterburn's current percent, and their object determines what variables they have, and how Rivals uses them.
# Available Objects
oPlayer
(Characters)pHitBox
pHurtBox
obj_article1
obj_article2
obj_article3
obj_article_solid
obj_article_platform
hit_fx_obj
(Visual effects created on hit)oTestPlayer
(Characters while in playtest mode, found on the character select screen or workshop screen.)
# Basic Usage
instance_id = instance_create(x, y, object)
creates a new instance of the object.
instance_destroy(instance_id)
destroys the instance with that id. Be careful with this. It's usually best to let
articles destroy themselves at the end of their update
script, so they don't disappear in the middle of doing
something. instance_destroy()
with no arguments destroys the current instance, same as instance_destroy(self)
.
You can access variables from other instances with .
syntax, such as:
vortex = instance_create(x, y-30, "obj_article1")
vortex.vsp = -5
# Perspective
Scripts are always run from the perspective of some instance, often the character instance. You can reference the current instance
with self
, though that's rarely needed.
The with structure temporarily changes the perspective to an instance, or run code from the perspective of all instances of a given object.
# Perspective Effects
Perspective is important for some functions:
Fetching functions (
asset_get
,sound_get
) need to be of the perspective of the resource's character or an instance that character owns, such as their article or hitbox.sound_play
panning depends on the location of the caller.