Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Programa 01 - Manzanas, Androides y Pathfinding

Iniciado por Gallo, 20 de Noviembre de 2013, 12:28:54 AM

« anterior - próximo »

Gallo

Darago_malaga y yo tenemos el placer de anunciaros que ya está disponible en iVoox y en iTunes el Programa 01 de Código Podcast, el podcast sobre desarrollo de videojuegos.

iVoox: http://www.ivoox.com/codigo-podcast-programa-01-audios-mp3_rf_2561179_1.html

iTunes: https://itunes.apple.com/es/podcast/codigo-podcast/id755824884?l=en

Feed RSS: http://www.ivoox.com/codigo-podcast_fg_f192247_filtro_1.xml

Sumario:

7:17 - Noticias: novedades en Unity3D, kickstarter de Spine y recordando a Paco Menéndez.
27:17 - El menú del dia: Algoritmos de Pathfinding. ( http://www.raywenderlich.com/4946/introduction-to-a-pathfinding )
39:12 - Puños fuera: desarrollo en iOS vs Android.
1:08:11 - El café con el oyente: Paseo por el foro de  stratos-ad.com.
1:38:08 - Próximos eventos.

Podéis comentarnos por el foro de stratos y por Twitter a @codigopodcast cualquier sugerencia o petición que tengáis para cualquiera de las secciones, todo feedback será bienvenido. El café con el oyente es una sección especialmente dedicada a posts, mensajes o audio-correos que os gustaría que comentáramos en el podcast y que podéis enviar a codigo.podcast[at]gmail.com.

Un saludo y gracias a los que han colaborado en este primer programa.

PD: Información sobre Pathfinding

KeTo

¡Ya había ganas! Mañana lo escucho de camino a clase, gracias.

Darago_malaga

En un principio queríamos explicar mas minuciosamente el tema de Pathfinding en su modalidad Navigation Mesh pero por densidad preferimos explicarlo mas generalmente. Ponemos aquí el guión original de esta sección para que sirva de ampliación a lo mencionado en el podcast.

Metodo del Navigation Mesh


1 - Dividir el terreno de juego en triángulos

2 - Crear ficheros describiendo esos triángulos y sus vértices
   * Describir vertices (n Vertice, x, y)
   * Describir Triángulos (n triángulo, a,b,c)
   * Crear vectores para guardar estos datos

3 - Función de UN PUNTO PERTENECE A UN TRIANGULO
   
//Dado un punto s deterimina si esta dentro de el triangulo formado por los vertices a,b y c
bool Is_Point_Inside_Trigon(CGPoint s, CGPoint a, CGPoint b, CGPoint c)
{
    float as_x = s.x-a.x;
    float as_y = s.y-a.y;
    bool s_ab = (b.x-a.x)*as_y-(b.y-a.y)*as_x > 0;
    if((c.x-a.x)*as_y-(c.y-a.y)*as_x > 0 == s_ab) return false;
    if((c.x-b.x)*(s.y-b.y)-(c.y-b.y)*(s.x-b.x) > 0 != s_ab) return false;
    return true;
}



4 - Función de DOS PUNTOS SON VISIBLES
   * Posibilidad A) Dividir la recta en puntos y comprobar que todos pertenecen a algún triángulo
   * Posibilidad B) Comprobar que ninguna recta corta el perímetro
               * El perímetro es formado por las lineas definidas en otro fichero usando los vértices existentes.
               * Necesitaremos una función que determina si dos rectas se cortan
                 http://pier.guillen.com.mx/algorithms/07-geometricos/07.4-interseccion_segmentos.htm
               

5 - Empezamos el juego y el jugador selecciona un punto a donde ir y comprobamos que pertenece a un punto en el terreno de juego

6 - Añadimos a la lista de vertices el origen y el destino

7 - Vector de conexiones ( descrive el grafo)
   * Concepto (qué nodos están conectados con que otros)
   * -1 es no conectado
   * Peso es la raíz cuadrada de la suma de los cuadrados de las diferencia entre las componentes de los puntos
   * Metemos en este vector las conexiones con el punto origen y destino
      *Buscar triángulo que contenga esos puntos
      * Comentar la opción de añadir los triángulos a la lista de triángulos o solo modificar los valores (0)(x), (x)(0), (n_vertices+1)(x), (x)(n_vertices+1)

