Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Noticias (https://www.clubdelphi.com/foros/forumdisplay.php?f=34)
-   -   2º Desafío PGD (https://www.clubdelphi.com/foros/showthread.php?t=78220)

Ñuño Martínez 30-03-2012 13:36:23

2º Desafío PGD
 
Como el Conejo de Alicia en el País de las Maravillas, llego tarde.

Quedan pocas horas para que comience El 2º Desafío PGD que un año más convoca la güebería Pascal Game Development. Yo voy a participar con la intención de enseñar un poco qué se puede hacer con la última versión en desarrollo de Allegro.pas, o en su defecto con la última versión estable.

A ver si el año que viene lo anuncio con más tiempo.

ecfisa 30-03-2012 14:21:26

Hola Ñuño.

Como siempre, te deseo el mayor de los éxitos en el certamen. :)

Saludos.

Casimiro Notevi 30-03-2012 14:29:26

Sabemos que eres el mejor. Si no ganas es porque no te gusta la fama :)

Al González 30-03-2012 15:42:19

¡Mucha suerte, Ñuño! :)

Por cierto, ¿no te diste una oportunidad con Embarcadero?

newtron 30-03-2012 16:38:51

Pues nada, suerte y al loro, ¿o era al toro? :confused:

Ñuño Martínez 03-04-2012 21:37:10

Gracias, gracias. En ello estamos, y ya tengo cosas para enseñar.

Esto de aquí es un "octree". Es algo así como un árbol binario, solo que cada nodo enlaza con ocho elementos. Lo que se hace es coger el espacio en un cubo, dividir ese cubo en ocho cuadrantes, y cada uno de estos en otros ocho... y así tienes dividido el espacio en "ramas" lo que permite que algunas operaciones sean más eficientes (si una rama está vacía, entonces no tienes que seguirla). La imagen en cuestión es para comprobar si crea el árbol correctamente o no.


Esta otra imagen es anterior a la del octree. Son sólo cubos en una prueba de concepto, pero el uso de la iluminación, los colores y la niebla hacen que quede bastante chulo, ¿a que sí? :cool:


Cita:

Empezado por Casimiro Notevi (Mensaje 428890)
Sabemos que eres el mejor. Si no ganas es porque no te gusta la fama :)

Es que no me gusta abusar... :rolleyes:

Cita:

Empezado por Al González (Mensaje 428895)
Por cierto, ¿no te diste una oportunidad con Embarcadero?

Pues me la voy a dar, que por diferentes razones no he podido todavía. Menos mal que son pacientes.

marcoszorrilla 03-04-2012 22:22:04

Igualmente te deseo mucha suerte Ñuño.

Un Saludo.

Delphius 04-04-2012 02:12:19

Me encantaron esas imágenes Ñuño. ¿Eso es lo que logras hacer con Allegro.pas? :eek: ¿O es Allegro + "Algo"?

El concepto de octree me resulta interesante, aunque no lo comprendo del todo. Yo mucho fuerte sobre el tema de árboles no tengo. ¿Que aplicaciones tiene en lo que hace en particular al área del desarrollo de videojuegos?

Saludos,

Caral 04-04-2012 03:07:36

Hola
Impresionante Maestro, pero no me extraña nada viniendo de ti.
Suerte en el certamen, se que estas mas que preparado y con esas imágenes si no ganas tendremos que poner una queja.
Saludos

MAXIUM 04-04-2012 03:54:00

Ñuño, algo offtopic pero al caso. ¿Sabes como conseguir el código de Tyrian?. Se supone que fue programado en Pascal y es libre. ¿Se podría portar o hacerlo HD usando Allegro?

Neftali [Germán.Estévez] 04-04-2012 11:52:49

Cita:

Empezado por Ñuño Martínez (Mensaje 429275)
Gracias, gracias. En ello estamos, y ya tengo cosas para enseñar.

Muy chulas las imágenes...
Mucha suerte Ñuño.

fjcg02 04-04-2012 12:27:43

Esto para mi es una pasada, vamos, ciencia ficción....

Saludos

Ñuño Martínez 08-04-2012 15:16:32

Gracias por los ánimos, gente, pero exageráis un poco. Que no soy John Romero, ni George Broussard... Bueno, un poco Broussard sí soy (chiste de jugón :p).

Cita:

Empezado por Delphius (Mensaje 429290)
Me encantaron esas imágenes Ñuño. ¿Eso es lo que logras hacer con Allegro.pas? :eek: ¿O es Allegro + "Algo"?

Sí, es Allegro + OpenGL.

