Red de conocimiento informático - Conocimiento sistemático - ¿Cómo es el amor?

¿Cómo es el amor?

Clasificación de juegos de computadora (juegos de rol)

Juego de rol (tres elementos: arte + historia + interactividad); juego de disparos en primer ángulo FPS; juego de acción ACT; -Juegos de estrategia en tiempo; juegos de aventuras; juegos de deportes; juegos de carreras;

Cuatro métodos comunes de creación y realismo de mapas en juegos 2D (los tres principales)

Mapa fijo, mapa rodante. , mapa de varios niveles, mapa de diamantes

Mapa fijo: use un fondo fijo como mapa, corte la pantalla en una serie de cuadrados en forma de tablero de ajedrez, conserve una matriz bidimensional en la memoria y guarde cada El número correspondiente al bloque. Al dibujar, se dibuja el mapa correspondiente en cada bloque en función de la información proporcionada por la matriz.

Mapa desplazable:

Es una extensión adicional del mapa fijo y puede mostrar imágenes mucho más grandes que el mapa fijo.

Determina qué parte del mapa se muestra en función de la posición del jugador.

Mapeo multinivel: la idea de implementación del mapeo multinivel, barra de desplazamiento de paralaje.

Construya un mapa multinivel basado en el mapa de desplazamiento. Por ejemplo, supongamos que hay 0 capas, 1 capa de abajo hacia arriba y... cambiemos la matriz de datos del mapa a una matriz tridimensional.

Haz que cada capa se mueva a una velocidad diferente para simular diferentes niveles de la escena.

Trazado de diamante: El trazado de diamante es una técnica común para representar escenas tridimensionales en imágenes bidimensionales.

Animación de elfos y jerarquía de diseño de clases de elfos

Una imagen de fondo y un conjunto de máscaras llenarán el lugar donde apareció la guía en el cuadro anterior con el fondo, y dibujarán la guía en la nueva posición especificada.

Para cada cuadro en la secuencia de animación, 1) cargue la imagen de fondo 2) determine la posición de la pintura del sprite.

Y una imagen de máscara 4) con una imagen de fondo o una imagen gráfica correspondiente con una imagen de fondo.

5) Actualizar la posición de la pintura de los elfos

Funciones básicas de la clase de los elfos: segmentación de imágenes, configuración del marco, posicionamiento y dibujo de los elfos,

Extremadamente baja rotación de frecuencia y giro, punto de referencia de frecuencia extremadamente baja y posicionamiento del objetivo, detección de colisión de frecuencia extremadamente baja

Organización de la escena basada en el cuadro delimitador de la escena (esfera delimitadora, AABB, OBB, volumen delimitador paralelepípedo, k-dop)

Esfera circundante: la esfera más pequeña que rodea un objeto;

AABB: cuadro delimitador alineado con el eje, la estructura del cuadro delimitador paralela al eje es el cuboide más pequeño que rodea el objeto paralelo a la coordenada eje;

OBB: cuadro delimitador orientado El cuadro delimitador orientado es esencialmente un cuboide más cercano al objeto. Solo a través de este cuboide se puede girar arbitrariamente de acuerdo con el momento de primer orden del objeto. Está más cerca del objeto que las esferas delimitadoras y los AABB, lo que puede reducir significativamente la cantidad de volúmenes delimitadores.

K-DOP: Poliedro Orientado Discreto Un poliedro orientado discreto se refiere a un poliedro convexo rodeado por k/2 pares de planos paralelos, donde k es el número de vectores normales. Por ejemplo, conchas hexagonales paralelas

Tecnología de lanzamiento geométrico para optimizar la representación de escenas (clave bsp), árbol BSP, quadtree, octree e incluso división de octree.

El nodo raíz del árbol BSP es la escena completa. El área representada por cada nodo está dividida en dos partes por el plano. Una parte es el nodo secundario del área frente al plano (izquierda). ), y la otra parte es el nodo secundario detrás del avión (derecha). La subdivisión de los nodos secundarios se repetirá hacia abajo hasta que no haya más polígonos en el espacio o la profundidad de la subdivisión alcance el valor especificado. En este momento, los nodos de las hojas representan las áreas convexas de la distribución geométrica de la escena.

