Pregunta

En primer lugar, algunos historia de fondo:

Estoy haciendo lo que puede equivaler a ser un juego " roguelike " por lo que puede exersize algunas ideas interesantes Tengo que flotan alrededor en mi cabeza. El modo de juego no va a ser un mazmorras, pero en cualquier caso, se va a hacer en un fasion similar, con caracteres ASCII simple la pantalla.

Siendo que este es un ejercicio de auto, Me esfuerzo para codificar la mayor parte de yo mismo .

Con el tiempo me gustaría tener el juego ejecutable en arbitrariamente grandes mundos del juego. (Hasta el punto en que imagino havening el juego en red y la duración durante muchos monitores en un laboratorio de computación).

En este momento, tengo algo de código que puede leer y escribir en secciones arbitrarias de una consola de texto, y un sistema simple partición configurado para que yo pueda encontrar camino-eficiente.


Y ahora la pregunta:

He encontré con algunos puntos de referencia, y el mayor cuello de botella es la re-dibujo de consolas de texto.

Tener un mundo de juego tan grande requerirá una actualización inteligente de la pantalla. No quiero tener que volver a empujar toda mi memoria intermedia juego de cada cuadro ... necesito algunos consejos sobre cómo configurarlo para que sólo dibuja secciones del juego se han actualizado. (y no sólo los caracteres individuales como que tengo ahora)

He estado manipulando la consola a través de las ventanas windows.h, pero también estaría interesado en conseguir que se ejecute en máquinas Linux a través de un cliente Putty conectado al servidor.

He intentado adaptar algunas rutinas de procesamiento de vídeo, ya que es casi un 1:. 1 entre píxeles y carácter, pero no tuvo suerte

Realmente quiero una explicación sencilla de algunos de los principios detrás de ella. Sin embargo, algunos ejemplo (psudo) código sería bueno también.

¿Fue útil?

Solución

No voy a pretender entender esto, pero creo que esto es cerca del tema detrás de la legendaria Emacs Gosling volver a dibujar código. Véase su papel, apropiadamente titulado, "A Volver a mostrar Algoritmo", y también el cadena-a -string problema corrección .

Otros consejos

Use Maldiciones, o si necesita estar haciendo usted mismo, lea acerca de los códigos de control VTnnn. Ambos deben trabajar en las ventanas y en términos y consolas (y) de Windows * nix. También puede consultar el código fuente nethack en busca de pistas. Esto le permitirá cambiar los caracteres en la pantalla donde han ocurrido cambios.

  

Tener un mundo de juego que gran voluntad   requerir una actualización inteligente de la   monitor. Yo no quiero tener que   volver a empujar toda mi juego cada búfer   marco ... necesito algunos consejos sobre cómo   configurarlo para que sólo dibuja   secciones del juego se han   actualizado. (Y no solo individuo   personajes como que tengo ahora)

El tamaño del mundo del juego no es realmente relevante, como todo lo que necesita hacer es calcular el área visible para cada cliente y enviar esos datos. Si usted tiene una pantalla típica consola de 80x25 entonces usted va a enviar sólo 2 o 3 kilobytes de datos cada vez, incluso si se añade a los códigos de color y similares. Esto es típico de la mayoría de los juegos en línea de esta naturaleza:. Actualizar lo que la persona puede ver, no todo en el mundo

Si usted quiere experimentar con tratando de encontrar una manera de reducir lo que usted envía, a continuación, siéntase libre de hacerlo con fines de aprendizaje, pero estamos cerca de 10 años más allá del punto en el que es ineficiente para actualizar una pantalla de la consola en algo parecido a tiempo real y que sería una pena desperdiciar tiempo a solucionar un problema que no necesita fijación. Tenga en cuenta que el PDF vinculado anteriormente da una O solución (ND), mientras que el simple envío de toda la consola es un medio de O (N), donde N se define como la suma de las longitudes de A y B y D.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top