Solución al problema de hitboxes

B

El otro día conversando con un amiguete sobre el problema de los hitboxes me sugirió una solución muy sencilla y efectiva. Pero antes voy a explicar que es un hitbox y cual es el problema vigente, para los mas despistados ;)

HITBOXES… WTF?

Un hitbox es un polígono invisible*** que engloba un área de un modelo. Tanto la cabeza, como el tronco y extremidades de cada modelo estan recubiertas por hitboxes. Tan solo sirven para determinar diferentes zonas de daño; el hitbox de la cabeza es el mas sensible a daños mientras que los de las extremidades son mas resistentes... vamos, de cajón xD

EL PROBLEMA

A diferencia de lo que muchos aun siguen pensando, el problema actual con los hitboxes no es el offset. La alineación de los hitboxes se corrige con una buena configuración de cl_interpolate - cl_interp - cl_lagcompensation (1, 0.01 y 1 respectivamente). El problema con los hitboxes es el overlaping (superposición). Lo explicare con dos sencillos ejemplos:

Situacion 1:

- Disparamos con una AK un disparo a modo de sniper apuntando a una chola
- Cascazo
- Frag
- Oimos un "Sin One que le he metido!!" por el TS xD
- Todo OK, todos contentos xD

Situacion 2:

- Disparamos con una AK un disparo a modo de sniper
- En la trayectoria de la bala hacia la cabeza se interponen los brazos
- La bala colisiona contra los brazos y se marca el hitbox de los brazos
- La bala sigue su curso atravesando la cabeza
- El engine de valve solo está capacitado de para marcar un hitbox por proyectil dentro de un mismo modelo por lo que el hitbox de la cabeza se menosprecia
- Resultado: 23 en un hit que iba claramente a la cabeza. Bravo valve por programar semejante chusta xD

SOLUCIONES

  • Solución Sencilla: eliminar los hitboxes de las extremidades superiores (ni dios apunta a los brazos)

  • Solución Compleja: contabilizar todos y cada uno de los hits que ocasione un mismo proyectil en los diferentes hitboxes de un mismo modelo.

  • "Solución" mental: relajarme un poco y dejar que Valve se siga meando en mi cara mientras yo sigo perdiendo el tiempo con esta chusta de juego que tanto depende del factor suerte. Si no fuera por el juego táctico y el teamplay, del cs:s al bingo habría un paso xD

Desde aquí hago un llamamiento a todo el que lea este post. Podríamos inundar de emails a Valve con las soluciones propuestas (las dos primeras solamente a ser posible xD). Os parece? Si tal me curro el email en inglés y hacemos copy-paste bastote xD

Bueno, que opináis?

*** Los hitboxes son visibles en servidores con cheats ON. Poned el comando "sv_showimpacts 1", disparad a un bot o un compañero y comprobadlo vosotros mismos ;)

PS: Ahora supongo que muchos entenderán no solo el por qué en ocasiones los disparos a chola quitan 23 puntos de vida en un hit sino también los típicos disparo de AWP que no matan de un hit... superposición de hitboxes my friend xD

O

#6

RaymaN

Si cuando disparas se interpone el brazo no veo por qué tendría que seguir también hacia la cabeza, ya que la bala de una AK no es la de una AWP que digamos, y es difícil atravesar un brazo, así que tampoco está tan mal hecho.

Droide

#2 si no te lees el post no respondas.

#1 yo no creo que el problema que comentas sea tan habitual, por lo menos no tengo la sensación de que me ocurra tantas veces, de todas formas si es cierto estaría bien que lo arreglaran

B

#2 Lee un poco anda... Los hitboxes estan en su sitio, no dije lo contrario.

#3 Si tienes a tres enemigos enfilados y disparas a mocha le das a los 3, sea una AK, una deagle o una AWP. Por esa regla de tres si atraviesas las manos deberías atravesar la cabeza tambien.

#4 Pues me he visto innumerables veces en la situación de no ver mas que la chola de un pibe tras un muro y tener un registro de 23 en un hit, lo cual es mas alarmante que lo que yo explicaba porque no se que hitbox puede estar superponiendose en esa situación pero en fin... Valve SUX, a secas xD

Dejarlo como está me parece una cagada. Pero ya empiezo a entender por que está como esta... poca exigencia por los gamers veo yo xD

PS: Una bala de AK te da en las manos y te las descuartiza... y la chola va detrás xD