Códigos transversales primero en anchura y primero en profundidad para árboles Bsp. (Importante)

Principios de la tecnología LOD, dos métodos de subdivisión LOD comúnmente utilizados

Tecnología de nivel de detalle.

Principio básico: aproveche las características de la proyección en perspectiva: cuanto más lejos esté un objeto del punto de observación actual, menor será su área de proyección en el plano de la imagen, por lo que se puede utilizar menos tiempo para objetos distantes en la etapa de dibujo. Representado por elementos de dibujo equivalentes.

La tecnología de nivel de detalle incluye principalmente: eliminación basada en vértices|, eliminación basada en bordes y eliminación basada en caras.

El algoritmo simplificado basado en la eliminación de aristas es el más efectivo. La clave está en seleccionar la arista eliminada correcta, así como la posición y las coordenadas de textura de los vértices recién generados. Una solución es no generar nuevas posiciones de vértice sino hacer que un vértice coincida con otro. En todo proceso de simplificación, elegir qué bordes eliminar es un proceso cuidadosamente medido.

La solución es definir una función de costo que calcule el costo de eliminación de todos los bordes candidatos y seleccione el borde con el costo más bajo. La elección de la función de costo está relacionada con la aplicación específica y se basa en la premisa de evitar que aparezcan bordes o triángulos que se cruzan después de eliminar los bordes. Otro criterio es examinar cómo cambian las normales de dos vértices de una arista antes y después. Si el cambio es demasiado grande, la prioridad es baja. Otras escalas de función de costos podrían ser la longitud de las aristas recién generadas, la distancia de los triángulos a los que se les han eliminado los nuevos vértices, etc. El algoritmo debe registrar el proceso de eliminación de bordes del modelo fino al modelo simplificado, lo cual es beneficioso para la recuperación del modelo simplificado al modelo fino cuando la cámara está cerca del objeto.

Cálculo de eliminación de visibilidad

Eliminación de la superficie posterior: divida el objeto en bloques de antemano, calcule el rango normal de todos los vértices de cada bloque, forme un cono normal y luego use el Cono normal para determinar la superficie posterior.

Ver selección frustum (ver selección frustum) selección de superficie de corte (seleccionación de oclusión)

Método de conjunto potencialmente visible (PVS)

El algoritmo PVS es esencialmente un preprocesamiento tecnología que tiene el mismo principio que la tecnología de eliminación de superficies de oclusión en términos de aceleración del renderizado. Mejora la velocidad del renderizado en tiempo real al reducir la cantidad de escenas que deben considerarse para el renderizado actual, pero es diferente en lo específico. Ruta técnica: la tecnología de eliminación de superficies de oclusión elimina aquellas caras o escenas que definitivamente son invisibles de antemano, mientras que el método PVS extrae aquellas caras potencialmente visibles de antemano.

El principio básico de la detección de colisiones, el método de detección de colisiones basado en la estructura de división espacial (por ejemplo, el algoritmo recursivo que atraviesa el árbol binario del cuadro delimitador jerárquico)

1) Principio básico: Pares de objetos en la escena chocan Detección, complejidad O(n2). Cuando se trata de escenas complejas, la estrategia básica es excluir rápidamente objetos que obviamente no colisionan, identificar posibles áreas de intersección o pares de objetos que se cruzan y minimizar el número de pares de objetos o elementos geométricos básicos que se cruzan exactamente. A partir de esta estrategia, suelen surgir dos ideas. Primero, concéntrese en la relación entre los objetos de la escena y elimine rápidamente los pares de objetos obviamente inconexos. Después de obtener los posibles objetos que se cruzan, puede realizar un recorrido jerárquico en el árbol de cuadro delimitador jerárquico del par de objetos prediseñado, detectar recursivamente la intersección entre los cuadros delimitadores de nodos en todos los niveles, hasta los nodos hoja de cada árbol jerárquico, y finalmente obtener el resultado de la detección de intersección del par de objetos. En segundo lugar, en función del espacio donde se encuentra la escena, mediante la división de reglas de la escena, se determina rápidamente el área donde los objetos pueden cruzarse. Luego, el subespacio del área de intersección potencial se divide hasta encontrar el nivel espacial más fino y se eliminan los polígonos de los objetos que se cruzan. Sobre esta base, se realiza una prueba de intersección precisa para obtener información detallada sobre el área de colisión.

