Novaciano/RC.Outbreak-1B-iMatrix-GGUF
Raccoon City Outbreak - 1B (Gemma3)
<center> Este bot fue creado como prototipo con la idea de intentar replicar la experiencia del Resident Evil Outbreak en un modelo 1B de Gemma3 al que se le ha inyectado un dataset para facilitar esto.
</center>
Para *replicar la experiencia de Resident Evil Outbreak* en un modelo Gemma 3 de 1B, el enfoque correcto no es “copiar” el juego, sino emular sus pilares sistémicos y narrativos dentro de las limitaciones de un LLM pequeño. A continuación detallo un marco técnico y de diseño** que funciona en la práctica con modelos de ese tamaño.
Bots para este LLM
RE • Outbreak (🇪🇦): AQUÍ
RE • Outbreak (🇬🇧): HERE
RE • Raccoon City (🇬🇧): HERE
1. Identificar los pilares de Outbreak (lo que realmente hay que replicar)
No es el lore ni los personajes; es el loop de juego emergente:
- Supervivencia cooperativa asimétrica
- Información incompleta (el jugador no lo sabe todo)
- Estados persistentes (infección, heridas, estrés)
- Eventos dinámicos y no deterministas
- Dependencia del entorno (mapa, objetos, puertas, atajos)
- Fracaso como resultado válido (muertes abruptas)
Todo lo que sigue gira alrededor de esto.
2. Arquitectura recomendada para Gemma 3 1B
Gemma 1B no soporta razonamiento largo ni simulaciones complejas internas, así que debes externalizar la lógica.
Esquema correcto
[Usuario]
↓
[Gemma 3 1B]
↓
[Narrador + Parser]
↓
[Motor de Estado (externo)]
↓
[Gemma 3 1B]Gemma no decide el mundo, solo narra y reacciona.
3. Motor de estado (CRÍTICO)
Debes mantener fuera del modelo una estructura tipo:
{
"players": {
"Kevin": {
"hp": 62,
"infection": 34,
"status": ["bleeding"],
"inventory": ["Handgun", "9mm x6"]
}
},
"environment": {
"location": "Raccoon Hospital - West Wing",
"lights": "off",
"threat_level": 3
},
"events": {
"timer": 4,
"pending": ["door_breach"]
}
}Gemma solo recibe:
- estado resumido
- estímulos sensoriales
- restricciones
Nunca el JSON completo.
4. Simulación de cooperación (clave de Outbreak)
Gemma no puede manejar múltiples mentes bien, así que:
Solución correcta
- 1 usuario = 1 personaje
- Los demás jugadores son NPCs con agendas ocultas
- Cada NPC tiene:
- objetivo
- miedo
- umbral de cooperación
Ejemplo:
NPC: Yoko
Estado: asustada
Confianza: baja
Puede mentir u ocultar objetosEso recrea la tensión cooperativa real de Outbreak.
5. Infección y presión temporal
Esto es obligatorio.
Implementa:
- infección progresiva (ticks)
- eventos por temporizador
- consecuencias irreversibles
Gemma solo narra, el motor decide:
EVENTO: la infección aumenta +6%
CONSECUENCIA: visión borrosaNunca dejes que el modelo “olvide” el tiempo.
6. Contenido entrenable (si haces LoRA)
Si quieres afinar Gemma:
Dataset ideal
- Logs de partidas tipo:
- decisiones fallidas
- muertes abruptas
- cooperación rota
- NO diálogos largos
- NO intros épicas
Formato:
[ESTADO]
[ESCENA]
[DECISIÓN USUARIO]
[RESULTADO HOSTIL]Eso entrena brutalidad sistémica, no fantasía.
7. Lo que NO debes hacer
- No dejes a Gemma “dirigir” el juego
- No permitas finales garantizados
- No expliques reglas al jugador
- No suavices consecuencias
Si haces eso, ya no es Outbreak.
8. Resultado esperado
Con este enfoque, Gemma 3 1B puede ofrecer:
- sesiones tensas
- sensación de vulnerabilidad
- cooperación frágil
- muertes injustas
- narrativa emergente
Exactamente lo que hacía Resident Evil Outbreak… pero en texto y con recursos mínimos.
Perfecto. Vamos directo a implementación en KoboldAI, sin teoría innecesaria. Te indico qué escribir, dónde, qué NO usar, y qué valores concretos funcionan para este caso (Outbreak-like, Gemma-class / 1B aprox.).
Asumo KoboldAI (KoboldCPP o KoboldAI United) con soporte de:
- System Prompt
- Author’s Note
- World Info
- Parámetros de inferencia estándar
9. Qué va en cada sitio (visión global)
10. Prompt base (núcleo del sistema)
Gemma debe estar limitada y reprimida, no “creativa libre”.
Ejemplo de system prompt:
Rol: Narrador de supervivencia cooperativa.
Prohibido: meta, optimización, decisiones por el jugador.
Estilo: descriptivo, conciso, hostil al error.
Reglas:
- El mundo es peligroso.
- Los recursos son escasos.
- Los NPCs no ayudan sin motivo.
- La información puede ser incompleta o errónea.
Formato fijo:
ESCENA:
EVENTOS:
OPCIONES:Esto reduce al mínimo la alucinación, algo vital en 1B.
Variación en inglés (Suele funcionar mejor)
Esto va en System Prompt, literal o casi literal. No lo adornes.
You are a survival horror narrator.
Your role is to describe scenes, events, and consequences.
You must NEVER:
- Explain rules
- Optimize player decisions
- Provide reassurance
- Decide actions for the player
- Break format
The world is hostile.
Resources are scarce.
Information may be incomplete or wrong.
Failure is normal and sudden.
You do NOT control the game logic.
You only narrate what the player perceives.
Always use this exact format:
SCENE:
EVENTS:
OPTIONS:Notas:
- Frases cortas.
- Imperativos negativos claros.
- Nada de lore.
- Nada de “you can try to…”.
Esto castra positivamente al modelo.
11. Author’s Note (recordatorio de superficie)
Aquí no pongas reglas, solo presión estilística. Máximo 3–4 líneas.
Tone is tense, cold, and concise.
Descriptions are sensory, not explanatory.
Consequences are abrupt and unfair.
Do not soften outcomes.Funciona como “aguja moral” sin competir con el System Prompt.
12. Mensaje inicial (inicio de partida)
Este es el primer output del modelo, así que debe ya respetar el formato.
Ejemplo funcional:
SCENE:
A dark hospital corridor. Emergency lights flicker. The air smells of disinfectant and rot. You hear coughing somewhere beyond a closed door.
EVENTS:
Your chest burns when you breathe. Something wet drips from your left arm.
OPTIONS:
- Check your wound
- Move toward the coughing
- Try the nearby doorClaves:
- No contexto previo largo.
- No presentación épica.
- Inmediatamente incomodidad + decisión.
13. World Info (sí, pero muy limitado)
Cuándo usar World Info
Solo para:
- localizaciones
- objetos importantes
- NPCs recurrentes
Cuándo NO usarlo
- estados numéricos
- reglas
- timers
- lógica de infección
Eso va fuera del modelo, en tu motor.
Ejemplo correcto
Entry: Raccoon Hospital – West Wing
A neglected hospital wing.
Power is unreliable.
Multiple locked doors and narrow corridors.
Sounds often echo from unknown sources.Entry: Yoko
A quiet civilian survivor.
Avoids direct confrontation.
Values self-preservation over cooperation.Nada más. Si pones mecánicas aquí, el modelo empezará a razonar.
14. Inferencia: valores CONCRETOS que funcionan
Aquí está lo que la mayoría arruina.
Objetivo
- Baja creatividad
- Alta coherencia
- Cero épica
- Respuestas cortas y secas
Parámetros recomendados (Gemma / 1B-like)
Temperatura
0.4 – 0.55- <0.4 → seco, repetitivo
- > 0.6 → empieza a “ayudar”
Punto dulce: 0.45
Top-K
30 – 50- Muy bajo mata variación sensorial
- Muy alto introduce lirismo
Recomendado: 40
Top-P
0.85 – 0.9No lo pongas en 1.0. 0.88 funciona muy bien.
Typical Sampling (si existe)
0.9 – 0.95Ayuda a evitar frases “bonitas”.
Repetition Penalty
1.1 – 1.15Más alto hace que invente de más.
Max Tokens
120 – 180Nunca más. Si el modelo tiene espacio, lo llenará con mierda.
Mirostat
NO Introduce variabilidad adaptativa, justo lo que no quieres.
15. Cosas que NO debes hacer (importante)
- No subas temperatura “para hacerlo más interesante”
- No pongas reglas en World Info
- No permitas que el modelo narre consecuencias sistémicas no confirmadas por tu motor
- No dejes que explique por qué algo pasó
Si dudas: menos texto, menos libertad.
16. Regla final (la más importante)
Si en algún momento el modelo:
- aconseja,
- tranquiliza,
- explica mecánicas,
- justifica consecuencias,
el sistema está mal configurado, no es “culpa del modelo”.
Model creator: UmbrellaInc<br/> Original model: UmbrellaInc/T-Virus-1B<br/> GGUF quantization: provided by Novaciano using llama.cpp<br/>
Special thanks
🙏 Special thanks to Georgi Gerganov and the whole team working on llama.cpp for making all of this possible.
Use with Ollama
ollama run "hf.co/Novaciano/RC.Outbreak-1B-iMatrix-GGUF:Q4_K_M"Use with LM Studio
lms load "Novaciano/RC.Outbreak-1B-iMatrix-GGUF"Use with llama.cpp CLI
llama-cli --hf "Novaciano/RC.Outbreak-1B-iMatrix-GGUF:Q4_K_M" -p "The meaning to life and the universe is"Use with llama.cpp Server:
llama-server --hf "Novaciano/RC.Outbreak-1B-iMatrix-GGUF:Q4_K_M" -c 4096