O

a vale #1 dices esto no?

http://img138.imageshack.us/my.php?image=xdgc9.jpg

error mio xddd,me estaba montando una paranoya de dispararlos de lao o noseke

B

#6 Efectivamente, en esa imagen se puede ver la trayectoria de la bala dando a las manos y luego dando en la pared; en cambio no marcó el hitbox de el pecho o la cabeza...

Gracias por colaborar con la imagen :D Podrías mandar una screenshot compuesta? En una mitad que se te vea como has disparado a la cabeza atravesando las manos y en otra desde otro ángulo que se vea la trayectoria de la misma bala, como da en las manos y da en la pared sin haber tocado la cabeza como hiciste en esa foto? Es que me piro a comer y no me da tiempo xD

LeprechauN1

Ese s1l3nc3 ahi dando caña,buen thread.

Que decir...pienso que la solucion sencilla es inviable ya que muchas veces si se dispara a las extremidades,a veces solo se ve un pie o un brazo y es factible el intentar darle,sobre todo si esta tocado.Pasa muchas veces de ver a alguien detras de una pared y solo verle la mano.

La compleja pues es la que se deberia mirar,pero es complicado ya que habria que hacer que el daño se viera reducido progresivamente en cada hitbox y posiblemente les lleve trabajo,ademas claro esta,que saber a donde va a parar la bala ya que lleva una trayectoria que se debe de mantener.Son muchas texturas y muchos hitboxes.Es complejo.

Si lo arreglan mejor,pero bueno,tampoco es algo que ocurra en cada momento,es en casos puntuales.

Salu2.

Unr3al

Yo disparo a la cabeza y doy al aire, disparo al aire y doy en la cabeza, punto.

EipoX

en #9 se a acabado el post

Sinso

#1

  • el comando cl_interp ya no existe como tal y no tenia la trascendencia que tu le das en tu post

  • un disparo de awp en cabeza, pecho, estomago y brazos mata de 1 hit; la unica zona en la que no mata es en las piernas, y dudo mucho que se "superpongan" sus hitboxes con el resto

  • Con tu sistema sera fantastico ver como disparas a alguien que esta sobre tu cabeza y ver 1 hit en piernas, 1 hit en stomago, 1 hit en pecho y 1 hit en cabeza omfg hiperreal

#5 si solo le ves la cabeza sobre un muro, la cosa esta muy clara, le has dado al muro primero -.-

PD: asombrosamente no dices nada del cambio de los hitboxes dependiendo de la resolucion a la que juegues, bien ahi eh

I

#11 xD

PD: aunque los hitboxes de la mano es verdad que tapan el head variaas veces xd

Hazzard

omg, yo quiero que arreglen el bug ese de cuando vas a plantar la c4 y amagas, surfeas por el suelo y apareces en la otra punta j3

B

#11

Primero, el cl_interpolate es un switch que activa/desactiva la interpolación. El cl_interp regula el grado de interpolación y no está en desuso. Eso te lo has sacado tu de la manga:

http://forums.steampowered.com/forums/showthread.php?t=490324

Config inet: cl_interpolate 1; cl_interp 0.01; cl_lagcompensation 1

Config LAN: cl_interp 0; cl_lagcompensation 0

Segundo, en referencia a lo de el AWP. Cuando un modelo salta hay sobreposición de hitboxes de las piernas sobre el tronco. Por eso se da tanto el caso de que alguien salte y no se le mate de un tiro de awp.

Tercero, mi propuesta no consiste en reflejar en consola el recorrido de una bala por el modelo... me da igual si te ha recorrido todas las entrañas antes e llegar a la cabeza. De lo que se trata es de contabilizar el daño total de un proyectil por cada hitbox afectado. Eso es bastante mas lógico, real o como lo quieras llamar, que la chusta que hay ahora

Y cuarto y ultimo, no digo nada del "cambio de hitboxes dependiendo de la resolución" porque no existe tal cosa. Además, por "cambio" a que te refieres si se puede saber? Offset? Tamaño? Las mayas poligonales de un hitbox permanecen intactas en función de la resolución.

Por cierto, te agradecería que usase un tono mas cordial cuando te dirijas a mi, tengas o no tengas razón. Yo no te he faltado el respeto ni pienso hacerlo.

EDIT: Sobre lo de atravesar muros... eso yo tenia entendido que era en 1.6, no en source xD Además, no tengo tan mala puntería joder xD

