> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monolisk.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# About CORP

> Introduction to the CORP framework and its key features

<Note>**Reading time:** \~3 minutes</Note>

**CORP** (Component-Oriented Replicated Programming) is a game development framework for Roblox built with roblox-ts. It provides a Unity-like ECS (Entity Component System) architecture with GameObjects and Components, along with a built-in networking system inspired by Unity's Netcode for GameObjects.

## What is CORP?

CORP brings modern game development patterns to Roblox, making it easier to build complex, multiplayer games with a clean, component-based architecture.

### Key Features

* **🎮 Unity-Style Architecture**: Familiar GameObject and Component patterns
* **🌐 Built-in Networking**: Automatic replication with NetworkObjects
* **📡 Type-Safe RPCs**: Remote Procedure Calls with flexible configuration
* **🔄 State Synchronization**: NetworkedVariables, Lists, Maps, and Sets
* **🎬 Scene Management**: Declarative scene definitions with serialization
* **🎯 Component Lifecycle**: Predictable initialization and cleanup
* **🔧 TypeScript Support**: Full type safety with roblox-ts

## Documentation

Explore the complete documentation:

* **[README](./README)** - Overview and quick reference
* **[Getting Started](./getting-started)** - Installation and setup guide
* **[Core Concepts](./core-concepts)** - GameObjects, Components, and Behaviors
* **[Networking](./networking)** - Multiplayer features and replication
* **[Scene Management](./scene-management)** - Creating and managing scenes
* **[Decorators](./decorators)** - Component decorators guide
* **[API Reference](./api-reference)** - Complete API documentation
* **[Examples](./examples)** - Practical tutorials and code samples

## Quick Example

```typescript theme={null}
import { NetworkBehavior } from "CORP/shared/networking/network-behavior";
import { NetworkedVariable } from "CORP/shared/observables/networked-observables/networked-variable";
import { RPC } from "CORP/shared/networking/RPC";
import RequiresComponent from "CORP/shared/componentization/decorators/requires-component";
import { NetworkObject } from "CORP/shared/networking/network-object";

@RequiresComponent(NetworkObject)
export class PlayerController extends NetworkBehavior {
    public readonly health = new NetworkedVariable<number>(100);

    public onStart(): void {
        if (RunService.IsServer()) {
            print("Player spawned on server");
        }
    }

    @RPC.Method({
        endpoints: [RPC.Endpoint.CLIENT_TO_SERVER],
        accessPolicy: RPC.AccessPolicy.OWNER
    })
    public takeDamage(amount: number): void {
        if (RunService.IsServer()) {
            const newHealth = this.health.getValue() - amount;
            this.health.setValue(math.max(0, newHealth));
        }
    }

    public willRemove(): void {
        print("Player removed");
    }

    protected getSourceScript(): ModuleScript {
        return script as ModuleScript;
    }
}
```

## Getting Help

* Start with the **[Getting Started Guide](./getting-started)**
* Check out **[Examples](./examples)** for practical implementations
* Refer to the **[API Reference](./api-reference)** for detailed documentation

## Repository

CORP is developed by MonoliskSoftware.

***

**Build amazing games with CORP!** 🚀
