# 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="/files/mXGQlzqtxWDAWC63HwSh">/files/mXGQlzqtxWDAWC63HwSh</a></td><td><a href="/pages/ReibOVNagqQM9oAUvXBH">/pages/ReibOVNagqQM9oAUvXBH</a></td></tr><tr><td>API Reference</td><td><a href="/files/lfc1oyGmqtwJalCePlXA">/files/lfc1oyGmqtwJalCePlXA</a></td><td><a href="/pages/tG7Hg9wkmpdNXg3iRGpY">/pages/tG7Hg9wkmpdNXg3iRGpY</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.boii.dev/fivem-free-resources/bdsc.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