Allegro inicia el contexto de OpenGL, carga texturas, controla las entradas del usuario, genera sonidos... Es decir, lo que no hace OpenGL, que es generar la imagen (le indico las matrices de transformación y la geometría de los objetos y OpenGL hace el resto).
Cita:

Empezado por Delphius (Mensaje 429290)
El concepto de octree me resulta interesante, aunque no lo comprendo del todo. Yo mucho fuerte sobre el tema de árboles no tengo. ¿Que aplicaciones tiene en lo que hace en particular al área del desarrollo de videojuegos?

Básicamente permite organizar los objetos que hay en un espacio, lo que hace que muchas operaciones sean más rápidas.

Por ejemplo, si lo que tienes es una lista con todos los objetos que hay en el "mundo" y quieres comprobar si un objeto concreto colisiona con algo, entonces debes comprobar la colisión con todos los objetos. Si los organizas en un árbol octal, sólo hay que comprobar la colisión con los objetos que hay en la misma rama en la que está.

Si quieres saber más, mejor que empieces por entender un árbol binario, luego un "quadtree" y así el octree "sale sólo" ya que es un quadtree sólo que tridimensional (el quadtree es bidimensional).
Cita:

Empezado por MAXIUM (Mensaje 429298)
Ñuño, algo offtopic pero al caso. ¿Sabes como conseguir el código de Tyrian?. Se supone que fue programado en Pascal y es libre. ¿Se podría portar o hacerlo HD usando Allegro?

Pues ni idea de cómo conseguir el código fuente (tampoco lo he buscado :rolleyes:).

Y lo de portar a Allegro... poder se puede, pero claro, depende de cómo esté el original. Si las bibliotecas que usan en el original siguen la misma filosofía entonces es fácil, pero si no...

Delphius 09-04-2012 01:53:59

Cita:

Empezado por Ñuño Martínez (Mensaje 429544)
Gracias por los ánimos, gente, pero exageráis un poco. Que no soy John Romero, ni George Broussard... Bueno, un poco Broussard sí soy (chiste de jugón :p).

Sí, es Allegro + OpenGL.

Allegro inicia el contexto de OpenGL, carga texturas, controla las entradas del usuario, genera sonidos... Es decir, lo que no hace OpenGL, que es generar la imagen (le indico las matrices de transformación y la geometría de los objetos y OpenGL hace el resto).
Básicamente permite organizar los objetos que hay en un espacio, lo que hace que muchas operaciones sean más rápidas.

Por ejemplo, si lo que tienes es una lista con todos los objetos que hay en el "mundo" y quieres comprobar si un objeto concreto colisiona con algo, entonces debes comprobar la colisión con todos los objetos. Si los organizas en un árbol octal, sólo hay que comprobar la colisión con los objetos que hay en la misma rama en la que está.

Si quieres saber más, mejor que empieces por entender un árbol binario, luego un "quadtree" y así el octree "sale sólo" ya que es un quadtree sólo que tridimensional (el quadtree es bidimensional).

Gracias por la aclaración. Ya me hago un mejor idea. Vendría a ser como un mapa lógico en como están distribuidos los objetos que luego se traslada a la pantalla.

Es que yo estoy muy en cero en lo que es desarrollo de juegos.
Al tema de árboles lo conozco en parte porque lo ví en estructuras de datos. El concepto de árbol binario me es conocido, lo de quadtree ya no... Quizá en algún momento para curiosiar un poco investigue algo.
Admito que la idea de desarrollar un video juego me sigue atrayendo pero hasta el momento no me puse a meterme en los conceptos... lo veo más hacia laaargo plazo, y más como un hobbie que algo profesional. Aunque nunca se sabe para donde vaya mis rumbos de aquí a unos años.

¡Muchos éxitos en tu presentación!

Saludos,

Ñuño Martínez 09-04-2012 11:47:31

Pues si te animas, Delphius, avisa con tiempo, que empezar a ciegas no es buena idea. Te (os) recomendaré un par de weberías donde obtener información e ideas para empezar con cosas fáciles.

Delphius 09-04-2012 15:06:34

Cita:

Empezado por Ñuño Martínez (Mensaje 429590)
Pues si te animas, Delphius, avisa con tiempo, que empezar a ciegas no es buena idea. Te (os) recomendaré un par de weberías donde obtener información e ideas para empezar con cosas fáciles.

OK. Recuerdo que hace un tiempo recomendaste Pascal Game Development y otras más; y creo recordar (no estoy totalmente seguro) que hasta mencionaste un libro.
Yo primero creo que va a ser mejor repasar algo de cálculo; el otro día no recordaba como resolver un límite :eek: y reaprender inglés porque apenas logro darme mañas para entenderlo tras dos pasadas a un texto. :o

