Blogia
maduniversity

Cliente

Sky Rendering

He estado mirando webs donde hablara de como renderizar un cielo (he buscado en el google "sky rendering game"). A continuación estan las webs que he encontrado:

http://www.gamedev.net/community/forums/topic.asp?topic_id=86024

http://www.spheregames.com/files/SkyDomesPDF.zip
http://www.spheregames.com/files/SkyDomesPDF_SP.zip

En Angel Code hay 3 articulos bastante interesantes a los que se puede acceder desde la siguiente categoria Programming: Graphics/Simulation/Clouds & sky light. Los articulos son los siguientes:

A Simple, Efficient Method for Realistic Animation of Clouds
A practical analytic Model For Daylight
Real-time Cloud Rendering

Son un poco hardcore, pero se puede sacar bastante de ellos, mirad la siguiente imagen :)


Igual el siguiente articulo también puede resultar interesante:

Cloud Cover

Se pueden encontrar algunos articulos interesantes sobre otros efectos y/o materiales en:
http://freespace.virgin.net/hugo.elias/

Mapas

A continuación se van a exponer las distintas ideas sobre los mapas que se nos han ido ocurriendo.

- Hacer que el servidor vaya enviando los mapas para los clientes que lo requieran ==> Si es muy grande que envie solo el cacho que toque ==> Chungo => no compensa.... si el usr no tiene el mapa, ke se lo baje y se lo instale en un directorio de tal forma que para indicar el mapa unicamente hay que hacer un md5 (y asi no hace falta volver a bajarlo).

- mapa 2D de alturas, cada coordenada x,y indica la altura en el mapa 3d (así es como está ahora)

- Los arboles se generan al azar, pero todos los clientes lo ven igual (mismo generador de numeros aleatorios y misma semilla, y como se tiene el mismo mapa, se obtienen los mismo resultados)

- Usar mapas 2D de alturas junto a mapas 2D de objetos, donde en cada objeto se pueda especificar el tipo de objeto, tipo de textura, etc... por ejemplo se podrian definir arboles, paredes, edificios, puertas, etc... todo eso se pondria en una capa por encima de los mapas de alturas...
la ventaja es que mientras no caigan unas plantas encima de otras se pueden hacer tantos niveles como se quiera...

- usar 1 mapa base de alturas, 1 mapa base de objetos y 1 mapa por cada nuevo nivel de altura que se quiera introducir

- Usar mapas 3D a cacho ==> muy hardcore

- usar lightmaps con el 3dstudio ==> (By ADLER: yo no me acuerdo pero era facilito... te los hacía él sólo... y vamos, eso mejora los edificios q da gusto)

--> los ficheros TerrainBase, TerrainDetail y TerrainHeight (los 2 primeros están comprimidos con DXTC para q ocupen menos memoria de vídeo, esto se puede hacer desde el photoshop o desde el DX texture tool)

A continuación viene un extracto de una conversación que tube sobre mapas con Adler:
adler: sip... puede tener sus complicaciones, por aquello de la correspondencia entre un objeto 3d y un pixel del mapa, q igual se corresponde con 10 m2
[...]
adler: es muxo suponer hacer k cuadre todo mas k nada pk si haceis suavizado y cosas de esas pues par poner un edificio y k kede bien hay k asegurarse que el terreno donde se pone es plano sea la altura k sea sino malo...
amnio: claro k siempre se pueden solapar ambos y donde haya un edificio se pilla la media de alturas se pone esa altura media en todo el bloque de puntos y se suavizan los puntos adyacentes ;)
adler: ten cuidado con la optimización de la geometría del mapa igual tienes q desactivarla para q no produzca errores o reducirle la intensidad ((( MIRAR LA DOC )))

Ideas iniciales sobre el Cliente

El jueves pasado probamos por primera vez el juego y decidimos apuntar todas las ideas/comentarios que se nos ocurrieran al respecto, así pues aqui expongo una lista de todos ellos.

- Crear un menu para conectarse al servidor y otro para seleccionar las opciones de video, sonido, etc...para no tener que editar el archivo de configuracion config.xml

- Cuando se tiene la mayúscula pulsada y se mueve con los cursores hacia derecha o izquierda no gira, sino que anda lateralmente, debería girar más rápido. Se deben habilitar otros dos botones para el desplazamiento lateral.

- Anda mal, y cuando se para se queda como si estuviera andando

- Se pueden transpasar objetos y personajes

- Se mete el personaje en el terreno

