Buenos días a todos.
Quería saber como hacer un movimiento de un personaje, por ejemplo si yo tengo 5 imagenes, correspondientes al movimiento del personaje (IMG01, IMG02, IMG03, IMG04 Y IMG05), como haría para mostrarlas una seguida de la otra? si lo hago con un while por ejemplo, lo hace tan rapido que termino viendo la ultima imagen solamente y no las primeras, como debería hacer para que las valla mostrando con un determinado tiempo de espera?
Desde ya muchas gracias
PD: empecé hace poco con esto de la programacion en sí, hace 3 meses con vb6 y hace 2 dias con esta libreria XD asi que van a tener que ayudarme con unas cuantas dudas :P
Vamos por parte, lo primero que tienes que tener claro para crear una animación es el ciclo de un juego. Normalmente y simplificado, un juego hace lo siguiente
Refreso de input -> Refresco de lógica -> Dibujo en pantalla
Esto significa que cuando haces una operación lógica, esta no se va a ver reflejada en pantalla hasta que pases el foco a las rutinas de dibujo y refresques la salida. Ese ciclo, si tu no lo limitas, se va a ejecutar tantas veces como tu hardware lo permita , lo ideal es que por lo menos tu ciclo lógico se encuentre limitado en el número de veces que se ejecuta por segundo.
Hay dos técnicas para eso, una es disparar los eventos lógicos por tiempo, por ejemplo un contador que cada 1/2 segundo te cambie la imagen de la animación, el problema con esa técnica es que los timer en VB no son deterministicos y si agregas demasiados tiempos es muy fácil que te termines liando si no aplicas algunos conceptos de programación con multi-hilos. Así que mejor usar la segunda técnica que consiste en contar y sincronizar la parte lógica con los ciclos del juego.
La verdad es que explicar todo, incluyendo el concepto es bastante (ya llevo varios minutos escribiendo y aún no llego a ningún ejemplo concreto que te sirva), así que mejor te doy un rápido resumen, te aconsejo que trabajes los 3 ciclos de forma sincrona y que limites el número de ciclos por segundo usando la librería:
Do While MainLoop
'Aquí metes la función que detecte y refresque el input
'Acá metes las funciones lógicas como movimiento
'Acá las funciones encargadas de dibujar
Call m_gfx.Frame(0, 60, True) 'limitar el programa a 60 FPS
Loop
Ese código limita el ciclo de tu juego a 60 veces por segundos.
Ahora que sabemos cuantas veces se va a dibujar la imagen en un segundo, debemos controlar cuando vamos a necesitar los cambios, por ejemplo si queremos cambiar la imagen cada 1/2 segundo, entonces debemos hacer el cambio cada 30 ciclos, para eso necesitamos contar los ciclos transcurridos
Do While MainLoop
'Aquí metes la función que detecte y refresque el input
i = (i +1) mod 120 'esta función hace que i cuente de 0 a 119
select case int(i / 30)
case 0: 'coloca el dibujo de la primera imagen
case 1: 'coloca el dibujo de la segunda imagen
case 2: 'coloca el dibujo de la tercera imagen
case 3: 'coloca el dibujo de la cuarta imagen
end select
'Acá las funciones encargadas de dibujar
Call m_gfx.Frame(0, [b]60[/b], True)[b] 'limitar el programa a 60 FPS[/b]
Loop
Con eso ya tienes lo básico para mostrar 4 imágenes y que cada una dure 30 ciclos o sea 1/2 segundos, pero replicar eso para hacer un juego sería tan complicado como armar un edificio con palios de fosforo. así que mejor mira este post, acá hay una clase que permite administrar animaciones:
http://www.stratos-ad.com/forums/index.php?topic=11944.0
El editor de animaciones es ahí no más, originalmente lo cree para ayudarme a crear los archivos para las animaciones en vez de hacerlas a mano, así que nunca partí haciendo el diseño y termine construyendo la herramienta a la rápida, aún así es bastante útil e igual puedes crear los archivos de animación (son archivos de texto plano) con cualquier editor de texto como el notepad.
http://www.youtube.com/watch?v=6MQhajvfLM4
http://www.youtube.com/watch?v=S1BhRXMAzl8
http://www.youtube.com/watch?v=IAimoa2KnqU
Todas las animaciones que salen en esos videos están creadas con esa clase, así que te debería ahorra muchos trabajo a la hora de implementar tu juego.
Muchas gracias por tu respuesta!
Otra pregunta :P
¿Entonces supuestamente toda la base del juego se resumiría a un do while-loop?
Si, la base del juego se resume a un while-loop, en la medida que ganes experiencia y conozcas otras técnicas puedes ir agregando cosas o cambiando cosas, pero para partir lo mejor es tener todo en el ciclo (Usa funciones y sobre todo clases para no tener un desorden horrible en la medida que tu juego crezca )
Tambien se puede usar un timer para hacer la animacion, es muy facil de usar ;)
Tengo otra duda, si por ejemplo yo tengo una animación de un "Hechizo", que quiero que se vea solamente cuando tiro ese "Hechizo", como tendría que hacer? No está la propiedad Visible, tendría que crear una animacion "Vacio" y que siempre se dibuje esa animacion hasta que tiore el hechizo y mostraria la animación "Hechizo"?
Saludos
PD: Todo esto hablando de la clase que creaste Hechelion :P
Ahi tendrias que variar y usar un DO UNTIL
cuadro=0
if lanzahechizo=true then
DO UNTIL cuadro = 6
if cuadro = 0 then mostrar hechizo01.jpg
if cuadro = 1 then mostrar hechizo02.jpg
if cuadro = 2 then mostrar hechizo03.jpg
if cuadro = 3 then mostrar hechizo04.jpg
if cuadro = 4 then mostrar hechizo05.jpg
if cuadro = 5 then mostrar hechizo06.jpg
if cuadro = 6 then mostrar hechizo07.jpg
cuadro=cuadro+1
LOOP
lanzahechizo=false
end if
el ciclo DO UNTIL insertalo en un timer o sino se movera tan rapido que solo veras la ultima imagen. ademas con el timer puedes controlar la velocidad de la animacion ;)
Cita de: Ezequielk en 19 de Diciembre de 2010, 04:17:47 AM
Tengo otra duda, si por ejemplo yo tengo una animación de un "Hechizo", que quiero que se vea solamente cuando tiro ese "Hechizo", como tendría que hacer? No está la propiedad Visible, tendría que crear una animacion "Vacio" y que siempre se dibuje esa animacion hasta que tiore el hechizo y mostraria la animación "Hechizo"?
Saludos
PD: Todo esto hablando de la clase que creaste Hechelion :P
El control del dibujo se hace sobre el método "Draw", así lo pensé, ya que la idea es que la parte gráfica sólo se encargue de dibujar y sea una capa superior la encargada de determinar si se debe dibujar o no.
Por ejemplo
If MostrarHechizo then ClaseAnimacionHechizo.Draw
El control de cuando se debe mostrar la animación lo haces con la variable "MostrarHechizo".
PD: TechMachine, la pregunta de Ecequiel K, va por una clase para animaciones para la Dxlib_32, no por el lado de crear la animación desde 0.
jaja, soy muy "bruto" parece xD , en todo caso, ahora si estuve examinando las clases que creaste, creo que las ocupare yo tambien y me ahorrare un buen trabajo :)
Otra dudita :P
Estoy empezando con betas de un jueguito que estoy haciendo, y se las quiero pasar a un amigo, le paso el exe pero le tira error, será porque tiene que instalar la dxlib32??? si es asi como hago? porque me parece muy poco practico pasarle el instalador de la libreria, porque sino a todos les tendria q pasar eso, no hay alguna manera de que se instale abriendo el exe? o con algun instalador?
Cita de: Ezequielk en 20 de Diciembre de 2010, 10:41:41 PM
porque me parece muy poco practico pasarle el instalador de la libreria, porque sino a todos les tendria q pasar eso, no hay alguna manera de que se instale abriendo el exe? o con algun instalador?
Ezequiel, que se supone que haces con los juegos y la mayoria de programas que utilizas en casa? Los instalas, verdad? :)
Lo primero es que para que un programa de Visual Basic 6.0 funcione en otra maquina que no sea la tuya deberas instalar varias librerias, las basicas son dos que son la base de Visual Basic 6.0, las demás dependeran de los controles externos a Visual Basic 6.0 que agregues, como dx_lib32 por ejemplo. En resumen, tienes que hacerte un instalador para tu juego donde agregues el ejecutable y todo los recursos que este utilice (graficos, audio, etc...). Luego tendrás que instalar a parte el paquete redistribuible que diseñe para tal tarea y que encontraras en la seccion de descargas (http://dxlib32.se32.com/downloads.html) justo debajo del paquete de desarrollo que bajaste la primera vez. Este paquete ya incluye tanto las librerías base de Visual Basic 6.0 como dx_lib32 y sus librerías de dependencia, por lo que este paquete instalaría todas las librerías necesarias para ejecutar tu juego en cualquier maquina que ejecute Windows. Piensa que este instalador seria algo tan común como cuando tienes que bajarte la ultima versión de DirectX para ejecutar tus juegos ;)
Puedes usar generadores de instalaciones como Inno Setup (http://www.jrsoftware.org/isinfo.php) utilizando su editor visual (http://sourceforge.net/projects/istool/), para generar tus instalaciones.
Yo te diría, que ahora que estas haciendo pruebas, hagas un simple ZIP donde metas tu juego y el paquete redistribuible para pasárselo a tus amigos, con que instalen una vez dicho paquete les servirá para las próximas pruebas que les pases.
Salu2...
P.D.: Habría otra forma de hacerlo, que seria creando un único instalador que instalara tanto el juego como el paquete redistribuible de dx_lib32 de manera automática pero esto es mas complejo de hacer y según el instalador que fueras a usar deberías estudiar si permite tal acción y como agregarla. Yo nunca lo he hecho.
Tambien puedes probar a usar molebox, con eso empaquetas todo el archivo en un unico ejecutable y no habra necesidad de instalar nada. eso si, debes incluir en el paquete todo lo que vaya a necesitar tu juego, llamese archivos de imagenes, de audio y librerias (dx_lib32 y la libreria de dx8 son indispensables, y funcionan incluso en windows vista y windows 7), en cuanto al proyecto mismo, basta con que incluyas el ejecutable que te crea el mismo VB, ahi puedes obviar los formularios y modulos ;)
Hace tiempo que deje de recomendar Molebox dado que en las ultimas versiones los ejecutables empaquetados los antivirus los detecta como malware, lo cual no da mucha confianza la gente que vaya a ejecutar tus programas, amen aparte de que Molebox no es gratis, son 200€ que recuerde su licencia básica.
Salu2...
Cita de: [EX3] en 21 de Diciembre de 2010, 03:24:48 AM
Hace tiempo que deje de recomendar Molebox dado que en las ultimas versiones los ejecutables empaquetados los antivirus los detecta como malware, lo cual no da mucha confianza la gente que vaya a ejecutar tus programas, amen aparte de que Molebox no es gratis, son 200€ que recuerde su licencia básica.
Salu2...
seré un iluminado entonces, que yo tengo una version antigua y full y ningun antivirus le ha detectado nada como malware? a lo mas, si lo envio via msn comprimido en un rar me manda el tipico mensaje de advertencia que podria ser un archivo peligroso, pero eso mas que nada porque se crea un archivo unico ejecutable. en fin, a mi al menos me es mas practico :)
Virus Scan 8 y siguientes versiones, Kapersky y Avast antivirus son buenos ejemplos de antivirus que me tumban mis antiguos ejecutables empaquetados con Molebox. Yo hacer lo que queráis pero sigo diciendo que distribuir un programa que hace saltar la alarma de los antivirus solo crea desconfianza. No hace mucho por aqui en foro le ocurrio esto a otra persona que usaba Molebox para empaquetar sus proyectos.
Cita de: techmachine en 21 de Diciembre de 2010, 03:32:29 AM
en fin, a mi al menos me es mas practico :)
Si ya se que es practico distribuir tu juego en un solo ejecutable sin instalación ni nada pero desde luego Visual Basic 6.0 no es la herramienta adecuada para este tipo de desarrollos dada su fuerte dependencia de librerías externas. Yo estuve años atrás probando otras herramientas similares como Fusion y primeras versiones de Molebox, pero si unas daban problemas con que el ejecutable generado no funcionaba otras daban el problema de los antivirus y los falsos positivos.
Si vais a desarrollar con Visual Basic 6.0 tenéis que tener en cuenta que lo mas fiable es usar una instalación si queréis distribuir fiablemente vuestros proyectos. Si queréis algo mas portable podéis desarrollar con Visual Basic .NET, ahí podéis distribuir el ejecutable sin instalación alguna (siempre y cuando la versión de .NET Framework que uséis este instalada en la maquina del usuario), el problema es que dx_lib32 seguiríais debiendo instalarlo mediante el paquete redistribuible.
Yo lo dicho, si queréis usar Molebox usarlo pero no os extrañéis si luego os llegan quejas de gente por el falso positivo del antivirus.
Salu2...
Otra dudita.
Tienen idea de por que no se ven los labels, shapes, lines y otros componentes?
Cuando empieza el "Do While" todos los label, shapes, lines titilan o driectamente ni aparecen en el formulario, ¿alguien sabe por que pasa esto y como arreglarlo?
Sencillamente no se puede. Direct3D, la API sobre la que se basa la clase grafica de dx_lib32, genera una capa donde representa las operaciones gráficas y estas siempre se pintan sobre el contenido del formulario que aloja la instancia del contexto gráfico de DirectX. En definitiva, no puedes usar controles de Windows y Direct3D a la vez.
Salu2...
Una pregunta mas.
Hechelion tenes idea por qué cuando dibujo esta imagen en pantalla (con animacion.Draw) se ve medio borrosa???
http://img192.imageshack.us/i/abajo1.png/
Osea, cuando la dibujo en la pantalla no se ve muy nitida que digamos :S
El problema se debe a un suavizado que aplica la librería cuando redimensiona la imagen.
En la GPU las imágenes deben potencias de dos (64*64,128*128, 256*256, etc), cuando a la librería le pedimos que cargue una imagen de tamaño que no sea potencia de dos, como por ejemplo la que tienes tú (creo que es de 33*65) la librería la redimensiona a la potencia de dos más cercana y a al hacerlo le aplica un suavizado y por eso se ve borrosa.
La solución es usar imágenes que sean potencia de dos, cambia el tamaño del lienzo de tu imagen a 64*64 y vas a ver que ya no se verá borrosa.
PD: Por cierto, el suavizado lo aplica la librería cuando cargas la imagen y no tiene nada que ver con mi clase, si cargas la imagen directo, veras que también se vera borrosa producto del suavizado.
Si hago una imagen de 32*64 ¿se veria nitido?(las 2 son potencias de 2) porque sino se me hace dificil dibujar a un tipo en un cuadrado de 64*64
Si, no hace falta que las imágenes sean cuadradas a la fuerza, solo que sus dimensiones sean potencia de 2. 32x64 es valido al igual que 128x1024.
Salu2...
Hechelion, tengo una animacion creada con tu clase, que consta de 4 imagenes, el problema es que las muestra muy rapido, como hago para controlar la velocidad en la que se muestra cada imagen??? tendria que mostrar cada imagen durante 15 ciclos.
Cita de: Ezequielk en 24 de Diciembre de 2010, 07:16:42 PM
Hechelion, tengo una animacion creada con tu clase, que consta de 4 imagenes, el problema es que las muestra muy rapido, como hago para controlar la velocidad en la que se muestra cada imagen??? tendria que mostrar cada imagen durante 15 ciclos.
Si estás editando con el programa, en la pantalla de animación hay un cuadrado que dice "Repertir" y tiene valor 1, eso significa que se va a repetir 1 ciclo antes de pasar al siguiente cuadro.
Ahí puedes definir cuando quieres que demore cada frame de la animación.
O puedes editar el archivo de texto plano
Cada línea es un paso de la animación, el cuarto valor es la cantidad de ciclos que debe durar .
mina_000,0,0,10,0,0,0,0,0,0,0,0
Muchisimas gracias :D
Ya me estaba volviendo loco jaja
Saludos
Hola de nuevo, estube unos días sin tocar el vb debido a las fiestas :P
Vengo con otra duda, esta es con respecto a la clase de Hechelion.
Tengo una animacion que tiene esos "cuadrados" que se crean con el programa que hace las animaciones (el que hizo Hechilon). Yo quiero que cuando se pase el mouse por el "personaje" pase algo, no importa qué (bah si quieren saberlo, tendria que mostrar el nombre del personaje justo abajo de éste). Supongo que tendria que usar los cuadrados que cree junto con la animacion pero no se como usarlos. ¿Se tendria que usar el .GetRect()? ¿Cómo lo uso? ¿Cómo identifico la colision?
Desde ya,
Muchas Gracias,
Ezequielk
P/D: Perdon por el doble post :-[
Cita de: Ezequielk en 04 de Enero de 2011, 10:46:03 PM
Hola de nuevo, estube unos días sin tocar el vb debido a las fiestas :P
Vengo con otra duda, esta es con respecto a la clase de Hechelion.
Tengo una animacion que tiene esos "cuadrados" que se crean con el programa que hace las animaciones (el que hizo Hechilon). Yo quiero que cuando se pase el mouse por el "personaje" pase algo, no importa qué (bah si quieren saberlo, tendria que mostrar el nombre del personaje justo abajo de éste). Supongo que tendria que usar los cuadrados que cree junto con la animacion pero no se como usarlos. ¿Se tendria que usar el .GetRect()? ¿Cómo lo uso? ¿Cómo identifico la colision?
Desde ya,
Muchas Gracias,
Ezequielk
P/D: Perdon por el doble post :-[
Halgo asi seria
'Cargar Collision del Player
CharList(CharIndex).Shape.X = CharList(CharIndex).Pos.X + Player(CharIndex).GetRect(0).X 'Posicion X
CharList(CharIndex).Shape.Y = CharList(CharIndex).Pos.Y + Player(CharIndex).GetRect(0).Y 'Posicion Y
CharList(CharIndex).Shape.Width = Player(CharIndex).GetRect(0).Width 'Ancho
CharList(CharIndex).Shape.Height = Player(CharIndex).GetRect(0).Height 'Alto
La collison quedaria como la imagen
(http://avalontm.info/imagenes/collision_01.jpg)
Voy a agregar una cosas extra a la explicación de Avalontm.
Tal como te dice, si definiste algunos rectángulos a las animaciones, puedes usar la función GetRect para implementar colisiones, acabo de actualizar las clases debido a un error con esa función, así que te recomiendo volver a bajarla y actualizar la clase en tu proyecto.
Si tienes definido los rectángulos para la animación, la forma más simple de hacer una colisión con el mouse es usar la función MATH_PointInRect de la clase System de la librería, la cual nos devuelve TRUE si un punto está dentro de un cuadrado y false si no.
El punto será el mouse y el cuadrado lo podemos sacar directo de la clase de animación, en la actualización incluyo un ejemplo de esto, si colocas el mouse sobre el Ovni superior, va a salir un texto que dice "Colisión"
System.MATH_PointInRect(m_Input.Mouse.X, m_Input.Mouse.Y, Animacion.GetRect(0))
No se por qué, pero no me anda, este es el codigo:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If m_System.MATH_PointInRect(CLng(X), CLng(Y), Personaje.GetRect(0)) = True Then
MsgBox "Andó", vbInformation, "Mensaje"
End If
End Sub
Osea cuando paso el mouse por la animación no tira el cartel :S
Alguien sabe por qué?
PD: Ya me baje la nueva clase
Cita de: Ezequielk en 05 de Enero de 2011, 12:57:40 AM
No se por qué, pero no me anda, este es el codigo:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If m_System.MATH_PointInRect(CLng(X), CLng(Y), Personaje.GetRect(0)) = True Then
MsgBox "Andó", vbInformation, "Mensaje"
End If
End Sub
Osea cuando paso el mouse por la animación no tira el cartel :S
Alguien sabe por qué?
PD: Ya me baje la nueva clase
alli me imagino que si esta el mouse dentro de la collision del personaje aparece el mensaje pero se debe de agregar la posicion de l personaje + la pos de la collision para ke deva de funcionar correctamentre
Primero, no uses la posición del mouse de VB, si no tienes configurado el Form, el mouse de VB te entrega valores en Twip, mientras que la clase trabaja con Pixel por lo cual el área de colisión jamas va a coincidir con la animación. Usa la clase Input de la librería Dx_lib32, es mejor que cambiar la propiedad de VB a pixel.
Junto con la clase va el ejemplo del ovni, el cual usa la clase input para mostrar un mensaje cuando pasas el mouse por encima, te recomiendo que la uses como referencia, cualquier duda avisa. (Fiajte que la colisión está dentro del bucle del juego)
Avalontm, sobre la posición del PJ, no es necesario indicar nada, cuando usas el Draw de la animación, de forma automática los rectángulos de la animación se ajustan a la posición de dibujo (Esa fue la actualización que hice) ;)
Cierto Hechelion, ahora use la clase input y funcionó.
La verdad que no sabia que se mostraba en pantalla "Colisión" cuando pasabas el mouse por encima del ovni, sino no hubiera preguntado aca y me hubiera fijado el código del ovni :P
Gracias a todos por responder mis dudas :D
Buenas noches a todos. Vuelvo con mis dudas xD
Ya tengo "casi" terminada una beta de mi juego, pero tengo un pequeño problema. El problema es que cuando le pasaba el juego a un amigo, éste no veia a los personajes, despues de tanto buscar creo que encontre el problema y tiene que ver con el archivo .aad que crea las animaciones. En una parte de este archivo se encuentra la dirección de la cual saca una imagen, por ejemplo: "Abajo1,c:\users\ginsberg\desktop\argentum offline\proyecto 2\graficos\personaje\abajo1.png,32,64". El problema está en la parte que resalté. Mis amigos no tienen la imagen en ese lugar, sino que la tienen en el lugar donde lo instalaron + "\graficos\personaje\abajo1.png" (App.Path & "\graficos\personaje\abajo1.png" para los entendidos :P). No se cómo hacer que se carguén las imagenes, no puedo poner app.path en el block de notas porque el vb obviamente no lo lee y directamente no me muestra esa imagen. Alguien sabe como ayudarme???
Muchas Gracias,
Ezequielk
EDIT:Ah me olvidaba, tengo tambien otra duda, no se por qué, pero en el projecto pongo que limite el programa a, por ejemplo, 120 fps, pero cuando lo ejecuto corre a 60 fps, osea la mitad :S. Probe limitandolo a 60 fps y el juego va a 30 fps. Y si lo pongo a 240 fps corre a 120 fps, pero a veces como que se "acelera" y va a los 240 fps originales. Alguien sabe por qué corre aproximadamente a la mitad de lo que lo limito? será culpa de mi procesador? (aclaro que tengo una PC muy viejita XD)
EDIT2: Ya solicione el problema, tenía que poner directamente "graficos\personaje\abajo1.png" y no toda la ruta anterior :D. Ahora lo que me falta solucionar es lo que puse en el primer edit que todavia no entiendo por qué si limito a 120 fps el jugo corre a 60 fps :S.
Respondiendo a lo de los FPS, la limitacion de FPS es un calculo de espera que realiza la libreria para tratar de asegurar una tasa maxima de actualizacion entre cada llamada del metodo Frame() de la clase grafica. Lo idoneo siempre es 60fps, mas es tonteria por que no se aprecia o se puede acelerar demasiado con sus correspondientes parones. Luego, esto tambien depende de lo pontente que sea tu grafica y como sobrecargues de trabajo el bucle de tu programa ya que los fotogramas por segundo son los ciclos que se ejecuta en un segundo tu aplicación, no solo lo que tarda el render en dibujar y mostrar en pantalla. Si tu gráfica y procesador no son muy potentes y lo limitas a 60fps quizas no sea capaz de llegar con soltura a 60fps y por eso se queda en picos de 30/40fps por ejemplo, y si subes el limite a mas valores quizás logres llegar a 60fps por que la espera es menor de lo necesario perdiendo ese control de precisión en el calculo, no se si se entiende, no siempre tendrás la misma carga de trabajo exacta en cada ciclo de tu programa. Yo te aconsejaría que lo dejes fijo a 60fps para asegurar una tasa de actualización entre 30 y 60, que es lo idoneo.
Sobre lo de la ruta, esa ruta que remarcas en rojo la genera la aplicacion de Hechelion o la pusiste a mano? Si es lo segundo te en cuenta que siempre has de trabajar con rutas relativas, nunca absolutas, ya que nunca la ruta sera la misma en todos los equipos.
Salu2...
Gracias por tu respuesta EX3.
Con respecto a lo de la ruta, esa ruta me la creo la aplicación que hizo Hechelion, yo tube que entrar al archivo y modificarlo. Te recomendaría Hechelion que lo modifiques :P
Saludos!
Tanto el programa como la clase de animación soportan rutas relativas, para que el programa las cree de forma automática es necesario que la imagen sea "relativa" al programa, si no, es necesario editar a mano el archivo aad (Recuerda que aclare que el programa lo cree con la intención de ayudarme a hacer las animaciones, nunca lo diseñe pensando en que fuera un framework completo).
Las rutas relativas se crean una sintaxis similar a Unix,, colocando ".\" (Punto backslash), el punto indica que se use el directoria actual de la aplicación, por ejemplo.
El juego está en
c:\games\mijuego\myjuego.exe
y la imagen está en:
c:\games\mijuego\recursos\imagenes\animacion.jpg
El directorio de la aplicación entonces será:
c:\games\mijuego
La forma correcta de escribirlo en el archivo aad para que la ruta sea relativa a la aplicación es reemplazar el directorio de la aplicación por un punto:
.\recursos\imagenes\animacion.jpg
Con esto da igual donde esté la aplicación y la animación, (C:, D:, H:\misejemplos\oscio\12345\), lo único que importa es que la imagen siempre se encuentre en la misma ruta "relativa" a la aplicación. Fijate en los archivos de animación del ovni en el ejemplo, si te das cuenta da igual donde ejecutes la aplicación, el ovni siempre se ve.
EDIT:
Igual voy a revisar porque me parece que la versión que tengo yo usa la ruta del archivo AAD como ruta relativa para la imagen, si es así voy a compilar y subir la versión que tengo yo, que a lo largo del tiempo le he ido corrigiendo errores.
Ah, entonces habia que poner "./"? Porque yo al final solo puse "graficos\personaje\..." sin poner ni "/" ni "./" y creo que andó (todavia me falta pasarle la beta a un tester y que me diga si anda xD) :P
Otra pregunta :P
Esto en realidad no tiene que ver con la libreria asi que no importa si no lo saben o si no me lo quieren responder (ya que aquí se tendrian que debatir temas de esta libreria y este no es el caso).
Necesitaría hacer un sistema de ranking, osea uno juega a mi juego, y saca un determinado puntaje, yo necesitaria hacer que uno pueda ver los 10 puntajes mas altos, un amigo me comento una vez que necesitaria hacer una pagina web y que me conecte con la pagina o algo asi medio raro para pasarle los datos, pero no lo entendi bien.
Alguno sabe como hacer un ranking?
Saludos!
Tal como te comentaba tu amigo, necesitas tener algo en la nube para almacenar y mostrar los puntajes, por desgracia no existe él camino, si no que hay muchas opciones, desde una base de datos tipo SQL hasta conexión por socket, etc.
No es obligatorio que sea una página web, pero la ventaja de tener una, es que podrías colocar los mejores puntajes en la web, sin saber que recursos tienes o estás dispuesto a gastar no te podría recomendar ningún camino, te recomiendo que coloques la pregunta en el subforo de programación, no porque no te quiera responder, si no, porque en el foro hay gente que ha trabajo con ranking online y podrían orientarte mejor.
Ok, muchas gracias por la respuesta .D
Despues preguntare en el subforo de programación.
Saludos