Saludos,

Ñuño Martínez 11-04-2012 14:33:40

¡Se mueveeee!
 
Vamos avanzando...

Aquí podéis ver cómo se moverá el jugador, y creo que también permite observar mejor cómo funciona el octree.

Llevo un poco de retraso, pero no es grave. Si esta tarde consigo que la nave sea capaz de "chocar", casi me habré puesto al día. :)

Casimiro Notevi 11-04-2012 14:41:07

Sencillamente ¡¡¡IMPRESIONANTE!!! :eek:

Ñuño Martínez 11-04-2012 14:48:42

Gracias compañero.

Pero lo más impresionante es que, cuando intenté hacer lo mismo hace años en C++ me tire meses y tuve que dejarlo por imposible... Con esto llevo poco más de dos semanas y desde cero, casi.

Luego dicen que no importa el lenguaje que uses. Ya, claro... :rolleyes:

Delphius 11-04-2012 14:58:32

Se ve bueno amigo, :)
Ahora me queda mucho más claro el uso de un octree. Se ve bien en que, porqué y para que se usa.

Saludos,

acertij022 13-04-2012 01:44:04

Muy interesante y lo que seria mas interesante (cuando creas oportuno) crear un hilo mostrando paso a paso una creación tuya mostrando el código. Va mas que una propuestas es un deseo :D

Ñuño Martínez 18-04-2012 18:32:06

Sí, a mi también me gustaría hacerlo, acertij022, porque lo tengo pendiente. Cuando termine el concurso voy a seguir con mi plan de profesionalización y en uno de los apartados del plan está ese: el informar de los avances día a día. Difícil va a ser. :rolleyes:

Por ahora, acabo de terminar una prueba hecha en BASIC de un algoritmo para saber en qué dirección está un objetivo en relación con la dirección en la que está mirando. En principio es algo fácil, pero tiene su miga.

La dirección la da en valores 0..7, siendo 0 el frente y aumentando en sentido horario (2 derecha, etc). En la imagen se da la posición relativa del objetivo en rosa respecto al ángulo indicado por la línea blanca. En este caso dice "3", es decir, atrás a la derecha. Puede parecer que no, pero con esto es más fácil y rápido hacer luego la inteligencia artificial de los enemigos.

Hubiera preferido usar QuickBASIC, que es más estructurado, pero aun así ha ido muy bien y algo más rápido que usando Pascal.

Casimiro Notevi 18-04-2012 18:45:54

¿basic?, ¿más rápido que pascal? :confused:

roman 18-04-2012 18:56:45

Cita:

Empezado por Casimiro Notevi (Mensaje 430348)
¿basic?, ¿más rápido que pascal? :confused:

Deberíamos expulsarlo del Club. ¡Vaya sacrilegio! :mad:

:p:D

// Saludos

Casimiro Notevi 18-04-2012 19:01:58

Cita:

Empezado por roman (Mensaje 430350)
Deberíamos expulsarlo del Club. ¡Vaya sacrilegio! :mad:
:p:D // Saludos

Y que lo digas, ¿pero has visto ese código en gwbasic?, pero si hay hasta "goto"? :eek:



:D:D:D

.

roman 18-04-2012 19:08:04

Sí, es una vergüenza para este sitio. Llevemos el asunto al foro de moderadores. ¡Juicio sumario! :D

// Saludos

ecfisa 18-04-2012 19:12:48

Hola.

Esta vez estoy totalmente en desacuerdo con ustedes.

Y es más, propongo que Ñuño sea promovido a Miembro Estoico de Club Delphi por haber tenido la entereza de ánimo necesaria para desarrollar la aplicación en ese lenguaje. :D


Saludos. :)

roman 18-04-2012 19:16:21

Síguele y también te vas, ja, ja, ja.

¿Qué no leyeron el juramento del moderador?

Cita:

3. No programarás, promoverás ni defenderás nngún código Basic.
:D :D

// Saludos

Casimiro Notevi 18-04-2012 21:15:21

Nada, nada, ¡¡¡a la hoguera!!! :D

marcoszorrilla 18-04-2012 21:22:45

Código:

CLS
LOCATE 12,33
PRINT "ENHORABUENA ÑUÑO"
GOSUB 1980
GOTO 4500
REM Beginner's All-Purpose Symbolic Instruction Code
CLS
PRINT "UN SALUDO"
END


Delphius 19-04-2012 05:59:57

Agradezcan que no lo está haciendo en VB o NET, es preferible que utilice BASIC y no su versión "visual". :D

