User Tag List

Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 20

Tema: Usar integers en lugar de floats

  1. #1

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post

    Usar integers en lugar de floats

    Buenas.

    Estoy empezando un juego de naves y tengo previsto, entre otras cosas, que el moviento de algunos sprites tenga inercia y que, bajo ciertas circunstancias haya gravedad, por lo que les he añadido aceleración. De momento, esa aceleración la he implementado usando floats, y funciona perfectamente tanto en Windows como en la consola, pero me da que usar este tipo de datos va a hacer que todo vaya más lento cuando haya cientos de sprites en pantalla simultáneamente. Que sería más rápido si trabajara directamente con integers.

    Sea o no más rápido, sé que hay una manera de simular floats con integers y tengo curiosidad por saber cómo. De hecho, leí algo al respecto hace tiempo en los foros de GP32x pero lo olvidé rápidamente ya que en ese momento no lo necesitaba para nada. Y ahora que me interesa, lo he buscado y no hay manera. Sé que eso tiene un nombre en inglés, pero no recuerdo cuál. ¿Alguien tiene idea de cómo hacerlo, me puede pasar un enlace o sabe el término correcto para buscarlo en esos foros o en el Google directamente?

    Aprovecho también para preguntar si en SDL hay alguna redefinición del tipo de datos float, como lo hay del tipo de datos integer (Uint8, Sint8, Uint16, Sint16, ...). En la documentación no he encontrado nada.

    Saludos.

  2. #2

    Fecha de ingreso
    Mar 2004
    Ubicación
    Tarragona
    Mensajes
    710
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Muy buenas, como bien dices utilizar float es algo lento en la GP32 y GP2X ya que no cuentan con FPU que es la encargada de hacer las operacioones de coma flotante... pero puedes utilizar punto fijo para simular los float siendo esto mucho mas rapido... no tiene la misma precision pero es bastante mas rapido, yo utilizo las math-sll que estan escritas directamente en asm para ARM y son rapidisimas aqui te las dejo para que te las descargues y le eches un vistazo.

    Un saludo!
    Archivos adjuntados Archivos adjuntados
    Que no se vea no significa que no exista....

  3. #3

    Fecha de ingreso
    Jun 2004
    Mensajes
    1,229
    Mencionado
    4 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Cita Iniciado por A.r.R.c.H.E.r
    Muy buenas, como bien dices utilizar float es algo lento en la GP32 y GP2X ya que no cuentan con FPU que es la encargada de hacer las operacioones de coma flotante... pero puedes utilizar punto fijo para simular los float siendo esto mucho mas rapido... no tiene la misma precision pero es bastante mas rapido, yo utilizo las math-sll que estan escritas directamente en asm para ARM y son rapidisimas aqui te las dejo para que te las descargues y le eches un vistazo.

    Un saludo!
    Solamente añadir, por si acaso alguno no lo sabeis, que estas rutinas de uso de floats mediante enteros estan incluidas de serie en el devkitarm r15 o superiores y devkitgp2x, las distribuciones que usan GCC 4.0 o superior, por lo que en teoria no hace falta hacer uso de ellas explicitamente, el propio compilador hace uso de algo similar de forma transparente.

    (en gcc se pone -msoft-float y ya está, A.r.R.c.H.E.r pruébalo, pero estoy casi seguro)

    saludos.

  4. #4

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    ¡Muchas gracias! Mira que era fácil: "punto fijo" en lugar de "punto flotante". Buscando "fixed point math" en Google aparecen un montón de artículos.

    Respecto a las math-sll tienen muy buena pinta. Además, por lo que veo, también hay funciones trigonométricas. A parte del de ARM, también usan ensamblador del 386, ¿no?

    Lo dicho, muchas gracias.

  5. #5

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Cita Iniciado por Franxis
    Solamente añadir, por si acaso alguno no lo sabeis, que estas rutinas de uso de floats mediante enteros estan incluidas de serie en el devkitarm r15 o superiores y devkitgp2x, las distribuciones que usan GCC 4.0 o superior, por lo que en teoria no hace falta hacer uso de ellas explicitamente, el propio compilador hace uso de algo similar de forma transparente.

    (en gcc se pone -msoft-float y ya está, A.r.R.c.H.E.r pruébalo, pero estoy casi seguro)

    saludos.
    Pues no tenía ni idea. Muchas gracias. Yo ahora mismo compilo desde Windows con devkitGP2X, pero no sé qué versión de gcc/g++ utiliza. Si escribo arm-linux-g++ --help no aparece la versión y no he encontrado ningún parámetro para saberlo. Por lo que interpreto de lo que dices, ese devkit ya lo lleva incorporado, ¿no? Bueno, al menos he probado a compilar con -msoft-float y al menos no se queja. Voy a probar con una demo de sistema de partículas que tengo por ahí a ver si se nota un cambio en el rendimiento.

    Edito: Con arm-linux-g++ --version dice que es la 4.0.2, o sea que supongo que quiere decir que sí convierte a punto fijo!!!
    Última edición por miq01; 31/12/2005 a las 08:06

  6. #6

    Fecha de ingreso
    Jun 2004
    Mensajes
    1,229
    Mencionado
    4 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    el devkitgp2x lleva gcc 4.0 seguro.

    lo q ocurre es q el -msoftfloat lo pone el compilador solo, no hace falta incluirlo. para saber si esto hace algo, habria q comparar con un gcc anterior o desactivar el -softfloat.

    mejor compara a compilar sin cambiar nada y con las librerias estas q te ha propuesto archer... si estoy en lo cierto no habrá variacion en el rendimiento, y si estoy equivocado si habria diferencia...
    salu2

  7. #7

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Cita Iniciado por Franxis
    el devkitgp2x lleva gcc 4.0 seguro.

    lo q ocurre es q el -msoftfloat lo pone el compilador solo, no hace falta incluirlo. para saber si esto hace algo, habria q comparar con un gcc anterior o desactivar el -softfloat.

    mejor compara a compilar sin cambiar nada y con las librerias estas q te ha propuesto archer... si estoy en lo cierto no habrá variacion en el rendimiento, y si estoy equivocado si habria diferencia...
    salu2
    Pues sí, parece que da lo mismo con el flag que sin él: he probado con el sistema de partículas y, teniendo en cuenta que pinta 9000 partículas y que las actualiza (un par de divisiones, un par de multiplicaciones y unas 10 sumas con floats por cada partícula) a algo menos de 25 FPS creo que se debería notar la diferencia. O sea que sí que debe estar incluído.

    Bueno, si tengo tiempo ya probaré con las librerías de A.r.R.c.H.E.r., aunque por lo que veo tendré que cambiar bastante código.

    Saludos.

  8. #8

    Fecha de ingreso
    Jun 2004
    Mensajes
    249
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por miq01
    ..., pero no sé qué versión de gcc/g++ utiliza. Si escribo arm-linux-g++ --help no aparece la versión y no he encontrado ningún parámetro para saberlo.
    Prueba a poner: arm-linux-g++ --version
    Y te aparecera algo similar a esto

    arm-linux-g++.exe (GCC) 4.0.2
    Copyright (C) 2005 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  9. #9

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Cita Iniciado por hermes PS2R
    Prueba a poner: arm-linux-g++ --version
    Gracias Hermes. En el post #5 ya lo descubrí.

  10. #10

    Fecha de ingreso
    Jan 2006
    Ubicación
    Sadly, still with my parents...
    Mensajes
    150
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts

    Red face y en Python

    Hola buenas, mi primer post

    En fin, soy uno de muchos que estan esperando para conseguir una 2x, y de mientras me he puesto a trastear un poco. Aviso, soy MUY novato (soy programador en windows con c#2.0 y managed directX y aqui me teneis programando en linux, con Python y SDL

    Finalizadas las presentaciones, al tema, estoy desarrollando un pequeño juego, de naves tambien, pero quien dice naves dice tomates asesinos o zombies, es como mezclar el quake3, con el asteroids (vista vertiical, DM1-1, DMEquipos y un sistema muy extraño de armas que todavia no acabo de comprender que habia tomado cuando lo escribi) , y despues de leer el hilo me preguntaba:

    - alguien sabe como utilizar fixed point en Python? a lo mejor estoy preguntando una burrada pero llevo 2 dias con el lenguaje y es un poco nuevo para mi

    - habeis probado algun ejemplo que os de idea del rendimiento de Python en la 2x? ya se que al ser interpretado ira mas lento pero mira que bien tiraba el Blade of Darkness y estaba hecho en Python.

    - una vez que tenga el juego terminado en linux, solo tendria que copiarlo para que funcionase? (aparte de cambiar los controles)

    Gracias!!!

  11. #11

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Cita Iniciado por namikata
    - alguien sabe como utilizar fixed point en Python? a lo mejor estoy preguntando una burrada pero llevo 2 dias con el lenguaje y es un poco nuevo para mi

    - habeis probado algun ejemplo que os de idea del rendimiento de Python en la 2x? ya se que al ser interpretado ira mas lento pero mira que bien tiraba el Blade of Darkness y estaba hecho en Python.

    - una vez que tenga el juego terminado en linux, solo tendria que copiarlo para que funcionase? (aparte de cambiar los controles)
    Hola namikata.

    Siento no poder ayudarte con Python, ya que lo usé hace un año para un proyecto muy sencillo pero luego lo olvidé. A ver si alguien te puede ayudar.

  12. #12

    Fecha de ingreso
    Jan 2006
    Ubicación
    Sadly, still with my parents...
    Mensajes
    150
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Gracias de todas formas, supongo que habra que esperar a que tenga una gp2x y hacer unas pruebas, es que despues de leer unos cuantos hilos en los que hablais de como estais programando los juegos me acojone un poco y he tirado hacia algo mas sencillo
    (es que venir de programar con una interfaz que lo hacia todo por ti, y encontrarse uno con esos makes que he visto en otros hilos...)

    Ya que estamos, hay algun hilo / zona del foro en la que pueda comentar los detalles del juego con otra gente? es que es muy raro, de verdad, y me gustaria pedir consejo y tal, no sea que despues de programarlo, sea una caca xD

  13. #13

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Namikata, mírate este PDF, referido al punto fijo. Igual puedes sacarle algo de provecho.

  14. #14

    Fecha de ingreso
    Jan 2006
    Ubicación
    Sadly, still with my parents...
    Mensajes
    150
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Gracias por el documento. Acabo de descubrir qu soy mas tonto de lo que pensaba xD

    En fin, tendre que pedir sopitas para que me echen una mano, y sino, capaz de trabajar todo en intehgers xD

    El documento esta muy bien gracias, pero en mi esta desaprovechado.

  15. #15

    Fecha de ingreso
    Aug 2005
    Mensajes
    3,385
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Cita Iniciado por namikata
    El documento esta muy bien gracias, pero en mi esta desaprovechado.
    A mí me pasa lo mismo. Pero siempre estamos a tiempo de aprender.

Página 1 de 2 12 ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •