> For the complete documentation index, see [llms.txt](https://machinations.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://machinations.gitbook.io/docs/machinations-up/main-concepts.md).

# Main Concepts

Important matters to consider when using Machinations UP

## How it integrates with your Unity 3D production

The following two classes are of major importance for how UP works with Unity.

***MnEntryPoint*** - contains an *InitializeOnLoad* method, which bootstraps the plugin. It creates the Machinations Service (*MnService*) and the *Socket IO* client used for communication.

***MnMainThreadHook** -* contains a *RuntimeInitializeOnLoad* method, which ensures that the Machinations Service is called by whatever scene you are loading.

It also contains an *Update* method, which calls *MnService's ProcessSchedule* function at regular interval, to make sure that MnService is executed during whatever scene you may be playing.

## Design Philosophy

### **An engine-agnostic game design tool**

As such, the goal of our Game Engine Plugin efforts is to provide libraries that support a wide range of game engines and programming languages.

### Complex game design

One of the core philosophies of UP is to accommodate complex game design, even if spread-out over multiple diagrams. **UP** can refer to both **elements from different diagrams** AND **switch** **to a different diagram** based on [Game State Awareness](/docs/machinations-up/key-features/game-state-awareness.md), for the same mechanic.
