Universidad Interamericana de PanamáMateria: Compiladores Inicio Documentación Tema 6 · BYTE WARS
Tema 6 · Mini máquina virtual y bytecode

BYTE WARS

PROGRAMA · COMPILA · EJECUTA · DESTRUYE

BYTE WARS es un juego 2D de combate espacial en el que el jugador no controla la nave con el teclado, sino que escribe una estrategia en BWL (Byte Wars Language), un lenguaje de programación creado para este proyecto. El compilador desarrollado en C transforma el código en bytecode, que una máquina virtual ejecuta instrucción por instrucción para controlar los movimientos, disparos y escudos de la nave. Todo el juego funciona en el navegador gracias a WebAssembly, convirtiendo la programación en una estrategia de combate en tiempo real.

Lenguaje propio Lexer + parser + sema Bytecode e ISA VM de pila Juego 2D
Qué vas a encontrar

Un compilador que se puede jugar

Cuatro paneles conectados: el código que escribes, el bytecode que genera, la máquina virtual que lo ejecuta y el juego que reacciona a cada instrucción.

Editor BWLResaltado, números de línea, errores con línea y columna.
BytecodeDirecciones, opcodes y la instrucción actual resaltada.
VMPC, pila, variables reservadas y estado de ejecución.
JuegoNaves, balas, escudo, salud, puntuación y oleadas.
Cómo funciona

Del texto a la acción

EscribesBWLTu estrategia en texto
→
CompilasCLéxico, sintáctico y semántico
→
BytecodeISAInstrucciones para la VM
→
EjecutasVMPC, pila y variables
→
Juegas2DLa nave obedece al programa
El lenguaje

BWL en 10 líneas

START
SET speed 3
REPEAT 5 {
  MOVE RIGHT
  SHOOT
  WAIT 10
}
WHILE enemy_ahead() {
  IF health < 30 { SHIELD }
  ELSE { SHOOT }
}
END
La máquina

Bytecode de pila

0000  PUSH           3
0001  STORE          speed
0002  PUSH           5
0003  REPEAT_START   0009
0004  MOVE_RIGHT
0005  SHOOT
0006  PUSH           10
0007  WAIT
0008  REPEAT_END
0009  CALL           enemy_ahead
0010  JZ             0020
0011  LOAD           health
0012  PUSH           30
0013  LT
0014  JZ             0018
0015  SHIELD
0016  JMP            0019
0017  SHOOT
0018  JMP            0009
0019  HALT
Resultados

Así se ve funcionando

El tablero completo, la VM con variables en vivo y el juego reaccionando al programa.

Tablero de BYTE WARS con editor, bytecode, VM y juego
Panel de la máquina virtual con PC, pila y variables
La VM muestra PC, pila, variables y el estado de ejecución.
Juego 2D con nave, enemigos y HUD
El juego reacciona a MOVE, SHOOT, SHIELD y WAIT.

Llévate el runner nativo

bytewars.exe compila y simula programas BWL desde la consola de Windows con el mismo núcleo C. También está disponible bytewars_cli para Linux.

Equipo

Integrantes

CZCarlos Zachrisson
KAKaren Arauz