eagLe__

#9 + corriendo y un backflip desde puente de aztec.

Dejaros de comandos...etc que lo único que hacéis es quejaros.
El CSS está hecho así, el juego es un bug, punto. La gente sigue jugando no? Pues ya está, a mi me jode que las balas no den, pero oye, es lo que hay.

PD: Aunque no me creáis, a 640 es más fácil meter mocha que a cualquier otra resolución.

B

#15 Si fuera por gente como tu aun seguiríamos jugando todos al Space Invaders. Por suerte hay muchas mentes inquietas que buscan el cambio xD

Tendré que probar lo de jugar a 640 aunque no le veo sentido alguno :/ Lo único que podría cambiar bajando la resolución es un aumento del framerate y un aumento en el refresco de pantalla; eso si puede influir beneficiosamente en el gameplay (yo con CRT doy mas basto que en TFT por ejemplo). Si no mejora ninguno de estos factores en un cambio de resolución me atrevo a afirmar que no es mas que placebo, como el que dice que se oye mejor un mp3 en el winamp, foobar, amarok, etc, que en el windows media player... un mp3 en un reproductor sin ningún tipo de efecto ni ecualización se oye igual en cualquier reproductor. Es un hecho

eagLe__

Que si que si, si yo también pienso lo mismo que tu.
Tu pruébalo y si no notas nada pues nada, yo tampoco me lo creía me lo puse un dia y wala, termino jugando siempre a 1680x1050 por que se me ve mejor pero te digo que a 640 yo con la AK no noto recoil xD

pd: Winamp consume menos recursos por lo tanto puedes ejecutar más tareas.

B

#17 Pues nada, habrá que jugar a 640 men xD Si me va mejor dios os lo pague xD

PS: Si, pero un mp3 se oye igual xD Yo uso el foobar :D Es austero en default pero tiene mazo de pijadas que me flipan xD Y el amarok es dios pero aun solo está para linux :P

Sinso

"El cl_interp regula el grado de interpolacion" Ni tonteria que estas diciendo, da la sensacion de que ni siquera sabes lo que es la interpolacion en el css, puesto que no hay grados para ella, o hay interpolacion o no la hay. Ese comando tenia y tiene su funcion y no es esa.

El comando cl_interp dejo de ser un comando por si mismo hace varios meses, fue sustituido por cl_interp_ratio para entre otras cosas evitar las trameadas haciendote un bind "cl_interpolate 0; cl_interp 0.1; +attack"

"config lan: cl_interp 0..." cuando se podia cambiar ese comando, QUE YA NO SE PUEDE directamente, nunca se pudo usar con valor cero

Por cambio en los hitboxes me refiero al PEQUEÑO "desajuste" entre el hitbox y el modelo del jugador dependiendo de la resolucion a la que juegas, tu lo llamas placebo sin haberlo probado nunca, bien por ti.

Estoy utilizando un tono neutro sin faltar al respeto a nadie, no te he llamado ignorante ni ninguna otra cosa, pero me da por culo que se expongan informaciones que son clarisimamente INEXACTAS que lo unico que crean son leyendas urbanas y mas desconociemento de la gente que no conoce el tema lo mas minimo, o con algo de profundidad.

PD: Cuando juegues en lan con cl_interpolate 0 y cl_lagcompensation 0, espero por tu bien que juegues contra gente que tenga pepinos de pc (seria perfecto entonces), porque como juegues contra gente que tenga 20-30 fps's veras que bien te lo pasas.

PD2: Ese post le lei hace un año ya eh -.-

#20 cl_interpolate 1 o cl_interpolate 0, eso no es ajustable en mi opinion

Bl3sS

el interpolate si ke es regulable sinso, el juego interpola la posicion real en periodos de tiempo, lo cual puedes ajustar.

B

#19 Te agradezco sinceramente que hayas corregido mi información erronea a cerca de los comandos de interpolación (estaba desactualizado xD) pero he de decirte que te equivocas en lo de que no tengo ni idea de que es la interpolación. El cl_interpolate es un comando que funciona de parte de cliente que permite adicionar animaciones a aquellos clientes que tienen framerates insuficientes. Solo tiene dos valores, cero ó uno; interpolación desactivada/activada). Ejemplo:

  • Si un cliente X envia 30 frames por segundo y nosotros jugamos a 60 frames vemos al cliente X a saltos por no darnos esos 30 frames adicionales que tenemos nosotros. Si activásemos la interpolación se generarían frames "falsos" por medio de un proceso de interpolación para dar una sensación de fluidez. En definitiva, el proceso de interpolación, por explicarlo en pocas palabras, consiste en generar las animaciones que faltan entre una fracción de segundo y la siguiente.

