|
621
|
Media / Juegos y Consolas / ¿Qué es medible en todos los videojuegos? Corregir/ampliar mi lista.
|
en: 24 Febrero 2024, 22:05 pm
|
- Casos de (dar una instrucción mediante presionar cierto botón o algo similar): En general: Mide la velocidad promedio conque el jugador presiona cierto botón. El conteo es pausado (me refiero a que sólo cuenta como "caso" el momento en que se presionó un botón o se movió el mouse; si se presionó o movió y no se dejó de hacerse sólo cuenta como 1 caso, debe haber una pausa entre los "casos"). Ejemplo en que más valor implica más habilidad: Veces que aprendió o se burló del oponente (asumiendo que mientras lo hace se pone a si mismo en riesgo). Ejemplo en que más valor implica menos habilidad: Veces que recurrió a activar un escudo.
- 1er frame (frame = instante con cierta duración, es una forma de medir el tiempo) en que ocurrió un caso de: General: Cuánto tardó en presionar cierto botón por 1era vez. Conteo pausado. Habilidoso: Qué tan rápido empezó a correr luego de la señal. Negativo: Qué tan rápido tuvo que frenar antes de llegar a la meta.
- Último frame en que ocurrió un caso de: General: Cuánto tardó en presionar cierto botón por última vez. Conteo pausado. Habilidoso: Cuánto tiempo resistió antes de escapar, o cuan cerca estuvo de presionar el botón en el último momento posible (en juegos de Golf suele haber algo parecido a eso). Negativo: Cuánto tiempo tardó en presionar el botón de aprender (si sobrevivió).
- Frames en que ocurrió un caso de: General: Tiempo en que se estuvo presionando algo. Conteo normal: Diferencias con respecto a "Casos de": 1: Si se hace una misma cosa más de una vez en un mismo frame (lo cual es casi imposible porque los frames cambian muy rápido; es posible por ejemplo si lo que se mide son los botones diferentes presionados al mismo tiempo, porque en ese caso pueden ser más de 1 a la vez), sólo cuenta como 1. 2: Aquí dejar presionado 1 botón durante 5 frames, por ejemplo, cuenta como 5 casos, no se necesita presionar-soltar. Habilidoso: Si mantener presionado el botón implica desactivar un escudo. Negativo: Si implica activarlo.
- Mínima duración de un caso de: General: Se explica solo. Conteo normal. Habilidoso: Es así generalmente, presionar y rápidamente tener listo el dedo para presionar otra cosa, pero podría ser especialmente positivo si se debe golpear algo lo más suavemente posible y depende de cuánto tiempo se haya presionado el botón. Negativo: Similar a lo anterior, difícilmente resulta negativo, el ejemplo podría ser en un juego en que se deba dar mucha energía a algo (mantener el botón presionado un tiempo) y darle poca sea un desperdicio (en juegos de automóviles no vale mucho porque, incluso acelerar durante un poquito es mejor que no acelerar).
- Máxima duración de un caso de: General: Parece igual que "Frames en que ocurrió un caso de" pero eso cuenta la duración total y esto la máxima antes de una pausa. Conteo normal. Habilidoso: Si mantener presionado el botón implica desactivar un escudo. Negativo: Si implica activarlo.
- Por frames, mínimos casos de: General: Mínima velocidad de presión. Para hacer esto, cuando hay un frame en que no hubo presión se empieza a contar en cuántos más seguidos no la hubo. El conteo que resulte mayor es X. El resultado será "0 casos en X frames". Si se presionara en absolutamente cada frame (lo cual se supone imposible como ya expliqué), el resultado sería "X casos en X frames", y si además de eso a veces se presionara varias veces por frame, sería "VECES casos en 1 frame". Todo esto puede ser confuso pero es la mejor forma que se me ocurrió de hacerlo. Conteo pausado. Habilidoso (como de costumbre: Mayor valor es mejor): Cuando presionar rápido un botón hace que un golpe sea más fuerte. Negativo: Dar la misma orden varias veces (asumiendo que es innecesario).
- Por frames, máximos casos de: General: Máxima velocidad de presión. Para hacer esto, cuando hay un caso se empieza a contar cuántos frames se tardó en ocurrir otro. El conteo que resulte menor es N. El resultado será "2 casos en N frames". Si el caso ocurriera en cada frame, sería "X casos en X frames", y si además de eso a veces el caso ocurriera varias veces por frame, sería "VECES casos en 1 frame". Conteo pausado. Los ejemplos de antes son válidos.
- Mínima/máxima distancia (en frames) entre 2 casos de: Este es un método peor de medir la velocidad mínima/máxima de eventos, ya que uno podría ocurrir en un mismo frame más de 1 vez. No le veo sentido a usarlo.
- En un mismo frame mínimos/máximos casos de: Por si mismo es poco útil pero es complementario de lo anterior, pero el método que puse más arriba combina ambos, ergo tampoco le veo sentido a usar este.
Luego hay relaciones como: Mínima distancia (en frames) entre una instrucción A y una B (asumiendo que puede ser 0 si ambas ocurrieron en un mismo frame).
Condiciones como: Casos de A mientras A<B donde A es una instrucción (presión de botón, etc). e B es un número fijo u otra instrucción.
Y lo podemos mezclar con propiedades, como: Casos de A mientras el largo de A<B
...pero eso lo pensaré luego.
En resúmen es: - Casos en que se da cierta instrucción (debe haber pausa). - 1er momento en que se da. - Último momento en que se da. - Tiempo en que se da la instrucción. - Mínima duración conque se repite. - Máxima duración conque se repite. - Mínima velocidad conque se repite (debe haber pausa). - Máxima velocidad conque se repite (debe haber pausa).
¿Qué me falta?
|
|
|
622
|
Foros Generales / Foro Libre / Re: Sinceridad
|
en: 24 Febrero 2024, 07:27 am
|
Yo en general cuando sé respondo salvo que me parezca que quieren hacer malware o algo así, o si la pregunta me parece muy absurda (por ejemplo una vez uno preguntó qué pasa si martillaba una moneda a diario).
Ya sabes que mucha participación no hay, así que no tiene mucho sentido que te sorprenda que no te respondan, más si tus preguntas son difíciles de responder.
|
|
|
623
|
Programación / Programación General / Detectar que luego de moverse el mouse, se detuvo.
|
en: 23 Febrero 2024, 09:32 am
|
Y entonces quiero que ocurra cierto evento. Con esto el evento (_level0.gotoAndStop(5)) ocurre por el simple hecho de mover el mouse, aunque el mouse no se haya detenido, está mal: // En frame 1: Movement = "Never"; onClipEvent (enterFrame) { if (Movement == "Sí") { Movement = "Frenado"; } else if (Movement == "Frenado") { _level0.gotoAndStop(5); } } onClipEvent (mouseMove) { Movement = "Sí"; } onClipEvent (mouseDown) { if (Movement != "Frenado") { _level0.Mensaje = "Perdiste por hacer clic."; _level0.gotoAndStop(6); } } onClipEvent (keyDown) { if (Movement != "Frenado") { _level0.Mensaje = "Perdiste por hacer clac."; _level0.gotoAndStop(6); } }
Se supone que al moverlo Movement cambia a "Sí", luego el frame se repite y cambia a "Frenado" pero si el mouse se sigue moviendo debería cambiar a "Sí" de nuevo, por lo que la condición de Movement == "Frenado" no debería cumplirse, pero sí se cumple. Intenté esto: // En frame 1: Movement = "Never"; ActualXMouse = _xmouse; ActualYMouse = _ymouse; onClipEvent (enterFrame) { if (_level0.ActualXMouse != _level0._xmouse or _level0.ActualYMouse != _level0._ymouse) { Movement = "Sí"; trace ("_level0.ActualXMouse era: "+_level0.ActualXMouse); _level0.ActualXMouse = _level0._xmouse; trace ("_level0.ActualXMouse es: "+_level0.ActualXMouse); trace ("_level0.ActualYMouse era: "+_level0.ActualYMouse); _level0.ActualYMouse = _level0._ymouse; trace ("_level0.ActualYMouse es: "+_level0.ActualYMouse); } else if (Movement == "Sí") { trace ("Movement == Sí"); if (_level0.ActualXMouse == _level0._xmouse && _level0.ActualYMouse == _level0._ymouse) { _level0.gotoAndStop(5); } } } onClipEvent (mouseMove) { // Movement = "Sí"; } onClipEvent (mouseDown) { if (Movement != "Frenado") { _level0.Mensaje = "por hacer clic."; _level0.gotoAndStop(6); } } onClipEvent (keyDown) { if (Movement != "Frenado") { _level0.Mensaje = "por hacer clac."; _level0.gotoAndStop(6); } }
Y obtengo el mismo resultado. Había hablado con GPT, cambié algo, y al final ya no entiendo lo que dice. En Macromedia Flash 5 ¿la velocidad conque se ejecutan los frames puede ser más rápida que la velocidad conque se actualiza la posición del mouse? En Macromedia Flash 5, la velocidad con la que se ejecutan los frames está determinada por la configuración de fotogramas por segundo (FPS) del proyecto. Por defecto, la configuración de FPS es de 12 fotogramas por segundo, pero se puede ajustar según las necesidades del proyecto.
La velocidad con la que se actualiza la posición del mouse en Flash 5 está vinculada a la frecuencia de actualización del sistema operativo y del hardware del mouse. En general, la posición del mouse se actualiza con bastante rapidez y en tiempo real, lo que significa que los eventos del mouse se pueden detectar y responder de manera rápida.
Dicho esto, es posible que en situaciones extremas, donde haya una alta carga de trabajo en el procesador o limitaciones de rendimiento, la velocidad de actualización de la posición del mouse pueda ser más lenta en comparación con la velocidad de ejecución de los frames de Flash. Sin embargo, esto no es una limitación inherente de Flash 5, sino más bien una cuestión de rendimiento del sistema en el que se ejecuta.
En resumen, en condiciones normales y en sistemas bien configurados, la velocidad de ejecución de los frames en Flash 5 generalmente es más rápida que la velocidad de actualización de la posición del mouse. Le mostré el código y le pregunté por qué no funcionaba. El código que proporcionaste parece tener un par de problemas que podrían estar impidiendo que funcione correctamente. A continuación, te señalaré los posibles problemas y te daré una solución propuesta:
1. Comparación de posiciones del mouse: En tu condición `if (_level0.ActualXMouse != _level0._xmouse && _level0.ActualYMouse != _level0._ymouse)`, estás utilizando el operador lógico "&&" (y) para verificar si las posiciones X e Y del mouse han cambiado. Sin embargo, esto significa que el código dentro de esa condición se ejecutará solo si ambas condiciones son verdaderas al mismo tiempo, lo que puede ser poco probable. Es posible que desees utilizar el operador lógico "||" (o) en su lugar, para verificar si al menos una de las condiciones es verdadera.
Solución propuesta: ```actionscript if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) { // Código para cuando la posición del mouse ha cambiado } else if (Movement == "Sí") { // Código para cuando la posición del mouse se ha mantenido igual después de un movimiento previo } ```
2. Inicialización de la variable "Movement": No se muestra en el código proporcionado cómo se inicializa la variable "Movement". Si no se inicializa correctamente en otra parte de tu código, la condición `else if (Movement == "Sí")` puede no evaluarse como verdadera y, por lo tanto, el código dentro de ese bloque no se ejecutará.
Solución propuesta: Asegúrate de que la variable "Movement" se inicialice correctamente antes de que se active el código que has proporcionado, por ejemplo, al comienzo del juego o en otro evento relevante.
Espero que estas sugerencias te ayuden a resolver el problema y que tu juego funcione correctamente. Si sigues teniendo dificultades, no dudes en proporcionar más detalles o preguntar más preguntas. Cambié algo que me propuso, que me pareció bien, pero el resultado no cambió. Mis disculpas por la confusión anterior. Luego de revisar nuevamente el código, noto que hay un error en la lógica de las condiciones. El problema radica en que estás comparando la posición del mouse actual con la posición anterior en cada cuadro de animación (enterFrame), lo que hace que la condición siempre se cumpla mientras muevas el mouse.
Para lograr el comportamiento deseado de ganar al mover el mouse y luego detenerlo, puedes implementar una solución alternativa utilizando eventos del mouse en lugar de la lógica basada en enterFrame. A continuación, te muestro un ejemplo de cómo podrías modificar el código:
```actionscript // Escucha el evento de movimiento del mouse this.onMouseMove = function() { // Guarda la posición del mouse actual _level0.ActualXMouse = _level0._xmouse; _level0.ActualYMouse = _level0._ymouse; }
// Escucha el evento de liberación del mouse this.onMouseUp = function() { // Verifica si el mouse se ha movido previamente y luego se detuvo if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) { // El mouse se ha movido y luego se detuvo, se gana el juego _level0.gotoAndStop(5); } } ```
En este código, utilizamos los eventos `onMouseMove` y `onMouseUp` para detectar el movimiento y la liberación del mouse, respectivamente. Al mover el mouse, guardamos la posición actual en las variables `_level0.ActualXMouse` y `_level0.ActualYMouse`. Luego, al soltar el mouse, verificamos si la posición del mouse ha cambiado en comparación con la posición guardada previamente. Si ha habido un movimiento y luego se detuvo, se activa la condición y se gana el juego.
Espero que esta solución funcione correctamente para tu juego. Si sigues teniendo problemas o tienes más preguntas, no dudes en hacérmelo saber. Estoy aquí para ayudarte. MouseUp en mi lenguaje creo que es el evento "se dejó de mantener el botón presionado", no es lo mismo. En fin, no entiendo qué me dice: ¿qué condición dices que se cumple siempre? Mis disculpas por la confusión en mi respuesta anterior. La condición que mencioné anteriormente no se cumple siempre, fue un error en mi explicación.
El problema principal en tu código original es que la condición `if (_level0.ActualXMouse != _level0._xmouse && _level0.ActualYMouse != _level0._ymouse)` se cumple cuando cualquiera de las coordenadas X o Y del mouse cambia. Esto significa que si solo una de las coordenadas cambia, el código dentro de esa condición se ejecutará. Sin embargo, según tu descripción, deseas que el juego se gane solo cuando ambas coordenadas del mouse se mantienen iguales después de un movimiento previo.
Para corregir esto, podemos modificar la condición para que verifique si ambas coordenadas X e Y del mouse se mantienen iguales. Aquí tienes el código actualizado:
```actionscript onClipEvent(enterFrame) { if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) { // Actualiza las coordenadas del mouse si han cambiado _level0.ActualXMouse = _level0._xmouse; _level0.ActualYMouse = _level0._ymouse; } else if (Movement == "Sí") { // Verifica si las coordenadas del mouse se mantienen iguales después de un movimiento previo _level0.gotoAndStop(5); // Gana el juego } } ```
En este código actualizado, utilizamos el operador lógico "||" (o) para verificar si cualquiera de las coordenadas X o Y del mouse ha cambiado. Si alguna de las coordenadas cambia, actualizamos las variables `_level0.ActualXMouse` y `_level0.ActualYMouse` para reflejar las nuevas posiciones del mouse. Luego, en el bloque `else if`, verificamos si ambas coordenadas se mantienen iguales después de un movimiento previo. Si es así, se ejecuta el código para ganar el juego.
Espero que esta aclaración solucione el problema y te permita lograr el comportamiento deseado en tu juego. Si tienes más preguntas, no dudes en hacerlas. Estoy aquí para ayudarte. Ahí parece una versión más simple de la que hice y que no creo que funcione, pero me cuesta entender qué dice y ya me cansé. ¿Solución?
|
|
|
625
|
Informática / Software / Re: ¿Excel podría configurarse para que al escribir se cambie de celda si...?
|
en: 23 Febrero 2024, 06:51 am
|
Justo hace una semana más o menos encontré una solución a esto. Para pasar rápidamente al final de la siguiente sección, en esos lugares debo haber puesto **, es sólo una vez cada sección, así: Proyecto 1: 1: jndjndjsdn 2: djknjdnd ** ------------------------ Proyecto 2: 1: jndjndjsdn 2: djknjdnd ** -------------------------- Luego uso F3 (en el bloc de notas), escribo **, y así voy rápidamente al final de cada sección, donde están los ** 
|
|
|
627
|
Informática / Software / Re: ¿Cómo se encuentra software antiguo en las páginas oficiales?
|
en: 23 Febrero 2024, 01:41 am
|
Es que incluso si hay me ha pasado que no la encuentro, no se me da bien navegar por las páginas y encontrar cosas que no están a la vista. En este caso puede que no hayan puesto una versión antigua, pero en otros casos me ha tenido que decir una persona, y nunca supe cómo llegó ahí. Otro programa me puede servir si en el futuro actualizo un poco el PC, pero había probado varios y este fue el único que me sirvió.
|
|
|
630
|
Foros Generales / Foro Libre / Re: Se están flipando un poco con la IA?
|
en: 22 Febrero 2024, 12:54 pm
|
En otro tema varios se quejaron de que el OP escribiera "Bueno banda", una expresión Argentina o de por ahí, es una queja válida. Yo aquí no me quejo pero no entiendo bien qué se ha querido decir, así que consulté a GPT (quitando lo de alterarlo) y me dijo: En el diálogo mencionado, parece que los interlocutores están discutiendo sobre la inteligencia artificial (IA) y su impacto en sus vidas, así como en el ámbito de la informática. Aquí está una explicación de cada parte:
"Se están flipando un poco con la IA?": La expresión "fliparse" en este contexto significa emocionarse o entusiasmarse demasiado. Parece que alguien está cuestionando si las personas están exagerando o emocionándose demasiado con respecto a la IA.
"Bueno. Que eso, a mí me está espameando el chivato de noticias de Google con noticias de IA. No sé, ¿no os afecta?": Aquí, alguien está mencionando que está recibiendo muchas noticias sobre IA a través de una función de notificaciones de Google. Está preguntando si los demás también se ven afectados por esto y si les importa.
"¿Os da igual que haya programas que te pican una aplicación en literalmente un segundo?": Esta frase parece hacer referencia a programas o aplicaciones que pueden comprometer la seguridad o acceder a información rápidamente. La persona está preguntando si a los demás les preocupa que existan programas así.
"No sé. Ni que sea como informáticos, no sé... algo, ALGO os tiene que afectar todo esto. Digo yo.": Aquí, el hablante está expresando su opinión de que, como profesionales de la informática, los demás deberían sentirse afectados o preocupados por los temas relacionados con la IA.
"No sé. Si usáis LLMs en local, o solo tiráis de ChatGPT, o cómo. No sé. Pero indiferentes no... no deberíais estar. Creo yo.": Aquí, la persona está haciendo referencia a los modelos de lenguaje de aprendizaje automático (como LLMs, por ejemplo) y está sugiriendo que los demás no deberían ser indiferentes a la IA, independientemente de cómo la utilicen.
"Y, sobre todo, si alguien sabe leer el código fuente de estas cosas.": Este comentario indica que alguien está interesado en si alguien en el grupo tiene conocimientos para leer y comprender el código fuente de los sistemas de IA.
En resumen, la conversación gira en torno a la preocupación por el impacto de la IA, la frecuencia de las noticias relacionadas con la IA, la seguridad de las aplicaciones y la implicación de los expertos en informática en estos temas.Comprendido mejor, paso a responder lo que pueda. Uso bloqueador de publicidad así que me aparecen pocas y las que me aparecen no las miro, de hecho suelo mover la pantalla para no verlas. ¿Os da igual que haya programas que te pican una aplicación en literalmente un segundo? Ahora entiendo que pican puede referirse a que programan, hacen, construyen. No me da igual, me gusta, diría que me encanta, ojalá en el futuro uno pudiera "hacer" (con IA) rápido los videojuegos, historias, etc, que a uno le de la gana. Uso GPT sin haberlo instalado, pero no sé si usa Cookies o qué. Tiene conversaciones mías con él grabadas, las borro pero como me aburre borrarlas van quedando. Los que las programan saben el código, o una parte, y los dueños lo pueden ver todo supongo. Pero si te refieres a interpretar los 0s y 1s, quizá ningún humano puede o tiene la paciencia. También ellos pueden modificarlo. Hackers probablemente podrán, o pueden ya mismo, no sé. Otras cuestiones que planteas, si acaso planteas alguna más, no las entendí bien.
|
|
|
|
|
|
|