Esta página es un conjunto de utilidades que «usarás constantemente»: RNG, formato, tiempo y algunos subsistemas principales que aparecen en la mayoría de los juegos.
Random usa una u64 semilla explícita. Pasa la semilla por ref para que se actualice.
rng:u64=rng_seed_time();// o determinista por entidad:// rng: u64 = rng_seed(entity.id);// Los valores del rango son inclusivosroll:=rng_range_int(refrng,1,10);chance:=rng_range_float(refrng,0,1);
Si quieres un comportamiento determinista para la jugabilidad, mantén el RNG bajo autoridad del servidor. No calcules los resultados importantes solo en el cliente.
Usa % marcadores de posición con un arreglo de argumentos:
Si necesitas un argumento adyacente a un signo de porcentaje (o junto a otro argumento), usa %0 como un alias de %:
Para redondear decimales, usa format_float:
Registro
El registro sigue las mismas reglas de formato:
Tiempo
SFX
Reproduce sonidos importantes y largos solo en el servidor (Game.is_server()), de lo contrario una predicción errónea puede causar reproducción duplicada (música, SFX de muerte, etc).
Inicio rápido de la economía (monedas)
Las monedas de la economía son por jugador y persisten automáticamente.
current_time := get_time(); // tiempo del juego
real_time := get_real_time(); // hora del mundo real
frame := get_frame_number(); // número de fotograma actual