El cl_interp (no confundirlo con el cl_interpolate que es una variable booleana de encendido o apagado) regula la interpolación en función del tiempo, como bien dice #20. Antiguamente (y digo antiguamente porque según me comentabas esto ha cambiado) el cl_interp podía variar entre 0.1 y 0.01. A 0.1 se producía el conocido retardo que permitia que los enemigos que asomaban por una esquina nos viesen antes que nosotros a ellos porque la interpolación se producia con una latencia de 0.1 segundos (100 milisegundos). Si a eso le sumas la latencia de base que tienes en inet parece que la peña lleve wallhack porque te salian disparando de las esquinas xD

De todas fromas, este post no iba sobre la interpolación sino sobre hitboxes. Creo que el que le esta dando la trascendencia al interpolate eres tu. Yo solo hice una breve explicación de a penas una linea (que repito, te agradezco que hayas aclarado los nuevos comandos). Pero no hace falta que seas tan duro conmigo xD Que posteo de buena fe. Estamos aquí para ayudar, no para putear :)

Sinso

El cl_interp servia (y sirve) para decirle al servidor cuanto tiempo tenia (y tiene) que "mirar para atras" para determinar si las balas impactan en un hitbox o no impactan (explicacion ultrasimple). Se podra llamar de muchas formas, pero decir que eso es regular la interpolacion es un grave error. No desvio mas el hilo soz

-edit- Esa edicion que has hecho en el anterior post, en elpenultimo parrafo, te sigues equivocando. Los enemigos en movimiento te ven antes que tu a ellos si tu estas parado por culpa del motor grafico del hl2, no del cl_interp 0.1 (te vuelvo a repetir que no es que la interpolacion no se haga con 0.1 segundos de retardo);

Y ya no sigo mas con el tema. Que Valve haga los hitboxes de 1 pieza tipo quake3 y todo arreglado :p

B

#22 Cierto, error mio. Gracias por la aclaración :)

Edit: pues no se, yo no he hecho las pruebas en LAN pero vi los videos del link que pasé antes. Viniendo de ese pabo casi pondría la mando en el fuego de que no se lo está inventando xD Captura explicativa:

http://www.thegladbacher.de/n-css/hitboxes/hitbox_pic_interp.jpg

Mándame un mensaje por el media-vida si me lo puedes explicar con mas detalle si crees que esa información es una falacia, porque estoy mazo confuso al verte tan seguro macho xD

Gracias :D

Por cierto, +1 a hitbox de un poligono xD

Kr4K1
  • Solución Sencilla: eliminar los hitboxes de las extremidades superiores (ni dios apunta a los brazos)

Tp es del todo cierto.. cuando hay casos de estar el Rival en la pared y tu con awp le das al brazito k solo se le ve mas el arma i lo matas xD

Ése post es de un N!faculti en el Foro de Valve... NO dieron respuestas...

Por cierto cl_interpolate no esta restringido por Zblocks i demas?¿

B

#24 Cierto, seria muy falso dar a un brazo y que no contase como hit xD Lo suyo es que lo hagan bien y punto pero me temo que eso no va a pasar. Ya me currare un mail y spamearé a saco xD A ver si cuela :P

geco

bueno, y porque no hacen unos hitboxes como dios manda, si no os hacen caso y tanto molesta ( a mi tb ) haced una "manifestacion" de cascos colgados o alfombrillas o lo que querais pero mientras valve no quiera, ya se puede hablar ya.

Corven

Perdonad mi humilde ignorancia pero; las lineas que salen dibujadas en la imagen de mas arriba (los hitboxes) son exactamente asi?¿? es decir, le das en un vertice del hitbox y aunque en realidad parezca que no le has dado al muñeco este muere por culpa de la imperfeccion del hitbox¿?

lol, sin falsedades
hitboxes "del palo" + inet español...

PD: tambien nos queda pasarnos al CSP xDD

S

los hitboxes esos no tiene solucion! xD

B

#27 sip xD

T

Si dices eso es porque no has visto los hitboxes del csp....