JugonesTop

¿Cómo empacar múltiples números en una sola estadística en un circuito Rec Room ? rec-room

Como Rec Room solo nos da 6 estadísticas de jugador y 3 estadísticas de clasificación, no tengo suficientes estadísticas para almacenar todos los datos que quiero almacenar. Los jugadores en mi juego tienen múltiples valores que me gustaría administrar, y para almacenarlos realmente sé que tendré que agruparlos en una sola estadística.

¿Cuál es la mejor manera de hacer esto? Idealmente, me gustaría que fuera una solución barata que aún pueda almacenar mucha información.

Respuesta

Hay varias maneras de hacer esto que varían en función de cuánta tinta que va a costar, ¿qué tipos de restricciones que está trabajando, y cómo muchas de las estadísticas que usted está tratando de pack. La siguiente solución se logra que el apretado embalaje y costos (n-1)*2 fichas por tanto el embalaje y desembalaje, donde n es el número de valores a almacenar.

Dicen que usted tiene 4 valores de la tienda: a, b, c, y d. Cada valor tiene los siguientes rangos. Usted sabe que nunca será mayor que o igual a este valor.

a: [0, 30)
b: [0, 13)
c: [0, 25)
d: [0, 3)

Es importante destacar que este método supone que una >= 0, b >= 0, c >= 0 y d >= 0; números negativos no funcionará, así que tendrá que aplicar un desplazamiento antes de su embalaje y quite ese desplazamiento después de desembalaje.

Otra cosa importante a comprobar es que cuando se multiplica los valores máximos en conjunto, no superen el máximo entero que puede ser representado. Para las estadísticas de los jugadores esto es (2^31)-1. Para la tabla de clasificación, estadísticas de que el valor es de sólo 2^24. En mi ejemplo, que sale a 29250, que es mucho menos que los dos (2^31)-1 y 2^24 por lo que puede ser almacenado de forma segura en una estadística del jugador y una tabla de clasificación estadística.

Así que para guardar estos valores, se puede seguir el siguiente procedimiento:

accumulator = 0
accumulator = accumulator * 30 + a // this could be simplified to just "accumulator = a"
accumulator = accumulator * 13 + b
accumulator = accumulator * 25 + c
accumulator = accumulator * 3 + d

En Rec Room circuitos, esto se ve de la siguiente manera y puede ser investigado aquí: Integer Packing

Ahora para desempaquetar que tienes que hacer a la inversa:

d = accumulator % 3; accumulator = accumulator / 3
c = accumulator % 25; accumulator = accumulator / 25
b = accumulator % 13; accumulator = accumulator / 13
a = accumulator % 30; accumulator = accumulator / 30 // can be simplified to "a = accumulator; accumulator = 0"

En Rec Room circuitos que se ve de la siguiente manera y puede ser investigado aquí: Integer Unpacking

Esa es la más ajustada de la codificación que se puede lograr con algunos buenos beneficios de ser capaz de tener arbitraria rangos.

X