8 - Matriz dijkstra
   * CONCEPTO según Wikipedia: El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un algoritmo para la determinación del camino más corto    dado un vértice origen al resto de vértices en un grafo con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien lo describió por primera vez en 1959.

   * creamos un vector con los siguientes contenidos : (0)=nodo padre, (1)=coste acumulado, (2) es fijo o no {-1 o 0 =no  1=si}. En un principio todos son NO FIJOS
   * Iniciamos los valores del coste acumulado a un valor infinito ya que no sabemos el coste inicial
   * el coste acumulado del nodo 0 es 0
   * empezamos por el nodo 0 y lo consideramos como nodo actual
   * Miramos todos los nodos conectados con este que no están marcados como fijo
   * si el coste almacenado en estos nodos es mayor que el coste de llegar hasta el desde el nodo actual lo cambiamos por este ultimo
      (es decir si el coste de que teníamos desde el nodo actual mas el coste de llegar ha los nodos analizados es menor que solo llegar al nodo analizado)
   * Marcamos el nodo actual como fijo
   * Buscamos de todos los nodos el que tenga un coste menor y lo hacemos nodo actual (si el nodo es el destino paramos porque es lo que nos interesa)
   * Volvemos al paso de buscar todos los nodos conectados a el.

9 - El recorrido esta formado por los nodos padres empezando por el nodo destino hasta el nodo origen

10 - Simplificamos el recorrido.
   * si el ultimo es visible desde el primero eliminamos los intermedios
   * si no: comprobamos con el penultimo
   * si no: comprobamos el segundo con el ultimo
   * si no: el segundo con el penúltimo
   * asi con todos los nodos hasta eliminar los nodos no necesarios

11 - Estudiar la posibilidad de:
   * Comprobar si el origen y el destino son visibles antes de buscar el camino
   * Añadir al vector de conexiones los nodos visibles entre si
   * O cambiar el vector de conexiones por una funcion


Suricato

Enhorabuena por el podcast. Lo he escuchado y me ha gustado.

KeTo

Me ha gustado en general, y el audio está muy muy bien (me esperaba cacofonías xD) pero lo que no me ha gustado es la sección en la que comentáis los famosos post del foro, vamos, me ha dado la sensación de que sobra y que no aporta nada.

El resto muy bien, quiero otro  :P

Darago_malaga

Gracias a Suricato y a KeTo. Nos Encanta que os alla gustado. En cuanto al apartado en el que leemos el foro (Esta sección se llama Café con el Oyente) nuestra intención es contestar preguntas y sugerencias que nos realicen los oyentes a través de nuestros métodos de contacto. Al ser nuestro primer episodio decidimos comentar algunos post que nos parecían interesantes. En siguientes programas esperamos que exista mas interacción con vosotros.

Seguimos esperando sugerencias, criticas o/y peticiones.

Proyecto Prehistory

Está muy bien el podcast. Lo he escuchado y me ha resultado muy entretenido, y he aprendido muchas cosas.

Ya tenéis a un asiduo oyente XD

¡Enhorabuena!

valnar

Muy bueno! Molan los comentarios de posts del foro  :D
Valnar Games
All your base are belong to us.
@valnar

Darago_malaga

#8
Muchas gracias a todos. Este mismo fin de semana, Gallo y yo empezaremos la grabación del segundo episodio. Nuestra intención, al menos de momento, es sacar uno todos los días 15. Esperamos que el segundo nos traiga tantas alegrías como el primero. Y la verdad es que hemos disfrutado como niños.

Nos escuchamos.

fjnavarro

Muy bueno el podcast, ya me habéis enganchado!! :P
-----------
Francisco José Navarro García
// Desarrollador Senior //

blog: http://www.fjnavarro.com

linkedin: http://www.linkedin.com/in/fjnavarrogarcia

twitter: http://www.twitter.com/fjnavarro_

github: https://github.com/fjnavarro

JavierRubio

Voy muy retrasado, pero esta semana me he escuchado los dos primeros y parte del tercero.

Me gusta mucho, tanto la parte tecnica como las noticias me resultan muy interesantes, tambien es verdad que mi nivel de conocimiento en desarrollo es bajo. Me ha resultado ameno, si me permitis un consejo poner alguna musica algo mas animada creo que la actual tiende a aplomizar la narrativa.

Mucha suerte con ello y seguid adelante






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.