2) Método de detección de colisiones basado en estructura de subdivisión espacial.

Los métodos de división jerárquica de escenas incluyen principalmente división uniforme, árbol BSP, árbol K-DOP y octree.

Algoritmo recursivo de detección de colisiones basado en árbol BSP. Ingrese la estructura de división BSP de la escena y el objeto a detectar, y calcule si el objeto se cruza con posibles subregiones del objeto.

Tecnología anti-aliasing en modo de fusión de textura y mapeo de textura

a) El valor de textura tomado por el modo de fusión de textura se puede calcular numéricamente y el color del objeto se puede calcular mediante iluminación o almacenado en el frame buffer. Los colores se pueden mezclar. Las funciones de fusión más utilizadas son las siguientes.

Reemplazo: el valor de la textura reemplaza el valor objetivo 2) Degradado: la diferencia con el reemplazo es que si el canal alfa está activado, el color de la textura se fusiona con el valor del color objetivo, pero el valor alfa permanece sin cambios. . 3) Multiplicación: la textura del color se multiplica por el valor del color objetivo.

b) Problemas comunes de alias de textura en la tecnología anti-aliasing, incluyendo efecto muaré, aliasing, parches, desenfoque, marcas de agua, resaltados, etc.

La tecnología de mapeo MIP es la tecnología anti-aliasing más utilizada en gráficos, que intenta resolver el fenómeno de anti-aliasing cuando la cámara está en el área de textura. La idea básica es garantizar que el tamaño de píxel y el tamaño de la textura sean aproximadamente iguales.

Los cuatro métodos de filtrado más utilizados en los juegos son los siguientes:

Filtrado por muestreo de puntos: el método de filtrado más simple y rápido. Dada una coordenada de textura u, v, tome el valor de texel más cercano como color. Causará una distorsión grave.

Filtrado bidireccional: calcula la interpolación bilineal de coordenadas de textura entre los cuatro elementos de textura más cercanos. Ayuda a resolver problemas de alias en amplificación. Combinado con la tecnología de mapeo MIP del modo de filtrado de texturas más utilizada.

Filtrado trilineal: seleccione las dos capas MIP adyacentes más apropiadas, realice un filtrado bidireccional en cada capa MIP y luego realice una interpolación lineal entre las dos capas MIP.

Filtrado anisotrópico: tanto el filtrado bidireccional como el filtrado trilineal utilizan filtrado isotrópico, es decir, todas las direcciones de filtrado alrededor del píxel de textura tienen el mismo peso. Cuando el polígono mira hacia la cámara de forma oblicua, este método de muestreo isotrópico provocará cierto alias y la anisotropía resolverá este problema en la mayor medida.

Mapeo de textura de relieve (2 tipos principales)

La tecnología de mapeo de textura de relieve se puede utilizar para simular los detalles de relieve de superficies rugosas perturbando el vector normal de la superficie.

Principio: el mapeo de relieve es una extensión de la tecnología de reproducción de color complementaria, pero en la reproducción de color complementaria, las normales en la superficie del polígono cambiarán y este vector se utiliza para calcular el brillo de este punto.

Método 1: Registre el número de símbolo (bu, bv) para compensar la normalidad.

Método 2: registre el campo de altura y utilícelo para calcular la diferencia de dirección. -> Dibujar

Mapeo de textura de relieve

La forma más sencilla es calcular directamente el brillo de la luz difusa, sin necesidad de realizar cálculos de iluminación.

Paso (1) Dibujar un mapa de medio brillo.

(2) Utilice color inverso para dibujar un mapa de semiluminancia ->;

(3) Realice operaciones de fusión de productos en los resultados, resultados del cálculo de iluminación de vértices y mapeo de textura.

b) Mapa normal: ingrese el mapa normal, registre la normal de la superficie perturbada y la fuente de datos es la altura.

Dado un modelo y un diagrama normal:

(1) Para cada polígono, transforme el vector de fuente de luz a las coordenadas del espacio tangencial local en cada vértice;