Ñuño, ¿por casualidad no utilizas también algo de LISP, o para ese proyecto sobra más de lo que puede dar?

Saludos,

Ñuño Martínez 19-04-2012 17:53:45

Si lo sé, no digo nada. :mad:

Como dice Delphius, agradezcan que no fuera VB. :p De todas formas, QuickBASIC sigue siendo uno de mis favoritos. Si no lo he usado es porque no tengo el QBasic disponible.
Cita:

Empezado por Casimiro Notevi (Mensaje 430348)
¿basic?, ¿más rápido que pascal? :confused:

Me refería a que es más rápido para probar algoritmos, no en ejecución de código.

Cita:

Empezado por Delphius (Mensaje 430405)
Ñuño, ¿por casualidad no utilizas también algo de LISP, o para ese proyecto sobra más de lo que puede dar?

De LISP sé nada o menos. Pero sí se va a utilizar un lenguaje "auxiliar" para definir el comportamiento de los enemigos y la definición de las misiones. Pero no va a ser nada sofisticado, de hecho el "parser" va a ser un TStringList tal cual... :D
_______________________________

Venga, va, a pesar de todo os pongo otro vídeo. Ya tiene naves que se mueven, explosiones, sonido... El problema es que mi capturador de vídeo no pilla esto último. :(

La razón del vídeo es que estuve haciendo muchísimas pruebas para comprobar velocidades, distancias, tamaños... Incluso he modificado algo los controles, permitiendo giros en diferentes velocidades y tó.

Delphius 19-04-2012 22:39:27

Cita:

Empezado por Ñuño Martínez (Mensaje 430451)
Si lo sé, no digo nada.
De LISP sé nada o menos. Pero sí se va a utilizar un lenguaje "auxiliar" para definir el comportamiento de los enemigos y la definición de las misiones. Pero no va a ser nada sofisticado, de hecho el "parser" va a ser un TStringList tal cual... :D

Pensé que sabías sobre LISP, CLIPS o alguno de sus "derivados", porque recuerdo que comentaste algo sobre el tema en unas ocasiones. O quizá soy yo quien recuerda mal.
Y bueno, si el TStringList te sirve, pues ándale :)
_______________________________

Cita:

Empezado por Ñuño Martínez (Mensaje 430451)
Venga, va, a pesar de todo os pongo otro vídeo. Ya tiene naves que se mueven, explosiones, sonido... El problema es que mi capturador de vídeo no pilla esto último. :(

La razón del vídeo es que estuve haciendo muchísimas pruebas para comprobar velocidades, distancias, tamaños... Incluso he modificado algo los controles, permitiendo giros en diferentes velocidades y tó.

Me ha gustado mucho este nuevo video, se ve genial. Se que estás avanzando y te quedan más cosas para ir agregando, pero tengo unas dudas... ¿a ese espacio o "mapa" lo tienes almacenado en memoria y en alguna estructura de datos a nivel lógica, o es generado por simplemente a modo de presentación en pantalla? Es decir, tienes algo como Mapa(X,Y,Z) := Nave[i] para hacer las asociaciones y correspondencias y los cálculos junto con el octtree o directamente tienes el octtree con los objetos y el mapa se genera solamente en pantalla. A lo que voy es en entender como es que te basas para unir la parte lógica con lo que es interfaz.
Ando tratando de unir cosas a ver si le pillo. :D

Mi segunda duda, es ¿que tan grande, lejos, está esa nebulosa? Porque cuando avanzas hacia ella no veo como si se acercara. Me da la impresión de que no cambia de tamaño. ¿O es que eso justamente define el límite del espacio o mapa? Se que estás recién avanzando pero es que resultó curioso ese detalle menor.

Saludos,

Ñuño Martínez 21-04-2012 12:16:37

Cita:

Empezado por Delphius (Mensaje 430484)
Pensé que sabías sobre LISP, CLIPS o alguno de sus "derivados", porque recuerdo que comentaste algo sobre el tema en unas ocasiones. O quizá soy yo quien recuerda mal.
Y bueno, si el TStringList te sirve, pues ándale :)

Pues no recuerdas mal porque lo he nombrado alguna vez. Lo que pasa es que de LISP conozco lo que se puede hacer, pero nunca lo he usado ni me he puesto a aprender a usarlo.
_______________________________

Anda que no pides nada tú:

Cita:

