Basic Concepts
This page introduces the basic concepts used when working with Axis. These concepts relate to game elements and how they interact with each other. Axis provides features that implement these elements and facilitate their interactions, or you can choose to implement some of them yourself.
- Template Objects
- AxisGameObject
- Contains Label
- Vanilla Scale Standard
- Grid and Navigation
- NavObject
- Firework
- Counter
- Extension
Template Objects
Refers to the pre-configured GameObjects available in the GameObject menu, designed to simplify the creation of common game design scenarios. These templates provide ready-to-use components and settings tailored for specific purposes, such as player characters, environmental elements, or interactive objects.
By using these templates, developers can quickly prototype and implement game features without starting from scratch, saving time and effort. These Template Objects are especially useful for rapid development and ensure consistency across different game elements.
More details: Editor Features > Template Objects
AxisGameObject
This class of components ensures that each GameObject in the hierarchy can only have one Axis component derived from AxisGameObject
class.
This restriction is created by the DisallowMultipleComponent
attribute, which prevents the addition of multiple inheritors of AxisGameObject
class to the same GameObject. By maintaining this restriction, Axis ensures a clear and organized component structure, reducing potential conflicts and simplifying the management of GameObject behaviors within the hierarchy.
More details: Axis.AxisGameObject
Contains Label
Labels are case insensitive checks of GameObject name strings. In many components Axis filters affected objects by those 'containing label', if this field is left empty all objects fit the criteria, if its 'player' for example, it will only affect objects which name contains the string 'player' anywhere in it.
It can be used to create and identify groups of objects affected or not by game logic, using prefixes and/or suffixes in game objects names. The method ContainsLabel
is also available for all Axis scripts.
More details: Axis.AxisMonoBehaviour
Vanilla Scale Standard
This refers to the practice of keeping all AxisGameObjects at a local scale of 1,1,1. This ensures consistency and accuracy in the editor's visual representation of the game, avoiding distortions and discrepancies that can arise from children GameObjects inheriting scale from their parents.
By adhering to this advised standard, developers can maintain a What You See Is What You Get (WYSIWYG) environment, making it easier to design and prototype without encountering unexpected scaling issues during runtime. This approach simplifies the development process and enhances the reliability of visual and functional outcomes in the game.
More details: Vanilla Scale Workflow
Grid and Navigation
Grid and Navigation are systems used to manage movement and positioning within the game world with better performance. The grid system divides the game world into evenly spaced cells, making it easier to organize and control elements like character movement, object placement, and collision detection. Navigation, built on top of this grid system, involves determining paths for characters or objects to travel from one point to another, ensuring they react to obstacles consistently and interact with the game environment as expected.
NavmeshMatrix
NavmeshMatrix is the component for handling every grid and navigation routines. This object will consider all children colliders as part of the structure for grid generation.
More details: NavmeshMatrix Inspector
NavLink
This is a grid element used in game development to connect different tiles that are distant from each other. It allows characters and objects to teleport from one tile to another non-adjacent tile, providing a seamless transition through an animation. This feature is particularly useful for creating shortcuts, secret passages, or quick travel points within the game world, enhancing the player's experience by allowing for faster and more dynamic movement across the game's environment.
More details: NavLink Inspector
NavZone
Region of tiles within a game grid that share the same properties, such as terrain options and effects. These properties can include anything from the type of terrain (like grass, sand, or water) to special effects (such as damage areas or zone entry detection). NavZones are useful for creating simple visual effects on moving objects, like showing uneven movement on rough terrain or simulating floating when an object is in water. This feature helps to enhance the realism and interactivity of the game environment, providing visual and functional feedback to the player based on the character's or object's location.
More details: NavZone Inspector
NavObject
A NavObject is a versatile instance positioned within a grid-based game environment, capable of various interactions and behaviors. These objects can range from controllable characters to collectible items, destructible boxes, and even enemies that are controlled automatically by the game. NavObjects interact with other elements such as NavZones (defined regions of tiles with specific properties) and NavLinks (connections between distant tiles).
This object may possess one or more ObjFeature
added to it, which are characteristics defining their controller, animation, and interaction properties. These features determine how the NavObject behaves within the game world, including how it moves, reacts to player input, and interacts with other elements.
More details: NavObject Inspector
ObjFeature
ObjFeatures are attributes or characteristics assigned to NavObjects, shaping their behavior, appearance, and interactions within the game world. These features can vary widely, influencing how NavObjects move, react to stimuli, and interact with other game elements. Overall, ObjFeature play a crucial role in defining the characteristics and capabilities of NavObjects.
More details: Object Features
ObjAction
ObjAction refers to a class in Axis that encapsulates specific actions or behaviors that a game object can perform. These actions are modular and can be easily attached to game objects, allowing for a flexible and reusable approach to implementing game logic. ObjActions can be triggered by various events or conditions within the game, making them a powerful tool for creating interactive and dynamic gameplay elements.
For example, an ObjAction might define how an object moves, attacks, or interacts with other objects. By using ObjActions, developers can quickly add complex behaviors to game objects without writing extensive custom code, facilitating a more efficient and organized development process.
More details: Object Actions
AxisFirework
The concept of firework in the Axis context covers effect bursts which will be handled by a single AxisFirework instance. Instead of creating new objects for each burst effect, AxisFirework efficiently burst into different positions using that single instance. This component comes with adjustable properties to optimize performance and make it easier for developers to customize.
The firework might include visual particle system to burst visual effect, and may also include sound effects with settings to add randomness or sequential variations.
More details: AxisFirework Inspector
AxisTimerSequence
AxisTimerSequence is a versatile object that manages a series of events within a game environment. These events are executed with intervals between them, allowing for precise timing and sequencing. These events are executed with intervals between them, allowing for precise timing and sequencing. This object can be configured to either wait for an external trigger before starting or automatically begin playing when the game starts.
Additionally, it offers options for looping, meaning it restarts the list of events once it reaches the end, providing continuous gameplay experiences. Alternatively, it can be set to run through the list only once, providing a single sequence of events. AxisTimerSequence is a powerful tool for developers looking to implement timed events and dynamic sequences in their games, offering flexibility and control over the flow of gameplay.
More details: AxisTimerSequence Inspector
AxisCounter
AxisCounter is a type of object commonly found in the Unity game object hierarchy, serving as a tool for implementing logic based on counting and altering numerical values. It allows developers to create functionalities that depend on tracking and modifying numbers within the game (scorekeeping, health and damage, resource management, level progression, timer and countdown, objective tracking, puzzle mechanics, game state management, etc).
More details: AxisCounter Inspector
Extension
Axis extension classes offer a flexible way to customize your prototype's behavior with code. Designed for developers to create inheritor components, these classes allow seamless integration between Axis components and other systems.
Predefined OnEnable
and OnDisable
functionality in Axis extension classes automatically handles Axis components's event listeners. When enabled, these classes add all necessary event listeners; when disabled, they remove them immediately. This simplifies the process of building custom behaviors, and being able to toggle them on and off with ease.
More details: Axis.Extensions