p>

(2) Normalice el vector de fuente de luz interpolado de cada píxel;

(3) Haga clic en el vector de fuente de luz y la normal registrada en el mapa normal para obtener el componente de difusión;

(4) Interpolar el vector de medio ancho para calcular el componente de resaltado

(5) Fusión de textura y color para obtener el efecto final.

c) Mapa de detalles: la fuente de la textura normal no solo puede ser el mapa de altura, sino también las propiedades de la superficie del objeto, como normal, color, material, etc. Esta textura se denomina proceso de creación de textura detallada:

(1) Simplifique la malla de alta resolución en una malla de alta resolución.

(2) Parametrizar la malla de baja resolución y establecer una correspondencia uno a uno entre la malla y la textura detallada.

(3) Rellene la textura de detalle de acuerdo con los detalles de la superficie de la malla de alta resolución.

Tecnología Billboard y pseudocódigo

La tecnología Billboard utiliza un cuadrilátero texturizado y su imagen de textura es la imagen del objeto representado por Billboard, es decir, se utilizan rectángulos en lugar de objetos para generar imágenes gráficas de objetos. El cartel se coloca en el centro de la ubicación del objeto que representa, cambiando según se mueve la cámara, siempre de cara al usuario. El paso clave en esta técnica es la rotación del cuadrilátero alrededor del eje de simetría, cambiando en la dirección hacia el punto de vista.

Métodos de generación de sombras (master 2 tipos)

Sombra plana: el algoritmo de generación más simple. La idea principal es proyectar el objeto ocluido en el plano ocluido a lo largo de la dirección de la fuente de luz. En el plano Se dibuja en un objeto bidimensional y el resultado del dibujo produce directamente la sombra del objeto ocluido. Limitaciones: Ya no se pueden producir sombras en superficies no planas ni en superficies cóncavas; ¿cómo controlar el color de las sombras?

Algoritmo de mapa de sombras: Textura precalculada, incluyendo la distancia más corta desde el objeto de la escena en cada dirección de emisión de la fuente de luz. Al dibujar, la distancia entre la parte visible del punto de vista actual y la fuente de luz se calcula y se compara con la distancia reservada por el mapa de sombras en la dirección correspondiente. Si el primero es mayor que el segundo, significa que hay un punto de oclusión entre el punto visible y la fuente de luz, por lo que está en sombra. Es decir, se utiliza un mapa de profundidad producido parándose frente a una fuente de luz y mirando a lo largo de la normal a la fuente de luz para detectar si los píxeles del objeto en la escena están en sombra. La desventaja es que las posiciones de la fuente de luz y el objeto son relativamente fijas y la precisión del cálculo es pobre en casos extremos, lo que lo hace inadecuado para situaciones de tiempo dinámico con precisión de píxeles.

Algoritmo de volumen de sombra (importante): la idea central es considerar la sombra como la intersección del volumen de sombra y el objeto ocluido en la escena.

Algoritmo de volumen de sombra de plantilla probado en profundidad.

Flujo del algoritmo:

Permite escribir buffer de color y buffer de profundidad, activar la prueba de profundidad, apagar la fuente de luz;

Dibujar todas las escenas a través de las propiedades de superficie de los reflectores y otros objetos;

p>

Calcule los polígonos que forman la superficie del volumen de sombra;

Desactive la escritura en el búfer de color y en el búfer de profundidad;

Si el punto de vista está dentro del volumen de sombra, el búfer de plantilla se inicializa en 0; de lo contrario, es 1;

Establezca la función de plantilla para que pase siempre y la operación del valor de la plantilla es: al pasar la prueba de profundidad, aumente en 1;

Habilite la función de eliminación de la cara posterior y dibuje polígonos de sombra;

La operación para configurar el valor de la plantilla es: al pasar la prueba de profundidad, reste 1;

Active la función de eliminación de superficie delantera y dibuja el polígono de sombra;

Establece la función de plantilla para determinar si es igual a 0, la operación de valor de plantilla está vacía;

Enciende la fuente de luz y dibuja todas las escenas;

