¿Cuáles son los algoritmos más útiles para el desarrollo de juegos?

Para el desarrollo del juego, sugeriría algunos algoritmos para estudiar y aprender (actualmente siguiendo este consejo yo mismo). Al leer algunos de los que se enumeran a continuación, notará que Djikstra, MinMax y la cola de prioridad de montón son los jugadores principales y los otros son variaciones de ellos. Ciertamente, esta lista no incluye todos los algoritmos que debes aprender y conocer para el desarrollo de juegos, hay una gran cantidad de ellos disponibles; Sin embargo, estos son los que te mojan los pies antes de sumergirte en el ámbito de las estructuras de datos y los algoritmos.

A * Algoritmo de búsqueda
Amplitud primero pathfinding
Djikstra pathfinding
Greedybest primera búsqueda de caminos
Cola de prioridad de montón
Algoritmo MinMax
Algoritmo NegaMax
Algoritmo Alfa Beta

Artículos secundarios que también debes aprender:

Stack, Queue y Heap son algunos elementos que también debe aprender y conocer íntimamente.

A * (pronunciado una estrella) es quizás el algoritmo más importante para los juegos. Se utiliza para encontrar rutas entre dos nodos en un gráfico (o en un mapa). Si su juego involucra agentes que necesitan navegar en un mundo virtual de algún tipo, entonces probablemente necesitará una variante de A * eventualmente.

Los algoritmos de clasificación también son muy importantes. Se usan con frecuencia para cosas como averiguar el orden de dibujo para hacer que la transparencia se vea bien, descubrir qué criatura en una trayectoria es golpeada primero, o incluso algo tan mundano como alfabetizar los artículos en una tienda de NPC. Sin embargo, casi todos los idiomas ya incluyen buenas funciones de clasificación, por lo que probablemente no debería escribir el suyo.

Algunos algoritmos son tan triviales que caen bajo el título de matemática simple. Será mejor que sepas cómo convertir ángulos a vectores en ángulos. Será mejor que comprenda la interpolación lineal. Probablemente sea útil saber qué es un producto cruzado.

También varía según el género. Si está escribiendo un tirador 3D, se aplica todo lo anterior. ¿Un simple juego de rol de arriba? Solo uno o dos de ellos. ¿Una aventura de texto? Ninguna de las anteriores, ¡pero será mejor que escribas bien!

UNA*

A * puede manejar bien los costos variables del terreno, y parece ser más rápido que la mayoría de los algoritmos de búsqueda de gráficos. Sin embargo, es solo una pieza de una solución de búsqueda de caminos. El diseño del mapa y la representación del mapa van antes de A *. Es fácil trabajar con las cuadrículas, pero no siempre es el mejor enfoque. Las formaciones, seguimiento de ruta, movimiento, recuperación de ruta y animación vienen después de A *. Muchos juegos no necesitan A * en absoluto: se trata de pasos discretos, no con movimientos continuos; funciona en gráficos y no aprovecha al máximo la coherencia espacial (es decir, la ubicación de un mapa es muy similar a sus vecinos) o la coherencia temporal (por ejemplo, si ya encontramos un camino hace unos segundos, es probable que intentemos nuevamente el camino que encontremos será similar); y si el mundo del juego está cambiando rápidamente, no vale la pena planificarlo con mucha anticipación. A * es una buena herramienta, pero no es la única a tener en cuenta.

AI (Inteligencia Artificial)

Al elegir una técnica para IA en sus juegos, manténgala lo más simple posible; Lee esto. Si conoce la respuesta, ingrese la respuesta en el programa. Si sabe cómo calcular la respuesta, coloque el algoritmo para calcularla en el programa. Solo si no conoce la respuesta, y ni siquiera sabe cómo calcular la respuesta, debe recurrir a técnicas complejas que puedan aprender cómo encontrar la respuesta. Estas técnicas complejas pueden tener un alto precio, en términos de tiempo de programación, rendimiento del juego, dificultad de depuración y falta de control.

Si está buscando más información sobre los últimos videojuegos, le recomiendo que eche un vistazo a Saljack Enterprises

Bueno, obviamente depende de qué tipo de juego estés hablando. Crysis es un juego muy diferente a Angry birds, Diablo es muy diferente al ajedrez.

Sin embargo, aquí hay algunos algoritmos que encuentro útiles:

Para la IA basada en la cuadrícula, debe comenzar a aprender el algoritmo de búsqueda A *. Hay varias formas de mejorarlo, como el almacenamiento en caché y la reutilización de partes de la búsqueda o el colapso de puntos de cuadrícula en un sistema de puntos de referencia más simple, pero es un buen comienzo.

Para los gráficos, debe aprender sobre la partición espacial. Como mínimo, aprenda sobre cuadrículas uniformes y árboles quad / oct. Además, si no conoce las funciones hash, aprenda ahora. Un gran aspecto de los juegos es lidiar con listas de entidades, por lo que las estructuras de datos diseñadas para búsquedas rápidas son imprescindibles.

También necesita saber acerca de la integración numérica para cosas como la física básica. Pero también es muy útil saber cómo simular cosas como resortes, para interfaces de usuario fluidas y cosas así.

Para los juegos multijugador, debes saber que toda la estructura de tu juego debe crearse teniendo en cuenta el aspecto multijugador. Es una muy mala idea readaptar retroactivamente un juego para un solo jugador en el modo multijugador. No soy un experto en esto, así que te señalaré aquí.

Eso debería darte algo para seguir.

Algoritmo Minimax!

More Interesting

Como principiante, ¿cómo comenzar a codificar el árbol y el gráfico? ¿Cómo implementar la lógica de árbol y gráfico en problemas?

Cómo resolver el problema de 'cortar el árbol' en HackerRank

Según Knuth, un algoritmo puede tener cero o más entradas. ¿Alguien puede darme un ejemplo de un algoritmo sin entrada?

¿Me pueden ayudar a aprender estructuras de datos y algoritmos?

¿Cuáles son las ventajas de usar la notación (0,1) en el sistema binario?

¿Cuál es la clave para diferenciar y comparar dos algoritmos de aprendizaje automático?

¿Existe algún algoritmo o método para identificar patrones en una secuencia de filas / eventos?

Cómo representar un número binario, como 110110011, en exceso de código 511

Cómo encontrar las rutas que cubren todos los vértices dados (también se conocen el vértice inicial y final) en un gráfico cuyos bordes tienen peso y dirección

Cómo traducir mis pensamientos en código

¿Cuáles son los usos de un puntero en una estructura de datos?

¿Se puede usar el algoritmo DBSCAN para determinar los límites del área geográfica?

¿Qué es un algoritmo para generar una lista de secuencias numéricas que consta de cinco números (00-99) de modo que cada número en una secuencia siempre ocurra en combinación ÚNICA con los otros números y no haya secuencias duplicadas?

¿Qué es un algoritmo eficiente para encontrar un número mágico?

¿Por qué el hashing geométrico es más eficiente que usar una matriz indexada de las coordenadas de los puntos característicos?