|
||||||||||
| Foros de discusión » Snippets | Fecha y hora actual: Vie Sep 10, 2010 12:50 pm |
![]() |
Terrenos Fractales |
| Terrenos Fractales |
Hosuko![]() Iniciado
|
Os dejo un ejemplo de terrenos fractales que he creado; no se porqué motivo en el portátil me genera el terreno 4 veces más rápido, sin envargo los FPS del portátil van a 80 mientras que en el de casa pasan sobradamente los 200.
Teclas: < Espacio > Genera un nuevo terreno < Enter > Quita / Pone el agua < Cursor > Moverse por el terreno
Voy a aprovechar estos dias para meterle mano a los bloques de memoria a ver que tal para crear un sistema Lod para el terreno y más tarde Frustum Culling. |
|||||||||
Pasky![]() Experto
|
Me da problemas al compilar.
Hay "return" donde deberia haber un "EndFunction" y viceversa. Sale mensaje de matrix inexistente.... No me va Salu2. |
|||||||
Freezer![]() Experto
|
Tampoco puedo compilarlo. ¿Qué versión del DBpro tienes?
|
|||||||
|
||||||||
Hosuko![]() Iniciado
|
A mi me va bien.
Lo del Return en el lugar de un EndFunction no es posible, pues sólamente hay una función y tienen su endfunction, y dentro de la función he usado varios gosub y por ello hay return. Mi versión en la 1.071; lo de la matrix inesistente prueva en cambiar Matriz_Numero por un 1 y ya está, pero insisto, lo he copiado del foro al darkbasic y me va bien. |
|||||||
Hosuko![]() Iniciado
|
Lo he compilado y guardado en mediafire.com
http://www.mediafire.com/file/2ikxuowj15o/Planeta3.exe Está limitado a 60fps porque compilado los fps me subia a más de 300, es un terreno pequeño. < Espacio > Gener a un terreno nuevo < Enter > Quita / Pone el agua < Cursor > Moverse por el terreno |
|||||||
Dione![]() Iniciado
|
Me descargo el archivo, lo ejecuto y no hace nada, absolutamente nada, se ejecuta y se queda pillao
|
|||||||
Pasky![]() Experto
|
Y se queda pillao porque al darle al F5 para compilar y ejecutar saca un mensaje de error en una linea, pero este compilador es tan chulo que tira pa lante y lo ejecuta.
Lo ejecuta y se queda la pantalla en negro y de ahi no lo sacas. El codigo tiene varios errores. Pero lo que mas me ha sorprendido es esas cosa "rara" que ha hecho el programador de crear una funcion con varias subrrutinas anidadas dentro. Eso son ganas de llamar la atencion y complicar las cosas innecesariamente. Asi que he sacado las subruinas de dentro de la funcion. Al hacerlo salta a la vista el primer error. Falta el "return" de la ultima subrutina. Asi ya compila, pero da un mensaje de error en tiempo de ejecucion. La variable "Matriz_numero" vale 0. Por eso usó una funcion y las subrutinas dentro. Todo por ahorrarse declarar esa variable, xD. Bueno, ese codigo se puede escribir de 100 maneras. Yo lo he "apañao" para que funcione, aunque tampoco se ha quedado de una forma muy correcta. No entiendo como le puede funcionar a Hosuko, pero si dice que le va, vamos a creerle. Pero ciertamente a mi y a vosotros no. Aqui quedara la cosa, como otro de los grandes misterios del siglo XXI. xD, xD
Por cierto, muy bueno el codigo. |
|||||||||
Hosuko![]() Iniciado
|
Gracias por mirarte el código Pasky y gracias por llamarme programador pues nada más lejos de mi trabajo.
El codigo tiene varios errores , pues si me cuentas como lo has mirado para ver donde están, pues yo programo un poco a ciegas y por eso mis códigos son un poquito raros. Pero lo que mas me ha sorprendido es esas cosa "rara" que ha hecho el programador de crear una funcion con varias subrrutinas anidadas dentro. . Fácil de explicar, cuando conseguí que me funcionara, intenté meterlo todo en una función para usarlo desde fuera; yo lo uso simplemente poniendo #Include "GeneradorPlanetaF.dba" y luego llamando a la función. Falta el "return" de la ultima subrutina. Tiene 3 subrutinas, o subruinas como tu le dices, solamente: Generador: - Crea las alturas Cuadrado: - Calcula las alturas medias Pintar_Planeta: - Pues simplemente eso, es donde vendrían las texturas con el código acabado. Y todas tienen sus Return. La variable "Matriz_numero" vale 0. Por eso usó una funcion y las subrutinas dentro. Todo por ahorrarse declarar esa variable, xD. . Pues no va a ser por eso y si, vaya fallo no ponerle el valor a Matriz_Numero, se me pasaría al preparalo todo en un solo código para postearlo aquí. No entiendo como le puede funcionar a Hosuko, pero si dice que le va, vamos a creerle. Pero ciertamente a mi y a vosotros no. Aqui quedara la cosa, como otro de los grandes misterios del siglo XXI. xD, xD . No lo entiend, incluso lo compilé y lo pude usar en el ordenador de un amigo sin ningún problema. Bueno, te agradezco que te tomaras la molestia de mirar el código. |
|||||||
Pasky![]() Experto
|
jajaja, perdona si fuy un poco acido en los comentarios pero creia que el codigo era un copy/paste, si llego a saber que era en parte tuyo habria sido mas comedido en mi tono, xD.
Pues hay una subrutina mas que añadir a la lista: "Iniciando". Que es precisamente el primer "gosub" que hay dentro de la funcion en el codigo que posteaste. Esa subrutina no tiene su "return". Lo de inicializar la variable, con el sistema de funciones no haria falta, pues le pasas un 1 como parametro, pero al desmantelarte el invento entonces si que hay que asignarle un valor. Digamos que "estaria bien" en tu codigo, aunque en la practica no funcione. La unica razon que se me ocurre para que a ti no te de errores de compilacion y a nosotros si es que al subir el codigo te "comieras" algo. Vamos, que tu codigo y el codigo que has dejado aqui tengan diferencias. La prueba es sencilla, no? Subete tu propio codigo y pruebalo. Si te funciona volvere a creer en Papa Noel, jajajaja. Y si programas, aunque sea poco, eres programador. Saludos y felices fiestas. |
|||||||
Hosuko![]() Iniciado
|
Si, ya vi el gosub iniciando, ha sido un error al crear la función, lo bueno es que a pesar de dicho error a mi me funciona y al crear el ejecutable y usarlo en el ordenador de una amigo que no tienen Darkbasic le va
El código es mio menos la textura del agua que la copie de The Games Creator, pues la vi y me gustó cuando buscaba el modo en el cual se texturiza una Matriz, pues no tenía ni idea de como hacerlo. El Algoritmo se llama Diamond-Square y lo miré aquí: http://www.gameprogrammer.com/fractal.html#diamond , no es muy difiícil de hacer aunque cometí varios fallos. He creado otro un poco diferente, está en 2d y tiene un zoom que será más o menos lo que usaré para el sistema Lod, lo he echo esta mañana así que no es más que un esbozo a ver si os va bien. Salen demasiadas "puntas" para mi gusto.
|
|||||||||
Pasky![]() Experto
|
xD, si llegas aponer ese codigo el dia 28 me creo que es una inocentada.
Me pasao horas mirando como un gili...la pantallica esperando que saliera el terreno. Horas!!! Al final lo he tenenido que cortar y ver el codigo. Moraleja: no ejecutar nada sin saber antes que hace. jajaja, xD, que ridi mas grande he hecho. Nada que criticar a tu algoritmo excepto una cosa: es leeeeeeeeeeento. Prueba a hacer lo siguiente. En las subrutinas "Dibuja" y "DibujaZoom" ponle "lock pixels" y "unlock pixels". Asi quedarian:
Pruebalo asi y ya me comentas que te parece. Salu2. |
|||||||||
Hosuko![]() Iniciado
|
La madre que.....a mi me tardaba unos 40 segundos pero ahora va rapidísimo, no tenía ni idea que existiera esa instrucción, muchas gracias, mañana miraré de hecharle un repasito al código.
Yo tengo un Pentium IV a 3.09Ghz, 1`5Gb de ram y una Gforce 8500Gt. |
|||||||
| Terrenos Fractales |
|
||
|
| Foros de discusión » Snippets | Fecha y hora actual: Vie Sep 10, 2010 12:50 pm |