En pocas palabras, el algoritmo consiste en dibujar una línea de visión desde el punto de vista hasta el objeto. Cuando la luz entra en el volumen de la sombra, el valor del búfer de la plantilla aumenta en 1, y cuando la luz sale del volumen de la sombra, el valor de la plantilla disminuye en 1. Si el valor de la plantilla es cero, significa que el número de veces que entra y sale del volumen de sombra es igual, lo que naturalmente significa que el objeto no está en el volumen de sombra.

Ejemplo: en la imagen de arriba, la línea de visión es tres dentro y una fuera, y el valor de la plantilla es 2, lo que significa que el objeto está en el cuerpo de la sombra y tiene una sombra.

Algoritmo A* y tecnología de descubrimiento de rutas

A*: tecnología de búsqueda heurística (utiliza una función heurística, pero la desventaja obvia es que no puede garantizar una búsqueda exitosa cuando hay una solución) .

Función de evaluación: f '(n) = g '(n)+h '(n)

Donde f'(n) es la función de evaluación, g'(n) es el valor de la ruta más corta desde el punto inicial hasta el punto final, h'(n) es el valor heurístico de la ruta más corta desde n hasta la meta.

Idea básica: seleccione el siguiente estado n para que f(n) sea el más pequeño de la cola; si h(n) se estima con precisión, este método es factible.

La condición final es: si y sólo si el estado objetivo se selecciona de la cola de prioridad.

A* no necesariamente encuentra el mejor camino.

GluLookAt realiza una perspectiva itinerante en primera persona basada en el teclado.

En términos generales, hay dos formas de implementar juegos de perspectiva en primera persona, una es mover la escena y la otra es mover las coordenadas del ojo. El método para mover la escena es relativamente simple. GlTranslatef y glRotatef se pueden usar juntos, pero generalmente solo se usan cuando la escena es simple y el personaje es único. Varios cálculos del personaje (como coordenadas en tiempo real, colisión). No son fáciles de implementar y no se recomiendan. El método de coordenadas del movimiento ocular es muy flexible. No tiene ningún efecto sobre la escena ni sobre el estado del personaje. Generalmente, siempre que esté configurado para seguir el movimiento y la rotación del protagonista, se puede lograr el efecto visual de la perspectiva en primera persona.

Void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble upx, GLdouble upy, GLdouble upz);

Esta función define la matriz de puntos de vista y se multiplica por la matriz actual. Eyex, eyey, eyez y Eyez definen la posición del punto de vista; las variables centerx, centery y centerz especifican la posición del punto de referencia, generalmente el punto en el eje de la escena hacia donde apunta la cámara; y las variables upz especifican la dirección del vector ascendente. GluLookAt implementa navegación en perspectiva en primera persona basada en el teclado. El código es el siguiente:

//Seguimiento de la dirección del punto de observación static GLfloat g_eye[]={0, 8.0, 0} //Ver posición del punto static glfloat g_look [] = {0.0, 0.0, 0.0 }; //Punto de vista estático GL float g _ Angle =-90.0;

/Si el ángulo inicial se establece en 0, inicialmente mirará en la dirección positiva del eje X, y si se establece a -90, mirará la dirección negativa del eje Z, por defecto De acuerdo con los hábitos de diseño.

Velocidad de flotación = 0.2f

if (KEY_DOWN(VK_SHIFT)) velocidad = velocidad * 4; // Aumenta amplitud

if (KEY_DOWN(VK _ LEFT) ))g _ Ángulo—= velocidad * 2; // Cada vez que presiones el botón izquierdo, gira 2 grados.

if(KEY_DOWN(VK_right))g_Angle+= speed * 2; //Cada vez que presiones el botón derecho, gira 2 grados.

rad _ xz = float(3.14159 * g _ Angle/180.0 f); //Encontrar los radianes //Calcular los parámetros requeridos en las funciones SIN y COS. if(KEY_DOWN(33))g_elev+= 0.2f;

if(KEY_DOWN(34))g_elev-= 0.2f;

if(g _ elev <-100)g _ elev =-100;

if(g_elev>100)g _elev = 100;

//Si por dirección La tecla avanzará en la dirección después de la conversión del ángulo y la velocidad es el tamaño del paso de cada avance. Puede avanzar en la dirección del ángulo existente a través de las funciones de sin y cos.