Empezado por Delphius (Mensaje 430484)
Me ha gustado mucho este nuevo video, se ve genial. Se que estás avanzando y te quedan más cosas para ir agregando, pero tengo unas dudas... ¿a ese espacio o "mapa" lo tienes almacenado en memoria y en alguna estructura de datos a nivel lógica, o es generado por simplemente a modo de presentación en pantalla? Es decir, tienes algo como Mapa(X,Y,Z) := Nave[i] para hacer las asociaciones y correspondencias y los cálculos junto con el octtree o directamente tienes el octtree con los objetos y el mapa se genera solamente en pantalla. A lo que voy es en entender como es que te basas para unir la parte lógica con lo que es interfaz.
Ando tratando de unir cosas a ver si le pillo. :D

Simplificando, tengo una lista (TObjectList) que contiene todos los objetos del universo sin orden ni concierto. Los objetos contienen su posición en coordenadas P = {x, y, z}. Por otro lado tengo el árbol Octree en los que cada nodo tiene una lista con referencias a los objetos que están en ese nodo (recuerda que cada nodo del Octree es un "cubo"). Uso la lista de objetos cuando tengo que recorrer todos los objetos, mientras que el Octree lo uso cuando necesito alguna referencia espacial -- por ejemplo, saber qué partes son visibles y cuales no.

El sistema que defines tú (Mapa[x, y, z] = Nave [i]) se denomina tilemap, mapa de teselas o damero. Se usa en algunos juegos, pero en este caso no funciona bien porque intento representar un espacio abierto muy grande e informe. Por lo poco que sé, el famoso Minecraft usa un sistema de damero.
Cita:

Empezado por Delphius (Mensaje 430484)
Mi segunda duda, es ¿que tan grande, lejos, está esa nebulosa? Porque cuando avanzas hacia ella no veo como si se acercara. Me da la impresión de que no cambia de tamaño. ¿O es que eso justamente define el límite del espacio o mapa? Se que estás recién avanzando pero es que resultó curioso ese detalle menor.

El fondo es lo que se llama un skybox (literalmente, caja celeste). Es una caja a la que se pinta el interior con el fondo y cuyo centro se coloca siempre donde esté la cámara. Por eso "no se mueve". Se utiliza para pintar "el infinito", con la ventaja de que es muy rápido dibujarlo y permite giros completos sin cálculos complicados.

Para evitar esa sensación de que no se mueve hay que añadir elementos de escenario que sirvan como referencia. Por ejemplo, añadir una gran nave espacial o un campo de asteroides.

Delphius 21-04-2012 22:58:22

Gracias Ñuño por dedicar un tiempo a responder a mis interrogantes.
Ahora si que me quedó mucho más claro que el agua. Uniendo conceptos ya me hago una mejor idea de como relacionar la lógica con la interfaz y en como interviene el octree en el proceso. :)

No te preocupes, no te estaré molestando de nuevo... :rolleyes:

Ya me dan ganas de meterle mano a mi sueño de hacer un video juego. A ver si alguien se inventa una máquina de clonación para clonarme porque con los proyectos que tengo encima no creo que vea la luz siguiera un algún tic-tac-toe antes del 2015 :D

A si que ya sabes, vete pensando que en el 2013 o 2014 te estaré jodiendo para que me expliques con más detalles todo :p :D

Saludos,

Ñuño Martínez 07-05-2012 21:25:37

Bueno, gente. Ya hace un tiempo que terminó el concurso; si no lo mencioné antes es porque ando algo descolocado.

Aquí tenéis un vídeo donde podéis ver el resultado. Los modelos 3D los ha realizado Rubén Deig, un aficionado que está estudiando que conocí en otro foro.



Cuando esté disponible para descarga, os aviso por si tenéis curiosidad, aunque por desgracia la versión actual no funciona en Windows, pero antes o después conseguiré que funcione.

Casimiro Notevi 07-05-2012 21:33:09

Qué bueno, muy ágil... y el paisaje de fondo y las nubes es muy realista :)

Delphius 07-05-2012 21:38:51

En la 1ra misión no se distingue mucho, pero en la 2da ¡GUAU! :eek:
¡Se pasan! Si eso hacen para una demo... :eek: ¡Como será una versión final! :)

No jodas, Nuño yo si fuera tu y supiera tanto pongo precio a mi cabeza y busco en tierra, mal y cielo alguien que invierta en mi y a hacer realidad tu creación.

Saludos,

ecfisa 07-05-2012 21:41:33

Realmente muy pero muy bueno, felicitaciones ;)

Saludos :)

newtron 08-05-2012 09:21:49

Mola un montón, enhorabuena por el trabajo. :)

Por cierto... llevas fundidos los pilotos traseros, te van a multar los municipales intergalácticos. :p


La franja horaria es GMT +2. Ahora son las 13:37:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi