OMG Fix Mayleeey, Bungle!

Si alguna vez visitas el fantástico mundo online de Halo, más tarde o más temprano te enfrentarás a tu primera “carrera del pollo!” (juas juas marca registrada, al igual que el farruquitation… que explicaré en futuras entradas) La carrera del pollo (agresiva… las hay de las de sálvase quien pueda, pero esa es de pollos cobardes) a primera vista, podría entenderse como un suicidio en toda regla.

Tu contrincante, aparentemente cegado por la ira, se avalanzará sobre ti, con la esperanza de que su escudo resista frente a tu descarga de fuego el tiempo necesario como para llegar a golpearte con la culata de su arma. ¿El desenlace? Si lo consigue (como él vendrá tambien vomitando fuego) será tu muerte, si reaccionas a tiempo, será la suya.

Bien, cuando ya llevas unas cuantas partidas, estas carreras del pollo son un autentico duelo de “A ver quién la tiene más grande” je je y se resuelven en el último milisegundo… cuando uno de los dos muere por el culatazo del otro, llegado el momeno no habrá ni armas involucradas en tal evento, y ambos sacareis las culatas a pasear, para que malgastar munición que podremos usar contra otro contrincante?

.
.
.
y aqui entra el tema de hoy! (un poco de ambiente que ya tengo el player dinamico — XD)

¿Por qué he caido yo cuando golpee primero o por qué murió él si no he parado de tragar balas? Una pregunta tan inocente como esta, descubre el maravilloso mundo de la optimización y del diseño de un multijugador como pocos han existido.

Dios (o el responsable del multiplayer de Halo3) Tyson Green (Multiplayer Design Lead) responde las plegarias de los seres inferiores y comenta sobre el diseño del Melee Combat en Halo3.

Lo ideal sería que en un enfrentamiento cuerpo a cuerpo dónde se golpease a la vez debería sobrevivir aquel que tuviese más vida… y si tienen la misma vida, ambos deberían morir. ( ^.^) lógico no? Pues que empiece la movida! porque casi nunca se da el caso!

El problema?
Resumido?
Host VS Client.

Pongámonos en un caso normal sin LAGAZOS salvajes sueltos por la zona, con una latencia media de 80 – 100 ms entre Host y Cliente, pues eso son 3 FOTOGRAMAS de diferencia!!!! Y ahora consideremos qué sucede cuando Host y Cliente lanzan su golpe al mismo tiempo… el Cliente verá que su golpe salió 3 fotogramas antes que el de su contrincante, y este verá que el suyo salió 3 fotogramas antes! Entonces… ¿quién atacó primero?

En los días de Halo 2, era el Host quién determinaba el ganador. Lo que significaba que en un caso Host vs Cliente, siempre ganaba el Host… y en un caso Cliente vs Cliente siempre ganaría aquel con menor latencia. Una solución válida, pero injusta que favorece a aquellos con las conexiones más rápidas.

The Halo 3 “Fix”

En Halo 3, se introduce el “melee contest”, que sucede cuando dos ataques cuerpo a cuerpo se lanza PRÁCTICAMENTE a la vez. Este prácticamente viene definido por la latencia (con un límite de 100 ms… aquellos famosos 3 fotogramas) intervalo en el que el HOST espera para ver si quién hizo el ataque recibe su respuesta en el cuerpo a cuerpo. Si se registra una respuesta con éxito, se da un “melee contest” y se pasa a resolver el daño producido por cada ataque y asi calcular quién sobrevivirá al duelo… uno, los dos o ninguno. WHOA! en menos de 100 ms pasa todo esto!?

En resumen, NO PODRÉ CULPAR DE TRAPI ( ^_^) ES QUE SOY MUY LENTO!
HIJOS DE PUTA!

Para los curiosos… un farruquitation en su máxima expresión