# BDSC

A **lightweight**, **modern** server core designed for maximum flexibility.

{% hint style="danger" %}

### Not a Roleplay Framework

BDSC is **not** a traditional server framework.\
It ships with **no jobs, inventories, or gameplay logic**.

What your server does is **entirely defined** by the plugins you choose to load — or build yourself.
{% endhint %}

***

## What Is BDSC?

Normally? **BOII Development Server Core**\
When it’s running smoothly? **Barebones Done Smart & Clean**\
When it refuses to co-operate? **Bug-Driven Sh\*tfest of Chaos.**

BDSC is a lightweight server foundation designed for developers who want control.\
It doesn’t care what your server does — it just gives you a clean, flexible structure to build on.

No jobs.\
No inventory.\
No economy.\
No drama.

You get the boring but essential stuff:

* Player management
* Object extensions
* A couple of handy utilities\
  Everything else? You decide.

***

## Who It’s For

BDSC was built for internal use on BOII projects — survival, minigames, experiments.\
But it’s now open and modular enough to support anything.

If you're tired of bloated RP frameworks or want a **clean, no-bullshit starting point**, this is for you.

You get:

* A stable foundation
* A consistent object system
* A fully extensible runtime
* Zero assumptions about your gameplay

Use it. Fork it. Rewrite it. Just don’t make it worse.

***

## What It Provides

BDSC handles:

* Player management and object lifecycle
* Extension hooks for runtime systems
* Server/client-safe data syncing
* Core exports for structured access
* Some basic utlity functions

No hardcoded gameplay.\
No required systems.\
No enforced dependencies.\
You build what matters — BDSC stays out of the way.

***

## Ideal Use Cases

BDSC is framework-agnostic and gameplay-neutral.\
Perfect for:

* Custom survival servers
* Minigame or PvP modes
* Custom RP frameworks
* Experimental mechanics
* Hybrid / mashup servers

If you’re building something new, this is the foundation to do it clean.

***

## Player Extensions

BDSC supports extending player objects at runtime - without breaking structure:

```lua
player:add_data("stats", { health = 100 }, true)
player:add_method("stats", "get_health", function(self) return self:get_data("stats").health end)
player:run_method("stats", "get_health")
```

All data/methods are namespaced, and replicated data syncs automatically to clients if marked as such.

***

## Structure

Everything is modular and clearly separated.

```
bashCopyEditcore/
│
├── lib/              # Utility functions (e.g. utils.lua)
│
├── player/           # Main player system
│   ├── events.lua       # Join/leave, sync, client handlers
│   ├── factory.lua      # Creates player objects
│   ├── methods.lua      # Public/private extension logic
│   ├── registry.lua     # Player storage, save/remove/get
│
├── locales/          # Translation files
│   └── en.lua
│
├── finalise.lua      # Exports and locks bdsc namespace
├── fxmanifest.lua    # Resource manifest
└── init.lua          # Core bootloader
```

Want to add inventory? Authentication? Stats?\
Just attach logic using `add_data` and `add_method` on player objects - no plugin boilerplate required.

***

## Quick Install

BDSC isn’t a full framework — it’s a clean server **core**. \
You don’t need to install databases, jobs, inventories, or other bloated systems.

To get started:

{% stepper %}
{% step %}

#### **Drop It Into Your Server**

Place the `bdsc` resource into your `resources/` folder.\
Make sure it starts after `bdtk` (required for user accounts, you could change this).

```
ensure bdtk
ensure bdsc
```

{% endstep %}

{% step %}

#### **Start The Server**

BDSC will automatically initialize and log connected players.\
It doesn’t require SQL or any config to boot.
{% endstep %}

{% step %}

#### Extend It

Write your own logic using the exposed player API, or import it into your systems via:

```lua
local core = exports.bdsc:import()
```

That’s it. No setup wizard. No bloated dependencies.\
Just a clean foundation for your own logic.
{% endstep %}
{% endstepper %}

***

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Important Guides</td><td><a href="https://3046942752-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHfd391cB6wDC8S3yHcie%2Fuploads%2F10X4tmvg6ShzhiE9fYmm%2Fplug_guides_gitbook.png?alt=media&#x26;token=c5301dc7-3451-4c41-b34d-83a718acc294">plug_guides_gitbook.png</a></td><td><a href="bdsc/guides">guides</a></td></tr><tr><td>API Reference</td><td><a href="https://3046942752-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHfd391cB6wDC8S3yHcie%2Fuploads%2FuGaQrq6I1z0alArNSvd3%2Fplug_api_gitbook.png?alt=media&#x26;token=bb331960-b6ce-4aa5-b770-90e0a236fd3c">plug_api_gitbook.png</a></td><td><a href="bdsc/api">api</a></td></tr></tbody></table>
