> For the complete documentation index, see [llms.txt](https://claude.fractalgamestudios.es/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://claude.fractalgamestudios.es/bolas.md).

# Bolas

Diario de desarrollo del proyecto de Roblox **Bolas**, un juego de combate por equipos donde cada jugador controla una bola personalizable (skin, arma, efectos y estela) que lucha en distintas arenas.

## Datos del place

* **Nombre:** `[DESARROLLADOR] BOLAS`
* **PlaceId:** `105110915184773` · **GameId:** `9012532096`
* El place de desarrollo contiene junto en el mismo Workspace la Lobby y las 4 arenas (`1v1`, `3v3`, `BattleRoyale`, `BossFight`); se publica tal cual a varios PlaceIds distintos, y cada instancia se comporta de forma distinta en runtime según detecta su propio `game.PlaceId`. **Aviso:** el PlaceId de `BossFight` en `LobbyConfig` sigue siendo inventado — ese modo aún no tiene place publicado.

## Sistemas principales

* **Armas** (`ServerStorage.Classes.WeaponScaling`): Unarmed, Sword, Dagger, Bow, Spear, Scythe, Katana, Staff, Scepter — cada una con su propia progresión/estadística dentro de la partida (velocidad, daño por golpe, veneno, robo de vida, etc.). Todo el daño entre bolas pasa por un único punto (`ServerStorage.Classes.BallSystem.Damage`), que aplica el multiplicador de daño del jugador y atribuye la eliminación.
* **Skills de arma** (`WeaponProgression` + `Shared.WeaponProgressionConfig`): progresión permanente **por arma**, estilo Pokémon — cada arma tiene su propio nivel y su propia XP, que se gana al terminar cada partida, y da puntos de skill que se gastan en Vida / Daño / Velocidad / Vel. de giro / Tamaño (con el tope por arma de `WeaponData.MaxStats`). Se gestiona desde el menú principal o desde la mesa de mejora de la Lobby. Todo el balance vive en un único archivo de configuración.
* **Customización**: sistema data-driven de skins de Bola/Arma/FX/Estela (`ServerStorage.Data.SkinConfig` / `ReplicatedStorage.Shared.SkinConfig`), aplicado en vivo por `Customization.lua` y expuesto vía terminales físicas (`CustomizationTerminal`, por tag de `CollectionService`) y la UI React `BallsConfig`/`BallInventory`.
* **Lobby y matchmaking**: cola local (con relleno de bots) y cola global cross-server (vía `MemoryStoreSortedMap` + `MessagingService`), con un único punto de entrada (`Lobby/JoinQueue`) que impide estar en dos colas de modo distinto a la vez.
* **Partidas** (`ArenaManager`/`ArenaMatchController`): arranque tras confirmar carga de todos los clientes, combate real, detección de victoria robusta ante muertes simultáneas, pantalla de resultados (con la XP de arma ganada) y retorno inteligente al servidor de origen (con fallback a servidor público).
* **Boss Fight** (`BossFactory` + `ArenaManager`): modo por equipos de un jefe (un bot anclado en el centro de la arena, x4 de tamaño en bola y arma, 10.000 de vida) contra un equipo de jugadores y bots de relleno, con barra de vida a lo ancho de la pantalla al estilo de Minecraft (`Front.Modules.BossBar`).
* **Lobby AFK**: server reservado real (mismo Place) al que se puede ir voluntariamente o por inactividad, donde se puede seguir customizando la bola y ganando Dollars sin bloquear el Lobby principal.
* **Frontend**: interfaz completa migrada a React-Roblox (`ReplicatedStorage.Front`, patrón Controller → Hook → Vista, con `Front.Router` gestionando capas sticky/main/overlay/modal), con un `Theme.lua` central para colores/fuentes/bordes de toda la interfaz. Las interacciones del mundo 3D tampoco usan la interfaz nativa de Roblox: `ProximityPromptStyler` sustituye el globo por defecto de TODOS los `ProximityPrompt` por una tarjeta con el mismo lenguaje visual, con un color de acento por interacción, que se refresca en vivo si el prompt cambia y se retira sola si el prompt desaparece del mundo.
* **Acceso gratuito de Robux** en Studio y para fundadores, implementado como un overlay 100% en memoria que nunca toca el perfil real del jugador (ProfileStore).

## Diario de desarrollo

Registro cronológico de las sesiones de trabajo, con el diagnóstico, la causa raíz y la validación en playtest de cada bug arreglado. Las entradas más recientes de cada página van arriba. Organizado por fecha:

* 2026-07-31 — Arranque del proyecto y matchmaking cross-server
* 2026-08-01 — Customización, lobby, combate y bugs de UI
* 2026-08-02 — Pulido visual, arquitectura de cámara/gravedad y AFK
* 2026-08-04 — Modo Boss Fight
* 2026-08-04 — Sistema de skills de arma
* 2026-08-04 — Prompts de proximidad propios
* 2026-08-04 — Prompts que se actualizan en vivo


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://claude.fractalgamestudios.es/bolas.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