- En el Windows XP debe estar deshabilitada la protección mediante Firewall que trae por defecto (sino el juego no va)

- Mejorar escenarios, efectos atmosfericos, personajes, objetos, etc...

- Crear modelos, skins, etc.. pa los personajes y NPC's ==> Poder elegir el personaje actual desde el menu

- Poder llevar objetos pa intercambiar o usar

- Algunos medicos pasan de ti y no te dan tratamientos, los que dicen q te dan uno luego no lo tienes en el menu de tratamientos (algo falla?)

- Algunos minijuegos petan

- detección de colisiones, se puede usar codigo de lo de RG, si la representacion 3d va sobre un mapa 2D, se podrían detectar colisiones mediante poligonos 2D, lo cual seria bte rapido

+ Hacer que en la predicción de movimiento no se sobrepase cierta velocidad de movimiento, porque aunque vayan muy rapido no van a ir tan follaos como a veces salen en los clientes (que salen moviendose a 400 por hora)

- ventanita de log con todo el texto de toda la sesion del juego (o poder mirar mensajes anteriores por si la gente escribe muxo, etc...)

- ventanita de información donde diga la resolución actual, el nick del jugador, el servidor al que estamos conectado, el numero de personas k hay, nº de bots, etc... poder ver nombre de otros usuarios, etc....

- cuando alguien entre/salga de la partida (o cualquier tipo de evento) mostrar en el log de los clientes (en un color especial, igual que cuando alguien solicita un tratamiento)

- Tener tres modos de entrada de texto. El normal 't', el susurro 's' y el modo comando '!'. En el ultimo modo seria el unico donde se interpretarian los comandos, en el modo texto o susurro aunque pusieras cosas como '!trata 0 perico' se deberia interpretar como un mensaje del jugador, y nunca como comando

- Cuando el comando sea incorrecto se deberia mostrar un mensaje en el log (de un color especial)

- Hacer mas robusto frente a caidas del server. Si se pierde la conexion ==> perder partida y volver a menú principal.

- (Establecer) Mostrar las puntuaciones de cada jugador

- Cuando aparezcan usuarios en la pantalla con los que se pueda iniciar algun tipo de tratamiento indicar de alguna forma (mediante un circulo en 3D sobre/bajo el usuario?)

- Diferenciar mediante skins bien claros entre los distintos tipos de jugadores (médicos, jugadores, enfermeros...)

- Al iniciar sesion/cargar el programa etc... mostrar una ventanita (recuadro) donde indique lo que está haciendo y alguna barra de progreso o alguna forma en la que el usuario sepa que no se ha quedado colgado.... (cargando texturas, realizando peticion al servidor, conectando...recibiendo datos..etc...)

- Hacer edificios (1 unico nivel? tipo DOOM, mediante mapa 2D? X niveles, mediante octrees i burradas similares?)

- Cambiar nombre de "DreamGfx Application" por la de "Mad University"

- A veces el cliente se mueve a traskilones

- Realizar un pequeño mapa que muestre donde estan los demas jugadores/edificos, etc...

- Asignar un ID fijo a cada tratamiento/minijuego (mediante el servidor), de tal forma
que siempre sea el mismo numero para el mismo tratamiento... sino es un cachondeo..

- Cuando el cliente no tiene servidor y no esta en modo standalone ==> PETA

- si el cliente esta recibiendo info del server o cargandola de disco (en plan cargar texturas y tal) que tarda su tiempo y todo eso ==> mostrar mensaje de lo que se esta haciendo

- que los pies esten siempre arriba del terreno

- al jugar a minijuegos hacer que se puedan leer mejor los textos de los usuarios

- una vez finaliza un minijuego mostrar quien gana y quien pierde (e introducir esta info tb en el log)

- mirar a ver porque los minijuegos van tan lentos (hacer una conexion directa entre cliente/servidor?)

- Permitir ver porcentajes de las enfermedades¿? poder preguntar a medicos y/o enfermeros ¿? igual estaria bien ver porcentajes actuales y que se vayan actualizando al ir consultando con los enfermeros

- Hacer agua y que cuando pase por encima se sumerja ==> Como ocurre ahora con las montañas, pero con agua transparente :)

- Cuando en un rango determinado aparezca otro jugador que coincida con algunos tratamientos con el usuario actual marcar dicho cliente de algun modo (mediante un msg de texto, mediante algun circulito bajo o encima de él (en el mundo3D)) etc...

NOTA: las ventanitas serian un recuadro del juego con un alpha, para ke se siguiera viendo el fondo del juego, etc...