if(tecla abajo (VK arriba)){

g _ eye[2]+= sin(rad _ xz)*velocidad

g _ eye[0]+= cos(rad _ xz)*speed;}

//Si presiona la tecla de dirección, el ángulo se moverá hacia atrás a lo largo de la dirección después de la conversión, y la velocidad es el tamaño del paso de cada avance. Puede avanzar a lo largo de la dirección del ángulo existente a través de las funciones de sin y cos.

if(tecla abajo (VK abajo)){

g _ eye[2]-= sin(rad _ xz)*velocidad

g _ eye[0]-= cos(rad _ xz)*speed;}

g _ eye[1]= 1.8;

//Punto de observación

g _ look[0]= float(g _ eye[0]+100 * cos(rad _ xz));

g _ look[2]= float(g _ eye[2] +100 * sin(rad_xz));

g_look[1]= g_eye[1];

glload identidad(); //Restablecer vista

gluLookAt(g_eye) [0], g_eye[1], g_eye[2], g_look[0], g_look[1]+g_elev, g_look[2], 0.0, 1.0, 0.0);

Volver a VERDADERO

2 División del trabajo y responsabilidades en el diseño de juegos

Diseñador de juegos: Diseñador jefe, que tiene una comprensión general y una comprensión prospectiva del juego a desarrollar y consideraciones estratégicas.

Diseñador asistente, asiste al diseñador principal en la implementación, gestión y actualización detallada de todos los documentos de diseño.

Los diseñadores de niveles diseñan la estructura interna del nivel, incluida la arquitectura, la luz y las sombras, la ubicación de los objetos, la configuración del enemigo y cooperan con la edición de nivel artístico.

El guionista profundiza el juego ordenando la historia y la caracterización de los personajes.

Programador, programador principal, asistente derecho del diseñador principal, evalúa y refina la visión del diseñador principal desde una perspectiva técnica, define la estructura principal del programa (módulos y sus relaciones, estándares de código); y especificaciones de interfaz); cooperar con el productor para manejar la gestión de proyectos de software (por ejemplo, si se debe anular la reescritura de código).

Programadores ordinarios: programadores de reglas básicas de juegos, programadores de IA, programadores 3D, programadores de UI, programadores de física, programadores de redes, programadores de herramientas.

Diseño artístico: director de arte, que trabaja bajo la dirección directa del diseñador principal. El trabajo más importante es ayudar a establecer un estilo visual unificado para todo el juego (configuración de color, trasfondo cultural, patrones especiales, personajes). estilo de diseño, estilo de diseño de interfaz, arte Bibble); comentario sobre el trabajo del artista.

Diseño de arte conceptual, dibuja de forma sencilla y rápida varias soluciones visuales posibles (bocetos de diseño de personajes, diseños de escenas, elementos básicos, etc.);

Artista 3D, software de modelado 3D: Arquitectura, animación de personajes, títulos y escenas

Clipart 2D, software de dibujo 2D (fondos y sprites), materiales de modelo 3D.

Productor, productor interno: el responsable general del proyecto, responsable de la formulación, implementación y seguimiento del plan; el puente entre el equipo del proyecto y la contratación y gestión de personal del mundo exterior; Asistente de producción: todos los asuntos triviales para garantizar el buen desarrollo del juego

Productor externo: la empresa editora del juego (inversor) decide si agregar la próxima inversión para el director de la empresa de desarrollo del juego en función de la Progreso y efecto del desarrollo del proyecto. Puede supervisar varios proyectos al mismo tiempo.

Tester: Trabaja bajo la guía del programador principal. De acuerdo con las características del programa del juego, participe en la formulación de un conjunto de mecanismos de prueba, informes, modificación y revisión, redacción de informes de prueba, formulación de planes de prueba y orientación y coordinación del trabajo de los probadores generales.

Probador universal: Persona que juega como profesión y se gana la vida jugando. Los errores en el programa deben descubrirse, registrarse cuidadosamente y enviarse al evaluador principal de manera oportuna.

Otros diseñadores: diseñadores de interfaces de interacción persona-computadora, mantenedores de redes, secretarias.