02/04/2021, 10:37 AM
(Última modificación: 02/04/2021, 08:58 PM por SVC. Edited 1 time in total.)
Buenos días, hacia mucho tiempo que no pasaba por aquí, hasta que el destino me desvió acá de nuevo ?)...en fin.
Recientemente estuve realizando algunas pruebas y experimente algo para mi gusto no tan agradable, por lo que me decidí a pedir ayuda en el foro-ingles, pero tal parece que nadie ha podido responder a mi cuestionamiento (quizás tengan sus razones, no empezare a jugarlos tampoco). El punto es que, como dije, realizando pruebas con la native attach_view me paso algo raro (o simplemente algo que quizá por nunca cuestionarlo no llegue a descubrir) y es que, al hace uso de esta función tenia un "issue" con respecto a los ángulos de visualización; para una mejor comprensión explicare toda la historia (y si no les interesa puede ir al final donde estará lo relacionado al issue):
Lo que estaba haciendo era crear una entidad de tipo info_target que quería utilizar para "simular" un arma (creo que ya ven a donde me dirijo).
Primeramente pensé, en que era mas sencillo hacer que dicha entidad siempre apareciera en frente de la vista del jugador (vía AddtoFullPack, aunque podría haber utiliza otras alternativas con igual efecto), pero eso me traía consigo el problema de la tan odiada predicción del cliente, cosa que se nota en un dedicado así tus ms sean 3~6 (imagina como serian a 30~60, horroroso). En este punto imagine por un segundo diseñar un algoritmo para de alguna manera "predecir" las acciones del jugador con respecto a esta "arma" para hacer mas fluido su movimiento, pero luego cai en la cuenta de que, dejando de lado lo costoso que me saldría en mi opinión, igual tendría que esperar a que el server le enviara la info al cliente -> por lo cual la predicción -> algoritmo inservible.
Así que luego pensé (en realidad vi un código y se me vivo a la mente utilizarla) en usar la native attach_view (pfnSetView) y ver que tal. Obviamente, como es de esperar, con esto por defecto la cámara estaría fija en la posición donde la colocara sin posibilidad de actualizar sus ángulos (en este punto ya no quería seguir)......hasta que recordé que si actualizaba los pev->angles de esta entidad con los del jugador quizá tal ves podría servir, y vaya que funciono pero utilizando en vez los pev->v_angles del jugador; todo bien hasta acá.
El problema viene debido a que, al actualizar los ángulos de la entidad con los v_angles (pasa lo mismo si uso los angles) del jugador, al efectuar un movimiento de mirada hacia arriba, el modelo que tiene la cámara ira en la posición opuesta ,esto es, hacia abajo; mientras que los ángulos de la entidad y por ende tu visión (debido al uso de attach_view) seguirán los ángulos correctos del jugador, por lo tanto --> issue.
Resumiendo: si yo utilizo attach_view y asigno la visión del jugador a una entidad, y luego renderizo esta entidad (no lo había aclarado, por cierto), y luego actualizo los ángulos de esta "cámara" con los del jugador, y luego miro hacia arriba o hacia abajo -> el modelo de la entidad que estoy renderizando ira hacia abajo/arriba mientras que tus ángulos de visión irán arriba/abajo, dependiendo del movimiento.
Algunas cosas que quisiera dejar en claro:
Y ya para culminar, quiero dejar el código que estoy utilizando actualmente:
Asi que eso seria todo, espero con ansias cualquier respuesta, y espero sacar a la luz mas información por que sinceramente (no les voy a mentir), me dio esperanzas de que con esta manera podemos customizar mucho mas las armas.
Algunas capturas:
- Posición por defecto de la camara
- Al mirar hacia arriba
- Al mirar hacia abajo
Saludos.
Recientemente estuve realizando algunas pruebas y experimente algo para mi gusto no tan agradable, por lo que me decidí a pedir ayuda en el foro-ingles, pero tal parece que nadie ha podido responder a mi cuestionamiento (quizás tengan sus razones, no empezare a jugarlos tampoco). El punto es que, como dije, realizando pruebas con la native attach_view me paso algo raro (o simplemente algo que quizá por nunca cuestionarlo no llegue a descubrir) y es que, al hace uso de esta función tenia un "issue" con respecto a los ángulos de visualización; para una mejor comprensión explicare toda la historia (y si no les interesa puede ir al final donde estará lo relacionado al issue):
Lo que estaba haciendo era crear una entidad de tipo info_target que quería utilizar para "simular" un arma (creo que ya ven a donde me dirijo).
Primeramente pensé, en que era mas sencillo hacer que dicha entidad siempre apareciera en frente de la vista del jugador (vía AddtoFullPack, aunque podría haber utiliza otras alternativas con igual efecto), pero eso me traía consigo el problema de la tan odiada predicción del cliente, cosa que se nota en un dedicado así tus ms sean 3~6 (imagina como serian a 30~60, horroroso). En este punto imagine por un segundo diseñar un algoritmo para de alguna manera "predecir" las acciones del jugador con respecto a esta "arma" para hacer mas fluido su movimiento, pero luego cai en la cuenta de que, dejando de lado lo costoso que me saldría en mi opinión, igual tendría que esperar a que el server le enviara la info al cliente -> por lo cual la predicción -> algoritmo inservible.
Así que luego pensé (en realidad vi un código y se me vivo a la mente utilizarla) en usar la native attach_view (pfnSetView) y ver que tal. Obviamente, como es de esperar, con esto por defecto la cámara estaría fija en la posición donde la colocara sin posibilidad de actualizar sus ángulos (en este punto ya no quería seguir)......hasta que recordé que si actualizaba los pev->angles de esta entidad con los del jugador quizá tal ves podría servir, y vaya que funciono pero utilizando en vez los pev->v_angles del jugador; todo bien hasta acá.
El problema viene debido a que, al actualizar los ángulos de la entidad con los v_angles (pasa lo mismo si uso los angles) del jugador, al efectuar un movimiento de mirada hacia arriba, el modelo que tiene la cámara ira en la posición opuesta ,esto es, hacia abajo; mientras que los ángulos de la entidad y por ende tu visión (debido al uso de attach_view) seguirán los ángulos correctos del jugador, por lo tanto --> issue.
Resumiendo: si yo utilizo attach_view y asigno la visión del jugador a una entidad, y luego renderizo esta entidad (no lo había aclarado, por cierto), y luego actualizo los ángulos de esta "cámara" con los del jugador, y luego miro hacia arriba o hacia abajo -> el modelo de la entidad que estoy renderizando ira hacia abajo/arriba mientras que tus ángulos de visión irán arriba/abajo, dependiendo del movimiento.
Algunas cosas que quisiera dejar en claro:
- Si, la intención principal de esto es encontrar la forma de customizar las armas via server-side (no solo poder cambiar cosas como el pev->body, si no también el pev->skin, darle glow al arma, luz propia, etc).
- Todo esto debido a que, si se percataron, lo que utilizo es una entidad del server.
- Independientemente de si se puede hacer lo que dije en el primer punto o no, quiero compartir esto, por que quizá alguien pueda sacar a la luz mas información.
- Utilizando esta manera de custom-weapons podemos obtener una mejor fluidez con el arma (debido a la predicción del jugador), cosa que no pasa cuando, por ejemplo, usamos AddtoFullPack para situar la entidad en frente de la vista del jugador todo el tiempo (para que vean un caso mas conocido).
- Debido a que no tengo acceso al source-code del engine de la parte del cliente del hlds, muchas cosas de las que estoy diciendo podrían no ser ciertas o ser algo diferences. Si, se que primero debía informarme bien, pero debido a limitaciones de tiempo por el trabajo y la experiencia, es lo que pude observar.
Y ya para culminar, quiero dejar el código que estoy utilizando actualmente:
Asi que eso seria todo, espero con ansias cualquier respuesta, y espero sacar a la luz mas información por que sinceramente (no les voy a mentir), me dio esperanzas de que con esta manera podemos customizar mucho mas las armas.
Algunas capturas:
- Posición por defecto de la camara
- Al mirar hacia arriba
- Al mirar hacia abajo
Saludos.