Bienvenidos a Blitz3D: Aprendamos a crear juegos juntos

Cibertronic - 03/05/2008 12:30
Hola a todo el mundo gráficadores y programadores. Aquí buscando gente interesada en aprender a programar en el Blitz3d, yo recién empiezo y ya me parece que le agarro la honda al programa este, es fácil, espero que podamos muy pronto estar creando nuestros juegos. Un saludo.
Cibertronic - 03/05/2008 13:40
Aky os dejo un personaje que dibuje y anime en 3ds Max. Resulto algo trabajoso, pero al terminar uno quiere más, poder aimarlo de forma interanctiva es el diguiente paso, por eso que empiezo a trabajar con el Blitz que es mucho más fácil de aprender que otros lenguajes.

Así empiesa mi ventura de aprender el Blitz3d, si alguien uiere acompañarme en esta aventura, empecemos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72370



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72371

Cibertronic - 03/05/2008 13:41
Perdonarme las faltas ortográficas, pero es difícil escribir con un cigarro entre los dedos.
el aprendiz 3d - 03/05/2008 14:18
Yo te acompaño encantado, a mí también me encanto el Blitz, pero no se mucho todavía, estoy aprendiendo con los tutoriales de Alexis en el mensaje ayudarías a hacer un curso gratis para creación de videojuegos? Son muy buenos, pero como no están muy avanzados y salen cada mucho tiempo tal vez me adelante un poco contigo, pero primero debo ponerme a tu nivel, que hasta ahora solo he hecho programas con texto, todavía me falta la parte gráfica 2d y 3d, y si tu me enseñas, o me muestras algunos tutoriales con los que hayas aprendido, ya estaré a tu nivel para seguirte el ritmo. Saludos.

Posdata: lo que sí se es animación 3d uso 3ds Max.
Caronte - 03/05/2008 16:27

Perdonarme las faltas ortográficas, pero es difícil escribir con un cigarro entre los dedos.

Pues apagalo, que te estás matando y eso es poco inteligente ¿no crees?
Cibertronic - 03/05/2008 18:47
Hola a todos nuevamente. Para no tener metas inalcnasables debido alpoco conocimienot del Blitz he decidido empezar con algo sencillo, luego bamos subiendo el nivel y añadiendo más cosas hasta conseguir nuestra metafinal tnerun respetable videojuego.

Empesare haciendo rodar uilizando las teclas del cursos una estrella en un campo plano.

Sencillo si lo conseguimos habremso dado nuestro priemr gran paso.

Aquí les dejo los modelos(3ds y texturas) y la vista prelimimar de nuestra portada de nuestro rueda rueda estrella (v0.01).

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72394



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72395

Cibertronic - 04/05/2008 00:07
Ya está listo. Gracias a sus aportes ya temeos el listo nuestro primer programa, vale hacer girar una bolita nfue nada difícil, pero el resultado es un programa muy chulo.equivaldira a nuestro hola mundo, eltan recordado mortal kombatmundo, pero esta vez en versión 3d.

El programa (25 líneas----nada mal corto, pero efectivo).

Graphics3d 640,480,16,2.

Cámara=createcamera ().

Light=createlight().

Piso=loadmesh(piso.3ds).

Positionentity cámara,0,100,-25.

Turnentity cámara,45,0,0.

Bola=loadmesh(bola.3ds).
While not keyhit(1).

If keydown(200) then.

Moveentity bola,0,0,0.5.

Rotatemesh bola,5,0,0.

Endif.

If keydown(208) then.

Moveentity bola,0,0,-0.5.

Rotatemesh bola,-5,0,0.

Endif.

If keydown(203) then.

Turnentity bola,0,1,0.

Endif.

If keydown(205) then.

Turnentity bola,0,-1,0.

Endif.

Updateworld.

Renderworld.

Flip.
Wend.

End.
Pepius - 04/05/2008 00:29
Pues sí, bastante simple. Te recomiendo no ir contando las líneas, el código fuente de un juego completo va a tener muchas más. Un saludo, suerte.
Cibertronic - 04/05/2008 00:33
Graphics3d 640,480,16,2.
* primer pasoantes de todo definimos el tamaño de la ventana.
640x480, y pedimos el uso de color a 16 bit, elultimo parámetro.
2 hace referencia a si va en ventana (2) o a pantalla completa (1).
cámara=createcamera ().

Light=createlight()
.
* creamos entidades(objetos) una cámara y una luz.
positionentity cámara,0,100,-25.

Turnentity cámara,45,0,0
.
* movemos la cámara 0 en x(______), 100 en y (| haica arriba), y -25.

En z(/ hacia atrás). Esdecir la ponemos arriba y hacia atrás.

Delpunto 0,0,0, para poder ver los objetos del 0,0,0.
* ya q3quela cámara esta algo arriba, la hacemos girar un poco.

Para que vea los objetos de abajo (agacha la cabeza el camarografo).
piso=loadmesh(piso.3ds).

Bola=loadmesh(bola.3ds)
.
* cargamos los dos objetos el piso y la bola, estos fueron exportados.

Desde el 3ds Max conservanso sus coordenadas.
* los materiales deben estar en la misma carpetaque los modelos.
* mucho cuidado de exportalos uno por uno y con la opción exportar.

Selecionados en el 3ds Max.
while not keyhit(1).
* esto es mientras no se preione la tecla Esc.
if keydown(200) then.

Moveentity bola,0,0,0.5.

Rotatemesh bola,5,0,0.

Endif
.
* if se presiona la tecla arriba (up) mueve la vola.5 hacia.

Delante (en su z).
*y tamiben se gira la malla en x 5 grados.

Algo similar para la tecla down pero con valores negativos.

Y para left y right solo se gira la bola (cambiando su eje realtvo).
updateworld.

Renderworld.

Flip
.
* estos 3 tíos van juntos por lo que en pruebas he podido ver.

Si falta uno de ellos suceden cosas extrañas.

Ala reja yatemos un prograita algo chulo.

Les dejo el código las texturas y los modelos a ver si le hacen algo especialy nos lo enseñan, usar estos modelos que estna corregidas sus coordenadas (eso en tres de max) y también el ejecutable para los que lo queréis probar.

Probadlo, que el verlo funcionar hace que se le echen unos aminos de seguir con esto.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72401



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72402



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72403

Cibertronic - 04/05/2008 00:53
Muchas gracias a todos, solo me detengo un momento para comentar el comentario de Pepius, si y bueno tiene razón me imagino contando laslíneas de n programa pequeño de 1000 0 2000 líneas, o peor aún uno grande miles de líneas.

Prometo no contarlas más.

Sino que ponía a relucir el nuero delineas 25(cons espacios y todo) pues me pareció algosignficativo frente a otros lenguajes, donde hacer la misma simpleza llevaría muchas líneas de código más. Un saludo a todos ya nos vmeos con la versión rueda rueda bolita v0.02, pero para eso ha buscarle sin razones al código.

Bueno segurok en estaetapa no se puedan encortar, pero vale haberque hallamos, para matar a los bug.
69recc - 04/05/2008 20:50
Hola Cibertronic yo soy de Colombia y estoy interesado en este mundo de la creación de juegos, pero la verdad no se ni por dónde empezar, soy otro novato lo único que se es modelar en 3dsMax así que, me ofrezco cuando necesite algo en 3ds Max estoy disponible a cambio de aparecer en los créditos.
estilo_sur - 04/05/2008 21:29
Bueno. Aquí tienes otro que empieza con Blitz y me voy a enganchar con este mundo de la estrella. Hace años hacía cosas interesante con div2 pero ahora estoy desactualizado.

Voy a bajar tu código y vemos que podemos hacer. Saludos desde Argentina.
crashon182 - 04/05/2008 23:17
Buenas buenas me anoto en el proyecto, oye estilo_sur, yo también soy de Argentina saludos.
Cibertronic - 04/05/2008 23:56
En hora buena, sguro que sus conocimientos en 3dsmax serán de mucha ayuda, ya le agarro al rograma, pero solo elemtal. Sin duda esto será bueno, por ahora estaos moviendo la estrella, pero si modelamos un coche la podemos cambiar y ya no sería rueda estrella.

Por ahora la cámara esta estática y veos a la estrella moverse a nuestra volutad, pues hagamos que la cámara sigua a la estrella, seguro será fácil, a ver cómo lo hacemos, me pongo a trabajar en eso.
Pepius - 05/05/2008 00:06
El mejor método para aprender a usar un programa es tener un fín de porque usarlo. Es decir: porque quieres aprender Blitz? Para hacer un juego? Vale pues, diseña primero tu juego, haz tus investigaciones en profesional de algo. Es decir, si vas a hacer un juego de coches, no vas a necesitar programar un sistema de munición, por ejemplo.

Por tanto, te recomiendo que decidas/decidáis antes que es lo que queréis hacer, y a partir de ahí investigar. Un saludo y suerte.
estilo_sur - 05/05/2008 02:04
Me parece bien definir un proyecto. A pesar de eso me interesa aprender el manejo de este lenguaje y por ahora vamos viendo que pinta con pequeñas cosas.

Por ahora les envío lo que hice con comentarios para que se pueda entender.

La cámara sigue al la bola.
estilo_sur - 05/05/2008 02:08
Bueno a ver si ahora lo puedo subir. Soy medio gil.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72437

Cibertronic - 05/05/2008 02:13
hola a todos aquí les dejo el código comentado de cómo hacer seguir a la estrella con la cámara o algo así

graphics3d 640,480,16,2

cámara=createcamera ()
light=createlight()

positionentity cámara,0,10,-25
turnentity cámara,0,0,0

piso=loadmesh(piso.3ds)
bola=loadmesh(bola.3ds)

ac#=0 ;ángulo global del objeto respecto al fondo z
dc#=25 ;distanica de la cámara a la estrella

while not keyhit(1)


;incrementos relatios para la estrella
x#=0
y#=0
z#=0
hay#=0

;incremento relativo para que la estrella ruede sobre si misma
ax#=0


;controlando los incrementos con las teclas del cursos
if keydown(200) then
z#=0.5
ax#=5
endif

if keydown(20 then
z#=-0.5
ax#=-5
endif

if keydown(203) then
ay#=1
ac#=ac#+1
endif

if keydown(205) then
ay#=-1
ac#=ac#-1
endif

;moviendo (relativamente)/girando el bobjeto en la nueva psicion con los incrementos obtenidos

moveentity bola,0,0, z#
rotatemesh bola, ax#,0,0
turnentity bola,0, ay#,0


;obteniendo las coordenadas absolutas del objeto
zc#=entityz(bola,true)
xc#=entityx(bola,true)

;posicionando la cmara atrás del objeto
positionentity cámara, xc# + DC# * sin(ac#), DC, zc#-dc# * cos(ac#),true
rotateentity cámara,15, ac#,0

;actualizando el mundo
updateworld
renderworld


flip
wend

end
.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72438

Cibertronic - 05/05/2008 02:14
El código va creciendo, pero para no molestar a Pepius no lo he contado. Espero que la puedan analizar y tal vez hacerlo más pequeño.
estilo_sur - 05/05/2008 02:17
Mas pequeño imposible. Solo agregue 2 líneas a tu código, amarrete con los Kb.
Cibertronic - 05/05/2008 02:29
Cámara=createcamera (bola). Excelente.
no había reparado que era posible hacerla aso de fácil.

Una ves más convencido que el Blitz hace las cosas mucho más fáciles, solo esperemos que nos permita hacer muchas cosas.
saludos a todos ya casi estamos listos, ahora las colisiones
pero antes tendremos que crear un escenario con algunas casas y o paredes, a ver si nos dan una manito los tigress en modelado 3d.
pero algo simple con paredes verticales después analizamos las pendientes .
aplausos para todos nosotros .
Cibertronic - 05/05/2008 06:52
Ya tenemos resuleta la forma de hacer que la cámara sigua a la bolita ye. Bueno aquí la bolita la haremos girar en un escenario con paredes, para conseguir la colisión.

He dibujado un escenario algo simple, pero estará bueno para las pruebas.

Revisar los códigos que le mando, el archivo estilosur usa la forma que nos enseño estilo sur, pero algo raro sucede cuando se escala la estrella a ver si encontrmaos como corregir ese pivoteo entre la estrella y la cámara al girar la estrella.

Ruedarueda1 es otra forma de hacerlo, bueno el código es más extenso, pero no reporta ese pivob, a ver cómo corregimos o integramos los códigos para hacer uno más robusto muy pronto estaremos haciendo las coliciones que la fuerza nos acompañe.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72441



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72442



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72443

Cibertronic - 05/05/2008 07:01
Yo tamiben provb el div, que programa sobre todo eso de poder utlilzar procesos(en otros leguajes hilos) ahí si se podía hacer cosas de forma fácil, un opwolf3d o un Doom nos salía rápido gracias asu modo 8, lasltima que no salió un div3, lástima que no corra en XP, hay un proyecto llamado fénix que usaba la misma sintaxis del di, v, pero también creo que por problemas legales, nunca vio la luz con raxzon los blenderadictos de este foro le echa unas ganas al software libre.

Bueno ojalá que salga otro así de fácil y así de potente con todas las herrmaientes que uno necesita (será el Blender? He oído también en este foro que permite programar y crear los videojuegos, viva el software libre). Un saludo a todos y esperemos que el Blitz nos de lo que estamos esperando de él.

Ha y bueno en mis ratos libre que no son muchos por cierto, se me cruzo una idea, que creen podría hacerse realida. Uds que opinan, y ¿estará dentro de las normas del foro?

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72447

Rompecabezas - 05/05/2008 09:39
Me apunto, aunque yo lo poco que se es lo que nos enseño crason.
Rompecabezas - 05/05/2008 16:23
Seguro que está dentro de las normas porqhabía una idea parecida en el otro mensaje, aunque el autor desapareció.
estilo_sur - 05/05/2008 17:52
Bueno muchachos. Les dejo la corrección. Camerarange cámara,1,3000. Establece el rango que visualiza la cámara desde 1 hasta 3000 píxeles.

Si el terreno es grande se aumenta.

Adjunto la corresccion saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72456

Rompecabezas - 05/05/2008 18:07
Me podéis hacer una aclaración? El Blitz es un lenguaje de programación y compilador ¿no? Entonces motor gráfico como tal no tiene ¿no? Por ejemplo, se le podría aplicar antialiasing?
estilo_sur - 05/05/2008 18:18
Es un Game Engine (motor de juego) que va renderizando hasta el alcance de la cámara. Tiene muchas funciones propias. Tengo un manual con todas las funciones disponibles por la noche lo subo para que puedan leerlo.

Deben tener algo de conocimiento en programación ya que son las fuciones con pequeños ejemplos que utilizan lógica.

Por lo que lo estuve leyendo se pueden hacer maravillas.

Veamos hasta dónde llegamos. Saludos.
Rompecabezas - 05/05/2008 18:19
Ok mientras vayáis poco a poco me apunto, hasta ahora el código lo entiendo sin problemas se me complica ahora con las colisiones, pero será cosa de leerse la ayuda y la lista de sintaxis.
Rompecabezas - 05/05/2008 19:26
Tiene un fallo muy raro y es que, al rotar rota como eje la cámara y no la bola.
estilo_sur - 05/05/2008 21:30
Lo paso arreglado. La bola estaba muy alta y deba hacia el efecto de giro de cámara. La baja un poco y esta arreglado. Vemos con que seguimos? Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72483

estilo_sur - 06/05/2008 00:12
Cumplo en adjuntar el manual con las funciones de Blitz. Sigo rompiéndome el coco con las colisiones. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72490

69recc - 06/05/2008 00:54
Bueno, aunque los juegos de carros no me gustan creo que por ser de los más fáciles y por mayoría de votos empezaremos con ese.

Aquí e un demo del carro, pero necesito ayuda cuando exporto del 3ds Max a *.3ds lo pasa sin texturas no sé cómo hacer hay que usar algún plugin o algo.

Ha ese carro es la demo es que no sé cuántos polígonos máximos se pueden usar así que, por ahora se hace la prueba con ese.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72491

Pepius - 06/05/2008 01:33
Si vais a hacer un juego de coches, sería interesante que os fuerais mirando ya el tema de las físicas. Suerte.
Cibertronic - 06/05/2008 02:47
Una ayuda a que se refiere Pepius con físicas, aquí hay un artículo que sepungo es algo parecido a lo dice Pepius, me parece, o es otro cosa eso de físicas. fí­sica creando videojuegos.

Será cierto lo que dicen en el ocmentario del enlace anterior.

Si bien estoy consciente de que las programación va de la mano con el razonamiento, lógica, y las matemáticas y muchas disciplians más no creo que sea como dicen ahí un 90%, la lógica si creo que debe de tener su 90% en la programación.

Bueno como ven con matemáticas pude hacerque la cámara gire alrededor de la estrella xc= xe + DC * cos (*.ac), por ejemplo, pero también vemos como stilo sur hizo lo mismo con una función que yo desconocía.

Sigamos adelante, ha y si lo gusta un juego de carros le camibamos el modelo y le ponemos un tanqke.

La idea no es hacer un video juego todavía, sino conocer todo la virtudes y defectos de Blitz, para luego saber que es lo que podemos hacer y que no hasta ahora me gustan los resultados y la simpleza del código, hasta yo pudedo entenderlo, por que debo felicitarlos parece que ud tienen unos conocimientos envidiables, arriba todos.
estilo_sur - 06/05/2008 03:12
Por mi parte aún no tengo intención de empezar un juego para después quedarnos varados en nada como casi todos los proyectos. Si no les parece mal podemos seguir agregando cosas al mismo para hacer un tutorial que facilite la programación entre todos y sirva para quienes se incorporen. Creo que es mejor que sigamos primero aprendiendo todas las funciones que tiene este lenguaje que, como vieron en el manual que les pase, son muchas y sería bueno poder aprovecharlas al máximo. Yo digo que mejor empecemos con colisiones a ver si entre todos buscamos un código que sea más simple, pero sin dejar de ser funcional. Cuando terminemos con todas las dudas empezamos con un proyecto concreto. Que les parece.

Ya que no hay en la red un tutorial, solo se encuentran funciones sueltas o códigos muy rebuscados para una función que Blitz tiene incorporada para usarse de manera sencilla, aprovechemos esta experiencia que puede también incorporar a más gente que no puede entender la lógica que por estar desarrollada con variables y rutinas externas (que es la manera profesional de hacerlo), se hace difícil de comprender para quien se hace de la programación por primera vez.

Soy partidario de seguir investigando y tener claro primero cómo funciona el lenguaje y cuando desarrollemos salga algo interesante.

Ideas tengo miles, y si se las comento se que les van a gustar. Pero prefiero dejarlas para más adelante cuando tengamos claro el lenguaje.
estilo_sur - 06/05/2008 04:11
Bueno, cargo una rutina sencilla de colisión. A ver si vamos modificando y mejorando el código para lograr la colisión entre el auto y la pared.

Aún no pude lograr que eso pase.

Veamos que logramos. Saludos.

Bueno edite el mensaje porque le agregue la textura al auto.

Dentro del código esta comentado como lo hice.

Todo viene bien fácil por ahora. Saludos.
(Si alguien le).

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72505

estilo_sur - 06/05/2008 04:26
Aquí va el auto deteniéndose ante la colisión con las paredes. Ahora hay que ver cómo hacemos para que la cámara no siga girando ante la pared y quede dentro de los edificion o detrás de las paredes. Saludos. (a mí mismo ya que nadie está leyendo ej).

Posdata: a ver muchachos si nos ponemos las pilas que esto parece progresar.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72504

whaitie - 06/05/2008 04:56
Hola amigo. Yo soy algo nuevo en este foro, tengo no ma 16 años, pero y eh echo mis juegos 3d, (muy simples ji). Yo, sinceramente, te recomiendo que usen uno de estos 2:
1º) Darkbasic pro.
2º) 3d Game Studio a6 o a7.

Simplemente la mejor manera de hacer videojuegos.

El gamestudio es muy interesante, por su sencillicima interfesace, y el poder usar comandos de programación me ayuda mucho, por que tengo una base de sprites 2d y parte de 3d que estoy tratando de mejorar.

Yo ahora estoy aprendiendo a modelar y a texturizar en 3dsmax por que el 3d game Studio se lo avanza y el max es mi programa de diseño 3d favorito.

El Darkbasic es increíble las capacidades y como aprovecha el DirectX 9, y es muy parecido a los códigos del Blitz.

Yo estoy haciendo un juego chikito de autos en 3d, por que tengo la base de sprites y 2d que ya es una tontería para mí.

Cuando lo termine les aviso, adiós y mucha suerte, pero está muy buena tu opinión, cuando termine mi proyecto capas que me les uno.

Adiós.
estilo_sur - 06/05/2008 05:17
Hola. Mi intención es adentrarme en XNA que es mucho más potente sobre todo que ahora es gratis. (por un tiempo - Igualmente lo baje por las dudas).

Me decidí por el Blitz porque vi un trabajo terminado increíble en tan solo 10 megas y ese es el motivo por el que lo estoy viendo.

Descarte el dark porque me baje unos trabajos de la página oficial que eran deplorables y los presentaban como buenos.

No es mi intención vivir de esto es solo un hobby, pero no me vas a decir que no le hace un masaje al ego un buen desarrollo.

Por el momento no hay un juego establecido. Estamos probando las funciones del Blitz del que hay poca información en la web y estamos viendo que, con funciones sencillas se puede hacer mucho. Saludos y te esperamos cuando termines tu juego.

Quizá para entonces ya tengamos un proyecto claro.
Cibertronic - 06/05/2008 06:18
Hola a tods discuklpas por las demoras, pero mepaso al muy, o cuando probaba las coliciones me salía un mensaje invalid memory adress o algo así, me tenía cabezón, pero se solucionó cuando le puse los parches, que, de haberlo echo antes.

Aquí les paso los códigos haciendo lo que estilo sur nos dios de tarea hacer que no se meta la cámara en las paredes, fácil le puse también colisión a la cámara con el escenario a parte que cambie el tipo de colisión por deslizante para no detenernos sino ir rozando las paredes.

Pero ai otro problema la cámara se desliza, pero ya no vuleve asu lugar atrás del coche (por cierto, lo abrí en el max lo texturice y lo exporte nuevamente a 3ds, ya se ve con la textura).

Solucióne esto volviendo al código anterior donde a cada momento es calculado la posición de la cámara con seno y coseno, le subo los códigos usando la forma automática y la forma manual, a ver cómo lo hacmeos más pequeño o le damos algunos retoques.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72513



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72514



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72515

Cibertronic - 06/05/2008 06:28
Con respecto al dark yo también lo prove, pero el Darkbasic solamente, no el Darkbasic pro, y si era un programa tenía una demo de un escorpión que al caminar movía sus pies su cola y todo, además de unas luces, estaba muy bueno lasitma que solo tenía 30 días de uso (era una demo) y no encontré el programa completo, que, si no seguirá co nel, me encanto, pero bueno ambos son basic(dark, Blitz) luego cuando acabemos con Blitz habrá que meterse con dark hasta sacarle todo lo que tiene como pienso que lo haremos con Blitz.

Bamo gente ya nuestro programa esta bonisimo, y con un código bien sencillo, justo, así como para enganchar hasta al más principiante (osea yo).

Ahora. Rampas, o le ponemos sonido para oír quemar los neumáticos, en todo caso las dos cosas, supongo que, superado lo de colisones el resto estará más sencillo.
Rompecabezas - 06/05/2008 08:56
Vaya que diferencia de códigos entre uno y otro tenéis, los de estilosur los entinedo, pero los de cyber me siento en otro mundo, será cuestión de adaptarse.

Por proponer pequeños avances:
1.- Que el coche solo gire cuando está en movimiento (un coche quieto que gira sobre si mismo como que no).
2.- Que vaya acelerando (esto tiene pinta de ser complicado, quizás diciendo que en función al tiempo que se tiene pulsando la tecla vaya aumentando la velocidad de desplazamiento).

Ala mi propuesta, voy a ver si entindo el código de cyber.
Cibertronic - 06/05/2008 10:44
A ver qué les parece, el código esta echo a lo bruto, mañana reviso a ver si se puede usar alguna función, yo lhice el efecto de aceleración y frenado contadores e ifs ahí els envío el código y siempre también el ejecutalbe, primero pruevan y después vean el código así será más fácil saber lo que está pasando, después de todo cuando o programo yo también hago lo mismo pongo una línea veo que pasa, regreso al código corrijo algunos números nuevmaente ejecuto ha ver qué pasa y así voy viendo que sucede cuando yo hago algo, lepongo algo le quito lago y así.

Ya sé que no es la forma correncta de programar, tal como mi profesor me decía, el programador debe de saber cuales seran las consecuencia de cada linea antes de ejecutar, bueno, pero al final también le aprobé el curso.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72526

Cibertronic - 06/05/2008 10:48
Una ayuda, estoy haciendo la revista, de la que les mostré la pasta en un anterior comentario, pero estoy estancado tratando de definer una cosa:
Que es engine, motor gráfico, lenguaje de programación para juegos, y entorno gráfico.

Yale, ya buasque en Google, pero lo quencuentro enves de ayudar a despejar la duda más enriera, así en sus palabras, tan fáciles de entenr me podrían explicar que son. Gracias.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72528

Rompecabezas - 06/05/2008 11:16

Una ayuda, estoy haciendo la revista, de la que les mostré la pasta en un anterior comentario, pero estoy estancado tratando de definer una cosa:
Que es engine.

Motor gráfico.

Lenguaje de programación para juegos.

Y entorno gráfico.

Yale, ya buasque en Google, pero lo quencuentro enves de ayudar a despejar la duda más enriera, así en sus palabras, tan fáciles de entenr me podrían explicar que son. Gracias.

Game engine: motor de juego - Wikipedia, la enciclopedia libre.

Motor gráfico:
Estaría dentro del Game Engine.

Entorno gráfico (los menús de alrededor de la pantalla): interfaz gráfica de usuario - Wikipedia, la enciclopedia libre.

Lenguage de programación: lenguaje de programación - Wikipedia, la enciclopedia libre.

Solucionado espero que te aclare algo.
Rompecabezas - 06/05/2008 11:17
Por cierto muy chulo de la aceleración y tal, quizás si fuese un poco más rápido mejor, pero eso ya lo podemos tocar cada uno.

Que es lo siguiente?
estilo_sur - 06/05/2008 17:13
Bien va mejorando. Aunque preferiría que utilicemos las funciones que tiene incorporadas el Blitz para aprovecharlo al máximo.

Ahora no tengo tiempo de revisar el código, pero cálculo que no hace falta usar las trigonometricas en un entorno preparado para la programación de juegos.

Sino sería mejor directamente pasarnos a XNA que no pone limites a tu imaginación.

Creo que hasta agarrarle la mano es preferible utilizar las funciones estándar del Blitz para, en primer lugar aprenderlas y sobre todo para quien quiera empezar pueda entender la lógica y con el tiempo avanzar en trigonometricas. Saludos.
Rompecabezas - 06/05/2008 18:37

Bien va mejorando. Aunque preferiría que utilicemos las funciones que tiene incorporadas el Blitz para aprovecharlo al máximo.

Ahora no tengo tiempo de revisar el código, pero cálculo que no hace falta usar las trigonometricas en un entorno preparado para la programación de juegos.

Sino sería mejor directamente pasarnos a XNA que no pone limites a tu imaginación.

Creo que hasta agarrarle la mano es preferible utilizar las funciones estándar del Blitz para, en primer lugar aprenderlas y sobre todo para quien quiera empezar pueda entender la lógica y con el tiempo avanzar en trigonometricas. Saludos.

Intenta hacerlo a tu modo que ha ti te entiendo más, no te enfades cyber, pero es que, las trigonometricas me lían.
estilo_sur - 06/05/2008 20:42
Aquí dejo un último retoque. Todo hecho sin trigonometria. Veanlo para ver que quieren retocar.
comentario.

Comando gosub.

Ejecuta una rutina aparte (en este caso tenemos que preguntar lo mismo dos veces y para no copiarlos dos veces hacemos una rutina).

Gosub girar.

Xx.

Xx.

Girar (al inicio de la rutina girar, se le pone un punto para que el.

Sistema reconozca que ahí comienza la rutina).

Xxxxx.

Xxxx.

Return (le dice que vuelva al punto donde inicio el salto a esta rutina y sigue.

Ejecuntando los comandos que siguen).

Dentro de la rutina girar primero preguntamos si esta colisionando con la pared. Si no colisiona entonces gira.

Porque está rutina? Simple, en los primeros if si estamos pulsando la tecla adelante o atrás entonces va a la rutina que lo hace girar. De esta forma no gira si no está andando. Para que preguntar si no gira cuando colisiona? Porque podemos estar presionando adelante y no avanza porque está colisionando, pero si gira sobre su eje. De esta forma ni avanza ni gira.

Para seguir hay que ir hacia atrás y lugor avanzar girando.

Espero comentarios. Saludos.

Perdón, olvide la aceleración la reviso y arreglo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72571

estilo_sur - 07/05/2008 01:50
Cambie las rutinas de preguntas para poder hacer la aceleración. Si hay alguna duda con el código pregunten. Si demoro en contestar es porque me cuesta un huevo entrar al foro.

Parece el cambio de servidor complico un poco las cosas.

Estoy viendo cómo hacer para conducir por una malla con relieve. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72580

Rompecabezas - 07/05/2008 09:07

Cambie las rutinas de preguntas para poder hacer la aceleración. Si hay alguna duda con el código pregunten. Si demoro en contestar es porque me cuesta un huevo entrar al foro.

Parece el cambio de servidor complico un poco las cosas.

Estoy viendo cómo hacer para conducir por una malla con relieve. Saludos.

Bueno va bien, ya casi andáis cyber y tu parecido.

Cosas que haría:
1- Que gire un poco más (a veces cuesta girar lo suficiente para tomar la curva, sobre todo hacia atrás).
2- Que cuando haya una colisión la velocidad pase a ser 0 por que colisionas y a la que dejas de tocar el objeto sle como si fuera un misil.

De momento nada más, voy a estudiar el código.
Cibertronic - 07/05/2008 09:23
Hola, haber aquí el código algo corregido para no tener cálculos trigo uso la forma de estilo sur de seguir con la cámara al coche (excelete).

He camibado las variables para que se pueda leer mejor el código.

Le añadí otra sección a la ciudad una más elevada, hay una rampa de acceso a esta parte, como el objeto colisiona con la ciudad no hubo que programar nada la cosa resultó por sí sola, solo añadí un efecto de gravedad para que al regreso el coche se deslice por la rampa hacia abajo.

Si en el anterior comentario rompecabesas ISO unos buenos comentarios a ver cómo los trabajo, por ahora solo esta solucionado el de retroceder, cabe señalar que en este código, a medida que auemnta la velicidad los giros se pueden hacer más rapicamente haber que les parece.
, por cierto, ya me estoy cansando, a ver si cambiamos a otro tipo para experimentar más funciones, sombras, escaleres nebiçlina, etc pues parece que el resto de modificaicones se hará mediante código y no por funciones Blitz, bueno todavía no término de revisar todo el manual para tener una idea de todas las funciones, pero hay un montón que esperan ser utilizadas(en un código simple, pero funcional), eso sí es cierto derumbe una sección de la ciudad para que no sea igual a la otra.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72586

Rompecabezas - 07/05/2008 09:29
Ya que puedo preguntar: Entitytype piso,1 . Entitytype Ferrari,2 . Entitytype cámara,3. EntityRadius Ferrari,3. Collisions 2,1,2,1.

Collisions 3,1,2,2.

Los entiti type son para sin más numerar los distintos colisionantes no.

El radio para definir el radio de la esfera de colisión del Ferrari?
Y en colisions que hay definido seria, por ejemplo, la primera Ferrari contra suelo, espera todo poligon (método), stop?
Dime si lo he entendido bien pls que así creo que ya lo abre entendido.
Rompecabezas - 07/05/2008 09:41
Como anido un if dentro de otro? Es decir, quiero poner. If x>0 y=8. Else. If x<0 y=-8. Else. Y=0. Seguro que así no es, pero bueno, como hago para hacer esto? Es que me da error.
Rompecabezas - 07/05/2008 09:42

Hola. A ver aquí el código algo corregido para no tener cálculos trigo. Uso la forma de estilo sur de seguir con la cámara al coche (excelete).

He camibado las variables para que se pueda leer mejor el código.

Le añadí otra sección a la ciudad una más elevada, hay una rampa de acceso a esta parte, como el objeto colisiona con la ciudad no hubo que programar nada la cosa resultó por sí sola, solo añadí un efecto de gravedad para que al regreso el coche se deslice por la rampa hacia abajo.

Si en el anterior comentario rompecabesas ISO unos buenos comentarios a ver cómo los trabajo, por ahora solo esta solucionado el de retroceder, cabe señalar que en este código, a medida que auemnta la velicidad los giros se pueden hacer más rapicamente.

A ver que les parece.

Por cierto, ya me estoy cansando, a ver si cambiamos a otro tipo para experimentar más funciones, sombras, escaleres nebiçlina, etc.

Pues parece que el resto de modificaicones se hará mediante código y no por funciones Blitz, bueno todavía no término de revisar todo el manual para tener una idea de todas las funciones, pero hay un montón que esperan ser utilizadas(en un código simple, pero funcional), eso sí es cierto.

Derumbe una sección de la ciudad para que no sea igual a la otra.

Esta genial ya vamos acercándonos a algo que, aunque no es un simulador podría para por un arcade con cuatro cosas. Y encima lo entiendo.
Rompecabezas - 07/05/2008 09:47
Vale había que usar el elseif, ya siento llenaros de dudas el mensaje.
Cibertronic - 07/05/2008 09:48
Aquí un ejempli de anidamiento de ifs, para determinar en que cuadrante se encuentra un punto en base a sus corednadas x, y if x>0 and y>0 then.

Estoy en el prmer cuadrante.

Else.

If x<0 and y>0 then.

Estoy en el segundo cuadrante.

Endi if.

Endif aunque en estos caso es mejor un case o un elseif enves de else.
Rompecabezas - 07/05/2008 10:02
Gracias así ya se otra forma de hacerlo.
Rompecabezas - 07/05/2008 10:14
Que es lo siguiente?
Rompecabezas - 07/05/2008 10:53
Podríamos crear ahora otro escenario (un interior) y hacer un dummi y empezar a sacar mejoras gráficas y luego movimientos con bípedos.
Cibertronic - 07/05/2008 11:04
Hemoss llegado lejos, y pensar que solo era una estrella rodando en lel prado verde, como crecen los crioss. Trabajo en hacer un escenairo interior, pero antes haber que arreglos de damos, un horizonte y algo que me muero que le pongamos es algo e sondio, un motor ronnroneando y acelerar roarr un giro.

Y si tiene aluien ya tiene un escenairo inteiror seria fabulosos, ha por cierto, tiene alguien half live 1 por ahí, me acuerdo wque en una carpeta tenía modelos de los personajes en md2 para usarlos, a ver si los consiguen, ya me gustaría echarle mano a Gordon creo que así se llama el tío no.
Rompecabezas - 07/05/2008 11:08
Un horizonte con hacer una caja grande y darme un material por caras ya tienes un cielo y horizonte, el sonido no tengo ni idea de cómo va.
Rompecabezas - 07/05/2008 11:12
Lo de Gordon dejamelo a mí que me bajo el hl en un momen.
Rompecabezas - 07/05/2008 14:09
Ya los tengo toma todos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72603

69recc - 07/05/2008 14:15
Pues yo puedo hacer el escenario solo díganme más o menos como lo quieren una ciudad? Un desieto una carretera? Ha quiero trabajar el horizonte sería bueno con un buen sol y sombras.
estilo_sur - 07/05/2008 17:47
Sería bueno un escenario a cielo abierto, con objetos en el camino y el terreno, dentro de lo posible que no se uniforme así podemos probar como seguir al piso. Saludos.
Rompecabezas - 07/05/2008 17:51
Ok pues hacemos uno cada uno y luego vamos poniendo el código y tal a ver si hoy a la tarde hago algo. Puedes pasar los.mld a max?
Cibertronic - 08/05/2008 05:08
Hola sí, están buenos los modelos, yo quería en formato md2, pero los mdl también se pueden exportar yo uso el Milkshape.

En este programa en el menú tools>Half Life>decompile hl mdl.

Extrae el modelo y los hueso (con movimiento) en formato smd luego.

Usamos file> import> Half Life smd para abrir el modelo y de ahí lo exportamos a 3ds y listo, (trabajosito, pero bueno, todo sea por tener algún personae ya echo y animado.

Usare esta técnica para exportarlo directamente a b3d y ais poder cargarlo en el Blitz, a ver qué resulta.
Cibertronic - 08/05/2008 05:51
Hola una pregunta que no cae en este tema, pero ya que les agarre confianza (amigos míos) como es eso del euphoria, yale ya busque en internet la mayoría de foros dicne el futor de los juegos etx etc ya los luego lo usan en fin como loritos repiten lo mismo.

Aquí en estos foros también leí, y bueno aquí al menos dicen algo distinto, al menos no le llaman motor de juegos, ya más centrados en este foro.

Pero así? Que hace euphoria, ya sé que permite hacer que el protagosita piense, se mueva y reacione con el entorno de forma muy natural y respetando todas las leyes físicas, pero después de seo que como se utiliza eso en un juego, eso se exporta, se carga desde otro programa a través de librerías, se programa directamente sobre el euphoria, que es lo que se hace con esas cosas tan bonitas que se ven en los videos de euphoria, en otras palabras como hacen el videojuego utilizando el euphoria.

Por fis desasnen a este asno pd, lo pongo aquí y no en otro lado, porque en otros foros y en otros temas de este foro la gente reniega mucho.
Rompecabezas - 08/05/2008 10:34
Pues por lo que he visto por ahí se trata de un motor de dinámicas de movimiento, se trata de que el bípedo al que se le aplica tiene un sentido de la supervivencia por así llamarlo si le disparas se pone la mano donde le disparas, si se va a caer intenta no caerse. Esto ahorra hacer ciertas animaciones y simplifica mucho el trabajo a la vez que hace que los movimientos sean más reales.

Como se imlementa? No lo sé la verdad, pero para empezar los rigging son distintos, no solo están formados por huesos sino también por músculos, así y el resto imagino que será algún código.
Rompecabezas - 08/05/2008 15:55
A ver si esta tarde hago un mapa para poner el PJ, aunque que conste que yo en 3dsmax soy nulo yo uso Maya, pero así voy aprendiendo, no tengo ni idea de cómo mapear.
Cibertronic - 08/05/2008 16:26
Hola a todos, yo también ya estoy avanzando buen no tanot con el modelo, sino con el personaje, bueno ya se es lo más faicl, pero así me tiene dando vuelta.

Cuando lo ánimo en 3dsmax fenomenal esta animado, pero cuando lo cargo en Blitz ya no se anima. Vaya y que tal es el Maya en qué formato exporta, Blitz puede abrir el 3ds, md2, x, talvesu no de ellos pueda exportar Maya.
Rompecabezas - 08/05/2008 18:48
De Maya puedes pasar a 3ds sin problemas exportando primero a.fbx.
Cibertronic - 10/05/2008 06:57
Hello mans. Aquí siguiéndome peleando con animaciones aquí les envío un ejemplo, la idea es tener un personaje que camine.

Por el momento el programa es solo un bugo que se curva, fue animado en Milkshape, ahora mismo estoy trabajando en el presonaje Barney(policía de half life) para animarolo y sustituir al tubo haber que les subo en unas horas ahí nos vemos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72797



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72798

Rompecabezas - 10/05/2008 10:22
Está gracioso lo complicado tiene que ser el hacer que cuando le des a avanzar ejecuta la animación de andar, pero solo hasta que la dejas de pulsar.
Rompecabezas - 10/05/2008 11:05
Puedes subir el modelo en un formato que pueda abrir con el 3ds Max? Que así aprendo a animar en 3dsmax.
Cibertronic - 10/05/2008 12:28
Hola nuevametne, aquí ya les traigo a barne aún galta texturizarlo fue todo un, el pasarlo de mdl a max, no son ocmpatrilbes los huesos al final solo le pase la malla y luego ya en 3dsmax le puse un Biped y lo naime y los esporte a *.b3d para esto se necesita un plugin pipeline (lo baje de internet).

Al menos ya camina, el código esta algo enredado, vueno ya con este modelo ya podremos buscar las funcones que hagan reducir al código les envío el modelo en 3dsmax.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72804



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72805

Cibertronic - 10/05/2008 13:04
A ver aquí le saque un escenario al giles(global iluminator, no sé qué más). Como siempre ejecuten el ejecutabla para ver cómo acuta el programa y después abren el código, sientan el poder primero es similar al anterior solo que la tener un secnario más bonito inspira más.

Bueno a darle al código como siempre utilizar las teclas de lcurso para animar (si algún nuevo llega.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72806



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72807

Rompecabezas - 10/05/2008 13:05
Se te olvido subir el código.
Cibertronic - 10/05/2008 13:09
Tubo es de barny en el laberinto. Piliruinas el código del ultimo.
Rompecabezas - 10/05/2008 13:18
Como triunfa el escenario.
Rompecabezas - 10/05/2008 13:33
Añadidas colisones, pero tiene dos problemas, el primero es que no hace el efecto de la gravedad y el segundo que no sé porque cuando cierro la ventana sale un error.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72811

69recc - 10/05/2008 15:48
Pues me estoy quedando botado yo aún sigo con el carro.
Rompecabezas - 10/05/2008 16:12
Tranquilo importante es que vayas entendiendo la sitaxis del código.
Mars Attacks - 10/05/2008 17:24
Aunque no llevéis un rumbo nada claro, al menos es bonito ver que tenéis entusiasmo y seguís adelante. Pero malditos, no escribáis de tan historia pena, que dan ganas de llorar con tantas faltas ortográficas básicas. La escritura y la programación se basan en respetar el léxico, la sintaxis y la semántica de un determinado lenguaje. Deberíais comenzar por cuidar estos aspectos en el que usáis para comunicaros, y después preocuparos por programar de la misma forma. La mitad de lo que habéis escrito no lo entiendo, o paso de leerlo porque me duelen los ojos.
Rompecabezas - 10/05/2008 17:59

Aunque no llevéis un rumbo nada claro, al menos es bonito ver que tenéis entusiasmo y seguís adelante. Pero malditos, no escribáis de tan historia pena, que dan ganas de llorar con tantas faltas ortográficas básicas. La escritura y la programación se basan en respetar el léxico, la sintaxis y la semántica de un determinado lenguaje. Deberíais comenzar por cuidar estos aspectos en el que usáis para comunicaros, y después preocuparos por programar de la misma forma. La mitad de lo que habéis escrito no lo entiendo, o paso de leerlo porque me duelen los ojos.

Vaya como te gusta decirlo vago.

Yo por mi parte pensaré que nos les y trataré de escribir bien.
Cibertronic - 10/05/2008 18:56
Hola a todos. El marciano al ataque tiene razón, mi porfesora de ortografía me mataria si me leyera, nuevamente mil diculpas por la mala ortografía, prometo leer dos veces antes de enviar.

Y, por cierto, si tenemos rumbo claro, y bamos por buen camino, sino ver los programas que hemos realizado hasta ahora, el bojetivo de esos programas, utilizar código Blitz para hacerlos pequeños, funcionales, y que nos sirvan de demos.
******************************************
** aprender ha programar en **
** Blitz basic **
****************************************** la razón, elemental, como podríamos hacer un videojuego en Blitz si no lo conocemos. Un saludo y me despido hasta el lunes.

Me boy ha visitar a mi mamá, un saludo a todas las mamas, mamacitas y mamas que aún no lo saben.
Cibertronic - 11/05/2008 17:26
Hola. No subieron los modelos en 3dsmax porque al subir losficheros en formato.max no se adjuntaban. Zipeado si deja subir aquí se los subo.

También el código lo zipe aquí se los envío en unos instantes revios el código enviado por rompecabezas a ver si puedo darle los ajustes que el propone.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72877



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72878



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72881

Cibertronic - 11/05/2008 17:44
Pues vale, parece que b3d solo soprta una sola malla, cuando realisen losmodelos de algún actor asegurence de que solo sea una malla, pues los modelos en mdl están hechos por muchos grupos y hasta ahora no puedo cargarlos en grupo lastima, porque esos modelos tienen todos los movimientos, tal cómo se puede apreicar en la imagen que les adjunto.
Ánimo a ver si le ponen color al modelo (o crean otro) que lespase en el anterior mensaje.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72883

Rompecabezas - 11/05/2008 17:59
Se puede mapear con la textura original sin problemas imagino. Voy a probar.
69recc - 12/05/2008 04:08
Esto es lo que llevo cambie al poli por un esqueleto_bip de 3ds Max, ya que el poli producía error, no creo que fuese por la cantidad de mallas porque el esqueleto_bip tiene más ¿no? Lo bueno del esqueleto que se es fácil de animar y de crear movimientos personalizados.

Bueno ya camina y corre ahora falta hacer la animación de saltar y rodar, también como que ya es hora de darle un arma para que se defienda.

Si alguien sabe algunos comandos para simplificar el código sería mucho mejor.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72913

Rompecabezas - 12/05/2008 09:02
Ya llego yo con mis detallicos. Cosas que veo, todo bien salvo: Las velocidades de desplazamiento sobre todo cuando anda debería de ser menor, por que la zancada que pega es menor de lo que se desplaza el personaje por lo que resulta un tanto extraño.
Rompecabezas - 12/05/2008 09:07
Me encanta el código por cierto sencillo sencillo.
69recc - 13/05/2008 03:21
Señores creo que encontré oro vean este pequeño juego, aunque parece algo ñoño creo que nos dará un empujón en la dirección correcta.

Las teclas a usar en el juego son las siguientes:
A - Arrastra el cubo.

S - Salta.

D - Dispara.

C - Corre.

X - Vista en primera persona.

Z - Acciona el pulsador.

Las flechas (cursores) mueven al personaje.

No se quien lo hizo, pero está muy detallado los códigos y en amado español.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #72972

Rompecabezas - 14/05/2008 09:31
Yo voto por intentar sustituir el giro con teclas por el ratón. Supongo que se podrá.
Cibertronic - 15/05/2008 06:58
Hola a todos, discullpen por ausentarme. El código anterio prácticamente tiene todo lo que necesitariomos ponerle a nuestro modelo bien, guay para recc.

Aquí les mando bueno algo retrazado pues veo que ya están bastante avanzados.

Es más utilizar el ratón eso so será ponernos a la altura de un buen game, ysando el ratón para el giro y w para avanzar u a y de para el strafe, eso será un buen reto.

Bueno a ver si le dan una mirara am icodigo, hice lo que sugirió rompecabesaz al ponerle un cubo con texturas para el horizonte si era fácil algo que no me gusta de barny es que está caminado como escaldado, a ver si trato de hacerlo caminar mejorcito utilizando las técnicas que el max nos(buena forma de aprender) da porque hasta ahora fue a lo bruto moviendo pierna por pierna (que manera).

También le puse dos cámaras más para verlo desde pociones diferentes el código esta comentado, pero como siempre primero ejecuten ejecutable, prueven el programa y luego revisan el código.

Manos a la hobra a utilizar el ratón, y hacer caminar a barny naturalemtne, correr agacharze saltar y todo eso como el modelo del ejemplo que nos trajo recc.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73117



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73118

Cibertronic - 15/05/2008 07:39
Aquí algo no es lo que buscábamos, pero, en fin uso del ratón es uso del ratón se trata de utilizar la ruiedita del ratón para acercar o alejar la cámara, les envío el código, utilizarlo con los archivos enviados en el anterior mensaje, sobrescriban el programa y ejecuten.

Acercar alejar cámara con la ruedita del ratón.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73119



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73120

Cibertronic - 15/05/2008 08:27
A ver algo más ahora si movemos el ratón, esta algo lento, pero lo bueno es que el ocdigo sigue chiquitín a ver qué os parece, ESI les envío solo el código, sobrescriban el programa con el resto de archivos de mensaje anterior
el código esta puesto remplazando lo que era los if key izquierdo girar, exactamente en el mismo lugar mx=mousexsped()
If mx>0 then.

Turnentity poli,0,-5,0
Elseif mx<0
Turnentity poli,0,5,0
Endif.

If mousex()=639 then movemouse 1,mousey()
If mousex()=0 then movemouse 640,mousey()
ha y para no tener problemas de que el cursor se salía de la ventana a otro lugar del escritorio tuve que ponerle a pantalla completa.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73122

Rompecabezas - 15/05/2008 09:19

A ver algo más ahora si movemos el ratón, esta algo lento, pero lo bueno es que el ocdigo sigue chiquitín. A ver qué os parece, ESI les envío solo el código, sobrescriban el programa con el resto de archivos de mensaje anterior.

El código esta puesto remplazando lo que era los if key izquierdo girar, exactamente en el mismo lugar.

Mx=mousexsped().

If mx>0 then.

Turnentity poli,0,-5,0.

Elseif mx<0.

Turnentity poli,0,5,0.

Endif.

If mousex()=639 then movemouse 1,mousey().

If mousex()=0 then movemouse 640,mousey().

Ha y para no tener problemas de que el cursor se salía de la ventana a otro lugar del escritorio tuve que ponerle a pantalla completa.

Se te olvido ponerle lo de pantalla completa, se te olvido lo de 16,1 de la resolución. Ya vengo yo con mis sugerencias, cosas que veo:
-El giro esta perfecto eres un crack.

Anda demasiado rápido, haría más lento tanto el desplazamiento como la animación.

Se te olvido hacer las colisiones.

Por ahora nada más que depurar, a ver si todo esto que he dicho lo hago yo para seguir entrenando.

Una pregunta:
¿Cómo haces para colocar las cosa (escenario, cielo personaje, cámara) vas poniendo un poco a ojo los valores? ¿hay algún editor de escenarios para Blitz 3d? Saludos.
Cibertronic - 15/05/2008 09:23
Haber algunos arreglos. Controles:
==========. Avanzar: flecha up. Retroceder: flecha down. A la izquierdo naturalmete flecha izquierda.

A la derecha lo mismo.

Girar: ratón.

Cámara: rueda del ratón.

El código se va haciendo moustrozo, pero todavía espero este legible, bueno habrá que ahora reducirlo o camiberle algunas cosas para hacerlo más peque, seguro muchas cosas, esta a lo bruto les envío todo nuevamente, no olviden ejeuctar el ejecutable y luego revisan l código.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73125



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73126

Cibertronic - 15/05/2008 09:29
Ok, no le puse las colicones porque ya vimos cómo se hacía y creo que modestia aparte que ya estamos algo expertos en eso.

Y si le ponemos haremos al código un poco grande y cuando alguien que reicen empiesa lo vea seguro sale corriendo la idea es códigos chiquitos que enseñen algo, y ahora incluso los códigos que estoy mandando están muy feos para mí mismo, me gustaría hacerlos más pequeños.
los otros lo iremos corrigiendo probando probando.
Rompecabezas - 15/05/2008 09:36

Ok, no le puse las colicones porque ya vimos cómo se hacía y creo que modestia aparte que ya estamos algo expertos en eso.

Y si le ponemos haremos al código un poco grande y cuando alguien que reicen empiesa lo vea seguro sale corriendo.

La idea es códigos chiquitos que enseñen algo, y ahora incluso los códigos que estoy mandando están muy feos para mí mismo, me gustaría hacerlos más pequeños.

Los otros lo iremos corrigiendo probando probando.

Ok, que viene ahora? Se os ocurre algo? Saltar?
Cibertronic - 15/05/2008 09:38
Como lo hago.
============= haber les explico un poco como trabaje con los modelos y como estoy haciéndolo ahora mismo.
modelos
Me distes los modelos, estos estaban en mdl son algo, así como un (*.zip) que dentro tienen archivos jpg(las texturas) y smd(los huesos y modelos) para abrirlos utilice el milksahpe este abre modelos de vairos tipos de juegos in serius Sam, Doom, Quake, (podrás conseguirlos) Milkshape también exorta a varios tipos yo lo abrí y lo exporte a 3ds.

En max abrí el 3ds y bueno ya en 3dsmax se hacen maravillas le puse hueso de un Biped, moví hueso por hueso, no use CS porque aún no sé y luego de animarlo y todo lo exporte desde el 3ds Max a b3d para esto itenes que ponerle un plugin al max, es gratis en Google ponle b3d pipeline y llevara a la página donde podrás idescargarlo.
escenario
El escenario que estoy usando es una demo que da el programa gile[s], que tamiben abre 3ds y exporta a b3d el Sky Cube lo baje de la misma página del pipeline ahí indica cómo hacerlo, bueno ya tu nos habías dicho cómo hacerlo.
la posición
Esa es al cha, mpu, todos los objetos salen en el 0,0,0, porque ahí los pongo con el 3dsMax(usan el mismo sistema coordenado), para ubicarlo donde mejor se vean al ojo le cálculo más o menos ejecuto y si hay algo que corregir le corrijo.
Rompecabezas - 15/05/2008 09:50

Como lo hago.
=============. A ver les explico un poco como trabaje con los modelos y como estoy haciéndolo ahora mismo.
modelos.

Me distes los modelos, estos estaban en mdl son algo, así como un (*.zip) que dentro tienen archivos jpg(las texturas) y smd(los huesos y modelos).

Para abrirlos utilice el milksahpe este abre modelos de vairos tipos de juegos in serius Sam, Doom, Quake, (podrás conseguirlos).

Milkshape también exorta a varios tipos yo lo abrí y lo exporte a 3ds.

En max abrí el 3ds y bueno ya en 3dsmax se hacen maravillas le puse hueso de un Biped, moví hueso por hueso, no use CS porque aún no sé.

Y luego de animarlo y todo lo exporte desde el 3ds Max a b3d para esto itenes que ponerle un plugin al max, es gratis en Google ponle b3d pipeline y llevara a la página donde podrás idescargarlo.
escenario.

El escenario que estoy usando es una demo que da el programa gile[s], que tamiben abre 3ds y exporta a b3d.

El Sky Cube lo baje de la misma página del pipeline ahí indica cómo hacerlo, bueno ya tu nos habías dicho cómo hacerlo.
la posición.

Esa es al cha, mpu, todos los objetos salen en el 0,0,0, porque ahí los pongo con el 3dsMax(usan el mismo sistema coordenado), para ubicarlo donde mejor se vean al ojo le cálculo más o menos ejecuto y si hay algo que corregir le corrijo.

O sea que podrías posicionar todo los objetos desde max ¿no? Eso está bien te sirve como editor de escenarios. Gracias por la molestia de informarme de todo, ya va tirando esto, ya va.
Cibertronic - 15/05/2008 12:03
Hola a todos, a ver si ahora si me doy un tiempo y pongo todo nuestro conocimiento ya en el papel aquí un bosquejo de lo que será la revista.

Si bien aún solo tiene un par de hojas, bueno por una primera piedra se empieza.

Algún comentario de que debe ir o no me pasna la voz.

Le agrege ahora si una paguini más es te fin de semana la pongo al día con nuestros avances en este foro.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73129



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73181

Rompecabezas - 15/05/2008 12:51
Esta chula a ver si podemos llenarla de mucho contenido.
estilo_sur - 15/05/2008 18:07
Muchachos, estuve ausente unos días. Por la noche me siento en el ordenador y veo lo que están haciendo. Como avanzaron.

Un abraso a todos.
Rompecabezas - 16/05/2008 13:08
Yo como mucho intentaría hacer que salte (aunque sin motor de físicas supongo que, será difícil hacerlo natural), y luego me pondría con punteros y estilo fps.
Cibertronic - 17/05/2008 08:04
Físicas? Quien me aclara a que se refieren con eso de phisicas. Para que salte y se Bea bonito es fácil, la cosa es la animación, si está bien animadito solo ejecutas la animación y SAS ya salto osea en la animación estará cambiando también su altura (y) y caerá con movimientos reales, luego eso solo desde blits bastara con animarle esa secuencia, digo no.

Ahora estoy animándolo saltando, ni bien lo consiga se los paso.
Rompecabezas - 17/05/2008 10:31

Físicas? Quien me aclara a que se refieren con eso de phisicas. Para que salte y se Bea bonito es fácil, la cosa es la animación, si está bien animadito solo ejecutas la animación y SAS ya salto.

Osea en la animación estará cambiando también su altura (y) y caerá con movimientos reales, luego eso solo desde blits bastara con animarle esa secuencia, digo no.

Ahora estoy animándolo saltando, ni bien lo consiga se los paso.

Pero en el momento en el que la caída del personaje sea a una altura mayor que desde dónde despego no sería un tanto raro?
juanyang - 17/05/2008 12:49
Buenas gente, he entrado por aquí de casualida. Primero me he entretenido viendo algunos dibujos hecho en 3d (son muy buenos) sobre todo para mí que no tengo ni imaginación para hacer una casa. Admiro el trabajo de Pepius, Fenix, Ballo, Daelon etc, etc y luego viendo vuestros códigos sencillos para Blitz. Bueno, pues ya que veo que esto es un curso y que todos queréis aprender y que habéis puesto un ejem, mío por ahí, pues me he decidido a registrarme y compartir algo de mis conocimientos de más de 7 años con Blitz. Me ha traído muy buenos recuerdos ver mi primer ejem, que hice con mi mujer. Por aquella época pensábamos hacer un Tomb Raider, hoy se que se puede, pero que hace falta grandes grafistas y con muchas ganas, y sobre todo mucho tiempo.

Bueno, la mayor parte de los ejem, son el principio del Blitz y por dónde hay que empezar, si os gustan pues ya iré poniendo más sobre sombras, luces, nieblas y TCP udp.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73296



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73297



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73298



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73299



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73300



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73301



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73302



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73303

juanyang - 17/05/2008 12:54
Y unos pocos más.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73304



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73305



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73306



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73307

Rompecabezas - 17/05/2008 13:10

Buenas gente, he entrado por aquí de casualida. Primero me he entretenido viendo algunos dibujos hecho en 3d (son muy buenos) sobre todo para mí que no tengo ni imaginación para hacer una casa. Admiro el trabajo de Pepius, Fenix, Ballo, Daelon etc, etc y luego viendo vuestros códigos sencillos para Blitz. Bueno, pues ya que veo que esto es un curso y que todos queréis aprender y que habéis puesto un ejem, mío por ahí, pues me he decidido a registrarme y compartir algo de mis conocimientos de más de 7 años con Blitz. Me ha traído muy buenos recuerdos ver mi primer ejem, que hice con mi mujer. Por aquella época pensábamos hacer un Tomb Raider, hoy se que se puede, pero que hace falta grandes grafistas y con muchas ganas, y sobre todo mucho tiempo.

Bueno, la mayor parte de los ejem, son el principio del Blitz y por dónde hay que empezar, si os gustan pues ya iré poniendo más sobre sombras, luces, nieblas y TCP udp.

Hola juanyang, esta mirando a ver si había escrito alguien ny de repente tu nick y digo, a mi ese nombre me suena de haberno visto por algún lado, luego he caído en el ejemplo que pusimos hace unos mensajes.

Ahora me pondré a ver los ejemplos que nos has puesto, espero que te veamos por el mensaje este más de una vez y nos ilumines con tu sabiduría.

Cuando profundicemos más en temas de desplazamiento acciones y demás no vendría muy bien que nos explicaras lo de las sombras, luces y demás. Un saludo.
juanyang - 17/05/2008 13:26
Oh, con las prisas he cometido un pequeño error. En el ejem. 2 (gravedad y colisión) no arranca. Para solucionarlo hay que corregir la función de carga de personaje y donde se carga smart, b3d, cambiarlo por smart.x, o bien copiar y pegar el smart, b3d que hay en el primer ejemplo. Disculpen el error.

No problema rompecabezas, si os gustan ya iré subiendo más cosas.
69recc - 17/05/2008 19:36
: : pues si son como el que mire hace algunos mensaje los voy a bajar de una porque son oro gracias por la ayuda a los novatos.
Mars Attacks - 17/05/2008 21:52
Antes de sigáis adelante, hay una cosa muy importante que tener en cuenta: cuando decimos a ver estamos apocopando (recortando) la expresión vamos a ver. Igual que diríamos vamos a cantar, vamos a correr, hay que decir a ver por vamos a ver. Ni haber (haberlos, haylos), ni haber, ni a ver, ni a ver. Pensad en el vamos a ver.

Hay miles de errores sangrantes en el resto de las respuestas, pero éste se está llevando la palma con diferencia. A ver si podéis ponerle remedio.
krateos_29 - 17/05/2008 22:06

Antes de sigáis adelante, hay una cosa muy importante que tener en cuenta: cuando decimos a ver estamos apocopando (recortando) la expresión vamos a ver. Igual que diríamos vamos a cantar, vamos a correr, hay que decir a ver por vamos a ver. Ni haber (haberlos, haylos), ni haber, ni a ver, ni a ver. Pensad en el vamos a ver.

Hay miles de errores sangrantes en el resto de las respuestas, pero éste se está llevando la palma con diferencia. A ver si podéis ponerle remedio.

Mars, coincido en que hay faltas que dañan a la vista, pero, no seas tan duro hombre que llevas unos cuantos mensajes en este tema criticando las faltas y muchos usuarios ya han dicho que tendrán más cuidado, al igual que yo dije en su tiempo.

En cuanto a mí, sigo este mensaje de cerca porque voy a utilizar este programa para hacer un recorrido 3d, así que, no os extrañen si más adelante pregunto dudas.

Posdata: de momento ya he entendido cómo funciona el programa de va una bola y vuelca. Suerte y adelante con el proyecto.
Mars Attacks - 19/05/2008 20:06
Es una cuestión de prioridades y pulcritud. La pulcritud en la escritura refleja de alguna forma la pulcritud en las estructuras mentales del individuo, y es importante mantener una disciplina de limpieza en lo que escribes. Programar no es más que escribir en un determinado lenguaje. Si eres pulcro en uno, eres pulcro en todos. Personalmente, no me llama en absoluto ponerme a bucear en el código de alguien que escribe haber en vez de a ver, porque lo mismo me encontraría con hifs o helses.

Escribir bien es importante. Más que programar. Y considero que estoy siendo mucho más blando de lo que debería, porque es triste que ha estas alturas de la vida sea tan difícil de encontrar a alguien que, simplemente, no le de patadas en la boca al castellano.
Rompecabezas - 19/05/2008 20:54
De acuerdo contigo al 100% Mars, pero te invito a que estos toques de atención los hagas particularmente vía mp (mensaje privado) y no respondiendo en los hilos, cosa que es bastante molesta, tanto para los que responden como para los que len. Saludos rompecabezas.
estilo_sur - 19/05/2008 22:52
Tengo tan poco tiempo que no puedo aportar nada aún sobre lo último que están desarrollando. Cibertronic, no abandones la búsqueda en cuanto a conocimientos de este lenguaje por las críticas de alguien que, hasta ahora, solo aportó eso sobre el lenguaje nativo y no sobre el de programación.

Ojalá tuviera más tiempo disponible para poder destinarlo a lo que me gusta en vez de dilapidar el entusiasmo de otra persona.

De cualquier forma podrías poner un poco más de esfuerzo para sortear tantos errores y de esa manera evitar la intromisión de quien solo quiera participar censurando.

Me uno a lo de rompecabezas, quizá en privado puedan debatir sus diferencias. Saludos a quienes utilizan su tiempo para aportar buenas ideas o para compartir lo que hayan aprendido de este lenguaje (que para eso estamos aquí).
Mars Attacks - 20/05/2008 00:24
Debatiría en privado nuestras diferencias si no fuera porque tanto o más molestas que mis intervenciones resulta la lectura pública de textos difíciles de leer. Esto no es por mí, es por el foro en general. La gente que lleva un tiempo aquí sabe que, como parte de la convivencia cítrica del foro, está la eterna lucha entre los talibanes ortográficos y los que usan el foro como un chat de sms ampliado.

Finalizo con esto, no es por tocar las pelotas. Es para poder leer un tema que me interesa sin que me suba la tensión. Por poder fijarme en el contenido en lugar del continente. Cuando pueda pasar de ese punto, entonces podré empezar con el lenguaje de programación.
Cibertronic - 20/05/2008 10:12
Hola nuevamente a todos. Aquí regresando después de haber echo algo para ganarme los frejoles. Aquí les dejo el código que estuve haciendo, esta algo lejos de nuestra meta, pero seguro que con los códigos que tenemos podremos hacerlo pronto, este tutor ya nos tiene muchas semanas.

El problema que tengo es con la animación, estoy pasando estos días aprendiendo a animar con el max, así que, ya espero hacer los movimientos de barni más naturales(sino cheken ir a la izquierda, que mov, más feos).

Como siempre primero ejecuten el código primero y después revisenlo, esta algo feo (bastante) pero ya con la ayudas y los manuales que nos pasaron seguro le hacemos unos arreglos porque yo también ya quiero que el tío est saque su arma, y a matar malos. Un saludo a todos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73528

Rompecabezas - 20/05/2008 10:35
Muy chulo, lo que veo (aunque igual más adelante se puede arreglar) es que el ratón tiene poca precisión y gira casi a trompicones. Por lo demás ya podríamos dar por finalizada esta parte. Te recomiendo para cuando animes personajes otras veces que, animes prácticamente todos los huesos para cada acción porque tú cuando andas no mueves solos brazos y las piernas sino también la cabeza y la cadera.
Cibertronic - 20/05/2008 10:51
Hola. Termine de revisar el código que nos mando juanyang y vale está rre super, con ese código prácticamente, nos ha dado la luz.

Adarle entonces con más ganas a los modelos.
69recc - 22/05/2008 03:50
No sé si soy al único que le pasa, pero el foro dura días sin dejarme entrar. Estoy tratando de hacer el personaje para mí juego, es un guerrero del futuro hay unas fotografías para que lo vean y lo critiquen a ver qué se le cambia, si pueden poner los enlace de algunas imágenes para guiarme mejor.

Ya que este terminado y con textura, se empieza con la animar.

Por cierto, que no tengo ni idea de que color va ser.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73711



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73712



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73713

Rompecabezas - 22/05/2008 09:17
Cuantas caras tiene? Porque tiene pinta de tener unas cuantas, lo veo trabajado, a ver si lo vemos con texturas.
Cibertronic - 22/05/2008 09:47
Hello mans lo que es yo también me canse de ver un policía de espaldas, por ahora estoy dándole animación a Ruby la encontré en TurboSquid. 3d models, plugins, textures, and more at TurboSquid.

Espero así si tener inspiración para seguir trabajando viéndole la espalda.

Por cierto, pero seguro ya lo saben, pero igual, en TurboSquid, pueden ver muchos modelos para inspirarse, los cuales pueden descargarlos(después de registrarse claro), bueno tienen un precio, pero hay algunos gratis.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73723



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73724

Rompecabezas - 22/05/2008 12:44
Yo voy a intentar centrarme en los juegos de coches, a ver si consigo sacar algo medianamente decente.
estilo_sur - 22/05/2008 17:04
Creo que está buena la idea de seguir con el auto. Voy a retomar el proyecto.
Rompecabezas - 22/05/2008 18:02
De todas formas, seguid compartiendo códigos por aquí, lo que me voy a centrar una vez tenga la base va a ser en optimizarlo un poco gráficamente, antialiasing, luces efectos de luz y así.
Rompecabezas - 22/05/2008 21:11
Ciber tienes un mensaje privado mío contéstame cuando puedas por mensaje privado por favor.
Darkn - 22/05/2008 22:59
Bueno, paso para decir que me apunto a esto ya que se ve que el otro curso a caído y, aunque ahora mismo no puedo dedicarle todo el tiempo que querría debido a los exámenes si que voy a intentar igualarme al nivel actual y de aquí a un mes estaré por aquí incordiando más a menudo.

Posdata: muy guapos los modelos.
Cibertronic - 26/05/2008 06:54
Hola a todos, aquí volviendo. Aquí le he añadido un par de paguinitas a nuestra revista, espero que ahora si pueda seguir añadiendo páginas por lo menos una al día.

A ver si le echan un vistazo.

Para los que reicen se enganchan les subo el código y los modelos de la actividad 1 de la revista. estrella, zip.igualmente para la actividad numero2: ruedav03.zip.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73952



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73953



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #73954

Rompecabezas - 26/05/2008 09:00
Mp recivido gracias vyber.
Cibertronic - 27/05/2008 10:20
Hola, han visto al tre[d].(creo que es de los mimos creadores de giles)
Está bueno para hacer árboles que s mesen con la suave birsa.

Aquí les dejo mis primeros avances con este programa que promete.

Si alguno conoce más a fondo a este programa a ver si nos echa una manito.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74025



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74026



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74027

Cibertronic - 29/05/2008 02:17
Hasta ahora solo venia usando el pipeline para exportar animaciones de max a b3d, pero hay mucho más.

alguien sabe usar el pipeline, desde Blitz, es decir usar los comandos ext.

A ver que pueden conseguir.
Cibertronic - 29/05/2008 02:31
Mas específicamente quiero saber cómo usar la cámara que esta incluida en el modelo.
Rompecabezas - 29/05/2008 09:41
Se puede exportar una cámara? Eso sería la leche.
Cibertronic - 30/05/2008 07:39
Aquí les dejo un ejemplo de lo que se puede hacer utilizando el pipeline sobre Blitz3d. Podríamos utilizarlo para tener un escenario con movimiento: una secretaria trabajando, gente caminando, etc, mientras recorremos por el mundo virtual.

La cmara y las luces proceden directmante desde el 3ds Max.

A seguir investigando.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74245



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74246

Rompecabezas - 30/05/2008 09:12
Vaya que bueno pues, yo inte ponerme el pipeline, pero no me va en el 3ds Max 9 no sé por qué.
Rompecabezas - 30/05/2008 09:14
De todas formas, para el escenario sigo pensando que viene mejor usar el gile por que te saca un mapa de combras y para objetos que no se mueven te ahorras cálculo de sombras.
Rompecabezas - 30/05/2008 09:16
Puedes poner el enlace del pipeline que te has bajado? Que quiero hacer unas pruebas sobre todo de materiales (Bump normal y demás).
Cibertronic - 30/05/2008 10:14
El pipeline lo desgargue de: 301 moved permanently. Si no te da en 3dsmax 9 porque te sale un error que dice que no se puede inicializar una dll, es porque no tienes instalado una distribución de C++, tarde semanas en descrubrirlo, esta distibucion la bajas y la isntlas de:
download details: visual C++ 2005 redistributable Package (x86).

Espero que te funcione, para investigar más sobre el pipeline, pero tienes razón para ambientes nadamejor que giles, con sus texturas de sombras nos aligera mucho el trabajo a nosotros y al sistema.
Cibertronic - 30/05/2008 10:26
Un par de hojas más a la revista: Blitz3d. Posdata: adjunto los modelos y el código de la actividad 3.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74252



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74253



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74254

Rompecabezas - 30/05/2008 10:29
Que profesional que te está quedando.
crashon182 - 01/06/2008 15:08

Un par de hojas más a la revista: Blitz3d. Posdata: adjunto los modelos y el código de la actividad 3.

La verdad Cibertronic está quedando maravillosa la revista (me gusta mucho la organización que tiene) espero que no ande leyendo estos mensaje alguna editorial y te quieran contratar. (sino la revista la van a cobrar =(). Saludos.
Cibertronic - 02/06/2008 06:53
Hola, tal vez ya lo sabían, pero yo me acabo de enterar. Pointentity cámara, objeto. Para que la cámara sigua al bobjeto cuando este se mueve, seguir no atrás del objeto como createcamera (objeto), sino para que lo siga desde su ubicación fija, girando si es necesario para que el objeto este siempre al centrode la cámara.

Aquí les subo el ejemplo: como siempre ejecutar el código y luego revisarlo.ara un juego de carros indispensble.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74476

Cibertronic - 02/06/2008 09:02
Aquí poniéndole al nuestro ejemplo del carrito. En el código envido por juanyang, se logra el mismo efecto de un forma más limpia, pero hasta ahora no puedo descifrar el código, para el giro.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74479

Cibertronic - 02/06/2008 09:09
Como se hace para que la cámara siga al objeto, pero de forma más suave es decir que cuando el objeto gira la cámara gire alrededor del objeto más lenmtamente, para ver al objeto de costado, y luego cuando el objeto se detiene la cámara sigue girando hasta colocarse detrás del objeto?
En el código de juanyang, (1. Movimientos y cámara) esto se consigue, pero usa tipos, alguien puede hacer lo mismo de forma más entendible sin tipos, o explicar que sucede utilizando tipos, yo no entiendo.
Cibertronic - 03/06/2008 06:28
Aquí les dejo el código enviado por juanyang, reducido hasta dónde pude, para tratar de explicarlo, pero esta un jeroglifico para mí sobre todo el grupo dentro del while.

A ver si ustedes pueden comentarlo y explicar que sucede en esa parte del código.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74654



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74655

Rompecabezas - 03/06/2008 09:00
Yo ni idea a ver si se pasa juanyang y nos explica, la verdad es que la cámara se mueve fina fina, yo creo que realmente para hacer algo con mucha calidad hace falta tirar de funciones, aunque no se igual se podría convertir a código más entendible.
juanyang - 03/06/2008 11:17
Lo cierto es que soy muy mal profesor, todo el basic que se lo he aprendido por mi cuenta, con mucho tiempo, paciencia y empeño. Tanto el Visual Basic net (que es a lo que dedico todo mi tiempo, haciendo programas a medida para empresas) como el Blitz (que casi más de 8 meses que no lo uso, pero me habéis vuelto a picar), lo puedo explicar a lo bruto (tal y como yo lo entiendo) que seguramente no sea la forma más correcta.

Pero, sobre todo, que nadie se quede atrás.
1º discrepar sobre las faltas ortográficas y, aunque si que creo que hay que poner mucha atención en cómo se escriben las cosas (mucho mejor si se hace bien) a mí personalmente me da igual un ahora que un ahora, sabiendo que el primero se entiende mejor que el segundo. En mis 35 años que ya tengo, he conocido grandes matemáticos, informáticos y físicos que no tienen ni idea de escribir bien. Lo cierto es que, a la hora de programar da igual:
Dim datatable as new datatable.

Que.

Dim dt as new datatable.

Siempre y cuando el programador sepa que está haciendo.

Como último comentario, decir que prefiero las faltas a que se escriba como en un móvil y tener que descifrar lo que pone. Sin entrar en polémica con nadie, ya he dicho que mejor escribir bien, esto no deja de ser un foro para que la gente pregunte de la mejor manera que lo sepa hacer.
2º el código sin type.
[code]Graphics3d 640,480,16,2.

Ambientlight 250,250,250.

Global cámara=createcamera ().

Global personaje=loadmesh(tea, b3d).

Global pivote=createpivot (personaje) tmoveentity pivote,0,25,-30.

Suelo=loadmesh (suelo, b3d) t.

Período=33.

Tiempo = millisecs()-período.

Sedrnd (millisecs()).

Setbuffer backbuffer().
While not keyhit(1) trepeat tiempotranscurrido = millisecs() - Tiempo tuntil tiempotranscurrido tticks = tiempotranscurrido/período tcaptura# = float(tiempotranscurrido mod período) / float(período) tfor k=1 todo ticks tiempo = tiempo+período if que = ticks then captureworld.

Movimientos_personaje ().

Movimientos_camara () updateworld tnext trenderworld(captura#) tflip.
Wend.

End.

Function movimientos_personaje () tif keydown(203) then Turn Entity personaje,0,1,0 tif keydown(205) then Turn Entity personaje,0,-1,0 tif keydown(200)=true then z#=0.5 tif keydown(20 =true then z#=-0.5 moveentity personaje,0,0, z#.

End function.

Function movimientos_camara () tdx#=entityx(pivote,true)-entityx(cámara) tdy#=entityy(pivote,true)-entityy(cámara) tdz#=entityz(pivote,true)-entityz(cámara) translateentity cámara, dx# *.015, dy# *.015, dz# *.015 Point Entity cámara,personaje.

End function.
[/code]
3º una pequeña explicacion.

Para que la cámara vaya lentamente detrás del personaje, el truco está en la instrucción translatentity cámara. Lo único que estás haciendo es mover la cámara a una velocidad inferior a la que mueves la z# del personaje y por supuesto también menor a la velocidad de rotación del mismo. No ovides nunca que esto:
Translateentity cámara, dx# *.015, dy# *.015, dz# *.015.

Es lo mismo que esto:
Translateentity cámara, dx# * 0.015, dy# * 0.015, dz# * 0.015.

Y claro está, que cuanto menor sea el número que pongamos, más tiempo tardará la cámara en llegar al punto donde la hemos puesto en la instrucción Point Entity. Por lo tanto, con: 0.001 tardará mucho más que con 0.1.

Los frames por segundo:
Digamos que las imágenes que vemos se componen de dos estados. Un fondo negro, una imagen, un fondo negro, una imagen etc. Esto pasado muy rápidamente hace que nuestro ojo sólo vea imágenes, siempre y cuando metamos más de 25 imágenes en un segundo. Menor que eso veremos un parpadeo. Por lo tanto, entendiendo lo anterior, no es difícil comprender que en un Pentium I tardará más en ejecutar el bucle while / wend que en una AMD Phenom de 4 núcleos y que para que nuestro juego funcione a la misma velocidad en uno que en otro, pues habrá que controlar los frames (o capturas de imágenes que queremos volcar). Tu en tu caso le has puesto 33, que es un buen número para Blitz, y para que vaya constante a 33 y no a tope de tu ordenador pues lo has controlado en esta parte de código:
Repeat tiempotranscurrido = millisecs() - Tiempo tuntil tiempotranscurrido tticks = tiempotranscurrido/período tcaptura# = float(tiempotranscurrido mod período) / float(período) tfor k=1 todo ticks tiempo = tiempo+período if que = ticks then captureworld.

Todo lo que pongas dentro del bucle for lo hará 33 veces por segundo.

Todo esto es mucho más largo, número de polígonos que renderiza nuestra cámara en un determinado momento y un largo etc en el cual no voy a entrar, pero si entender que si tu personaje gira sobre un eje, por ejemplo, y en una determinada posición metes un árbol con 40.000 polígonos, pues si no controlases los frames he intentases volcar todas las capturas, verías que en ese punto se relentiza. Esto sucede porque pasar de vacío 12 polígonos a 400 frames, por ejemplo, a 40.000 polígonos 45 frames pues es un cambio muy grande que nuestro ojo aprecia y claro, no es lo mismo capturar el vacío que 40.000 polígonos para Blitz y para tener que capturar las máximas imágenes que pueda pues tendrá que tardar más en recorrer el bucle, reduciendo así los frames. De ahí la importancia de controlarlos.

Compiladores como el C++ dan mucho más frames que Blitz, pero eso sí que es otro tema.

Ya que este mensaje empieza a ser demasiado largo dejaré el tema de los types para otro. Un saludo a todos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74678



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74679

Rompecabezas - 03/06/2008 15:15
A vale eso es para asignarle los frames/segundo para que sea a tu gusto y la animación sea lo más fluida posible. Bien, bien.
juanyang - 04/06/2008 01:16
Yuhu, uno que lo ha entendido, a ver cuántos más. Pero rompecabezas, no es a tu gusto, es una manera de controlar que tú juego funcione a la misma velocidad tanto para un Pentium I como para un Pentium IV. Ya que todo influye: la velocidad del micro, la tarjeta gráfica etc, por lo tanto lo que controlas es para que ordenador quieres que fuciones tu juego. De esto deducimos, que perfectamente puedes crear un juego donde en un momento determinado tu cámara recoja un millón de polígonos, por supuesto ningún compilador podrá con ello, pero quizad dentro de 5 años si que exista el Pentium vi con una tarjeta gráfica de 4 gigas que te lo pueda leer.

Por lo tanto, y si todo el mundo entiende todo lo anterior, pasaremos a la siguiente parte, que es ni más ni menos que todo tiene un límite. La memoria gráfica y los polígonos que podemos renderizar se acaban y hace que los frames bajen. Aunque en un principio parece que todo lo que tenemos es infinito, y nunca se nos va acabar, esto no es así, y pronto nos damos cuenta que nuestro juego va lento y poco después a saltos.

Por ello la importancia de los arrays y los types, con los cuales podemos borrar y eliminar todos los objetos que ya no se utilicen en nuestro juego (imágenes (*.jpg), bmp, árboles, sillas, coches, enemigos, etc).

Por poner un pequeño ejemplo como pregunta: ¿de qué nos vale una bala que disparamos y no ha colisionado con nada? ¿esa bala, una vez que a alcanzado una determinada distancia y ya no la vemos se sigue renderizando, porque no la hemos eliminado? ¿no sería mejor eliminarla y que no ocupara ni polígonos, ni texturas? Y por último ¿de alguna manera tendremos que controlar cada bala que disparamos y que tenemos que eliminar (tanto si colisiona como si está muy lejos de dónde fue disparada)?
Todo eso son los types (Blitz basic lo hereda del c) o las structures (que se llamarían en Visual Basic net), y por la importancia que tienen (ya que de ello depende nuestro juego en Blitz, y sin ello no hay juego), dedicaré todo mi tiempo hasta que todo el mundo que sigue este hilo diga que lo entiende, aunque para ello se me tengan que ocurrir mil y un ejemplo.

Por último, decir, que espero estar por aquí más tiempo y escribir mucho más, aunque todo depende de mis hijos, mujer y trabajo. Sé que lo entendéis.

Hasta la siguiente vez, que será insertar una imagen 2d en el mundo 3d, antes de pasar a los types.
estilo_sur - 04/06/2008 05:02
Perdón por el poco tiempo que les dedico. Bueno, les adjunto como siempre el código un poco más simple con aclaraciones para lograr el mismo efecto.

En cuanto a mantener el ratio de frame hay una sentencia mucho más simple.

Ej.

Ratio=createtimer(60).

Luego en el cuerpo del bucle.
Waittimer(ratio).

Adjunto el código con nuestro ejemplo del auto. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74796

Cibertronic - 04/06/2008 08:50
Que clase, (como diría viscosillo, no si alguno de ud lo abra conocido, era el personaje de una revista de Anaya multimedia justamente sobre basic, hace mucho tiempo, mi primer maestro).

Sinceramente aún estoy recuperándome de tan dulce empapada de conocimiento, mis más grandes muestras de admiración y respeto para todos ustedes, en especial a juanyang y estilo_sur.

Si bien aún estoy en eso de entender al 100% el código, ya casi.

Aquí una modificada al código de para incluir una animación.

Nuevamente gracias.

Ni bien lo entienda al 100% lo pongo en la revista (ha desde luego anotando sus respectivos créditos) para los que lleguen después de nosotros.

Más bien si desearian darme sus correos, para ponerlos en la revista, mi ilusión es que la revista circule por la red, fuera de este foro incluso, y así de ese modo alguien que lea la revista y no sea de este foro y tenga la oportunidad de comunicarse con usted, lo pueda hacer.

Nuevamtne gracias maestros, yo de grande quiero ser como ustedes.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74810



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74811

Rompecabezas - 04/06/2008 09:38
Muy bueno estilo sur está genial tu adaptación del código de juanyang a el estilo que estamos siguiendo. De paso os subo este mini tutorial para ver si podemos hacer un modelo implementando unas ruedas que giren como en este ejemplo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74817

Cibertronic - 04/06/2008 12:50
Cuanto por aprender y tan poco tiempo para hacerlo. Gracias estilo_sur y Juan yang, sus códigos están fáciles de enternder, pero mejor hacerlos boy leyendo con calma para matar cualquier duda mía.

Bueno para contitnuar otra página más añadida a la revista.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74843



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74845



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74848

estilo_sur - 04/06/2008 21:38
Siguiendo el aporte de rompecabezas les adjunto el auto con las ruedas puestas en su lugar y girando. Me tome el atrevimiento de quitarle las ruedas originales a la Maya del auto. Saludos a todos.

Posdata: la próxima les paso cómo hacer que el auto siga la inclinación del terreno.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74902

estilo_sur - 05/06/2008 01:24
Les envío el código para hacer que las ruedas sigan al terreno. No pretende ser un gran terreno solo es para probar el programa.

Comentario para entenderlo mejor.
1----2.

I i.

I i.

I i.
3 - 4.

Lo que hace la rutina es comparar la diferencia de las x y, z entre las ruedas 2 y 4 (derecha) y las ruedas 1 y 3 (izquierda) entonces inclina hacia un costado según ese resultado.

Luego en la segunda parte compara las ruedas 1 y 2 (adelante) y las 3 y 4 (atrás) e inclina hacia adelante o atrás según el resultado.

Recuerden que en la sentencia aligntovector car, zx, zy, zz,1 pondremos en el último lugar, dónde está el número uno el eje hacia donde queremos que haga la alineación. (1 eje x, 2 eje y, 3 eje z).

El resto es lo mismo que el anterior solo que un poco más prolijo. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74915

Cibertronic - 05/06/2008 04:11
Sencillamente formidable.
estilo_sur - 05/06/2008 04:26
Quería comentarles que hay un error de código en el bucle: Cnt=1 tfor z#=1.5 todo -2 step -3.5 tfor x#=-1.5 todo 1.5 step 3 resetentity whels[cnt] positionentity whels[cnt],x,-.5, z cnt=cnt+1 tnext tnext t.

Deben quitar resetentity whels[cnt] ya que, al resetear las ruedas y reubicarlas en ocasiones las dejaba por debajo de la Maya del terreno ocasionando que le vehículo quedará virtualmente metido en la Maya.

De esta dorma al no resetear no solo evita que traspase la Maya sino que, hace un pequeño efecto amortiguador sobre el auto. Saludos.
juanyang - 05/06/2008 12:00
Joes que coche más chulo te está quedando estilo_sur. Bueno, he intentado mejorarlo girando las ruedas delanteras, pero no me ha gustado del todo cómo me ha quedado. Ahora me tengo que marchar a trabajar, pero esta noche intentaré mejorarlo un poco más.

De todas formas, os cuelgo el archivo por si alguien le da por mejorarlo y esta noche me encuentro la sorpresa.

Hasta otro ratio.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #74938

Rompecabezas - 05/06/2008 15:47
El Def, bmp para que es? Cuando giras a la izquierda y sueltas la tecla de girar y mantienes la de acelerar el coche no vuelve a su posición original (solo girando a la izquierda).

Al principio cuando gira y aceleras desde cero pega un tirón un tanto extraño.

Ahora voy a echarle un vistazo más detallado al código.
estilo_sur - 05/06/2008 17:03
Lo que hace es deformar el mapa de acuerdo con la escala de grises. Debe estar hecho a 256 y solo escala de grises cuanto más blanco más alto cuanto más fina sea la escala más fina la deformación del terreno. Saludos.
Rompecabezas - 05/06/2008 17:54
A vale un mapa de desplazamiento, jaus no había caído.
juanyang - 06/06/2008 01:16
Siento todos los errores cometidos esta mañana, pero claro, cuando las cosas se hacen deprisa pues terminan saliendo mal.

Aunque no he conseguido del todo lo que quería, si es cierto que ahora va mucho mejor.

Queda arreglado el fallo de la rueda que cuando giras no se recupera.

Además, el coche derrapa con facilidad, sobre todo si cambias a modo mojado.

Y por último, el coche se inclina un poco hacia el lado contrario que giramos, dando un efecto más agradable.

Después de dar 4 millones de vueltas en círculo, ya me he acostumbrado tanto al manejo del coche que no sé en qué falla (en el caso de que falle), ya que si toco un poco para que derrape menos en la salida con las ruedas giradas, una vez hecho pienso, pues estaba mejor antes.

Bueno, ya me contareis. Ahí va el código para que lo mejoreis en lo que podáis y me sigáis dando ideas.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75002

Cibertronic - 06/06/2008 08:21
Esta genial. Yo quisiera saber si han encontrado o hay una forma de clonar algún objeto para noestar cargándolo luchas veces, lo árboles.

Bueno están animados, pero solo se muestran animados si nos los movemos ni los escalamos(impocible), será por algún parámetro del tre[d], bueno.

Pero, de todos modos estuve probando con la textura para el suelo, y bueno aquí uno de mis experimentos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75026



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75027

Rompecabezas - 06/06/2008 08:38
La textura es una 128x128 con una 512 por 512 quedará mejor y no creo que vaya a suponer ningún esfuerzo a la máquina.
Cibertronic - 06/06/2008 09:09
Pues si con una de 512 por 512 igualito sigue.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75031

juanyang - 06/06/2008 13:17
Al probar el coche sobre el circuito de Cibertronic, me he dado cuenta de que cuando frenas antes de llegar a una curva el coche se va demasiado hacia el lado contrario al cual giras. Por lo tanto, me he dispuesto a cambiarlo un poco para que esto no suceda.

Además, le he puesto un velocimetro al más estilo de un f1, pero por ahora sólo marca la velocidad y encima donde iría la aceleración. No es lo correcto, pero queda chulo. Me ha parecido conveniente para ver dónde se mete una imagen 2d en un 3d dentro del bucle while/wend.

Bueno, me tengo que ir a trabajar, que, si no me pico y no llego.

Aquí les dejo el código para que lo mejoren y trabajen con él.

Espero les guste.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75041

Cibertronic - 11/06/2008 10:20
Hola a todos. Ahora si estubimos alejados creo todos por ucho tiempo. Bueno yo por mi parte me reintegro, por mi parte estoy en hacer un circuito a la altura de locdigo enviado por juanyang.

Aquí les envío otro de mis experimentos.

Estaremos viéndonos más seguido, un abraso (y).

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75386



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75387

juanyang - 12/06/2008 00:41
Bueno, antes de nada, corregir el pequeño error que tiene el código. Una vez que el coche va a velocidad, cuando soltamos el acelerador el coche frena más rápido que si pulsamos el freno, y eso no puede ser. La parte del código dónde está el error.
[code]Dando gas tif entitycollided(car, piso) then if keydown(200) then speed=speed+.006 if speed>1 then speed=1 else if keydown(20 then speed=speed-.008 if speed<-.25 then speed=-.25 else speed=speed-.01 if speed<0 then speed=0 endif moveentity car,0,0, speed translateentity car,0,Gravity,0 telse translateentity car,0,Gravity,0 tendif.
[/code]

Después del else hemos puesto speed=speed-.01 y lo cambiaremos por.002 quedando así:
[code]Else if keydown(20 then speed=speed-.008 if speed<-.25 then speed=-.25 else speed=speed-.002 if speed<0 then speed=0 endif moveentity car,0,0, speed translateentity car,0,Gravity,0.
[/code]

Lo segundo, sería cambiar la velocidad del marcador por lo que corresponde, que es ni más ni menos que las revoluciones. Ya que no tengo mucho tiempo, sólo he hecho para 3 marchas, pero no creo que sea muy complicado adaptarlo para 6. Así quedaría el código:
[code]Updateworld trenderworld taceleración=speed/.3600 tif aceleración / 4 > 0.24 then aceleración = 0.6 * aceleración tend if tif aceleración / 4 > 0.26 then aceleración = 0.6 * aceleración tend if tif aceleración < 0 then aceleración =.1 * aceleración tdrawimage revoluciones,10,240 tif grados#<-250 then grados#=-250 tif grados#>0 then grados#=-37.08 tgrados#=(-grados#+aceleración)*250 tline (-cos(grados#)*80)+108, (-sin(grados#)*80)+335,108,335.
[/code]

Y por último cómo hacer el circuito. Bueno, como ya dije en su momento yo no sé dibujar ni una bola, aunque el 3ds Max me la de hecha, pero si tengo la idea de cómo lo haría si supiera. Espero no liarme ni liaros:
Poniendo como eje, el circuito de Montmeló, lo simplificariamos dibujando la carretera con las líneas blancas subidas unas décimas en el eje y, los bancos de arena y por último la hierba. Una vez hecho todo eso en un mismo dibujo lo cogería y lo copiaría 3 veces, llamando al primero carretera, al segundo arena y al tercero hierba. En el primero sólo dejaría la carretera y eliminaría todo lo demás, en el segundo sólo la arena (eliminando la carretera y la hierba) y en el tercero dejaría la hierba y eliminaría la arena y la carretera. ¿y por qué a todo esto? Pues muy sencillo, para hacer los diferentes tipos de colisión, así cuando cargue los tres juntos, pues ya los tendré a escala y le podré diferentes tipos de colisión, para que en la arena el coche baje más de velocidad que en la hierba, y en la hierba el coche patine más que en la carretera. Es evidente que habrá más de tres colisiones diferentes, pero seria un buen punto de comienzo.

Bueno, espero que se entienda la idea. Si no es así, sólo tenéis que preguntar, que preguntando se llega a roma.

Vaya, y si esto continua, creo que me veré obligado hacerle los rectángulos de colores donde iría la velocidad, esos que serían verde, naranja y rojo. Vaya.

Venga, hasta otro ratio, y espero sacar más tiempo.
Rompecabezas - 12/06/2008 09:03
Buenas ya he llegado. Muy chulo cybertronic, ya casi nos quedamos sin ideas para ponerle, a mí me gustaría intentar lo mismo, pero con algo tirando a realista, hacer un mini escenario (una esplanada) y coger un coche currado (tienes varios en TurboSquid, o se modela) y sacar algo que parezca currado y así aprendemos como van las luces y los materiales y efectos que se le pueda poner como dinámicas. Podríamos hacerlo entre todos en plan grupode iniciación.
Cibertronic - 13/06/2008 13:06
Hola nuevamente a todos. Aquí mejorando el circuito, ya deje el mapa de elevación, no es muy faicil trabajar con el mejor, hice el circuito en 3ds Max.

Están por separado los tres tipos de suelo: Grass, asfalto y arena.

Para hacer lo sugerido por Juan yang, sobre diferentes velocidades segu el terreno donde estemos.

Por ahora solo son Mayas planas, les pongo algunas subidas y bajadas luego, añadí otro elemento muros.

Bueno aquí les dejolos archivos.

Posdata: ya puse mis árboles, y este es mi emnsje 69, mi número favorito.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75632



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75633



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #75634

Rompecabezas - 13/06/2008 14:15
Bueno aquí llego yo. Yo tocar el código no toco (bastante tengo con entenderlo) pero lo huevillos a la gente un rato. Esto es lo que veo que hay que corregir:
1.- Marcha atrás si levantas la tecla frena de golpe debería de hacerlo poco a poco como hacia adelante.
2.- Si vas rápido y frenas y quieres girar no se puede se queda bloqueada la dirección, no sé porque será.

Creo que por el momento nada más. Muy guapo te está quedando.

Existe el puesto de trabajo de control de calidad de videojuegos? Creo que sería mi puesto ideal.
69recc - 16/06/2008 22:24
Tal vez no me recuerden, pero tadaima el foro me dejo por fuera varios días y, además me aleje un poco del Blitz3d me estoy interesando más en el panda3d que tiene sus cosas mejor, aunque la programación.

Bueno solo escribo para decir que salgo a vacaciones así que, estoy a la orden nada más díganme que quieren y una idea de más o menos como lo quieren y lo hago es que soy malo para inventar solo sirvo para copiar.

Vamos vamos no dejemos morir la idea de la revista.
Cibertronic - 18/06/2008 16:21
Muy buenos díasy hola a todos y al cibermundo nuevamente aquí. Estuve sin internet algo de una semana, no sé cómo sobrevivi.

Nos vemos luego ya reviso las observaicones de nuestro especialista en control de calidad de videojuegos.

También estoy en hacer la pista con algo de relieve, altos y bajos, baches etc subo algún nuevo avance luegoluego.
Cibertronic - 20/06/2008 10:50
Hola a todos, en que proyectos andan. Bueno yo aquí peleand con los programas que no corren en mí máquina. Bueno encontré una demo de maplet, me puse a revisar su código y bueno después de quitarle algunas cosas quedo un código sencillo, pero que realiza todas las funciones para un recorrido virtual, a ver qué les parece.

Posdata: el giles que tengo me hace el mapa de sombras muy feo.alguien save cómo hacerlo las suave.

Hay forma de hacerlo directamente (un mapa de sombras) desde el 3ds Max?

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76090



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76091

Rompecabezas - 20/06/2008 10:59
Buenas ciber ahora le echo un vistazo, yo ando liado buscando curro. En cuanto a lo de las sombras puedes hacer mapas de sombras desde max también con el render tu texture.
Rompecabezas - 20/06/2008 11:03
La pantalla podía servir trankilamente para empezara a practicar con los shooter.
Cibertronic - 20/06/2008 12:05
Excelente, render to texture, ahora mismo lo estoy revisando y parece justo lo que necesitábamos, así ya dejamos tranquilo al giles.
Rompecabezas - 20/06/2008 12:22
Yo lo descubrí el otro día es lo que sirve para hacer mapas de luces, normales, sombras y así un largo etc, además puedes hacer que sea de varias. Cada día me gusta más el 3ds Max.
Rompecabezas - 23/06/2008 11:16
Bueno como ando practicando modelado Low poly para juegos (por temas de posible curro), he modelado un a5 bastante decente. Cibertronic cuando crees que podrá sobortar el Blitz3d? Puede rondar los 1500 tris, es mucho para Blitz? Cuando termine de modeloar lo subo.
Rompecabezas - 24/06/2008 13:19
Pues ya lo he terminado a ver qué os parece.



Cibertronic - 25/06/2008 08:26
Excelente modelo rompecabezas y por lo visto muy bueno a la hora de ahorrar triángulos. Yo estuve revisando algo de matemáticas y bueno se me ocurrió meterlas al Blitz3d a manera de demo, le puse un menucito espero les guste.

Como siempre ejecuten(les mando el exe también) primero y luego vean el código para más o menos tener una idea de cual es el comportamietno del código.

Como todos los días, que bueno es trabajar con el Blitz, ya seguro habrá oportunidad de ver otros leguajes, pero por ahora el más fácil parece este.

Hasta una próxima.

Espero poner una explicación de esta demo en la revista.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76551



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76552

Rompecabezas - 25/06/2008 08:53
Ciber subo el modelo si podrías probarlo a ver si se puede usar estaría bien. Las ruedas están en el mismo, max así que, igual tendrás que separarlas.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76553

Cibertronic - 25/06/2008 09:03
Sale, ojalá no de problemas.
Cibertronic - 25/06/2008 09:50
Subido, y sin ningún problema, el problema lo tuve con el coche, tuve que convertirlo en malla editable y flip(arle) todas las caras pues se veía el texturizado adentro y no afuera.

Pero bueno salvo eso, solo guardarlo con el nombre del anterior modelo.

Es de urgencia trabajar con la pista, una cuasi profesional.

Estos autos(me recuerda a un jeugo de carreras que jugaba haya por los 80 Lotus, con doble pantalla para dos jugadores en la misma máquina, que recuerdos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76555



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76556

Rompecabezas - 25/06/2008 09:57
A ver si me pongo a hacer un circuito chulo.
Rompecabezas - 25/06/2008 10:00
Se pueden meter más adentro las ruedas? Es que parece como si lo hubieran tuneado.
Cibertronic - 25/06/2008 10:45
La respuesta es desde luego que sí, ahora como el poder hacerlo yo creo que si puedo, donde estarán nuestros mentores. Juanyang y estillo sur.

Mientras lo boy comprobando, aquí el código que detiene (hace lento) al coche cuando pisa el Grass, lo frena de golpe, sin desaselerar, también, hay un problema con las ruedas cuando giran en el Grass, también boy ha ver que hacemos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76558

Rompecabezas - 25/06/2008 11:23
Gracias ciber, poco a poco va cogiendo un poco de forma.
Cibertronic - 26/06/2008 10:02
Algo de física. Que formulas creen que se utilice para simular el alunizaje, ya se es un juego super conocido, que lo ha necho prácticamente en cualquier lenguaje, bueno ya es hora de hacerlo en Blitz.

No tuve tiempo de revisar en internet, aquí les dejo la idea, le puse extras como cámaras a bordo de la nave. Un saludo ahí nos vemos cuando le pula.

Si alguien tiene un modelo bien churro del módulo lunar por favor a ver si lo pasan por aquí.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76639



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76640

Cibertronic - 26/06/2008 10:17
En el ejercicio del auto, el problema se debía a que había exportado el auto con todo y llantas, lo corrijo, ahora mismo.
Cibertronic - 26/06/2008 10:39
Ahora ya tiene las llanta algo más adentro.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76647

Cibertronic - 28/06/2008 10:04
Hola nuevamente, aquí les dejo una versión de demostración del programa de alunizaje.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76780



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76781

Rompecabezas - 28/06/2008 10:56
Muy bueno, te lo estás trabajando mucho.
Cibertronic - 29/06/2008 03:23
Hola a todos, aquí les dejo una página más a la revista, bueno es que estaba sin material, pero bueno, ntal que siga saliendo página por página no importa.

Les dejo tamiben el código y las fuentes para la ulitma actividad.

Cualquier duda ya seaben pregunten nada más, ya casi un mes desde que iniciamos y bueno creo que para empesr desde cero con el Blitz ya estamos en bien avanzados. Y en un solo mes y dedicándole solo nuestros ratos libres, que seguro tanto para mí como para udstedes son muy pocos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76823



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #76824

Rompecabezas - 29/06/2008 10:31
Ya la vi está quedando muy profesional, hoy que tengo algo de tiempo a ver si hgo un circuitillo para el coche.
el aprendiz 3d - 02/07/2008 20:49
Hola amigos, hace mucho tiempo poste de los primeros en este mensaje y luego le perdí la pista, pero veo que han estado trabajando duro por aquí. Ya me pongo a leer todo el mensaje a ver si los alcanzo.
Cibertronic - 03/07/2008 12:27
Hola a todos nuevamente aquí más ejemplos de funciones esta vez sonido. Hasta ahora un par de conclusiones con respecto al Blitz.

Es fácil, el código que hemos analizado lo confirma.
-con pocas funciones hacemos cosas maravillosas, pero a la ves es su debilidad, no hay muchas funciones, no hay partículas? Humo o algo así? Aquí una versión más de despegue de modulo lunar.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #77284



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #77285

Rompecabezas - 03/07/2008 15:41
Me gusta que se pueda manejar con el ratón.
Cibertronic - 10/07/2008 12:23
Hola a todos aquí un juego clásico en versión 3d. Lo hice de forma bruta.supomgo Quel código se pude reducir. Pero en esta forma el codio esta entendible.

No esperaba que fueran tantas líneas les envío el código comentado.

Y todos los archivos fuente, y como siempre primero jueguenlo y lego revisan el código espero les guste.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #77771



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #77772

Rompecabezas - 10/07/2008 12:28
A ello que voy la imagen promete mucho.
Rompecabezas - 10/07/2008 12:31
Creo que empiezo a perderme.
Cibertronic - 10/07/2008 12:37
A ver si luego comento el código en la revista, pasito a pasito.
Cibertronic - 11/07/2008 08:40
Hola a todos un par de hojs más para la revista, en las últimas páginas trato de explicar el código del juego michi (mensajes más arriba).

Bueno recién explico el programa principal en próximas hojas explico las subrutinas.

Bueno explicamos el código completo del juego michi y damos por terminado el número uno de la revista y la presentamos oficialmente, si tuvieran algo que pudiermaos añadirle o mejor dicho si desean añadirle algún artículo o comentario esta es la oportunidad, antes de dar por terminado el número uno, ha, pero seguro que seguimos con la número dos.

Un fuerte abraso (y).

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #77841



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #77842

Damian1985 - 15/07/2008 18:47
Buenas soy nuevo en esto, y me gustaría aprender. Y tengo un problema, estuve haciendo el tutorial de animar y exportar a b3d, lo hago todo bien la animación y todo, pero el Blitz no me reproduce la animación, gracias de antemano.
Damizean - 16/07/2008 12:39

Excelente, render to texture, ahora mismo lo estoy revisando y parece justo lo que necesitábamos, así ya dejamos tranquilo al giles.

Buenas, no había publicado por aquí antes (creo, hace mucho tiempo que me registré), pero he visto el hilo y como veo que estáis al filo con el tema del Blitz 3d, vengo a compartir un poco mi experiencia con él.

Yo utilizo el render to texture del 3ds Max para generar los lightmaps, y ya que muchas veces es un coñazo tener que poner la textura resultante en cada material de cada objeto (y si tienes muchos objetos que tengan el mismo material, ya ni te digo), hice un pequeño método de ayuda para cargar los lightmaps resultantes:
[code]function loadanimmeshlightmapped(file$, lightmapfolder$=(same), parent=0, slot=7)
, load animated Mesh.

Mesh = loadanimmesh(file$)
If (Mesh=0) then return Mesh.

If neded, strip the Lightmap folder Path.

If (lightmapfolder$=(same)) then lightmapfolder$=loadanimmeshlightmapped_extractpath$(file$).

Iterate th rouge each child object.

Loadanimmeshlightmapped_child(Mesh, lightmapfolder$, slot).

Done.

Return Mesh.

End function.

Function loadanimmeshlightmapped_child(node, lightmapfolder$, slot)
, chek out node class.

If (entityclass$(node)<>Mesh) then goto iteratechilds.

Debuglog(load Mesh +entityname$(node))
Debuglog(-> trying todo load Lightmap at +lightmapfolder$+/+entityname$(node)+lightingmap, tga).

Load texture and if it exists, apply todo all surfaces at the selected slot.

Lightmaptexture = loadtexture (lightmapfolder$+/+entityname$(node)+lightingmap, (*.tga), 1)
If (lightmaptexture=0) then goto iteratechilds.

Debuglog(-> success).

Setup Lightmap texture.

Textureblend(lightmaptexture, 2)
Texturecords(lightmaptexture, 1).

Find out if the entity has only one brush or múltiple.

Brush = getentitybrush(node)
If (brush = 0) then.
, iterate th rouge all surfaces.

For I=1 todo countsurfaces(node)
, acquire brush.

Surface = getsurface (node, i)
Brush = getsurfacebrush(surface).

Set Lightmap todo slot.

Brushtexture (brush, lightmaptexture, 0, slot).

Apply brush todo surface.

Paintsurface (surface, brush).

Free brush.

Frebrush(brush)
Next.

Else.
, set Lightmap todo slot.

Brushtexture (brush, lightmaptexture, 0, slot).

Apply brush todo surface.

Paintentity(node, brush).

Free brush.

Frebrush(brush)
End if.

Fretexture (lightmaptexture)
Entityfx(node, 1).

Iteratechilds.

For I=1 todo countchildren(node)
Loadanimmeshlightmapped_child(getchild(node, i), lightmapfolder$, slot)
Next.

End function.

Function loadanimmeshlightmapped_extractpath$(file$)
Path$ =.

Found = false.

Offset = 1
Chek = 1.
While (true)
Chek = instr(file$, /, offset+1)
If (chek = 0) then chek = instr(file$, \, offset+1)
If (chek > offset) then.

Found = true.

Offset = check.

Else.

Exit.

End if.
Wend.

If (found = true) then Path$ = left$(file$, offset)
Return Path$
End function[/code]

Principalmente se utiliza como el loadanimmesh, pero automáticamente busca en el directorio de la malla si encuentra una textura Lightmap correspondiente al nombre del objeto de la malla y la carga automáticamente en el slot.

Ejemplo:
[code]nivel = loadanimmeshlightmapped(nivel, b3d.\lightmaps\)[/code]

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #160984



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #160984

Rompecabezas - 17/07/2008 10:00
[quote]Buenas, no había publicado por aquí antes (creo, hace mucho tiempo que me registré), pero he visto el hilo y como veo que estáis al filo con el tema del Blitz 3d, vengo a compartir un poco mi experiencia con él.

Yo utilizo el render to texture del 3ds Max para generar los lightmaps, y ya que muchas veces es un coñazo tener que poner la textura resultante en cada material de cada objeto (y si tienes muchos objetos que tengan el mismo material, ya ni te digo), hice un pequeño método de ayuda para cargar los lightmaps resultantes:
[code]function loadanimmeshlightmapped(file$, lightmapfolder$=(same), parent=0, slot=7)
, load animated Mesh.

Mesh = loadanimmesh(file$)
If (Mesh=0) then return Mesh.

If neded, strip the Lightmap folder Path.

If (lightmapfolder$=(same)) then lightmapfolder$=loadanimmeshlightmapped_extractpath$(file$).

Iterate th rouge each child object.

Loadanimmeshlightmapped_child(Mesh, lightmapfolder$, slot).

Done.

Return Mesh.

End function.

Function loadanimmeshlightmapped_child(node, lightmapfolder$, slot)
, chek out node class.

If (entityclass$(node)<>Mesh) then goto iteratechilds.

Debuglog(load Mesh +entityname$(node))
Debuglog(-> trying todo load Lightmap at +lightmapfolder$+/+entityname$(node)+lightingmap, tga).

Load texture and if it exists, apply todo all surfaces at the selected slot.

Lightmaptexture = loadtexture (lightmapfolder$+/+entityname$(node)+lightingmap, (*.tga), 1)
If (lightmaptexture=0) then goto iteratechilds.

Debuglog(-> success).

Setup Lightmap texture.

Textureblend(lightmaptexture, 2)
Texturecords(lightmaptexture, 1).

Find out if the entity has only one brush or múltiple.

Brush = getentitybrush(node)
If (brush = 0) then.
, iterate th rouge all surfaces.

For I=1 todo countsurfaces(node)
, acquire brush.

Surface = getsurface (node, i)
Brush = getsurfacebrush(surface).

Set Lightmap todo slot.

Brushtexture (brush, lightmaptexture, 0, slot).

Apply brush todo surface.

Paintsurface (surface, brush).

Free brush.

Frebrush(brush)
Next.

Else.
, set Lightmap todo slot.

Brushtexture (brush, lightmaptexture, 0, slot).

Apply brush todo surface.

Paintentity(node, brush).

Free brush.

Frebrush(brush)
End if.

Fretexture (lightmaptexture)
Entityfx(node, 1).

Iteratechilds.

For I=1 todo countchildren(node)
Loadanimmeshlightmapped_child(getchild(node, i), lightmapfolder$, slot)
Next.

End function.

Function loadanimmeshlightmapped_extractpath$(file$)
Path$ =.

Found = false.

Offset = 1
Chek = 1.
While (true)
Chek = instr(file$, /, offset+1)
If (chek = 0) then chek = instr(file$, \, offset+1)
If (chek > offset) then.

Found = true.

Offset = check.

Else.

Exit.

End if.
Wend.

If (found = true) then Path$ = left$(file$, offset)
Return Path$
End function[/code]

Principalmente se utiliza como el loadanimmesh, pero automáticamente busca en el directorio de la malla si encuentra una textura Lightmap correspondiente al nombre del objeto de la malla y la carga automáticamente en el slot.

Ejemplo:
[code]nivel = loadanimmeshlightmapped(nivel, b3d.\lightmaps\)[/code]

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #160982


Vaya gracias por el aporte, seguro que nos será de utilidad a partir de ahora.

La imagen de ejemplo es tuya? Es que tiene muy buena pinta.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #160982

Damizean - 18/07/2008 07:00
El modelo del nivel ha sido creado por otra persona, a modo de modding para una tech demo de física estilo Sonic, que lancé junto a otro chaval hace unos meses. Lo que he hecho ha sido renderizar el Lightmap y meterlo en Blitz3d.
Damian1985 - 19/07/2008 12:10
A ver si se puede conseguir hacer uno, pero que de sombras en tiempo real, sería lo suyo, y que no comiera muchos recuros como los que he visto por internet.
Pepius - 19/07/2008 14:50
Damizean, damizean, de alcudia?
Xcloud - 20/07/2008 20:29
Hola gente, como están? Espero que bien y sigan motivados con lo que están haciendo. He estado leyendo lo que han estado haciendo y veo que han avanzado mucho, así que, desde ahora me les uno en lo que les pueda colaborar.

Estudio ingeniería de sistemas pues apenas se puede decir que estoy comenzando y pues esto de programar videojuegos no me lo tomo como un hobby, yo espero algún día poder trabajar como programador de juegos, pero bueno en fin.

Llevo 1 año y medio trabajando con Blitz3d y tengo algo de conocimiento, no me considero lo mejor, pero trato de hacerlo y obviamente deseo que ustedes también me puedan ayudar en algunas cosas, pues mi proyecto en donde estoy estudiando es desarrollar un videojuego online y por ahora la mejor opción que tenemos es el Blitz3d.

Bueno solo era para presentarme más tarde vuelvo por ahora me voy a almorzar.

Después les sigo comentando más cosas e ideas que tengo. Saludos, xcloud.
Damian1985 - 20/07/2008 21:24
Yo también estaría encantado en unirme, tengo pocos conocimiento de Blitz3d por que esto comenzando ahora, y también se algo de 3ds Max, si os hago falta solo tenéis que decirlo.
Xcloud - 22/07/2008 18:24
Hola de nuevo, por ahí estuve leyendo un mensaje de alguien que preguntaba cómo hacer un sistema de partículas algo, así como humo así es que, aquí les pongo un pequeño ejemplo para que aprendamos a hacer sistemas de partículas usando una función que usa muchos atributos físicos como la velocidad del viento, el tiempo de vida por partícula.

Espero les guste. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78446

Damizean - 23/07/2008 09:52
Damian, es muy difícil conseguir sombras en tiempo real sin utilizar Shaders. El método más común por ahí es utilizar el stencil buffer para hacer sombras con shadow volumes. Es muy lento porque tienes que generar toda la geometría cada vez que el punto de luz se mueve, y no funciona con mallas animadas. Además, necesitas al menos 3 pasos de renderizado, con lo cual se queda en algo lento.

La aproximación más rápida sería crear un shadowmap renderizando la escena desde el punto de vista del punto de luz y recalculando los UVS de la geometría que reciben la sombra para mostrar el shadowmap. Pero vamos, en directX 7 como que es muy difícil.
___________________________________.

Damizean, damizean, de alcudia?

¿sabes la última de Héctor?
___________________________________.

Por cierto, si estáis interesados, existe una dll llamada fastextends que amplia las funcionalidades del Blitz3d, añadiendo soporte para efectos de mensaje proceso (Bloom, profundidad de campo, desenfoque, escala de grises, etc), renderizar a textura, alinear cubemaps, soporte para clipplanes (y así hacer reflejos de agua fácilmente).

Además, gracias a estas funcionalidades se puede hacer dot3 de manera rápida, aunque solo funciona con mapas de normales del espacio tangente.

Os podéis bajar las demos en su página web. Si os lo pilláis, el autor hace descuento del 50% con el cupón 50blitzersof al final sale todo el pack por 20 euros.

A continuación os dejo una muestra de normal mapping con Bloom y Dof con un modelo que encontré para probar (lo siento por el autor, no recuerdo su nombre).

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78544

Damian1985 - 24/07/2008 12:17
Y si no se puede, hacer sombras en Blitz3d porque no sacan un update donde se mejore todas estas cosas, y le pongan librerías directx8 o DirectX 9, es que, si no la gente se irá pasando a gdt, que si tener soporte para directx8, DirectX 9 y OpenGL, y si se pueden conseguir efectos mejores, y es fácil programar.

Bueno aquí dejo mi primer modelo 3d, si os interesa decirlo y subiré el modelo para 3d Studio 3dsMax 8:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78645



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78646



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78645



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78646

Damizean - 25/07/2008 05:55

Y si no se puede, hacer sombras en Blitz3d porque no sacan un update donde se mejore todas estas cosas, y le pongan librerías directx8 o DirectX 9, es que, si no la gente se irá pasando a gdt, que si tener soporte para directx8, DirectX 9 y OpenGL, y si se pueden conseguir efectos mejores, y es fácil programar.

Marque sibly ya está preparando un nuevo motor 3d llamado max3d, seguramente para usar con blitzmax. También insinuó que a lo mejor lanzaba una actualización del Blitz3d que utilizase este motor, así que, supongo que, es cuestión de tiempo.
Cibertronic - 25/07/2008 12:05
Hola a todos, es realmente fabulozo, y gracias por el código de las partículas, es justo lo que necesitaba para el fuego para la nave.

Una duda que estaba varios mensaje atrás era respecto a exportr, no se usted, pero a mí me pasa lo mismo, a veces lo solucionó descativando las casillas scene root o anabled extensión del diálogo exportar.

Por que pasa eso no se, pero funciona al final funciona.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78709

Cibertronic - 25/07/2008 12:11
Vaya bueno aquí les dejo, algo que me estaba entreteniendo esta noche (bellezas y peligro), para la colección de código, ya habrámomento de juntarlos todos y hacer un super juego, hasta una próxima oportunidad.

Y muchas gracias por sus sabios consejos, su código excelente y sus interesantes comentarios.

El codgo simple como siempre en Blitz, viene con ejecutable.

Y los modelos creados y animados en 3dsmax.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78710



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78711

Cibertronic - 25/07/2008 12:25

Y si no se puede, hacer sombras en Blitz3d porque no sacan un update donde se mejore todas estas cosas, y le pongan librerías directx8 o DirectX 9, es que, si no la gente se irá pasando a gdt, que si tener soporte para directx8, DirectX 9 y OpenGL, y si se pueden conseguir efectos mejores, y es fácil programar.

Bueno aquí dejo mi primer modelo 3d, si os interesa decirlo y subiré el modelo para 3d Studio 3dsMax 8:
[attach]78645[/attach]
[attach]78646[/attach]

Pues claro hombre, sube tu modelo y ais lo hacemos andar en el cuarto que tengo, paraseguir aprendiendo.

A también aquí les dejo el archivo fuente de cuarto del mensaje anterior.

Las texturas están en photopain y los modelos desde luego en 3dsmax.

Y en el archivo fuente del cuarto, creo que están ocultos los modelos (hide), bueno hasta una próxima.

Ha ya jugaron con Jesus, alguien le gano, que comentarios.

Es mi primer juego que realizo, ya se es un juego simple simple, pero algún comentario debe haber.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78712



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78713



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78714

Damian1985 - 25/07/2008 12:44
Bueno aquí subo el modelo, no tiene animación ni texturas, porque no sé cómo hacerlas, vamos que el Adobe Photoshop y yo no nos llevamos muy bien que digamos. Si alguien sube algún tutorial de Photoshop para hacer texturas de la cara, manos, ropa, estaría muy agradecido.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78715



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78715

Cibertronic - 28/07/2008 13:22
Hola a todos, aquí les dejo el primer método que aprendí, no es el más preciso, pero si es el más falcil cuando no se conoce mucho de 3ds Max, como para empezar, a demás creo que es el mejor cuando no se tiene mucho detalle, bueno ya los expertos dirán. Saludos a todos usted, y yameboy porque tengo que hizar mi bandera, y después a la labandera.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78843



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78845

Cibertronic - 28/07/2008 13:37
Vaya, se me olvidaba subirles el modelo que subió damian1985 (hace unos posta atrás)ya texturizado. También les subo las texturas. Hasta una próxima.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78846



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #78847

Damian1985 - 28/07/2008 13:45
Muy bueno el tutorial, gracias por el aporte, pero como lo haces no es un poco complicado, tienes que saber cuál es cada parte, mirando por ahí me han comentado que es mucho mejor con el modificador desajust. Uvw. Corregidme si me equivoco, por cierto no pensaría que el modelo quedaría tan bien texturizado.
Cibertronic - 01/08/2008 13:34
Hola a todos, quetalque cosas nuvas descubrieron, bueno yo aquí leleando con el código tratando de hacer que el personaje se mueva ahí donde se da clic con el ratón como los juegos de rol.

No lo conssigo, pero ya estoy serca, aquí les dejo un código que es muy simple y hace que el persopnajes se mueva en un circuito cuadrado.

Ni bien consiga hacer lo que estoy deseando (mover el pers, con el ratón) lo subo y se los explico.

Hasta una próxima, saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79185



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79186

Xcloud - 02/08/2008 03:50
Hola, bueno el ejemplo que hiciste está bueno, me gusta la animación de caminar. Te doy la idea para lo que quieres hacer del juego de rol.

Hay una función del Blitz que se llama camerapick, con esa función te devuelve que entidad fue escogida por la cámara en las coordenadas que le especifiques en la función, en ese caso serían las coordenadas del ratón, y hay otra función que no recuerdo bien que te devuelve la posición dentro de la entidad en la que fue escogida, algo, así como exactamente el vértice que seleccionaste en la entidad, de esa forma puedes sabe dónde clickeo en el suelo, por ejemplo, e inventarte algo para que el personaje camine hasta, allá.

No subo algún ejemplo porque ando algo cansado, acabo de terminar de modelar un Wall-e para mí novia :$ en fin, espero te sirva de algo mi idea, pues así es como estaba haciendo yo un juego de estrategia, pero al final me dió pereza continuarlo.

Bueno suerte a todos.
NeCRoManCeR - 02/08/2008 06:22
Para mover el personaje con el ratón, están las funciones mousex y mousey(no recuerdo bien si así se llamaban exactamente, en la ayuda están), y es muy fácil, solo debes adecuarlo al pivote que deseas mover. Pero para el scroll creo que había un pequeño problema y se usaba un plugin, no recuerdo.
Xcloud - 02/08/2008 06:25
Bueno aquí dejo este pequeño ejemplo donde se ve reflejada mi pereza con que lo hice, pero demuestra más o menos la idea para lo que quieres hacer del juego de rol.

En fin.

Ahora si chao zzzz.

Espero sirva de algo. Saludos xcloud.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79237

Cibertronic - 02/08/2008 10:35
Que bruto, (y yo con más de dos oches sin dormir):060: Así de fácil era hacer el movimiento utilizando el ratón,
Aquí les dejo mi contribucion, le puse algunas respuestas para que Ruby no este muda.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79244



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79245

Cibertronic - 02/08/2008 10:42
Yo ahora trabajo con una PC, que a las justas me permite jugar Half Life.osea lenteja, para el tacho). Una pregunta para todo aquel que haya probado los ejemplos que pongo:
¿En sus máquinas como corren los ejercicios desesperados? A una velocidad razonable o demasiado rápido o lento talves(, no creo).
Rompecabezas - 02/08/2008 12:04
A mí me va fluido, no da la sensación de ir lento ni nada por el estilo.
Xcloud - 02/08/2008 21:52
Te quedo muy bueno ese ejemplo amigo, me alegro que haya servido mi aporte. En cuanto a lo de la velocidad a mí me va a una velocidad normal, pero digamos que si quieres que en todos los PC corra a una velocidad determinada tienes que usar los frames por segundo, creo que con el cretetimer() y con waittimer() puedes controlar eso.

Supongo que, en una máquina que procese demasiado rápido no tendrá problema y lo ejecutara a la velocidad que le pusiste, pero si es una máquina muy lenta supongo que, no será capaz de ejecutarlo a la velocidad que le pusiste, eso es lo que creo no sé si estoy en lo cierto. Suerte.
Cibertronic - 03/08/2008 05:08
Gracias. Es un alivio saber que lo que hagamos no depende de la velocidad de la computadra, mi temor era que si la hacia en máquina (lenta lenta) en una máquina veloz, los movimientos serían muy rápidos(como correr un juego para una 286 en una Pentium, han tratdo de jugar CD-man en una Pentium.
Cibertronic - 03/08/2008 09:58
Hola a todos. Aquí les pongo la evolución de todas las anteriores demos, si les gusto la anterior, esta ulitma les va ha encantar.

Nada pues sino que combine lo que aprendimos de cómo hacer que la cámara siga al personaje y el mover el personaje con el rató, n, y quedo algo muy chulo, tienen que verlo.

Un abraso a todos, hasta una próxima oportunidad.

Posdata: les dejo el ejecutable y el código fuente que me complique con los pivotes.

Blender no corre en mí máquina por culpa de mi tarjeta Sis.alguien sabe cómo se corrige eso, ya probé instalar driver modernos y nada.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79278



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79279

Xcloud - 03/08/2008 18:05
Hola de nuevo, pues quedo muy bueno el ejemplo, aunque algo extraña la parte cuando das la vuelta por el cuarto y de repente atraviezas la pared, pero algo interesante.

Quizá ahora podrías probar diseñando un escenario más de Dungeon y poner a un personaje de ese tipo de juegos, para empezar a añadir enemigos o cosas así, bueno es una idea.

Que estén bien.
estilo_sur - 05/08/2008 00:48
Hola como están tanto tiempo. Voy a tratar de estar más seguido por aquí. Sería bueno empezar con algo más concreto. Saludos.

Posdata: últimamente tengo un poco más de tiempo para ver el resto de las funciones.

Los felicito por el avance.
GerardoGon - 05/08/2008 16:02
Rompecabezas, ¿conseguiste que funcionara el pipeline con 3dsMax 9? Si es así puedes compartir cómo? Gracias.
Turriano - 06/08/2008 12:49
Aprovechando de que habláis de Blitz3d, querría haceros una pregunta. Yo fui usuario del Spectrum y su basic se parece muchísimo al del Blit 3d, si bien este tiene cosas de c como do wile, etc.

Me encantaba hacer experimentos con el (de todo tipo, por cierto. Desde hacer juegos, despertadores y hasta manejar las luces de un árbol de navidad).

También hacía figuras matemáticas en 2d, y ahí va la pregunta:
¿Tiene Blitz 3d algún comando plot (punto) como tenía el spectrumí. Saludos.
Cibertronic - 06/08/2008 19:59
hola turiano

la respuesta es sí, es más tiene el comando plot, debe ser de que ambos son basic.


Aquí te dejo un simple example de la función plot.
graphics 320,240,16,2.
;parabola verde
color 0,255,0
for x#=-10 todo 10 step 0.5
y# = x# * x#
px# = x# + 160
py# = 120 - Y#
plot px#, py#
next

;parabola roja
color 255,0,0
for x#=-10 todo 10 step 0.5
y# = x# * x#
px# = x#*5 + 160
py# = 120 - Y#
plot px#, py#
next

;parabola azul
color 0,0,255
for x#=-10 todo 10 step 0.5
y# = x# * x#
px# = x#*10 + 160
py# = 120 - Y#
plot px#, py#
next

while not tecla
tecla=getkey()
wend.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79429

GerardoGon - 07/08/2008 17:43
Hola. Una pregunta a los que ya tenéis experiencia con texturas en Blitz. He renderizado una textura (en cubo)en 3ds Max y se ve bien, pero cuando la llevo al Blitz en lugar de ponerla como una caja sobre el modelo, la repite en cada una de las caras del mismo, es como si no supiera que debe doblarla siguiendo el modelo.

En fin, supongo que, a quien le haya pasado me entendera.

No sé si hay que darle alguna instrucción a Blitz para que mapée así.
(Sigo sin poder instalar el pipeline así que, tengo que hacerlo a pedales).

Cualqueir ayuda será de agradecer. Saludos.

Gergon.
Damian1985 - 09/08/2008 12:47
Sabéis si se puede encriptar los archivos de imágenes, sonido y luego que Blitz los lea, y cómo se aria.
Turriano - 09/08/2008 14:50

Hola turiano. La respuesta es sí, es más tiene el comando plot, debe ser de que ambos son basic. Aquí te dejo un simple example de la función plot.

No me funciona tu código ciber.

Aunque lo comprendo, aún no se la función de la almohadilla en las variables (#).
¿Qué puede significar?
eduardo777 - 09/08/2008 17:52

Hola. Una pregunta a los que ya tenéis experiencia con texturas en Blitz. He renderizado una textura (en cubo)en 3ds Max y se ve bien, pero cuando la llevo al Blitz en lugar de ponerla como una caja sobre el modelo, la repite en cada una de las caras del mismo, es como si no supiera que debe doblarla siguiendo el modelo.

En fin, supongo que, a quien le haya pasado me entendera.

No sé si hay que darle alguna instrucción a Blitz para que mapée así.

Bueno puedes escalar la textura en la entidad con scaletexture variable de la textura y las coordenadas, pero si quieres exportar con max lo más recomendable es que te bajes el plugin de.b3d el Blitz te saca los modelos tal y como los tienes en 3dsmax.

Espero que está información te sirva.
Cibertronic - 11/08/2008 07:56

No me funciona tu código ciber, aunque lo comprendo, aún no se la función de la almohadilla en las variables (#).
¿Qué puede significar?

En Blitz3d las almoadillas (#) sirven para indicar que la variable es del tipo real(con decimales) si no una variable solo será del tipo entero.

A# = 1.254 -a# será 1.254
B = 1.254 -b será 1.
murdokiler - 11/08/2008 19:57
Hola, he ido siguiendo el hilo, y gracias a vosotros he aprendido hacer más o menos un juego, aunque he de reconocer que en muchos códigos me pierdo, ya que yo de programación 0.

Lo que tengo echo, es más o menos como el ejemplo del coche, le he hecho un circuito, y le he puesto un temporizador, para que cada vuelta se grabe el tiempo.

Mi duda viene, cuando no sé cómo hacer para que cada vuelta el reloj vuelva a 0, he probado a poner un objeto en el suelo, que cada vez que pase ponga los segundos a 0, pero solo me lo hace 1 vez, la segunda vuelta ya no vuelven a 0.

He probado con:
If entitycollided(coche, pista)=salida tvueltas%=vueltas%+1 tend if.

Y lo mismo, me cuenta la primera vuelta, pero después ya no cuenta más.

También he probado con countcollisions, pero no sé cómo hacerlo para manejarlo.

Alguien me puede echar una ayuda? Gracias un saludo.
Turriano - 12/08/2008 03:40
Uséase resumiendo: Números naturales, sin nada en la vriables (a por ejemplo), a=23. Números enteros, a#, a=23,01. Cadenas, a$= 3d poder.
¿Me dejo algún tipo de variable más?
murdokiler - 12/08/2008 20:19
Son esas turriano, para los números enteros, se ponen solos no hace falta indicarlas, aunque también se puede con %, ejemplo manzanas%=3 o manzanas=3, para punto flotante o float #, ejemplo manzanas#=3.20 (se utiliza el punto), y para string o alfanuméricos, el $, como manzanas$=tres.

Y aprovecho para subir la prueba que he comentado en el mensaje anterior, que todavía no le encuentro una solución, soy bastante malo, la verdad.

Como ya explicaba, es un coche sobre un circuito, justo debajo de la salida hay un cubo, llamado salida, que lo podéis mover un poco si no lo veis, y se verá. Que es el que quiero que detecte, que cada vez que pase el coche por ahí, el tiempo se ponga a 0, y las vueltas se sumen a 1, pero que no consigo.

Los controles son los cursores para mover el coche, y el espacio para poner el tiempo a 0.

También he creado unos controles para poder manejar la luz ambiente, a ver cual me convencía más. El 1 y el 2, son para subir y bajar el rojo, el 3 y 4 para el verde y el 5 y el 6, para el azul.

A ver si lo conseguimos, o si alguien sabe de alguna otra forma que pueda hacerlo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79737

eduardo777 - 12/08/2008 21:34

Y aprovecho para subir la prueba que he comentado en el mensaje anterior, que todavía no le encuentro una solución, soy bastante malo, la verdad.

Como ya explicaba, es un coche sobre un circuito, justo debajo de la salida hay un cubo, llamado salida, que lo podéis mover un poco si no lo veis, y se verá. Que es el que quiero que detecte, que cada vez que pase el coche por ahí, el tiempo se ponga a 0, y las vueltas se sumen a 1, pero que no consigo.

Bueno, mira cree un cubo que abarca toda la meta cuando pasas por allí hace lo que quieres, con sistema de colisión se logra eso allí te marque con unas flechas lo que modifique, ahora eso no es todo, cuando tu pasas por allí hace lo que te dije, pero si retrocedes y vuelves lo hace de nuevo, como que no tiene sentido ¿no?
La posible solución es create varios cubos de esos invisibles claro en diferentes partes de la pista para comprobar que el jugador pase por allí, ejemplo: si el jugador no pasa por los 3 checkpoints entonces no se sumara nada a las vueltas y el tiempo sigue corriendo. La idea es que cuando esos 3 chkpoints estén activados la condición de la meta se cumpla, luego que se cumpla se resetean los checkpoints para volver a hacerlo.

Pero bueno es posible solución que me imagino, aunque en esto usar tu imaginación y lógica es la clave. Suerte y saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79739

murdokiler - 12/08/2008 23:03
Muchas gracias Eduardo, me había quedado atascado en ese punto y llevaba desde ayer probando cosas, y no avanzaba en nada más respecto al juego.

Había probado ya con hidentity y showentity, pero no sé porque con el cubo que yo tenía creado no me funcionaba, así que, fui a probar otras cosas. Pero no se me ocurrió lo del cubo.

De nuevo gracias, un saludo.
eduardo777 - 12/08/2008 23:29
De nada murdokiler ya sabes que para eso estamos.
porni - 16/08/2008 12:52
Buenas, recién comienzo con el tema de Blitz, y ando buscando un tutorial que tenga ejemplos para empezar a usarlo, alguien lo puede facilitar? Desde ya gracias.
Cibertronic - 17/08/2008 03:38
Hola amigos: Aquí les dejo unel ejecutable y el código de la anmación con el ratón. Trate de hacer el código lo más simple posible, también lo comente, aunque parece algo complejo, esta todavía super pequeño y simple, ojalá los inspire.

El modelo conseguí en TurboSquid, y el mundo lo realice con un mapa de elevación, las voces las sintetize con un sintetizador online que ahora no recuerdo el nombre.

Para porni, los mejores ejempls son los que el mismo Blitz trae, checalos y las dudas las pones para poderte ayudar, porque un manual, así como buscas yo también lo ando buscando.

En este hilo en las páginas inicales pusieron algunos manuales, a ver si te sirven. Suerte a todos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79913



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79914

Xcloud - 18/08/2008 01:17
Hola, pues estoy viendo la forma de subir una revista sobre desarrollo de videojuegos con Blitz3d, son 21 números en pdf, pero algunos traen archivos extra como código fuente, imágenes.

Aquí les dejo el número 0 donde solo explican de que trata el desarrollo de la revista y todo eso, si algo me dicen y miro a ver cómo les subo los demás. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79937

porni - 18/08/2008 19:20
Estuve leyendo esa revista, lo que habría que ver es el tema de los CD que trae, porque me parece que en la revista no ponen los códigos fuentes completos. En fin, la revista orienta bastante para alguien como yo que todavía no entiende nada.
murdokiler - 18/08/2008 19:56
Yo tengo las revistas y los CD a partir del número 5, que son los útiles, ya que es cuando empieza el proyecto más o menos.

Pero no creo que este permitido ponerlo en este foro.
murdokiler - 19/08/2008 00:11
Bueno aquí subo lo que llevo hecho hasta ahora de lo que quiero hacer. Todo empezó como una prueba para ir aprendiendo, y cada día que puedo (no tengo mucho tiempo) le añado alguna cosa, es un vicio.

De momento para el juego, ya le he puesto los tiempos, con un marcador, donde te mide, el tiempo total de juego, el récord del mejor tiempo, que se guarda en un archivo, el tiempo de la vuelta anterior, el tiempo actual de la vuelta en la que estas, y las vueltas que llevas al circuito.

Le he añadido 3 checkpoints para tener que pasar por ellos para no saltarse el circuito.

Le he puesto que al pisar la hierba la velocidad reduzca poco a poco haciendo más real, y que cuando gires no derrape nada más girar, sino que si se tira 2 segundos girando empiece a derrapar.

Le he puesto colores al velocimetro, aunque aún falta lo de las marchas.

También le he puesto un sonido al acelerar para probar, pero aún me tengo que meter más en el tema de los sonidos, porque no los manejor muy bien para lo que quiero hacer.

Me gustaría hacerle algún coche con IA, pero no me veo capaz.

Y de momento nada más, las teclas son los cursores para girar, acelerar y frenar, con 3, 4 o 5 cambias el ángulo de la cámara, y con espacio, pones los tiempos y el récord a 0(lo tenía así para hacer pruebas). Un saludo.

Posdata: muy bueno tu ejemplo Cibertronic, ideal para juegos tipo diablo o Neverwinter.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #79985

porni - 21/08/2008 06:56
Podrías publicar de alguna manera los CD, me parece que es lo más importante de esa revista y sería de gran ayuda para los más novatos como yo muy bueno tu proyecto, espero lograr hacer algo similar en el futuro.
Cibertronic - 27/08/2008 10:27
Hola a todas nuevamente. Aquí yo también dándole a un juegos de autos, les subo el código que estoy utilizando (que pienso), a ver si les da ideas.

Aquí las animaciones de las llantas están en el modelo, quedaron algo decentes como cuando eran movidas una por una.

Traté de ordenar el código en procesos(sub), espero se entienda.

Para que el auto no abandone la pista le puse unas paredes a los lados, ya en el programa le ponemos alfa y las desaparecemos a la vista, estas también son las culpables de que el auto reduzca la velocidad si quiere salir de la pista.

También les mando los archivos fuente.

Y sigamos para adelante.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80385



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80386



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80387

Cibertronic - 27/08/2008 10:34
Como me gustaría echarle un ojo a esa colección. A ver si nos van contando que tienen (subiéndolas de poco a poco) si nos cuentan que tiene con sus ejemplos desarrollados por usted, no creo que se incumplan las normas del foro.

Aun venden esa colección me gustaría comprarla, aquí a Perú no llegan ni por navidad. Un saludo a todos nuevamente y hasta la próxima.
Mr.zOmBie - 27/08/2008 19:27
Hola qué tal. Esos ejemplos de Blitz3d están muy monos, felicidades, sois todo un maestro en Blitz.
porni - 29/08/2008 03:21
Nadie se atreve a hacer un tutorial con lo que sabe? Ayudaría mucho a los que queremos aprender.
Cibertronic - 29/08/2008 07:28
Hola a todos, saben, me puse a bajar todos los ejemplos y demos que subimos, y saben, ya llevamos 227 megas, a trabajo de hormiga, pero bastante hemos hecho.

Ojalá que no se molesten los jefes, y nos prohíban seguir subiendo, (por si las moscas me baje todos los archivos \).

Y bueno yo creo que si ya debemos empezar a sistematizar todo para que sea más entendible, a ver si creamos una página web para hacerlo, ya les cuento que consigo, haber por si puedo (si me atrevo, ahora que pueda), espero que el tiempo me dé.

Haber aquí les dejo un intento, poco iré llenando a esta página web todo lo que tenemos aquí: Cibertronic-Blitz3d es solo una prueba, pero seguro en unas semanas ya estará toda operativa, de poco a poco, vamos llegando lejos más saludos a todos.
lightdown - 29/08/2008 16:49
Hola a todos. Soy un recién llegado (a este foro y a Blitz3d) y estoy alucinando con este mensaje. Felicidades por la forma en que han conseguido mantener una iniciativa de enseñar participando. Han llegado a conseguir que los alumnos hagan realmente sus pinitos en esto de la programación de los videojuegos. Es francamente entrañable.

Dicho esto comentarles que estoy aprendiendo Blitz (y he aprendido muchísimo gracias a ustedes) y tengo unas ganas terribles de comenzar a realizar mi propio videojuego. Soy programador en otros lenguajes y casi echaba de menos el Basic (a mis 8 años comencé a programar en Basic con mi MSX de Sony). Cuento con otra persona que sí es un experimentado del Blitz con lo que la cosa pinta bien. Pero hay una cuestión que siempre he tenido ganas de preguntar: ¿dónde puedo encontrar recursos tales como modelos de personajes y terrenos libres? Es bastante desolador pensar que siempre hay que comenzar por el 3dstudio, programa que no domino. Además, estoy seguro que debe hacer algún tipo de iniciativa de modelos libres.

Digo esto porque resulta realmente difícil la labor de crear un personaje y animarlo.

Por otra parte, y como han dicho por aquí se pueden coger personajes de juegos como Half Life, Quake, pero eso creo que viola la ley de derechos de propiedad intelectual, con lo que sería imposible publicar el juego resultante en ningún medio. ¿podría de alguna forma coger alguno de estos modelos y modificarlo?
Bueno, pues lo dicho, que tengo ganas de programar (y tirarle al Photoshop, que también se me da muy bien) pero eso de animar bípedos.
¿Conocen buenos recursos libres o al menos gratuitos?
Un saludo a todos. Estaré por aquí y les echaré una mano en lo que pueda.
porni - 30/08/2008 07:13
Me parece fantástica la idea Cibertronic, es muy importante ordenar todo para ir de lo más básico a lo más complicado. Lo tuyo es de agradecer y lo cual agradezco.
Cibertronic - 31/08/2008 10:12
Saludos a todos. Aquí les dejo un juego 2d, los hice para explicar la dinámica de programar un juego, no uso types solo procedimientos subs, a ver si les gusta.

Luego lo comentario línea por línea.

Si en su máquina va muy rápida o muy lenta la mosca, cambiarle el calor de rapidez(línea 24), como no uso timers, la velocidad de la mosca depende del valor de esta variable, entonces si este valor es pequeño la mosca ira más rápida y al contrario si es grande, la mosca ira lenta.

Como valor por defecto le puse:
Rapidez=150.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80634



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80635

Cibertronic - 31/08/2008 12:06
Aquí les dejo la primera parte del código comentado del juego anterior, espero sea de su agrado. Hasta una próxima entrega.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80639



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80644

sergieto28 - 01/09/2008 22:07
Buenas noches a todos he seguido el hilo desde el principio y me gusta el trabajo que estáis haciendo me gustaría aprender sobre Blitz ya que algo no mucho ni siquiera el 1 por ciento se de este programa,3d Studio, aunque tengo la versión 5 y el Adobe Photoshop se usarlo a medias, pero bueno. Una pregunta o un par de ellas es :como abro imágenes en Blitz, ejem: he hecho un radar le he puesto fondo negro y lo he guardado como bmp, la pregunta es ¿cómo lo cargo? ¿en qué carpeta específica del Blitz tengo que ponerlo? Y como lo redimensiono en la pantalla y como hago para que no se vea el fondo negro sino transparente, si me decís como poner imágenes pues os pongo.

Aquí una, pero de todas maneras este me parece un buen foro, muchas gracias.
Cibertronic - 02/09/2008 09:24
Hola Sergio. Para la pantalla tienes la orden graphic ancho, alto, color, modo. Guarda de preferencia las imágenes en la misma carpeta donde guardas el programa, para así llamarlo solo por su nombre.

X ejemplo.
fondo=loadimage(fondo.jpg).

Pero si deseas también puedes guardarlo en una carpeta dentro de la carpeta dónde está tu programa:
fondo=loadimage(imágenes\fondo.jpg).

Y por último si deseas lo guardas en cualquier carpeta, pero esto no es recomendable.
fondo=loadimage(d:\mi trabajo\imágenes\fondo.jpg)
Una ves cargada la imagen en memoria debes dibujarla en la pantalla(antes de flip con.
drawimage fondo,x, y.

Donde x, y son las coordenadas donde quieres que salga la imagen.

Para hacer un color invisible, por ejemplo, el negro, después de la sentencia load debes usar maskimage imagen RGB.
maskimage fondo,0,0,0
.

Aquí dejo una sencilla demo para ilustrarte como cargar las imágenes, también utilizo loadanimimage.

Ve primero el ejecutable y luego analizas el código.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80795



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #80796

sergieto28 - 02/09/2008 12:18
Gracias Cibertronic por la respuesta lo probaré dentro de un rato y luego te comento. Es que, ahora estoy ocupado.
sergieto28 - 02/09/2008 12:56
He podido probarlo está muy bien he seguido lo que pones y he cogido el radar que te dije y lo he puesto así c:\archivos de programa\Blitz3d\radar, bmp, pero a la hora de darle al f5 me sale este error runtime error imagen no existe y en el descompilador me aparece marcado la línea maskimage radar 0,0,0 de verdad que me hago un lío con estas cosas y perdona si soy un coñazo, pero es que, uno quiere aprender y nada más que se da tortazos. Bueno te dejo y gracias.
NeCRoManCeR - 02/09/2008 13:42
Les dejo esto que hice hace unos años, tiene implementado el plugin Blitzmovie, quizás sirva a alguien, a mí ya no me sirve, es un ejemplo de menú con imágenes y video incluidos.

Global botonopcionesmenuprincipal.

Global botonconectarmenuprincipal.

Global botoncreditosmenuprincipal.

Global botonsalirmenuprincipal.

Global fondoinicio.

Global botón640x480
Global botón800 por 600
Global botón1024x768
Graphics3d 320,450,16,2
Apptitle tellus.

Setbuffer backbuffer().

Fondoinicio=loadimage(media\imágenes\fondoinicio.jpg)
Botón640x480=loadimage(media\imágenes\botonresolucion640x480.jpg)
Botón800 por 600=loadimage(media\imágenes\botonresolucion800 por 600.jpg)
Botón1024x768=loadimage(media\imágenes\botonresolucion1024x768.jpg).
While resolución=0
Resolución=mainmenu()
Wend.

If resolución=2 then modo800 por 600()
If resolución=3 then modo1024x768()
If resolución=1 then modo640x480()
End.

Function mainmenu()
Cls.

Drawimage fondoinicio,0,0
Drawimage botón640x480,100,300
Drawimage botón800 por 600,100,200
Drawimage botón1024x768,100,100
Flip.

Resolución=0
While resolución=0
Mx=mousex():my=mousey().

If mousehit(1) then.

If imagerectoverlap(botón640x480,100,300, mx, my,1,1) then resolución = 1
If imagerectoverlap(botón800 por 600,100,200, mx, my,1,1) then resolución = 2
If imagerectoverlap(botón1024x768,100,100, mx, my,1,1) then resolución = 3
End if.
Wend.

Return resolución.

End function.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;iniciamos el menú principal en resolución 640x480 px;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function modo640x480()
Apptitle tellus.

Graphics3d 640,480,0,2
; create an image that well be decoding the movie to.

Loadfont(fonts\viking-n.ttf,18,1,0)
Image = createimage(640, 480).

Open the movie in decode to Blitz3d dx7 surface mode.

Looping = 1.

Moviehandle = blitzmovie_opendecodetoimage(media\videos\fondoprincipal640x480.avi, image, looping0)
If not moviehandle.

Blitzmovie_close(moviehandle)
Runtimeerror error loading movie. Quitting.

Endif.

Play the movie.

Result = blitzmovie_play(moviehandle)
If not result.

Blitzmovie_close(moviehandle)
Fretexture(texture)
Runtimeerror error playing movie. Quitting.

Endif.
Width = blitzmovie_getwidth(moviehandle)
Height = blitzmovie_getheight(moviehandle)
X = (640 / 2) - (width / 2)
Y = (480 / 2) - (height / 2)
Info$ = tellus v1.0
Info2$ = www. Augusto3d.com, ar.

Paused = 0
Keyuppercaseascip = 80
Keylowercaseascip = 112.
While (blitzmovie_isplaying(moviehandle) > 0) and (not keydown(1)) key = getkey()
If (key = keyuppercaseascip or key = keylowercaseascip)
If (paused)
Blitzmovie_play(moviehandle)
Else.

Blitzmovie_pause(moviehandle)
Endif.

Paused = not paused.

End if.

Drawimage(image, x, y)
Color 0, 255, 255
Text 330, 0, info$, true.

Color 0, 255, 0
Text 330, fontheight(), info2$, true.

Flip 0
Wend.

Blitzmovie_stop(moviehandle)
Blitzmovie_close(moviehandle)
Freimage(image).
While clickmenuprincipal=0
Clickmenuprincipal=clicksmenuprincipal()
Wend.

If clickmenuprincipal=1 then conectarmenuprincipal()
If clickmenuprincipal=2 then opcionesmenuprincipal()
If clickmenuprincipal=3 then creditosmenuprincipal()
If clickmenuprincipal=4 then salir()
End.
Waitkey()
End.

End function.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;iniciamos el menú principal en 800 por 600 px;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function modo800 por 600()
Cls.

Graphics3d 800,600,0,2
Apptitle tellus.
; create an image that well be decoding the movie to.

Image = createimage(640, 480).

Open the movie in decode to Blitz3d dx7 surface mode.

Looping = 1.

Moviehandle = blitzmovie_opendecodetoimage(media\videos\fondoprincipal640x480.avi, image, looping0)
If not moviehandle.

Blitzmovie_close(moviehandle)
Runtimeerror error loading movie. Quitting.

Endif.

Play the movie.

Result = blitzmovie_play(moviehandle)
If not result.

Blitzmovie_close(moviehandle)
Fretexture(texture)
Runtimeerror error playing movie. Quitting.

Endif.
Width = blitzmovie_getwidth(moviehandle)
Height = blitzmovie_getheight(moviehandle)
X = (800 / 2) - (width / 2)
Y = (600 / 2) - (height / 2)
Info$ = tellus v1.0
Info2$ = www. Augusto3d.com, ar.

Paused = 0
Keyuppercaseascip = 80
Keylowercaseascip = 112.
While (blitzmovie_isplaying(moviehandle) > 0) and (not keydown(1)) key = getkey()
If (key = keyuppercaseascip or key = keylowercaseascip)
If (paused)
Blitzmovie_play(moviehandle)
Else.

Blitzmovie_pause(moviehandle)
Endif.

Paused = not paused.

End if.

Drawimage(image, x, y)
Color 0, 255, 255
Text 400, 0, info$, true.

Color 0, 255, 0
Text 400, fontheight(), info2$, true.

Flip 0
Wend.

Blitzmovie_stop(moviehandle)
Blitzmovie_close(moviehandle)
Freimage(image)
Waitkey()
End.

End function.

Function modo1024x768()
Cls.

Graphics3d 1024,768,0,2
Apptitle tellus.

End function.

Function clicksmenuprincipal()
Setbuffer backbuffer()
Botonconectarmenuprincipal=loadimage(media\imágenes\botonmenuprincipalconectar.jpg)
Botonopcionesmenuprincipal=loadimage(media\imágenes\botonmenuprincipalopciones.jpg)
Botoncreditosmenuprincipal=loadimage(media\imágenes\botonmenuprincipalcreditos.jpg)
Botonsalirmenuprincipal=loadimage(media\imágenes\botonmenuprincipalsalir.jpg).

Drawimage botonconectarmenuprincipal,20,100
Drawimage botonopcionesmenuprincipal,20,200
Drawimage botoncreditosmenuprincipal,20,300
Drawimage botonsalirmenuprincipal,20,400
Flip.

Clickmenuprincipal=0
While clickmenuprincipal=0
Mx=mousex():my=mousey().

If mousehit(1) then.

If imagerectoverlap(botonconectarmenuprincipal,20,100, mx, my,1,1) then clickmenuprincipal = 1
If imagerectoverlap(botonopcionesmenuprincipal,20,200, mx, my,1,1) then clickmenuprincipal = 2
If imagerectoverlap(botoncreditosmenuprincipal,20,300, mx, my,1,1) then clickmenuprincipal = 3
If imagerectoverlap(botonsalirmenuprincipal,20,400, mx, my,1,1) then clickmenuprincipal = 4.

End if.
Wend.

Return clickmenuprincipal.
Waitkey()
End function.

Function conectarmenuprincipal()
Cls.

Print conectando[? ]
Waitkey()
End function.

Function opcionesmenuprincipal()
Cls.

Print opciones[? ]
Waitkey()
End function.

Function creditosmenuprincipal()
Cls.

Print augusto se lleva todos los créditos.
Waitkey()
End function.

Function salir()
Cls.

Print bye bye.
Waitkey()
End function.
ngamer - 02/09/2008 15:25
Quizás me pueda ayudar. Excelente foro y sobre todo excelente hilo dado que hace tiempo que estoy luchando con esto del Blitz. Leí que mediados de octubre, fin de octubre está saliendo un manual de programación en 3d para Blitz3d. Alguien sabe dónde lo puedo ubicar? Se llama programación juegos 3d volumen 1. Tengo entendido que existe una dirección donde se puede preordenar, pero no la puedo encontrar. Sé que está en español y de hecho está escrito por un escritor español. ¿Alguno sabe algo? Hice la pregunta en varios foros, pero todavía sin respuesta. Saludos y gracias.
ESTOPA - 05/09/2008 13:45
Bueno, pues ahora soy yo el que se apunta por aquí. Llevo 6 años sin programar, pero ahora me ha entrado el gusanillo al ver, de forma sencilla, como podía plasmar mis creaciones de max en un Mortal Kombat.

De momento estoy viendo cómo funciona el Blitz y espero poder ir poniendo lo que vaya haciendo.

Desde el primer ejemplo que habéis puesto hasta el último me ha servido de mucha ayuda, sin ellos nunca me habría puesto a hacer algo, son una inspiración. Gracias a todos los que habéis contribuido.
Cibertronic - 06/09/2008 08:58
Hola a todos y una bienvenida a todos los que empiezan, que bueno saber que estamos creciendo y que entre todos podremos seguir haciéndolo.

Les escribo un out topic, saben estoy dándole al Blender, a ver si es más sencillo para hacer nuestros modelos y animaciones, pero no paro de darme de lleno contra la pared.

Aquí les dejo un poco de mi avance con Blender, cuando este un poco más maduro abrimos un nuevo hilo, para no parar hasta llegar al Game Engine del Blender. Un saludo a todos y sigámosle dándole duro al Blitz.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81092



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81093

porni - 07/09/2008 06:59
Tengo una pregunta, ¿alguien hizo un terreno en Bryce y lo exporto a Blitz? Porque a mí me queda el terreno dado vuelta y demás. Gracias.
ESTOPA - 08/09/2008 11:54
Alguien sabe cómo exportar modelos que estén animados desde max 2008 a un formato valido para Blitz? El b3d pipeline no me funciona en max 2008.
krateos_29 - 08/09/2008 12:54
Cibertronic, veo que todos los avances que haces en Blitz son sobre un plano. Es decir, no hay irregularidades en el terreno por dónde se mueve el objeto que se controla.

A que es debido esto?
Creo que sabiendo mover un objeto por 3 dimensiones de verdad sería un muy buen avance para este hilo.
murdokiler - 10/09/2008 09:51
Hola a todos, ya estoy de vuelta de mis merecidas vacaciones, muy buenos tus ejemplos Cibertronic como siempre, y muy buena idea lo de recopilar toda la información en tu página.

Estopa el b3d pipeline, sí que funciona en el 3ds Max 2008, ahí un parche que es para el 9, pero que también funciona con el 3ds Max 2008, comprobado por mí.

Krateos_29 hay un ejemplo al principio del mensaje, que mueve el coche por terrenos montañosos y ondulados, el cual está muy bien.

Sobre el tema de la colección subirlo y publicarlo sería ilegal, porque tienen copyright, pero si algún moderador me da su permiso, no me importaría subirlo, aunque como ya digo, pienso que no se puede. De todas formas, no es difícil conseguirlo.

Cambiando de tema, y como ya veo que varios de nosotros hemos empezado a dominar mínimamente el Blitz y hacer algunos juegos básicos, podríamos juntarnos todos, y empezar un proyecto más ambicioso, con lo que también aprenderíamos mucho con las dificultades que fueran saliendo. Es una idea, a ver qué piensan. Un saludo, y perdón por la tardanza al contestar, pero he estado de vacaciones.
murdokiler - 10/09/2008 09:53
Lo siento, doble mensajes.
Cibertronic - 11/09/2008 06:38
Hola a todos, yo aquí peleándome con el código tratando de crear una inteligencia artificial para los autos, sumándome a la iniciativa también creo que deberíamos de empezar a poner ideas sobre un juego, a ver si se nos ocurre algo y lo ponemos ya vieron esta página, basic programming tutorial, está excelente (para los que conocen el inglés) de ahí le copio el código.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81441



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81442

Cibertronic - 11/09/2008 06:53
Otra excelente página. Blitz3d tutorial.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81443

Cibertronic - 11/09/2008 11:15
Unos arreglos al código anterior(2 anteriores) y tenemos esto.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81449



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81450

krateos_29 - 11/09/2008 20:21
Bueno, cogiendo un poco de aquí, de allá y modificando la gran mayoría, conseguí esto. No es que sea nada del otro mundo, pero es un código limpio y cortito de un juego en primera persona y, además se puede hacer hipersalto.

Creo que es una buena base para cualquier proyecto y para todos aquellos foreros que se pasan por la sección de videojuegos preguntando: ¿cómo hago una visita virtual?
Posdata: me encanta este hilo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #81483

murdokiler - 12/09/2008 01:36
Muy buenos los ejemplos de ambos, van muy bien para hacer un tipo Half Life o algo así con una historia guapa. Yo tengo unas dudas a ver si me las podéis resolver, son el tema colisiones, que no le acabo de coger el truco (sí, soy bastante tocho con la programación).

El tema es que, en el juego de coches, me salía y ahora no sé qué hago mal. Estoy intentando hacer un juego de plataformas tipo Mario Bros, el de la Nes, la primera Nintendo de 8 bits, con la misma vista lateral con scroll y todo eso, pero en 3d.

El movimiento ya lo tengo, pero las colisiones no sé qué hago mal. A ver si me lo podéis explicar un poco.

Yo primero les pongo el tipo de entidad:
Entitytype Mario,1.

Entitytype tubería,2.

Después les pongo el tipo de colisión:
Collisions 1,2,2,1.

Con esto ya me tendría que funcionar ¿no? ¿O me falta algo?
También he probado a hacer un if entitycollided que se pase la velocidad a 0, pero tampoco me funciona.

Me haríais un favor explicándomelo un poco, lo siento si esto os parece muy sencillo, pero nunca me he metido en programación, y me lío bastante. Gracias. Un saludo.

Posdata: a mí también me encanta el hilo.
porni - 12/09/2008 20:21
Perdón por ser repetitivo, ¿pero alguien hizo un terreno en Bryce y lo exporto a Blitz? ¿Porque a mí me queda el terreno dado vuelta y alguien sabe dónde conseguir el programa Mercatorum? Gracias.
krateos_29 - 12/09/2008 21:43

Perdón por ser repetitivo, ¿pero alguien hizo un terreno en Bryce y lo exporto a Blitz? ¿Porque a mí me queda el terreno dado vuelta y alguien sabe dónde conseguir el programa Mercatorum? Gracias.

Yo si fuera tú, primero exportaría el terreno de Bryce a 3dsmax si se puede, que supongo que, sí, y en 3dsmax lo pasaría a.b3d con el plug-in pipeline.

Lo digo por lo de triangular, texturas y tal.
porni - 14/09/2008 03:07
Gracias por la información, no conocía el plug-in pipeline, probé pasándolo a 3dsmax y funciona bárbaro, ahora ando buscando como texturizar algún modelo, he leído algo sobre un tal UV mapping.
Cibertronic - 16/09/2008 07:52
Hola a todos, yo aquí nuevamente, actualizando la página que les presente hace muchos mensaje atrás, ni bien la término les subo un enlace para que la vean.

En cuanto a las colisiones, el código parece bien, si no funciona tal vez sea que cuando ejecutas el código ya están colisionados los objetos, es decir uno sobre el otro, si EOS sucede(a mí me sucedió muchas veces, las colisiones parecen que ya no se detectan mueve el objeto un poco más arriba, (y) de modo que al iniciar el código no estén colisionados, veras que así si funciona un saludo nos vemos luego.
sergieto28 - 17/09/2008 21:13
Buenas noches a todos siento no haber podido estar aquí últimamente es cuestiones de trabajo, ahora que tengo un poco de tiempo libre pues he dicho vamos a ponernos con el 3d y me pongo a animar un Biped cuando me doy cuenta que no sé cómo hacerlo. Solo se animarlo con huellas, subiendo escaleras, etc he oído también que hay una manera de animarlo que se llama modo libre, alguien podría indicarme algún tutorial o alguno de aquí podría explicarme cómo se anima en modo libre y yo lo que quiero es hacer que se quede.

Flotando, que nade, que buce etc si es mucho me lo decís y de todos modos gracias.
ESTOPA - 18/09/2008 03:12
Sergio: decirte como animar en modo freeform sin dejarte muchísima materia por el camino es muy difícil, así que, te recomiendo el tutorial que viene con el 3ds Max Autodesk 3ds Max tutoriales > character animation tutoriales > animating with freeform y te hagas los 2 primeros tutoriales, que es uno nadando y otro andando.

Le das al menú help->tutoriales, y luego en la sección de character animation tutoriales elige el de animating with freeform y ahí te vienen los 2 que te acabo de mencionar. Suerte.

Posdata: quería subir el juego que estoy haciendo para que le echarais un vistazo, pero no me deja adjuntarlo, si me deis un sitio gratuito donde subir archivos y que no sea un coñazo.
sergieto28 - 18/09/2008 11:20
Buenos días estopa gracias por la respuesta, pero ¿de verdad se encuentra ese tutorial en el max? Me refiero yo tengo el 3ds Max 2008 y en este te vienen los tutoriales que en su día venían en el max 5 y te vienen todos en español luego en la ayuda complementaria no me aparece nada del Biped, dime en que max venía ese tutorial que me dices y lo mismo lo pueda conseguir, pero gracias.
GerardoGon - 18/09/2008 11:43
Hola. Sigo sin poder utilizar el pipeline con 3dsmax 9 y estoy que muerdo. El archivo b3dexp.del lo he instalado en la ruta:
C:\archivos de programa\autodesk\3ds Max 2009\plugins.
¿Es correcto?
El mensaje que me da 3dsmax al abrirlo es.

Dll is not made for this versión of the programa - not loading.

Y claro, si no lo carga pues se acabó la historia.

Si alguien tiene la más mínima pista por favor, ayuda. Es realmente importante que pueda exportar los modelos. Gracias.
ESTOPA - 19/09/2008 03:23
Sergieto28: yo tengo el 3ds Max 2008 y la ayuda que viene con el 2008. Esta en inglés y actualizada, la del max5 estará obsoleta imagino.

Creo que te puedes bajar la ayuda del 3ds Max desde la página y creo que el enlace es este: Autodesk - Autodesk 3ds Max services & support - 3ds Max 2008 documentation.

Si no es ese, prueba de este (que además te puedes bajar los archivos para hacer los tutoriales del max.
Autodesk - Autodesk 3ds Max - 3ds Max 8 documentation.

Yo en el menú help, tengo la ayuda de max y también un apartado tutoriales.

Espero que te sirva, sino entre todos encontraremos la forma de ayudarte, es que, ahora es muy tarde y me caigo de sueño.

Gerardogon: el 3dsMax 2009 no es el 3dsMax 9, y el b3dpipeline funciona como máximo hasta la versión 2008, si mal no recuerdo, que es la que tengo yo y al final conseguí instalarlo. Así que, si tu versión es la 2009, que yo sepa no funciona.
sergieto28 - 19/09/2008 11:31
Gracias estopa por los enlaces yo creo que si me servirán ahora mismo me lo estoy bajando del todo. No es que tenga mucho nivel de inglés, pero bueno entendiendo los dibujos y con un diccionario pues para adelante. Gracias de nuevo.
Cibertronic - 22/09/2008 03:08

Hola, sigo sin poder utilizar el pipeline con 3dsmax 9 y estoy que muerdo, el archivo b3dexp.del lo he instalado en la ruta:
C:\archivos de programa\autodesk\3ds Max 2009\plugins.
¿Es correcto?
El mensaje que me da 3dsmax al abrirlo es.

Dll is not made for this versión of the programa - not loading, y claro, si no lo carga pues se acabó la historia.

Si alguien tiene la más mínima pista por favor, ayuda. Es realmente importante que pueda exportar los modelos, gracias.

Hola, yo creo que te falta el parche.

O bien es por la versión español inglés.
sergieto28 - 28/09/2008 21:36
Buenas noches he estado buscando por el buscador, pero no encuentro lo que buscaba. Si alguno supiera lo mismo lo ha visto se trata de un video en el que aparece una.

Chica3d haciendo distintas posturas o sea andando, corriendo, saltando, disparando etc.

Seguro que sabéis de cual hablo y yo lo he visto como 2 veces, pero como pasa siempre.

Cuando te hace falta algo nunca lo encuentras, venga gracias y hasta pronto.
ESTOPA - 01/10/2008 03:38
Pues no tengo ni idea de a qué te refieres. Pero vamos, si lo quieres para ver referencias las tienes por todas partes, desde grabarte a ti mismo haciendo el movimiento que quieres animar hasta libros y videos en youtube.
ESTOPA - 01/10/2008 17:35
Buscando, he encontrado esto: youtube - lowpoly Woman.

Pero si te digo la verdad algunas animaciones no están muy bien que digamos.
R0cKxTaR - 04/10/2008 19:17
Hola qué tal. Hace rato probé Blitz3d y es super rápido y dios la cantidad de ejemplos que tiene es asombrosa, yeah. Pero por curiosidad me gustaría escuchar su opinión sobre dark basic pro, ese bestia pacheca del basic y que parece más barato que Blitz, pero que en realidad no lo es.

Personalmente creo que Blitz es para gente que quiere ser programador por su parecido a C++ y Darkbasic profesional para los artistas o gente no muy clavada en eso de ser coder, no crees? Saludos.
krateos_29 - 04/10/2008 20:05

Hola qué tal. Hace rato probé Blitz3d y es super rápido y dios la cantidad de ejemplos que tiene es asombrosa, yeah.

Pero por curiosidad me gustaría escuchar su opinión sobre dark basic pro, ese bestia pacheca del basic y que parece más barato que Blitz, pero que en realidad no lo es.

Personalmente creo que Blitz es para gente que quiere ser programador por su parecido a C++ y Darkbasic profesional para los artistas o gente no muy clavada en eso de ser coder, no crees? Saludos.

Yo no sé nada o casi nada de programación y en 3 semanas he logrado hacer una visita virtual con colisiones a lo frames por segundo la mar de maja con lightmaps y todo.

Personalmente creo que Blitz es muy, muy potente y se puede hacer bastante sabiendo muy poco de programación.
GallaZ - 04/10/2008 20:16
Hola, retornando el juego de coches que se inició, he estado haciendo mi versión. Desde los dos ejemplos de Cibertronic y murdokiler. Aún me quedan varias cosas.

Por hacer, sobre todo texturizar el circuito y poner el cuenta vueltas. Pero me.

He estado centrando más en el código. Espero que os sea de ayuda y os guste.

He adjuntado los modelos en 3dsmax, por si alguien le gustaría tocar el circuito o el.

Coche. Un saludo de Galláz.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #82795

Falco - 05/11/2008 21:45
Una pena que hallais dejado este hilo, gracias a él comencé a hacer yo también un juego de coches, ahora voy por el online, ya funciona el chat y pronto ya se podrán echar partidas multijugador.
ESTOPA - 10/11/2008 22:24
Pues no dudes en publicarlo por aquí cuando lo tengas. De todas formas, aunque no escriba gente en el foro, seguro que si pones tus dudas y/o avances habrá muchos interesados.
69recc - 11/11/2008 12:55
La verdad yo lo reviso casi todos los días, pero como no se mucho de Blitz no comento nada además ahora estoy con Blender.

Pero la verdad depende de todos mantener el mensaje vivo con inquietudes o sugerencias.
X-Maker - 13/11/2008 09:53
Buenas. Soy nuevo aquí ya me he presentado en la sección bienvenido, buen o pues el Blitz es un programa que me interesa mucho y hace tiempo que estoy trabajando el proyecto de un RPG (role playing game) creo que es así.

Bueno era pera deciros que como sois tan sabios aquí, seguramente os iré preguntando cosas ;d. Saludos.
eduardo777 - 13/11/2008 18:16
Bienvenido x-Maker, espero podamos ayudarte en cualquier duda que tengas, espero te salga bien el proyecto del RPG.
Cibertronic - 16/11/2008 18:27
Hola amigos. Como están, aquí yo regresando nuevamente a subir algo, es un proyecto que tengo, bueno que ingrese a la universidad y ahora si no tengo ni para el Messenger aquí les dejo mi proyecto en ta el código y el ejecutable espero les de ideas (y), un gran saludo y eso de que ya no escribamos seguro es porque estamos muy enrolados en nuestros códigos esto es maravillosos, yo mismo no lo puedo creer cuando empezamos mover una bolita me emocionaba y ahora ya casi todos hacemos juegos sigamos para delante.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #85937



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #85938

krateos_29 - 16/11/2008 19:02
Ala. Si mueve el peón a g9 en vez de mover al rey se evita el mate. Está genial. Madre mía que razón tienes, de la bolita a esto.
Cibertronic - 17/11/2008 04:53
Si ahora lo veo también el rey puede escapar, como iría la jugada, con tanto jugar juegos en el PC ya me olvide de los más básico del ajedrez.

Tanto preocuparse por el código en Blitz.
ESTOPA - 24/11/2008 17:31
Bueno, como ya dije anteriormente en el mensaje, estaba haciendo uno hola para probar y me quede atascado a la hora de hacer la animación del salto. Como no podía subir archivos hasta ahora pues no lo pude poner. Ahora que puedo lo subo a ver si a alguien le sirve de ayuda o me ayuda a mi a hacer la rutina del salto. Hasta luego.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #86551

andyjazmin - 26/11/2008 03:29
Hola a todos, bueno estoy iniciándome con Blitz3d, en lo personal me parece potente y a la vez sencillo, no obstante, tengo 2 preguntas puntuales acerca de este motor. Las hago en este tema ya que su título es Blitz. Bueno iré al grano para no quitarles su tiempo:
-¿puedo hacer que el cielo cambie según el horario, como en Morrowind y Zelda: Ocarine of time? Es decir, amanecer, atardecer, anochecer, volver a amanecer, moviéndose el sol y la luna, y los efectos de luz según la hora.
-¿puedo hacer que en mí sencillo juego 3d en 3° persona mi personaje además de correr y saltar, pueda trepar paredes, subir escaleras verticales, colgarse y sujetarse de salientes y de precipicios? Para que se hagan una idea recuerden a Tomb Raider y Príncipe de Persia, evidentemente sólo tomen en cuenta el factor interacción con el escenario nada más.

Sólo serían estas dos preguntas, me atrevo a hacerlas puesto que he visto demos muy atractivos para este motor y podría ser que en una de esas sí se pueda hacer lo que les pregunto, sin embargo, espero alguien pueda decírmelo con certeza, de antemano muchas gracias, por su tiempo y respuestas. Un saludo.
Eclipseok - 30/11/2008 18:08
Hola, la verdad es que yo programo en Darkbasic pro, pero si te puedo responder a las dos preguntas que has puesto.
1ª si, se puede hacer y de muchas maneras distintas, pero no es tan fácil como pudieras esperar, la verdad es que conseguir un efecto de esas características y que sea realista es bastante difícil.
2ª si tu sencillo juego consigue hacer todo eso ya no será un juego sencillo. Pero también sí, se puede hacer.
eduardo777 - 10/12/2008 21:58
Aquí mi aporte, un minijuego, el código no está comentado y la manera que programe los diamantes no es la mejor ni la correcta, pero puede servir para hacer algo rápido, van adjuntos archivos max 9.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #87790

ESTOPA - 10/12/2008 23:02
Está bastante bien, y muy vistoso me ha gustado, pero soy un poco malo, no controlo ese salto tan rápido.
nho03 - 18/12/2008 00:41
He empezado hoy con el Blitz intentando cargar un.3ds, vale? He echo lo mismo que haces tu para cargar la bola y el plano de la hierba pero¿dónde guardas los 3ds? No hay que poner la ruta entera?
Solo con poner cara lo busca solo? O hay que meterlos en la carpeta de Blitz?
Si podéis explicar eso porque no se carga la cara que he echo, o remitirme alguna página de este mensaje también porque no lo he leído entero. Gracias.
crashon182 - 18/12/2008 17:48
Si el archivo (*.3ds) se encuentra en el mismo directorio que el archivo del código Blitz no hay problema con poner cara.3ds.

Si dentro de la carpeta de tu proyecto tienes una carpeta llamada, por ejemplo, modelos, debería colocar modelos/cara.3ds. Saludos.
nho03 - 18/12/2008 22:54
Gracias lo he probado y tampoco renderiza, tendrá esto que ver con que el Blitz que utilizo es la versión demo? Los ejemplos si se me renderizan bien.
crashon182 - 19/12/2008 13:15
Lo que puedes probar entonces es con un programa como Milkshape abrir el 3ds e importarlo a otro formato que reconozca la versión demo del Blitz.
nho03 - 19/12/2008 16:44
El formato (*.3ds) sí lo reconoce el Blitz demo, porque los ejemplos sí tienen los modelos en (*.3ds) y me renderizan bien. No se de todas maneras cambiaré el formato en 3ds Max a (*.obj) a ver si aparece. Gracias.
69recc - 19/12/2008 22:38
Revisa la posición de la cámara a ver si está dirigida al objeto a lo mejor este mirando hacia otro lado o la escala del objeto a lo mejor es tan grande que la cámara queda dentro del objeto, o muy pequeño quien sabe a veces son cosas así.
nho03 - 22/12/2008 00:50
Ya me sale la cabeza, era cuestión de que la cámara no miraba a la malla, pero bueno ahora el problema es que solo veo la parte de arriba de la cabeza y no sé cómo rotar la cámara pongo Turn Entity Camera y Rotate Camera, pero no rota.

También he probado con Point Entity Camera, cara y no veo ni la nariz, ni los ojos.
¿Cómo hago? Gracias.
andyjazmin - 25/12/2008 01:33
Hola comunidad, bueno después de investigar y probar, me he decidido por fin por Blitz 3d, pero lamentablemente ya empezamos con problemas.

Miren lo que pasa es que instalo la versión de prueba, pero cuando quiero abrir un sample o ejemplo, se abre el código (texto) pero me salen dos errores cuando coloco run programa, a saber:
-Runtime message programa has ended - Aceptar.

O en otras ocasiones se abre la aplicación, pero se cierra enseguida por una tal ilegal memory address.

Y en otras ocasiones, las menos, sí se abren como corresponden.

Les cuento mi PC tiene Windows XP y cumple con los requisitos de sobra para este programa.

A alguno le ha pasado lo que ha mí? Alguna posible solución?
Obviamente antes de publicar busque por mi cuenta, pero todo sale en inglés.

De antemano, muchas gracias por responder.
eduardo777 - 26/12/2008 00:25
Pues en lugar de abrir el ejemplo abres una función, suele suceder, tienes que fijarte bien en el nombre del ejemplo. Si no es eso, me quito el nombre. Saludos, y buena suerte.
andyjazmin - 26/12/2008 02:18
Muchas gracias por responder, sí efectivamente es, así como me dices, no habría el ejemplo propiamente tal si no lo otro.

Sin embargo, me sigue ocurriendo el segundo problema:
Abro la aplicación correctamente y anda normal, pero se cierra al cabo de un ratio o en seguida por una tal ilegal memory address.

A que se debería eso? Mi PC tiene Windows XP service pack 3, 1 Gb Ram, Pentium 4 y Ati Radeon x300 de256 Mb.

Desde ya muchas gracias y ya no los molesto más.
Nameless - 30/12/2008 23:24
Vaya, soy nuevo por aquí, veo que ya van muy avanzados en esto del Blitz3d. Yo llevo aproximadamente 1 mes trabajando en Blitz y pues ya he logrado algunas cosas pero me leeré las 22 páginas a ver si capto algo.

Y ya que ando por aquí me podrían explicar que son, cómo funcionan y cómo crear los lightmaps. A ver si alguien me puede ayudar, en fin, aquí dejo un par de screenshots de mi proyecto. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #89647



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #89648

krateos_29 - 31/12/2008 00:06
Vaya vaya. Está muy bien tu proyecto. Esas imágenes están renderizadas en tiempo real desde Blitz? Como conseguiste esa iluminación sin Light Maps?
Básicamente un Lightmap es una imagen en blanco y negro que indica a la textura en el canal difuso donde iluminarse más y donde iluminarse menos, creando falsas sombras y ahorrando cálculo de iluminación al PC.

Antes eran muy usados, pero ahora con los juegos de última generación se están quedando algo obsoletas, ya que la mayoría de la iluminación es generada en tiempo real.
Nameless - 31/12/2008 00:18
Vaya así es, están renderizadas 100% en tiempo real, lo que se puede lograr con un par de luces bien colocadas, la primera imagen no tiene nada en especial tan solo que el suelo tiene algo de transparencia y un mirror debajo y la segunda imagen tiene normal mapping en el suelo y paredes. Gracias por la respuesta, ¿no conoces algún programa para la creación de Light Maps? Saludos.
krateos_29 - 31/12/2008 13:43
Cualquier programa de tratamiento de gráficos tridimensionales en 3d es capaz de generar lightmaps. Yo utilizo 3dsMax pero con Blender también se puede.

No sabía que Blitz soportara Bump y normal.

Como lo haces para colocar las luces? Mediante código en el Blitz es una.
Nameless - 31/12/2008 14:33
Pues precisamente lo hago con código, más o menos así: Primero creo una luz. Luz=createlight(2,0). Lightcolor luz,154,151,8.

Lightconeangles luz,20,20.

Lightrange luz,40.

Positionentity luz,0,0,0;la coloco en cualquier lugar.

En el bucle prinicipal pongo que me devuelta las coordenadas de la luz.
While not keyhit(1).

Moverluz(),llamas la función para mover la luz.

Text 0,140, entityx#(luz).

Text 0,155, entityy#(luz).

Text 0,170,entityz#(luz).
Wend.

Y en una función le doy movimiento a la luz para moverla con el teclado y posicionarla donde me de la gana * 0 *.

Function moverluz().

Mover la luz con las teclas.

If keydown(209)= true then moveentity luz.1,0,0 if keydown(211)=true then moveentity luz,-1,0,0 if keydown(207)=true then moveentity luz,0,0,-1 if keydown(199)=true then moveentity luz,0,0,1 if keydown(24)=true then moveentity luz,0,1,0 if keydown(38)=true then moveentity luz,0,-1,0.

End function.

Y pues básicamente con eso ya puedes mover la luz y posicionarla donde tu veas que queda bien, copias los valores que te devuelve el Blitz de X,Y,Z y los pones en position entity luz y ya queda, así posiciono muchas cosas en el Blitz, también puedes rotarla con pitch, roll, yaw. Saludos.
krateos_29 - 31/12/2008 15:11
Vaya vaya. Muy útil. Seguro que nos sirve a más de uno.
maklister - 20/01/2009 16:50
Hasta hace poco inicie en el modelado en 3dsmax, y Blitz 3d, quiero preguntarles, cuando uno termina una aplicación en Blitz, como hace para tener el ejecutable, es decir reproducirlo sin la necesidad de tener instalado Blitz.

Agradezco cualquier respuesta.
eduardo777 - 20/01/2009 19:22
En el menú de Blitz3d, programa y create executable.
maklister - 21/01/2009 18:22
Muchas gracias Eduardo, no sé porque no lo había encontrado.
maklister - 23/01/2009 18:50
Una ayuda, lo que ocurre es que la función Extractanimsek no aparece, cuando la escribo queda blanca y cuando le doy correr al programa me sale que no encuentra la función, acaso de debe a que tengo la demo de Blitz, agradezco sus respuestas.
eduardo777 - 24/01/2009 13:54
Vaya. A de ser la versión del software que usas, yo tengo el Blitz3d 1.98 y si tiene esa función, mira que versión de Blitz3d tienes tal vez tengas versión anterior que no incluye esas funciones y si es así actualiza y listo. El 1.98 creo que es el último.
maklister - 24/01/2009 17:12
Muchas gracias, tiene razón tenía una versión anterior, pero ya instale la que usted tiene, gracias nuevamente.
maklister - 31/01/2009 17:24
Necesito una ayuda, alguien me puede regalar el enlace del plugins pipeline para exportar a b3d, o si alguien conoce otra forma de abrir este tipo de archivos le agradecería, también me gustaría saber cómo abrir un archivo con extensión mdl y md2 lo intente con Milkshape, pero solo me carga los huesos, les agradezco cualquier respuesta, gracias.
raulgp - 04/02/2009 19:05
Yo de programación, poco. Suerte.
Elysium - 10/02/2009 22:02
Maklister prueba este enlace. [url]http://www.onigirl.com/pipeline/index.html[/url].
Elysium - 10/02/2009 22:05
Hola a todos. Bueno está es la primera vez que escribo en este foro, aunque muchas veces lo visite para obtener algún consejo que necesitaba en fin mi duda.

Como obtengo el nombre del juego que creo con el comando de.

Hostnetgame ().

Me explico:
Por ejemplo, el Quake o cómo el Starcraft al tu crear un juego. El otro player que se va a unir le aparece automáticamente el nombre del juego de la persona que lo creo esa es mi duda como le muestro al player que se va a unir el nombre del juego que cre.
Elysium - 10/02/2009 22:30
Gracias por la ayuda que me puedan brindar.
Cibertronic - 17/03/2009 12:00
Hola nuevamente a todos, yo aquí regresando después de unas muy largas vacaciones. Necesito su ayuda (que novedad). Estoy haciendo un fulbito de mesa, bueno no llego ni a la mesa, pero estoy trancado con el rebote, lo conseguí con una función aleatoria, pero la pelota no rebota naturalmente.

Alguien tiene una idea de cómo conseguirlo.

Aquí les dejo hasta dónde llegue.

En el comprimido están los códigos fuentes pasito a pasito.

Prueba 1,2,3,4, bueno está de más decir que el código más evolucionado es la 4.

Ya de antemano, gracias por sus sugerencias.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #97999



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #98000



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #98001

eduardo777 - 17/03/2009 14:36
Hola Cibertronic, pues yo nunca he hecho algo así aún, pues buscando en los ejemplos de Blitz3d encontré esto. Allí explica todo, al menos el ejemplo es funcional.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #98031

Cibertronic - 18/03/2009 03:22
Si el cogido funciona, aunque la pelota todavía tiene mucho de aleatorio en su revote al menos siempre va hacia adelante, checo el código y a ver si lo podemos mejorar, gracias.
kilerz - 20/03/2009 01:33
Hola, sabéis cómo texturizar un child? Yo hago esto, pero me da error.
[code]modelo = loadanimmesh(modelo, b3d). Arma = findchild(modelo,rifle).

Tex_arma = loadtexture (arma, png).

Entitytexture arma, tex_arma[/code]

Salta con error de que no es una entidad.
¿Alguna idea?
eduardo777 - 20/03/2009 02:12
Arma = findchild(modelo,rifle), arma no es entidad, la entidad es rifle es un Mesh aparte ¿no? Pues ese Mesh tienes que texturizar.
kilerz - 20/03/2009 08:40
Rifle está dentro del Mesh modelo es decir, el Mesh modelo contiene la malla del personaje y del rifle con un enlace para la animación y todo en un único archivo.b3d, pero que ambos modelos tienen coordenadas UV distintas, de ahí que quiera texturizar por separado.

Os adjunto el modelo y las 2 texturas, son sacadas de TurboSquid free model.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #98233

eduardo777 - 20/03/2009 15:07
Bueno, hazlo más fácil entonces, desde el programa de modelado coloca las texturas a los modelos y los exportas así, será lo mejor.
kilerz - 20/03/2009 15:17
Bueno probaré así a ver. Gracias.
xarpo_ - 26/03/2009 23:27
Hola, estoy empezando a usar el Blitz, he empezado con la pelota. He conseguido entender perfectamente todo el 1º capítulo, he hecho mi programa con una pelota moviéndose y rodando por el campo. Pero se me ocurrió hacer que además de moverse, también saltara. Con el enter consigo que se eleve, pero no consigo decirle al programa que si y vale más que 0 la pelota baje. Seguro que es una tontería, pero llevo horas intentando arreglarlo y no lo consigo, a ver si me ayudáis, gracias.

Adjunto el programa para que veáis como es.

Graphics3d 640,480,16,2.

Suelo=loadmesh(suelo.3ds).

Pelota=loadmesh(pelota.3ds).

Cámara=createcamera (pelota).

Light=createlight().

Positionentity cámara,0,50,-25.

Turnentity cámara,45,0,0.
While not keyhit(1) t tif keydown(2 then moveentity pelota,0,0.5,0 rotatemesh pelota,10,0,0 tend if tif y#>0 then moveentity pelota,0,-0.5,0 rotatemesh pelota,10,0,0 tend if tif keydown(200) then moveentity pelota,0,0,0.5 rotatemesh pelota,2.8,0,0 tend if tif keydown(20 then moveentity pelota,0,0,-0.5 rotatemesh pelota,-2.8,0,0 tend if tif keydown(203) then Turn Entity pelota,0,1,0 tend if tif keydown(205) then Turn Entity pelota,0,-1,0 tend if t updateworld renderworld flip t.
Wend.

End.



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #98730

xarpo_ - 27/03/2009 11:42
Ya lo arreglé, he modificado un poco la programación, inspirándome en ejemplos vuestros posteriores y lo conseguí.

Graphics3d 640,480,16,2.

Piso=loadmesh(suelo.3ds).

Bola=loadmesh(bola.3ds).

Cámara=createcamera (bola).

Light=createlight().

Positionentity cámara,0,50,-25.

Turnentity cámara,45,0,0.
While not keyhit(1).

Incrementos relatios para la estrella.

X#=0.

Y#=0.

Z#=0.

Ay#=0.

Incremento relativo para que la estrella ruede sobre si misma.

Ax#=0.

Controlando los incrementos con las teclas del cursos tif keydown(2 then y#=0.5 tend if tif keydown(2 =false and entityy(bola)>0 then y#=-0.5 tend if tif keydown(200) then.

Z#=0.5.

Ax#=2.8 tendif tif keydown(20 then.

Z#=-0.5.

Ax#=-2.8 tendif tif keydown(203) then.

Ay#=1 tendif tif keydown(205) then.

Ay#=-1 tendif.

Decirle que siginifican al programa que los valores que le hemos dado antes.

Moveentity bola,0, y#, z#.

Rotatemesh bola, ax#,0,0.

Turnentity bola,0, ay#,0.

Actualizando el mundo.

Updateworld.

Renderworld.

Flip.
Wend.

End.

Gracias, iré al siguiente nivel, colisiones, a ver si lo consigo.
KiusteR - 08/04/2009 05:16
No sé bien, pero el hilo del tema ha sido abandonado? Porque hace más de una semana que no se comenta nada. El tema es que iba a publicar unos códigos y también iba a proponer una propuesta interesante y me preguntaba si los que saben Blitz3d aún están interesados. todavía están disponiblesí.
Cibertronic - 08/04/2009 07:16
Hola Kiuster. Veo que no eres muy paciente, yo teaseguro que todos estamos aquí, aunque ya no trabajando con Blitz, por jemeplo yo estoy explorando otros programas, pero siempre con ganas de seguir adqueriendo conocimiento acerca de programar videojuegos y como no hacerlo con Blitz.

Y bueno si tienes código para comentar súbelo y si es interesante no te faltaran los comentarios y sugerencias. Un gran saludo.
Turriano - 08/04/2009 15:12
Hola amigos. Aprovechando que andamos por aquí, os hago una pregunta: Yo tengo el programa Blitz basic de siempre, el que hace programas en pantalla completa.
¿Hay alguna versión de b que haga programas tipo Windows, es decir, en ventanas? Saludos.
Cibertronic - 08/04/2009 18:12

Hola amigos, aprovechando que andamos por aquí, os hago una pregunta:
Yo tengo el programa Blitz basic de siempre, el que hace programas en pantalla completa.
¿Hay alguna versión de b que haga programas tipo Windows, es decir, en ventanas?
Saludos.

La forma de tener de correr un programa en una ventana es muy sencillo para eso modificamos la primera línea de nuestro programa la que tiene graphics3d o graphics:
Por ejemplo:
graphics3d 640,480,16,2 donde: 640,480 es el ancho y alto de la ventana.
16 es la profundidad de color es decir 16 bits o 32 bits calidad en otras palabras.

Y el último parámetro es la orden en ventano o no.

Si es:
1 es a pantalla completa (full screen)
2 es en ventana (windowed)
.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100003



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100010

Turriano - 08/04/2009 19:26
Ciber, no sé qué pasa, que cuando hago el ejecutable con las instrucciones que me has dicho, me sale a toda pantalla y con las fuentes enormes. Como si se hubiera bajado la resolución al mínimo.
¿Puede ser que tengo una versión antigua? Llevo con el programa un mínimo de cinco o siete años.

Voy a bajarme otro a ver.
KiusteR - 08/04/2009 19:36
Hola. Y, es verdad, la paciencia no es exactamente uno de mis fuertes. Bueno, pasando rápidamente a la propuesta.

Hace bastante que vengo programando en Blitz BASIC y realmente se pueden hacer maravillas con este motor.
propuesta:

Lo que iba a proponer es hacer alguna especie de RPG avanzado (o sea, niveles, elementos dinámicos, variables de experiencia, efectos de partículas, skills, y toda la bola), el modelo ya está hecho, texturizado y animado: ni más ni menos que mi querido dwarf: que ha copado tantos de mis programas, lo envío adjunto al mensaje (extensiones.b3d.x.3ds).

Lo que quedaría de hacer sería una historia y el mundo, que queda a su juicio. Si quieren agregarle más personajes (hechos por ustedes o no) bienvenidos sean.

Espero que la propuesta sea interesante. Me surgió por que la mayoría de las veces uno aprende más leyendo el código mismo que las mismas explicaciones. Creo que este ejercicio puede beneficiar enormemente a:
-Entender mejor la estructura de un juego eficiente.

Manejar mejor las animaciones y secuencias.

Manejar mejor los functions y las llamadas.

En fin entender mejor el programa.
que les parece la idea? .

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100012



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100013

KiusteR - 08/04/2009 19:52
Bueno, aquí les mando unas imágenes de un juego que hice hace tiempo con un amigo. No es la gran cosa, pero me da nostalgia.

Terragen, 3DWS y por supuesto Blitz3d.

Posdata: lástima que le había agregado un function para gestionar partículas de lluvia. Estaba muy bueno, pero no se adonde quedo. Tendré que buscar en el desorden que llamo PC, entre código y código hasta que salga a la luz.

Espero que les guste: Hammerage beta 0.2.
KiusteR - 08/04/2009 19:53
Me olvide de las imágenes.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100015



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100016

xarpo_ - 08/04/2009 22:24
A mí la verdad que me interesaría, creo que sería más ameno aprender el programa con objetivos en conjunto. La única pega es que, acabo de empezar con el programa, solo sé 4 cosas, aunque acabo exámenes en 1 semana, luego me pondré a saco con el Blitz.
KiusteR - 09/04/2009 01:14
Buinas Xarpo, que bueno que te interese. Y la verdad es que es un programa excepcional. Para aprender bien b3de nada más que entrar a los samples mismos que vienen con el programa y estudiar el código, yo lo hice así y aprendí muchas cosas. Con el tiempo te darás cuanta cuan simple es la cosa.

Si tienes alguna pregunta voy a hacer lo posible por darte una mano <(o)>.
xarpo_ - 09/04/2009 08:02
Gracias Kiuster. Te tomo la palabra en relación a que me hecharás una mano en caso de dudas. La verdad que sin saber programación y averle dedicado pocas horas, ya se hacer 4 cosas, y no parece difícil, pero vamos, que me queda mucho PO aprender. Por lo que cuenta con mis dudas de aquí a una semana, y un poco más adelante con mi ayuda para tu juego. Saludos.
maklister - 09/04/2009 17:50
Compañeros, necesito una ayuda, hace poco inicie el desarrollo de una aplicación, y me quede en la presentación, les dejo el código que estoy usando, lo que quiero es que cuando se oprima sobre el botón me descargue de memoria la imagen portada.jpg, es decir que no se vea, les agradezco si alguien me dice dónde está el error, y si me puede aconsejar otra forma de hacerlo, gracias.

Les agradecería también si me ofrecen el instalador de Blitz3d 1.98 ya no lo encuentro en internet, gracias nuevamente.

Graphics3d 800,600.

Setbuffer backbuffer().

A=0.
While not keyhit(1).

If a=0 then gosub presentación.

Updateworld.

Renderworld.

Flip.
Wend.

End.

Presentación.

Portada=loadimage (portada.jpg).

Jugar=loadimage (jugar, png).

Op=0.

A=1.
While op=0.

X=mousex().

Y=mousey().

Drawimage portada,0,0.

If x>615 and y>441 and x<775 and y<470 then.

Drawimage jugar,615,441.

If mousedown (1)=true then op=1.

Endif.

Flip.
Wend.

Movemouse 10,10.

Freimage portada.

Freimage jugar.

Return.
kilerz - 09/04/2009 19:37
Prueba con hidentity.
Cibertronic - 09/04/2009 21:53
Hola maklister, todo tu código está bien, lo único que te faltava era una línea CLS al final del sub portada: Modifique tú odigo un poco, los cambios están marcados con ;*******
Para hacerlo más didáctico, aquí les envío el código, para que lo revisen. Un saludo a todos.

Posdata: siempre es bueno ir sangrado los bloques de código para hacerlo más legible, no altera el resultado, pero tiene mejor estilo.

Posdata 1:puedes descargar la demo o comprar el Blitz desde su página oficial:
[url]http://www.blitzBasic.com/products/_index_.php[/url]
La dmeo tamiben es funcional la que uso, solo te manda un nensaje al iniciar que no molesta mucho.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100078



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100079

maklister - 10/04/2009 17:33
Muchas gracias Cibertronic, ciertamente lo que me hacía falta era esa línea de código, y me pareció estupendo el cambio del cursor, nuevamente muchas gracias.
KiusteR - 10/04/2009 20:16
Buinas. Aquí les mando parte del código que hice hace un rato. Es la base y el estilo de jugabilidad que pretendo. Bueno para el que quiera mirarlo un rato, opinen y aconsejen.

No tengo problema en que lo modificen o lo mejoren (para eso lo hice), la carpeta raíz tiene que estar en c:
Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100119

Cibertronic - 12/04/2009 08:31
Interesante el código puesto por Kiuster para hacer el cambio de secuencias, gracias Kiuster. Aquí les dejo otra forma de hacerlo, trate de explicarlo en el pdf que adjunto, pero aún no lo término aún, el envío el código.

El ejecutable también y desde luego los archivos de texturas y modelos.

Hasta una próxima.

Posdata: el control es con las teclas del cursor, y corre presionando control de la izquierda.

Y también como no a kiusterpor el modelo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100203



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100204



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100205



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100206

xarpo_ - 14/04/2009 13:53
Vaya, tendré que ponerme las pilas a partir del lunes, porque eso que estáis haciendo es bastante más avanzado de mi nivel.
Cibertronic - 15/04/2009 03:01
Tranquilo Xarpo, veras que, aunque parecen de un alto nivel, no son más que los mismos ejemplos que tenemos desde muchos mensaje atrás.

Eso es lo que me encanta del Blitz, con muy poco se puede obntener resultados algo decentes.

Te aconsejo que revises desde el promer mensaje, hacer la bolita rodar, el coche, ha y jugarle a Jesus, (parece que nadie le gano, o nadie lo haba judado?)
Bueno lo que quería decirte es que seguro estars enseñándonos unos códigos hechos por ti que nos dejaran sorprendidos (y).
crashon182 - 15/04/2009 13:55
Ánimo muchachos, que estoy aprendiendo mucho de los ejemplos que colocan en este lugar.
KiusteR - 16/04/2009 02:08
Xarpo, vas por buen camino, basic es -personalmente- Lo mejor para empezar a aprender a programar videojuegos. Cualquier pregunta especifica hacenosla saber.

Una buena recomendación es hacer un simple juego de carreras. El mismo Blitz trae un modelo de un rally-car en media, que te parece?
KiusteR - 16/04/2009 03:13
Un código simple y muy realista desombras dinámicasen Blitz3d. En realidad, el modelo era (*.md2) pero lo modifique para que acepte las secuencias del enano. Comentarios por favor.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100527



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100528

trauma - 18/04/2009 14:54
Vaya. Está muy bien, sirve sólo para terrenos o también proyecta sobre meshes?
eduardo777 - 18/04/2009 16:20
Pues lograron hacer sombras dinámicas donde supuestamente no se podía si no con plugins, esta excelente.
KiusteR - 18/04/2009 23:26
Trauma. Gracias por el agradecimiento. El código de sombras es solamente para terrenos con loadterrain. Pero sirve tanto como para meshes animados y estáticos (como edificios o árboles). Es bastante rápido.

Cualquier duda hacela saber.

Otro aviso: todos los interesados en Blitz3d hacen bien en ojear esta sorprendente librería (.dll) para Blitz3d. Se llama ninfa3d engine y la use para crear efectos de blur y sombras dinámicas de alto nivel con Dual-proyection.
la página está en inglés y español se los recomindo, es gratuito y completamente funcional. [url]http://www.mysticrealitystudio, comuv.com/index.php?p=1_1[/url].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100908



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100909



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #100910

raistlin_majere_11 - 22/04/2009 14:56
Hola a todos. Antes de nada menudo mensaje, me va a costar algo de tempo ponerme al día con todos ustedes. Segundo estoy intentando hacer un videojuego en Blitz3d de detective Conan (aventura gráfica) y me gustaría que me resolvierais la primera duda (y todavía no he empezado a programar nada).

Quiero poner una intro para el juego, y me gustaría saber si se podría poner un video, o tendría que ser mediante imágenes? (no sé si me he explicado).

Con lo de imágenes me refiero.
1.- Imagen de shinichi y abajo un texto : soy shinichi kudo estudiante de secundaria, y así todo el rato. (creo que ahora está más legible).

Bueno gracias a aquel que me pueda responder, e iré poniéndome al día con este mensajes.
KiusteR - 22/04/2009 20:45
Raistlin, el Blitz trae un comando propio para cargar videos. Aquí te mando un código que abre un opening de Conan en formato.avi.
espero que te sirva.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101172

raistlin_majere_11 - 23/04/2009 12:07
Vaya gracias, pero el comando no me lo detecta. Me pone error en la función de cargar el video no sé. Gracias.
KiusteR - 23/04/2009 14:40
Vaya, con que versión de Blitz3d trabajas.
KiusteR - 23/04/2009 18:22
Yo trabajo con la v 1.98vos?
raistlin_majere_11 - 23/04/2009 18:50
Vaya pues si te digo la verdad no tengo ni idea de qué versión es porque como la que colgaban era de prueba yo me metí en el ares y me descargue una full, pero no sé que versión es y no sé dónde se mira.
KiusteR - 23/04/2009 19:03
Mejor no hables de descarga de fulls ni ares aquí que te van a chiflar. A ver cuando te conectas al messenger.
xarpo_ - 23/04/2009 22:14
Bueno, ya estoy libre por fin, me dedicaré 100% a aprender a programar con el Blitz. Y ya que nombras el MSN Kiuster, me ayudaría tenerte en mí MSN para preguntarte directamente cuando tenga dudas.

Mi msn: [email]carlos_12864@hotmail.com[/email].
raistlin_majere_11 - 24/04/2009 10:40
Lo siento por lo del mensaje anterior no sabían que no se podía hablar de lo de las descargas lo siento. Con respecto al messengeryo estoy todo el día conectado lo que pasa que soy de Alicante / España así que, a lo mejor si tú tienes un orario distinto es difícil que coincidamos, pero ya te digo que la mayoría del día estoy conectado y más esta semana que aún me queda de vacaciones.

Posdata: feliz día de Sant Jordi a todos (con un día de retraso, pero más vale tarde que nunca) rosas para todas las chicas del foro de mi parte.
xarpo_ - 24/04/2009 12:35
Yo soy español, de Barcelona.
Cibertronic - 27/04/2009 23:43
ya probé de todo y no corren las librerías, que Kiuster nos enseño. Para mepsezar ni siquiera tengo la carpeta -userlibs.

Y cuando la creo no funciona.

Tan lindas que estaban las sombras.

Bueno moral a continuar.
paio - 28/04/2009 06:45
Hola a todos, bien hoy me puse a leer el hilo de este foro y me sorprendió mucho lo que han avanzado en tan poco tiempo, desde una bolita movida con el cursor hasta un juego de autos que por poco no tiene nada que envidiarle a los que jugaba en mis épocas en la 486 y Pentium 1, Cibertronic se ha metido bastante en el tema que me pareció increíble que ya tenga su propio juego que dicho sea de paso no le puedo ganar a Jesús.

Bien retomo el Blitz que en una época comencé unos 13 tutoriales que están en pdf y rondan mucho por la red para quien los quiera mirar. Luego lo deje porque llegas a un punto donde ves que es muy limitado para lo que tienes en mente por hacer. Me incline a Irrlicht programando en C++, muy bien documentado, pero lamentablemente todo en idioma yankie, en el foro hay 3 o 4 latinos que son casi moderadores, pero no te dejan preguntar en español, así que, me atasque en algunas cosas y lo abandone también.

Ahora retomare el Blitz para recordar cómo funcionaba y devere comenzar de lo más básico para no tratar de hacer un Need for Speed o Call of Duty de primera y ahí es cuando uno se desanima en no poder hacer lo que quiere.

Posdata: no se 3dsMax ni Blender, pero me pareció muy bueno y si lo entiendo el 3d world Studio que incluso exporta al formato nativo de Blitz y también estuve viendo Google skretchup que exporta en x y Blitz lo carga muy bien.

Bueno vasta de palabras y me pondré manos a la obra para poder llegar a hacer algo y probar el ninfa3d que promete mucho con el tema de física y coliciones.

Pregunta: se podrá agregar librerías como newton a Blitz? Saludos a todos y a meter código.
KiusteR - 28/04/2009 19:34
Cyber, userlib creo que se aplica en la versión 1.98. Blitz3d, permite agregar un montón de llibrerías, fastext, newton physics, car physics, ninfa3d, devil shadow system, permitiendo muchos efectos y sistemas útiles para los desarrollos. Solo ay que agregar los.dll y.dcls a la carpeta userlib que ya debe estar creada.

En este mismo momento estoy trabajando en un RPG, y me trabe en las sombras dynamicas de los objetos. Pero me di cuenta que algo así hace uso excesivo de memoria, y puede buggearlo un poco (eso que tengo una PC potente). Así que mi recomendación es establecer sombras estáticas para edificios y para el personaje un simple sprite que se adapte a la superficie del terreno. Saludos paio y bienvenido nuevamente al mundo de basic.
KiusteR - 29/04/2009 03:23
Che cyber, sabes modelar? Porque tengo algunas preguntas en cuanto a modelos (*.3ds) en Blitz3d.
el que sepa algo relacionado, que me de una mano por favor .
Cibertronic - 29/04/2009 03:58
Hi kyuster a ver si nos comunicas sobre tu iquietud, que, si no soy yo seguro te respondem muchos más, sino que somos muy dodestos aquí.
KiusteR - 29/04/2009 05:37
Gracias cyber. Cuando puedas bien de los proyectos que tengas en basic, así se hace un nuevo hilo de proyecto de videojuegos en Blitz3d. Va a ser bastante constructivo.
el problema en si es que hace poco hice un escenario para mí proyecto RPG, bien básico para que no sea pesado. Pero. ¿cómo hago para agregarle Normal Maps y Bump maps? Porque Blitz lo soporta muy bien (lo he visto en algunas demos), pero no se configurarlo. si alguien me puede dar una mano, desde ya gracias. Saludos, y larga vida a basic.

Aquí mando unas imágenes.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101567



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101568

Cibertronic - 30/04/2009 18:07
En qué programa estas modelando.
KiusteR - 30/04/2009 18:23
Max 2009.
Cibertronic - 30/04/2009 18:31
Chevere, haber te doy el método que uso si deseas hacer una modelo y después crear con Adobe Photoshop el mapa Bump o normal, va ha ser algo difícil (difícil no impocible), incluso por ahí ley que sugerian como ejemplo pintarse la cara de blanco y tomarse una fotografía. (la necesidad es la madre de yasabemos quien) lo que yo hago es tener 2 modelos uno en Low poly y otro con gran detalle muchos polígonos, así a esta última le saco su Bump Map y luego se la paso al Low poly, en Blender la cosa es más fácil, lo estoy comprobando si me das un poco de tiempo creo un tutorial para indicarles como lo hago en 3dsMax una ves ya tendios los 2 elementos el modelo y el mapa de textura ya nos explicas como cargarlos en Blitz.
KiusteR - 30/04/2009 23:48
Che cyber, cuál es tu manera de hacer agua realista en el juego y que tampoco sea muy pesado de cargar. Para crear el cielo usas un sphere o un skybox?
Tenes algún código fácilon de implementar?
paio - 01/05/2009 05:03
Hola a todos por aquí. Les dejo una muestra de lo que estuve haciendo con el ejemplo de la bolita. Verán que saque algunas partes de código de otros ejemplos (díganme si tenían copy right).

Bien la bolita se mueve con las flechas y gira con el ratón.

Falta mucho por hacer aún y optimizar.

Que gire con la grabedad, giro de izquierdo y derecha más real y controlado por velocidad como delante y atrás, mejorar el nivel, portada y mucho más.

Me gustaría poder usar físicas para que sea mejor y más realista, pero estuve tratando de usar ninfa3d que es la única free que encontré y la verdad me complique demasiado y no la supe poner en el juego.

Si alguien quiere aportar alguna ayuda muy bienvenida será. Saludos a todos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101732

KiusteR - 01/05/2009 17:52
Paio, tu código está muy bien y también muy bien organizado. Al ver tu código me doy cuanta que as trabajado bastante con programación en tiempos pasados.

Preguntabas por una librería de efectos físicos. Aquí te mando una buena.
posdata: si algún día te copas con Blitz BASIC, ayúdame en código que tengo unos problemas aquí en el mío.

Blitzode.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101821

paio - 01/05/2009 19:00
Muchas gracias Kiuster, estudiare y probaré esa librería a ver qué llegamos a hacer. Si quieres pásame un mensaje con tu código y que problema tienes a ver si lo podemos solucionar.
KiusteR - 01/05/2009 19:25
Paio estoy publicando mi proyecto en el hilo proyecto Blitz BASIC: conquest online atrás la parte de videojuegos.

Un juego que lo tengo en desarrollo, y es el que me está trayendo problemas de código, que tal si charlamos ahí? Digo, ahí hablamos sobre ese problema, ¿ok?
el aprendiz 3d - 02/05/2009 01:46
Hola blitzeros que bien que anda este mensaje, la verdad que lo tenía medio olvidado y le había perdido el rastro, pero hace poco se aparecieron Kiuster y Cibertronic por el mensaje de ayudarías, y me vine para aquí para ponerme un poco al día.

En esas estaba cuando me tope con un problema. Que con mensaje tan largos y tan ricos en contenidos, o te pasas unos días encerrado para leerlos y seguirlos o no sé. No tienen algún lugar donde tengan todos los recursos juntos? Vi una página web, pero solo me anduvo la página principal y no el resto ¿me pasa esto solo a mí? Lo que pueden hacer (y esto lo sugiero con toda la humildad de un desaparecido) es poner todos los enlaces etc en el primer mensaje como hizo Crashon en el hilo de ayudarías.

Bueno no sé, la verdad es que, andan bastante mejor de nivel que yo así que, una vez más mi rol de aprendiz se hace presente, pero cualquier cosa que pueda ayudar estoy aquí. Saludos.
Cibertronic - 02/05/2009 04:56
Aquí les dejo el ejemplo que tree el mismo Blitz en la versión demo de agua real (archivo cubeweater) y también mis esfuersos por simplificar el código, pero no lo ocnsigo así que, solo le quiete algunas cosas(archivo h2o) a ver si ud si lo entienden y pasan el dato.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101848



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101849

Cibertronic - 02/05/2009 05:01

Hola a todos por aquí, les dejo una muestra de lo que estuve haciendo con el ejemplo de la bolita.

Está bien el juego, que difícil, manejar la volita, pero adictivo, y sí, habría que trabajar en eso de que cuando se desliza sola por la pendiente también ruede, ojalá la termines pronto, promete.
KiusteR - 02/05/2009 08:29
Che cyber, yo también estuve tratando de simplificar el ejemplo del cubewater, hace tiempo. Pero es bastante complicado.

El agua es un 3ds. El efecto de reflejo es increíble. Lo que hace es tomar cada vértice del modelo y moverlo en forma coordenada (usando ecuaciones).

Trate de implementarlo en juego, pero es muy complicado.

Aquí te mando otro código muy bueno de agua realista, a ver si lo podemos descifrar.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101851

trauma - 02/05/2009 14:13
Vaya, muy bueno, me viene perfecto para un proyecto que estoy haciendo. Gracias Kiuster.
el aprendiz 3d - 02/05/2009 16:56
Alguien me responde?
KiusteR - 02/05/2009 19:34
Perdón aprendiz3d se me había pasado tu mensajes.
muy buena tu idea, pero eso creo que tendría que arreglarlo el fundador del hilo. De todas formas, lo que dices estaría muy bueno para ubicar bien los puntos y los avances. Saludos, y espero ver pronto tus avances.
[i]posdata: sabes modelar? [/i].
el aprendiz 3d - 02/05/2009 20:52
Se modelar sí, uso 3ds Max. Ando bien para modelado inorgánico, sobre todo de edificios para los que uso también AutoCAD. De inorgánico estoy tratando de aprender más, pero no tengo un buen nivel por ahora. Cualquier cosa que precises para tu juego pega el grito y veo que puedo hacer.
KiusteR - 02/05/2009 22:28
Gracias pibe, mírate el hilo en el que estoy publicando el juego, ahí puse un boceto de un personaje rápido. Yo probé pasarlo a max pero no me queda muy bien el modelo del dwarf, así que, si quieres darle una intentada, como quieras.
saludos.
Cibertronic - 03/05/2009 04:46
Hola aquí mis primeros esfuersos para tener agua decente el agua no es más que un box con muy poca altura, con muchos huesos que suben y bajan alternadamente pok box y no plane, bueno para que la podamos ver cuando estamos bajo el agua otra es que las paredes dentro de la piscina ya están azules aún sin agua, esto para no estar mcambiando las luces en Blitz. Por que, para tener un codig bastante chiquito para probar el código utilicen el ratón para la dirección y las flechas para avanzar, todavía no está el omnidirección dentro del agua tienes un traje muy pesado y te vas al fondo de la pizina, y bueno si también había tenido el mismo problema el de buscar algo y perderme en tanto mensaje, me baje todo a mi máquina para encontrarlo más rápido, haber sy hoy y mañana lo subo a una página, con indice, para que sea más fácil encontrar todos nuestros aoprtes.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101920



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101921



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101922



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101923



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101924

KiusteR - 03/05/2009 05:46
Muy bueno el código cyber, pero aún tengo mis dudas en cuanto a agua realista en Blitz3d.
es totalmente entendible tu código y muy práctico también, pero no sirve para (por ejemplo) un mar realista, es decir, grandes superficies de agua. Porque el código trabaja sobre el manejo de un modelo 3d con una extensión limitada. Además, el efecto de reflejos de agua son algo fundamental para agua realista, ya sé que es algo complicado, pero para lograr un agua realista creo que tiene que incluir efectos de reflejos y también que sea aplicable para terrenos extensos, como para un hasta donde me alcanza la vista.

Es por eso que sigo estudiando alguna forma de lograr grandes masas de agua con reflejos y ondas, cuando logre algo concreto, lo subo.
muy buen tutorial de todas formas.

Siempre cyber ayudando en el foro, es algo digno de felicitar.
Cibertronic - 03/05/2009 21:48
Que modelos más prácticos, útiles y bonitos estamos produciendo por aquí, esto es el espíritu del software libre todos contribuimos todos aprendemos y por lo tanto todos ganamos.

Bueno auqi les dejo otra demo que hice con los modelos del proyecto de kuister esta el código fuente y el ejecutable.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101955



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #101956

KiusteR - 04/05/2009 06:29
Muy bueno la demo cyber. Especificamente me gusta la forma en que manejas las secuencias, porque yo tengo un problemin. Cuando le pongo atacar, inicia las secuencias, pero repetidas veces hasta que aprieto otra tecla.

Tenes una idea de cómo hacer que se repita la secuencia de ataque, pero con un lapso de tiempo? Es decir, ataca, pasa un variable de tiempo, y luego ataca otra vez. Esta variable va a depender de la agilidad que vaya ganando el personaje y también del arma que este utilizando.

alguna idea?
Cibertronic - 04/05/2009 07:42
Podríamos utilizar millisecs() este comando retorna el la hora en milisegudnos, así podríamos hacer, por ejemplo, que el enano solo pueda dar de hachasos un segundo y luego tendría que esperar digamos otro segundo hasta cargar su poder haber lo boy masticando, supongo que, será solo cuestión de restas al presiona la tecla ataque t1=toma la hora en milisegundos.

En cada bucle posterior t2=toma la hora en milisegundos.

Se anima solo si t2-t1<1000 es decir menor a un segundo.

Algo así, lo trabajo en código, y a ver qué tal me va.
KiusteR - 04/05/2009 23:05
No sé si se entendido bien la idea.
me refiero, que cuando se apreté la tecla atacar:
-Anime atacar(con cierta rapidez delimitada por la variable de agilidad).

Tiempo de espera (dependiendo de la velocidad del arma utilizada).

Anime atacar.

Tiempo de espera. etc.
hasta que se apreté alguna tecla que interrumpa la operación.
alguna idea? .
trauma - 04/05/2009 23:18
Cibertronic dió con la solución, si que vale así. En pseudocódigo sería algo así: Si (hora_actual - Hora_inicial) > 1000 tatacar thora_inicial= hora_actual.

Fin si.

Si lo que quieres es que se pulse una vez y ataque automáticamente hasta dar otra tecla lo único que hay que hacer es añadir una variable estado que nos diga que está haciendo en todo momento, pongamos que 1 es atacando y 0 no hace nada.

Si pulso tecla atacar y estado<>1.

Estado= 1.

Hora_inicial= hora_actual.

Y si no.

Si pulso tecla parar.

Estado=0.

Fin si.

Fin si.

Si estado= 1.

Si (hora_actual - Hora_inicial) > 1000 tatacar thora_inicial= hora_actual.

Fin si.

Fin si.
KiusteR - 05/05/2009 00:14
A, ahora entiendo el concepto, gracias chicos.
saben que? Para mejor organización del proyecto me gustaría que todo el que quiera participar poste, se anote y así podemos dividir los trabajos, y lograr un trabajo grupal más interesante:
-Modelado.

Programación.

Gui.
que les parece? .

Así empezamos el proyecto con trabajo distribuido para todos los involucrados.
trauma - 05/05/2009 00:19
Ok, pues yo me apunto a modelado y si puedo ayudar en programación pues también.
paio - 05/05/2009 01:23
Estoy anotado para la parte de programación. En el mensaje del juego colgué una idea para tener la programación ordenada, así si alguien quiere agregar o colaborar con algo no se nos complique en buscar en cientos de líneas de código y muchas funciones.
xarpo_ - 05/05/2009 08:13
Yo me apunto a modelado, y estoy aprendiendo a programar, pero bueno, eso ya más adelante. Un saludo.
el aprendiz 3d - 05/05/2009 23:46
Yo voy para lo que pueda ayudar tanto en modelado como en programación. Saludos.
el aprendiz 3d - 07/05/2009 22:21
Publico aquí una duda que tengo. Estoy haciendo un editor y preciso guardar archivos con mis variables. Ejemplo, mat, etc. Logro hacerlo bien y me anda el editor, pero preciso que mi programa pueda crear los archivos sin tener que haberlos creado yo. Tengo los comandos openfile / closefile y writefile, pero ninguno createfile para hacer una especie de guardar como.

Es que no existe en Blitz una manera de hacerlo? Yo no la encontré haber que me dicen.
xarpo_ - 08/05/2009 08:34
He visto una cosa en el manual del Blitz quizás puedas utilizar para lo que quieres.

Copyfile from$, to$. Definición:
Copia un archivo del disco duro en una nueva localización.

Descripción de los parámetros:
From$ = ruta/nombre de archivo valido del archivo que va a ser copiado.

To$ = ruta/nombre de archivo donde se va a copiar.

Descripción del comando:
Usa este comando para copiar un archivo desde una ubicación hasta otra. Quizás programaras tu propio instalador y necesitarás copiar.

Archivos desde el directorio de instalación al directorio donde se instalara el programa. Asegúrate de que los archivos que serán copiados.

Existen antes de ejecutar este comando.

Si tienes un archivo base creado en blanco, siempre puedes copiarlo y cambiarle el nombre con este comando, no sería lo mismo que un createfile?
Y ahora me toca a mí, que tengo unos problemas.

Como dije estoy aprendiendo aún, y ahora ando con la recreación de animaciones del personaje.

Extraigo las animaciones y se reproducen perfectamente, pero tengo un problema que si le doy, por ejemplo, adelante, y el muñeco hace la animación de andar, cuando suelto el cursor, el muñeco no avanza más, pero sigue haciendo la animación sin parar.

He probado de poner if keyboard(lo que sea)=false, then.

Parámetros de animación cuando esta parado.

Pero no funciona.

Os cuelgo el programa, a ver si me podéis ayudar. Un saludo y gracias.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #102344

Cibertronic - 09/05/2009 07:04
El comando para crear un archivo es writefile. Este comando crea el archivo o sobrescribe si ya exisite, aquí un pequeño ejemplo:
Player$=Cibertronic.

Archivo = writefile (datos, txt)
Writestring(archivo, puntaje)
Writeint(archivo, 159)
Writestring(archivo, jugador)
Writestring(archivo, player$)
Closefile (archivo).

Arch = readfile (datos, txt)
Ptext$= readstring$(Arch)
Pval = readint(Arch)
Jtext$= readstring$(Arch)
Jnom$ = readstring$(Arch)
Closefile (Arch).
Write ptext$
Write.
Write pval.
Write.
Write jtext$
Write.
Write jnom$.
Waitkey().
el aprendiz 3d - 10/05/2009 15:00
Vuelvo con otra consultiña para ustedes. Mi problema es el maldito titileo. Como hago para que mi programa corra fluidamente sin que titile. Estoy trabajando con imágenes (2d). Existe una solución mágica? Creo recordar que tiene algo que ver con las frames / segundo, pero probé con.
[code]timer = createtimer(¿fps?)
Waittimer(timer)[/code]

Pero me funciona como un delay y me enlentece el programa actualizando cada frames por segundo tiempo. Y aún si le pongo muy poco al timer no logro fluidez.

Como se hacía que estoy medio olvidado.

Si es un tema de poner el CLS después de los cambios en las VAR y justo antes de los drawimages estoy perdido porque tengo todo medio mezclado.
crashon182 - 10/05/2009 21:59
Buenas amigos, nos encontramos realizando un programa el cual contiene un menú archivo con las respectivas opciones de guardar y abrir.

Como debo hacer para que cuando presione el botón guardar o abrir me abra el clásico cuadro de diálogo para buscar la carpeta donde deseo guardar o abrir el archivo?
Una solución la había pensado con las Api de Windows (win Api) pero no conozco mucho del uso desde Blitz3d, alguien tiene una solución a este problema? Saludos.
raistlin_majere_11 - 10/05/2009 22:58
Hola a todos.miren tengo un problema con una idea de juego. Y digo idea porque no he hecho nada ms que empezar y ya me ocurren cosas extrañas.

Solo he hecho el menú y que cuando le demos a jugar inicie el juego, ahora msmo para que cargue simplemente una imagen. Pero ahora quería probar el que cuando le diera cargara la introducción del juego, y aquí ya no actúa como debería. No estoy en mí ordena ahora, pero si pudieran psarse por el tema que he abierto y que tiene los documentos adjuntos necesarios me ayudarían bastante gracias.

El tema es proyecto Blitz detective Conan.

Xao.

Posdata: si alguien me quiere ayudar-enseñar con los modelados seria también de agradecer chao.
paio - 11/05/2009 04:36
Hola a todos después de tantos días sin aparecer por aquí. Les cuento que sigo en el proyecto de la bolita y aquí subo una versión beta para que vean cómo va quedando.

Aun falta mucho por hacer, mejores mapas, efectos de partículas, obstáculos, etc.

Estuve mirando los foros de Blitz y de ahí tome muchas ideas que las acomode a mi necesidad.

Espero que el código este entendible y sea de ayuda para quienes estén empezando a crear un juego como para aquellos que ya están en la creación. Un saludo a todos y a comentar que les parece.

Posdata: no se asusten al comienzo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #102735

paio - 11/05/2009 04:38

Hola a todos. Miren tengo un problema con una idea de juego. Y digo idea porque no he hecho nada ms que empezar y ya me ocurren cosas extrañas.

Solo he hecho el menú y que cuando le demos a jugar inicie el juego, ahora msmo para que cargue simplemente una imagen. Pero ahora quería probar el que cuando le diera cargara la introducción del juego, y aquí ya no actúa como debería. No estoy en mí ordena ahora, pero si pudieran psarse por el tema que he abierto y que tiene los documentos adjuntos necesarios me ayudarían bastante gracias.

El tema es proyecto Blitz detective Conan.

Xao.

Posdata: si alguien me quiere ayudar-enseñar con los modelados seria también de agradecer chao.

Mira en el mensaje que puse con la bolita y ahí esta mi implementación a una pantalla de inicio, al menú, del menú al juego o a créditos y de ellos al menú nuevamente.

Espero te sea de ayuda.
crashon182 - 11/05/2009 04:39

Buenas amigos, nos encontramos realizando un programa el cual contiene un menú archivo con las respectivas opciones de guardar y abrir.

Como debo hacer para que cuando presione el botón guardar o abrir me abra el clásico cuadro de diálogo para buscar la carpeta donde deseo guardar o abrir el archivo?
Una solución la había pensado con las Api de Windows (win Api) pero no conozco mucho del uso desde Blitz3d, alguien tiene una solución a este problema? Saludos.

Resuelto.
crashon182 - 11/05/2009 04:45

Hola a todos después de tantos días sin aparecer por aquí. Les cuento que sigo en el proyecto de la bolita y aquí subo una versión beta para que vean cómo va quedando.

Aun falta mucho por hacer, mejores mapas, efectos de partículas, obstáculos, etc.

Estuve mirando los foros de Blitz y de ahí tome muchas ideas que las acomode a mi necesidad.

Espero que el código este entendible y sea de ayuda para quienes estén empezando a crear un juego como para aquellos que ya están en la creación. Un saludo a todos y a comentar que les parece.

Posdata: no se asusten al comienzo.

Buenísimo, típico juego que te pone de los pelos. Saludos.
xarpo_ - 11/05/2009 08:13

Hola a todos después de tantos días sin aparecer por aquí. Les cuento que sigo en el proyecto de la bolita y aquí subo una versión beta para que vean cómo va quedando.

Aun falta mucho por hacer, mejores mapas, efectos de partículas, obstáculos, etc.

Estuve mirando los foros de Blitz y de ahí tome muchas ideas que las acomode a mi necesidad.

Espero que el código este entendible y sea de ayuda para quienes estén empezando a crear un juego como para aquellos que ya están en la creación. Un saludo a todos y a comentar que les parece.

Posdata: no se asusten al comienzo.

Es increíble el juego, parece simple, pero se ve muy currado y mimado al detallá, sigue informándonos.
raistlin_majere_11 - 11/05/2009 10:34
Paio tu juego está genial. Pero sigo sin saber porqué no me carga el video. El menú lo he montado. Lo gracioso es que, si no le pongo el video si que carga la imagen (o sea que está bien echo) pero si en vez de una imagen le pongo que sea un video entonces da problemas.

Posdata: en lo del menú. ¿cómo haces lo de que el ratón interactúe con las opciones de inicio, opciones y tal? Lo pregunto porque yo lo hago solapando una imagen encima de la del fondo, pero tú me parece que no lo haces así.

Psd#1: si todavía no me he explicado bien pasaros por el mensaje que e creado que hay está mejor explicado y con los archivos adjuntos.

Psd#2: cuando me ha cargado el juego me he acojonado me ha salido una ventana azul diciendo error tal presione ctr Alt Supr para salir o introducción para continuar.
paio - 11/05/2009 12:12

Paio tu juego está genial. Pero sigo sin saber porqué no me carga el video. El menú lo he montado. Lo gracioso es que, si no le pongo el video si que carga la imagen (o sea que está bien echo) pero si en vez de una imagen le pongo que sea un video entonces da problemas.

Posdata: en lo del menú. ¿cómo haces lo de que el ratón interactúe con las opciones de inicio, opciones y tal? Lo pregunto porque yo lo hago solapando una imagen encima de la del fondo, pero tú me parece que no lo haces así.

Psd#1: si todavía no me he explicado bien pasaros por el mensaje que e creado que hay está mejor explicado y con los archivos adjuntos.

Psd#2: cuando me ha cargado el juego me he acojonado me ha salido una ventana azul diciendo error tal presione ctr Alt Supr para salir o introducción para continuar.

Mira el menú lo saque de una librería llamada draw3d que encontré en el foro de Blitz, si abres menú, BB dentro de los includes ves cómo trabaja.

La pantalla azul es parte del juego es la imagen de presentación o sea que no te dio error espera que ahí carga un sonido y un logotipo.

Lo del video no te entiendo bien, paso por tu mensajes. Gracias y me alegra que les guste.
dyonyzyoz - 18/05/2009 05:13
Hola todos les escribe un novato de la programación, pero, pero para este proyecto me apunto con él.
modelado en 3ds Max.

Y aprovecho para hacer una pregunta, ya he hecho mi modelo en 3d y lo exporto en formato (*.b3d) para hacer el recorrido en Blitz BASIC, pero, aunque le creo una light el trabajo se ve oscuro, bueno alguna ayuda y ya saben para el proyecto en 3d para las que sea.
KiusteR - 27/05/2009 16:50
Podrías poner algún indicio de cómo tomaste el código sobre las luces y el modelo?
pioj - 28/05/2009 22:25
Hola a todos, os pongo 2 comentarios:
1) algunos seguimos vivos en http://gamedevelopers.org, cuyo foro de Blitz3d es el oficial hispano/español. Mucha gente se largó por el cambio de server, pero el resto seguimos ahí. Pasados cuando tengáis alguna duda, que para eso estamos.
2) el primer motivo por el que me va lentísimo la demo, (*.rar) del enano es por las texturas. Lo único que tenéis que hacer es ponerlas todas con resolución de potencia de 2 (sobre todo la del cielo, que se está cargando 30fps).

Otro consejo: intentad agrupar siempre en 1 único Lightmap (hacedlo más grande si queréis) toda la iluminación de la escena, porque si no os ira más lento.

Si el escenario es muy grande, podéis agruparlo por trozos, pero tal como lo veo, esa cueva no necesita más que 1 Lightmap para todo, a 1024 como mucho.

Y ya, por pedir, aprovechad que las versiones de Blitz3d ya soportan el formato. Ds, y grabad la mayoría de las texturas a ese formato. Ganaréis rendimiento y reduciréis el tamaño del juego.

Para muestra, os envío el ejemplo que hice para un menú de un frames por segundo a lo Counter-Strike, de hace año y medio, ¿ok? Echadle un ojo.

Para cualquier duda, mail a [email=piojete@gmail.com/"]piojete@gmail.com[/email].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #105322

anckor - 16/06/2009 00:05
Señores, antes que nada, grandioso trabajo, que os habéis pegado todos, estoy trabajando es un portal hispano de creación de juegos y realmente la sección de más importancia es Blitz3d, no pretendo hacer ningún tipo de spam, pero creo que este subforo es poco para el potencial que entre todos podríamos conseguir, planteo un portal con redactores de secciones, moderadores de foros, administradores de contenido y varias ideas que están ya plasmadas en la web, faltan algunos retoques, pero bueno queda menos, seguro que me recordareis de alguna comunidad en las que he currado, pero esta vez lo hago de forma seria y profesional, de momento me apunto a echar una mano en este foro. Saludos.

Tendréis noticias.
paio - 16/06/2009 06:24
Muy buena tu idea y espero pronto tener tu portal en la lista de páginas favoritas a visitar diariamente. Mantenenos al tanto de cuando estará para comenzar a aportar en lo que podamos. Saludos.
dyonyzyoz - 17/06/2009 20:15

Podrías poner algún indicio de cómo tomaste el código sobre las luces y el modelo?

Adjunto los archivos que tengo hasta a hora, pues no entiendo muy bien lo que me preguntas. Gracias.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #107991

pioj - 22/06/2009 20:09
Hola. ¿se sabe algo nuevo del portal? ¿Incluira también soporte para ninfa3d?
dyonyzyoz - 23/06/2009 18:39
Hola pioj, excelente acabado, que calidad de luz, buen trabajo, podrías ayudarme con algo que estoy tratando de hacer y no he podido, los trabajos quedab todos oscuros, bueno en lo que pme puedas colaborar, muchas gracias.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #108530

anckor - 24/06/2009 02:37
Buenas, sobre el portal, estoy en ello aún, primero que nada aclarar que trabajaremos más que nada Blitz3d/2d, y también para todo aquel que le guste el 2d habrá de momento una sección rpgmaker, que interesa ninfa3d, Dark o lo que sea? Buscamos un redactor y un ayudante y os hago una sección y con una cuenta podréis enviar noticias y modificar secciones, es lo que más me está costando de la web, pero es lo mejor, aun no he terminado esta primera versión y ya pienso en la 2º, me refiero a que sé que fallos o mejoras voy a hacer en la 2º versión, os aseguro que os tendré informados, ya he terminado todo lo que es diseño, montaje, estilos y sistema de usuarios, incluso el foro está instalado correctamente. Me queda trabajarme la sección de Blitz y RPG Maker, espero terminar en 1 mes, o antess. Saludos.
KiusteR - 24/06/2009 16:42
Saludos a todos. Vaya, hace cuanto que no paso por aquí, el tema que con los estudios y algún que otro tema famiar todo parece imposible. rqué bueno que esto de la programación 3d siga viva por aquí.
anckor espero ver tu web y que se convierta en un comunidad permanente, si se logra te aseguro que voy a registrarme, también con un par de amigos que le interesa del tema. Apenas tenga noticias tuyas.

Posdata: mis proyectos? Aw.están ahí, tengo que retomar la corriente.
xarpo_ - 24/06/2009 17:59
Aquí un miembro fijo que tendrás anckor.
pioj - 25/06/2009 17:07

Hola pioj, excelente acabado, que calidad de luz, buen trabajo, podrías ayudarme con algo que estoy tratando de hacer y no he podido, los trabajos quedab todos oscuros, bueno en lo que pme puedas colaborar, muchas gracias.

Hola dyonyzyoz.

Te envío de vuelta tu escena, un poco retocada y optimzada, para que veas cómo puede llegar a mejorar. Échale un ojo y me cuentas, ¿ok?

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #108684

pioj - 25/06/2009 17:21
Bueno, ya que estamos, no me cuesta nada poner los resultados para que todo el mundo pueda verlos también.


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #108837



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #108837

KiusteR - 26/06/2009 01:36
Hola, aquí pongo el código de prueba 01 que hice con un amigo, un proyecto a futuro. La prueba no muestra mucho (casi nada), el único objetivo de este simple código es mostrar el tipo de inteligencia que queremos darle a la cámara.
saludos y a ver si suben sus opiniones y consejos, a ver si lo optimizo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #108992

KiusteR - 26/06/2009 01:37
A propósito, buen resultado pioj.
pioj - 26/06/2009 11:28
Gracias, era un pequeño arreglo. Hoy estoy usando las uvtextols, os la recomiendo encarecidamente, porque aceleran de una forma bestial el ritmo de trabajo, para exportar la escena en blitz3, d.

Hay bastantes más tools o plugins que podéis bajar para acelerar vuestro trabajo y tener los juegos acabados en menos tiempo. De vez en cuando voy dejando los enlaces en gamedevelopers, org, así que, ya sabéis, visitadla alguna vez.
Lanthi - 27/06/2009 14:14
Hola tengo un problema quiero hacer un juego de coches y quiero poner la cámara en el interior, pero no consigo realizarlo he cogido ejemplos de aquí, pero nada alguien me echa un cable?
pioj - 30/06/2009 16:58
¿Alguien podría ayudar a este buen hombre, con su cámara en 1era persona, por favor?
danielblanco3d - 01/07/2009 20:01
Esta iniciativa es flipante, por primera vez he conseguido gracias a este mensaje llevar a 3d en tiempo real mallas del 3ds Max con texturas entendiendo un poco las cosas y animándome al conseguir algún resultado.

Me gustaría que esto avanzase hasta el punto de ver cómo se pueden gestionar ciclos de animación distintos para que un personaje corra, gira, se agache al dar a las teclas. Es decir, hacer ciclos de animación en 3dsmax y exportar a Blitz3d y así que, en vez de un coche vaya un personaje caminando.

Podríais comentar algo de la exportación de huesos? Hay que usar md2 o el pipeline y cargar b3d?
Seria estupendo un minitutorial sobre deformación de mallas con Bones y mallas con modificadores como bend, twist.
danielblanco3d - 01/07/2009 21:50
Tengo este problema con el comando rotatemesh y Turn Entity, cuando hago un box en 3ds Max el pivote no está centrado por defecto, lo centro yo en 3dsmax y luego exporto a 3ds. Después cargo con loadmesh ese 3ds, pero el pivote no está centrado, esta donde estaba en un principio en 3dsmax antes de que yo lo centrara, por lo que los objetos no me rotan bien, con el formato b3d me pasa lo mismo.

Como se soluciona? No exporta pivotes el pipeline ni el formato (*.3ds)?
pioj - 01/07/2009 23:55
Dices que sólo es una caja? Asegúrate de centrar el pivot en el centro del objeto. Prueba a usar Reset XForm antes de exportar un ejemplo, por si acaso.

Al transformar el pivot o el objeto, con el botón derecho sobre la herramienta mover/rotar/escalar puedes ver las coordenadas locales y globales tanto del objeto como del pivot. Asegúrate de que son correctas.

Recomiendo siempre exportar a formato. B3d, que es el nativo de Blitz3d. Además, de cargar más rápido, soporta animación por huesos, y algunas cosas más.

Me parece genial lo de tratar el tema de la animación de personajes. Si alguien se anima y publica un ejemplo, haremos la prueba con él, ¿ok?
danielblanco3d - 02/07/2009 01:33
Oye gracias, así ya funciono, además exporte desde las coordenadas del 3ds Max 0,0,0. Tenía problemas de parpadeo a distintas resoluciones y pensé que igual era mi GeForce 5700, pero parece que era por las letras que imprima en pantalla con print que seguían imprimiéndose en el mismo sitio y de hay el parpadeo.
pioj - 06/07/2009 10:20
Un consejo en Blitz3d: Jamás uses print en una aplicación gráfica, usa en su lugar text, combinado con doble buffer (backbuffer). Es mucho más efectivo, y no parpadea.

Cuanto más texto haya mostrado en una pantalla 3d, más lento ira el juego.

Incluir fuentes true-type todavía lo empeora más.

Si quieres mostrar texto en tu juego, pero no quieres perder rendimiento, olvídate de escribir texto, y usa bitmap fonts (imágenes con caracteres).
danielblanco3d - 06/07/2009 15:46
Gracias. Aquí está el programa que parpadeaba, con text se solucionó. Es el primero que hago. [url]http://dbr3d.blogspot.com/2009/07/real-time-render-en-Blitz3d.html[/url].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #109495

danielblanco3d - 07/07/2009 11:39
Quisiera introducirme en Blitz3d y lo primero que he notado con antiguos modelos míos con skin y Bones es que, si no desactivo el modificador TurboSmooth en lo alto de la pila de modificadores del 3ds Max el exportador b3d pipeline falla. Por ejemplo, si hago un cilindro, meto Bones y skin y meto TurboSmooth para que quede suave la malla al exportar falla. Supongo que debería meter el turbo smooth, colapsar a Edit Poly y meter el skin, pero eso dificulta mucho el skin. Mi duda es se puede bakear la animación para tener exactaemnte la malla del visor del 3ds Max en Blitz3d? Como se haría?
Además, tengo el problema de que el cilindro en Blitz3d permanece estático, aunque está animado. Este es el código que utilizo, pero no se mueve:
Cargar mallas con deformación con Bones y skin.

Graphics3d 640,480.

Setbuffer backbuffer().

Cámara=createcamera ().

Positionentity cámara,0,70,-200.

Light=createlight().

Cargar malla.

Cilindro=loadanimmesh (Bones, b3d).

Extractanimseque (cilindro,1,10).

Animate cilindro,2.1,1.

Updateworld.
While not keydown(1).

Renderworld.

Flip.
Wend.

End.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #109536

el aprendiz 3d - 07/07/2009 12:56
Hola pioj, revisando este mensaje que siempre tiene buenas cosas me encontré con los consejos que dabas sobre el print. El tema es que tengo un programa que parpadea. No estoy usando print en él. Sin embargo, tuve que usar mousespedy() para captar el movimiento del mouse en las y. Esta función es necesario ponerla dos veces para que devuelva un resultado, por lo que yo ponía:
[code]mousespedy().

Delay 100.

Mousespedy()[/code]

Esto resulta en un titileo aberrante. Supongo que podré encontrar algún sustitutorial para captar el desplazamiento del mouse en un eje, pero el problema es que, al sacar esa parte del código el programa sigue parpadeando ocasionalmente. (estoy usando double buffering) ¿puede ser un tema de estar muy grande mi código? O es alguna función o comando del Blitz que me enlentece el programa.
¿Cuales son las causas comunes del parpadeo?
¿Qué otros además del print lo producen? Gracias a todos los que me puedan contestar, ya que vengo con esta duda desde hace un tiempo. Saludos.

El aprendiz 3d.
pioj - 07/07/2009 18:03
Oniromante, creo que el b3dpipeline no está preparado para usarse con modificadores como el turbosmoth, prueba a cambiarlo por MeshSmooth (aunque sea una caca), y a ver si lo coge. Es muy importante que en el diálogo de exportar a b3d, actives todas las casillas de la izquierda.

Creo que has de activar la de Morph también, un poco más abajo, en la sección dedicada a la animación de la malla. Nunca me he puesto a mirar en serio ese tema, lo siento. Intentaré tener algún ejemplo listo para verlo, ¿ok?
Sigue probando.
____________________________________________.

aprendiz 3d, creo recordar que concretamente la gestión del mouse suele parpadear un poco. El delay() está claro que ayuda, y recomiendo no usarlo casi nunca, excepto unos casos concretos que ya explicaré.

Mousespedy no es que devuelva el resutlado la 2ª vez que lo usas, es que sólo devuele el resultado cuando hay algún cambio moviendo en el eje Y. Si necesitas saber su posición, te sirve perfectamente mousex y mousey.
yo uso otro método: (hay muchas formas de hacerlo, ¿eh?)
[code]variable=mousey() ;recojo mousey.

If variable <> mousey() then ;si la y ha cambiado.

Text 10,10, ariable ;muestro el último valor de mousey.

Endif.[/code]

Además, de esto, es probable que hagas algo que ralentice el dibujado en la pantalla, como, por ejemplo, abusar de llamadas a text, o dibujado 2d.

Eso provoca el parpadeo. Usar CLS lo provoca también, pero se puede quitar con un truco: usando double buffer, graphics3d y una cámara.

Si te lo quieres quitar de encima, usa cualquier otro método, o contacta conmigo por MSN o Gmail y tal vez le pueda echar un ojo al código y mejorarlo.
danielblanco3d - 07/07/2009 20:46
Gracias por la respuesta pioj. MeshSmooth tampoco funciona, pensé que podría funcionar porque hace tiempo había un plugin para 3ds Max que no recuerdo, algo, así como virtua4, no recuerdo que creo que lo hacia, pero bueno.

Yo no tengo prisa en que me contestén, pero no se esté hilo ya dio todo lo que tenía que dar.

Alguien sabe porque este código con el debug enabled da error, es algo que se comentó a lo largo de este hilo, pero no se explico.

Cargar mallas con deformación con Bones y skin y manejar secuencias extraidas.

Graphics3d 640,480.

Setbuffer backbuffer().

Cámara=createcamera ().

Positionentity cámara,0,140,-400.

Light=createlight().

Cilindro=loadanimmesh(cilindro_rota, b3d), cargar malla animada con Bones.

Extractanimseq(cilindro,0,30) ;anim sequence 1: dobla a la izquierda ;como es lo primero que extare por defecto es la secuencia 1.

Extractanimseq(cilindro,31,60) ;anim sequence 2: dobla a la derecha;como es lo segundo que extrae por defecto es la secuencia 2.
While not keydown(1).

If keydown(203) then animate cilindro,3,0.5,1, esto es si pulsas flecha izquierda lanza secuencia de animación 1 con velocidad 0.5 y modo 3 que es animar una vez y parar.

If keydown(205) then animate cilindro,3,0.5,2, esto es si pulsas flecha derecha lanza secuencia de animación 2 con velocidad 0.5 y modo 3 que es animar una vez y parar.

Updateworld;debe estar dentro del whie wend.

Renderworld.

Text 0,400,pulsa flecha izquierda para doblar a la izquierda;text debe ir después de renderworld para que texto quede encima.

Text 0,430,pulsa flecha derecha para doblear a la derecha.

Flip.
Wend.

End.

Nota al exportar hay que activar en pipeline enable extensiones.

Pero hay que desactivar export scene root (si esta activado esa casilla no funciona).

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #109612

pioj - 08/07/2009 09:48
Después de probarlo casi todo, me temo que has topado con un bug de Blitz3d. Claramente el error lo da en el end() tratando de cerrar/liberar la malla animada.

Eso me sugiere que hay algo que no debería estar ahí.

También podría ser que el objeto no estuviera exportado del todo correcto, debido a cualquier pequeño fallo que no hayamos tenido en cuenta, aunque cargue bien.

Por si acaso, bug fantasma, y prueba otra malla.
danielblanco3d - 08/07/2009 22:14
Pues para las cuatro cosas que he hecho encontrar un bug, lo que si he leído es que le pasa a más gente, esto me lleva a otra duda, cuando se exporta desde el pipeline del 3ds Max o desde el max a (*.3ds) da igual que la malla sea paramétrica, Edit Poly o editmesh porque el exportador ya se encarga de triangular esa malla o hay que tener precauciones?
pioj - 09/07/2009 08:58
No, al exportar a. B3d o.por la malla permanece intacta, que es lo que toca. Si se exporta desde 3ds Max a.3ds el propio max triangula la malla (cosa que veo como error). Esto siempre ha echado por tierra muchos modelos míos hechos con otros software, y desde hace años.

La teoría nos dice que la malla ha de permanecer siempre intacta a cómo la dejemos, y nos olvidemos de triuangularla, que de eso ya se encarga siempre la VGA al procesarla internamente.
danielblanco3d - 11/07/2009 13:27
Gracias pioj. Estoy bakeando texturas por primera vez y tengo este problema a ver si puedes ayudarme:
1)preparo la escena en 3dsmax con Lightracer.
2)los objetos de la escena no tiene modificador uvwmap ni Unwrap.
3)hago el render to texture y consigo los mapas y el max mete a los objetos el modificador automatic UVW.
4)aplico en la escena los mapas bakeados y la escena en los visores se ve bien, pero al exportar a.b3d no salen los mapas en Blitz3d, aunque están en la misma carpeta que el archivo.bb. Creo que es porque no exporta el modificador automatic uvwmap que mete el render todo textyre. Como lo hago?
pioj - 12/07/2009 11:20
Antes de exportar, tienes que convertir/crear los materiales a b3dbrush. Luego en los slots para maps, creas un submaterial de tipo b3dmap y le asignas la textura que has generado, es fácil.
danielblanco3d - 12/07/2009 13:40
Gracias de nuevo. Estoy teniendo muchos problema spara exportar la cámara, no entiendo la sintaxis de la extensión del pipeline.

Cuando se exporta una cámara del 3ds Max con target se exporta también el targetí.

Yo lo que hago es ajustar las unidades en 3dsmax para que coincidan con las unidades en el mund Blitz y después si en los visores en 3dsmax la cámara está en 0,20,30 pongo esos valores en positionentity cámara (en los ejes locales del camar en Blitz que parece que son los que exporta). Pero qué pasa con el target de la cámara, como lo posiciono? Y como hago coincidir el Fov de la cámara de lo svisores del 3ds Max con blotz3d?
pioj - 12/07/2009 20:36
Si quieres exportar la cámara no hace falta incluir las extensiones [i](aunque sí activarlas en el dialog de export a b3d, y marcar la casilla cameras)[/i].
yo lo que hago es esto:.
[code]global Camera=createcamera ().

Positionentity Camera,entityx(findchild(scena,Camera)),entityy(findchild(scena,Camera)),entityz(findchild(scena,Camera)).

La Camera es el nombre que he dado a mi cámara en 3ds Max.
[/code]

Luego le hago un Point Entity para que apunte donde quiero.

Vale, es un poco más manual, pero así me ahorro todo el inlcude del extensiones, que no me sirve para nada.

A fin de cuentas, realmente no exporta la cámara, exporta un pivot, y luego el include ese le crea una cámara en las cords que tiene, y apunta el target a dónde haya el pivot camera_target de 3ds Max. Viene a ser lo mismo que hago yo manualmente, pero con types, y unos 20kb más de código.
Damian1985 - 12/07/2009 21:02
Buenas a todos, tengo un problema, sabéis algún comando de Blitz que sea como el rnd pero que no sea aleatorio? Aquí dejo el código de lo que estoy haciendo, es para un juego para personalizar el personaje. Si encontráis alguna forma mejor de hacerlo decirlo.
[code]Graphics3d 640,480.

Setbuffer backbuffer().

Camera=createcamera ().

Positionentity Camera,0,0,-3.

Light=createlight().

Rotateentity light,90,0,0.

Cubo=createcube ().

Rotateentity cubo,0,50,0.

Textura1=loadtexture (textures\cubo\textura1.jpg).

Textura2=loadtexture (textures\cubo\textura2.jpg).

Textura3=loadtexture (textures\cubo\textura3.jpg).

Textura4=loadtexture (textures\cubo\textura4.jpg).

Entitytexture cubo, textura1.
While not keydown(1).

Textura=rnd(1,4).

If keydown (205) tselect textura t case 1 entitytexture cubo, textura2 case 2 entitytexture cubo, textura3 case 3 entitytexture cubo, textura4 default entitytexture cubo, textura1 tend select t.

End if.

Renderworld.

Flip.
Wend.

End.
[/code]

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #109948

pioj - 12/07/2009 23:24

Sabéis algún comando de Blitz que sea como el rnd pero que no sea aleatorio?

Lo siento, pero no le veo coherencia a tu pregunta. Rand/rnd es precisamente para sacar un aleatorio. Si no quieres un número al azar, es porque en su lugar quieres un orden concreto (secuencial, por ejemplo).

Explica un poco más la idea que quieres, y te ayudaremos.

Enhorabuena por el código, es legible y ordenado. Te aconsejo cambiar el keydo, por keyhit, para que el cambio sea menos brusco. Para añadir algo más de variedad al random, debajo de la línea de setbufer, puedes poner esto:
[code]sedrnd (número)[/code]

Indícale un número al azar de 3-4 cifras, y mejorara la generación de aleatorios la próxima vez que uses el random.
Damian1985 - 13/07/2009 00:14
Buenas, si te fijas, cuando cambia la textura la (*.ace) aleatoria yo lo que kero es que me lo haga en orden.
danielblanco3d - 13/07/2009 00:55
Genial pioj. Y sobre el Fov de la cámara en 3dsmax lo ajustas con camerazom en Blitz? Porque, aunque la cámara tenga la misma posición y mire al mismo sitio la vista a veces no coincide por el Fov.

Así me queda con un camerazom 1.6.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #109962

krateos_29 - 13/07/2009 02:30
Como es eso del Camera zoom exactamente? Yo sé que para que coincida hay que poner Fov 90, pero claro, si quieres otra Fov ya ni idea.

Prueba a darle con botón derecho al visor perspective y a show safe frame.
danielblanco3d - 13/07/2009 02:48
Me refiero a que una vez que creo la cámara en el pivote que se exporto uso esto. Camerazom Camera, zoom#. Parameters:
Camera - Camera handle.

Zom# - Zoom factor of Camera.

Description:
Sets zoom factor for a Camera. Defaults todo 1.

Para poner el zoom a 1.6, así la vista se parece un poco más.

Entonces quieres decir que pones el Fov en 3dsmax en 90? No hay comandos para variar el Fov en Blitz3d?
Con el método de pioj y poniendo en 3dsmax el Fov de la cámara a 90 la vista es idéntica en 3dsmax y en Blitz3d. Si el Fov en 3dsmax no es 90 ya no puedo hacerlo.

Duda sobre exportar luces:he usado el mismo método para exportar el pivote que retiene la posición de la luz en 3dsmax y después crear una luz en ese punto llamando a las coordenadas del nodo con entity x y los findchild, pero sin éxito, este método no funciona con las luces?
pioj - 13/07/2009 16:08
Efectivamente, para el Fov de la cámara se usa camerazom. El valor de Fov 90, si no recuerdo mal, equivale 1.6 en Blitz3d.

El problema es que no hay una relación entre el Fov de 3ds Max y el de Blitz3d, y toca mirarlo a ojo, o aplicando esta fórmula.

Well if you take my equation above there.

Camerazom Camera, 1.0 / tan(Fov#/2.0).

The important bit:
Zom = 1.0 / tan(Fov#/2.0).
We know Blitz default zoom is 1.0. So we substitute that into the euqation.
1.0 = 1.0 / tan(Fov#/2.0).

Then we multiply both sides of the equation by tan(Fov#/2.0) todo simplify it.

Tan(Fov#/2.0) = 1.0.

And then we have todo get rid of the tan. So we take the arctan of both sides.

Arctan(tan(Fov#/2.0)) = arctan(1.0).
Which ends up being:
Fov#/2.0 = arctan(1.0).

And arctan(1.0) is 45, so.

Fov#/2.0 = 45.

And them we multipy both sides by 2.0 todo get the result:
Fov# = 90.

So there you have it. Blitz default zoom of 1 is equivalent todo a 90 degre Fov.

pioj - 13/07/2009 16:13
Damian1985, si lo que querías es que hiciera un orden secuencial basta con sumarle +1 cada vez que pulsas la tecla, y evalúa con un if, que cuando el valor sea mayor que el último número, el valor pase a ser el primero.
ejemplo:.
[code]If keyhit(205) then.

If valor > 5 then.

Valor = 1.

Else.

Valor = valor +1.

Endif.

Endif.
[/code]

Y debajo de eso ya le añades tu [i]select textura.[/i].

Fíjate tú, si era fácil.
danielblanco3d - 13/07/2009 19:02
Por dónde puedo empezar para conseguir un buen seguimiento de cámara? He visto varios códigos todos muy superiores a mi nivel, lo que quisiera es mover la cámara con el ratón y el avance con los cursores, que la cámara siga a una entidad, sabéis de algún ejemplo o código libre para aprender lo más sencillo posible?
Tengo más o menos clara la idea de poner un pivote a la entidad, orientar la cámara a la entidad y calcular la distancia del pivote a la cámara para ir reposiciónando la cámara, pero también quiero que la cámara vuelva a la posición inicial si colisiona con algo y se separa mucho del pivote.
Damian1985 - 13/07/2009 20:24
Gracias pioj, la verdad que la programación no es lo mío, lo mío es más el modelado, estoy empezando ahora con la programación.
danielblanco3d - 16/07/2009 02:42
Estoy intentando reproducir el control de cámara que se ha explicado en este mensaje con funciones y translate cámara y el código me da un error raro de que no encuentra la entidad pivote cuando si esta, alguien me ayuda?
Control de cámara básico.

Graphics3d 640,480.

Setbuffer backbuffer().

Caja=loadanimmesh (cubo, b3d).

Esfera=loadanimmesh (bola, b3d).

Punto_camara=loadanimmesh(escena, b3d), esto carga el punto con coordenadas de la cámara en 3dsmax para llamarlo después.

Punto_luz=loadanimmesh(escena2.b3d), esto carga el punto con coordenadas de la luz en 3dsmax para llamarlo después.

Pivote_esfera=createpivot(esfera).

Moveentity pivote_esfera,0,100,100.

Cámara=createcamera ().

Ahora posicionamos esa cámara en el pivote que exporta el pipeline con la posición de la cámara en 3dsmax.

Position entity posiciona la cámara en unas coordenadas x y z.

Entityx devuelve la coordenada x de una entidad.

Findchild busca en el archivo escena. B3d la cámara que se llama en 3dsmax Cam.

Positionentity cámara,entityx(findchild(punto_camara,Cam)),entityy(findchild(punto_camara,Cam)),entityz(findchild(punto_camara,Cam)).

Nota i cuando exportas desde el max das hacer preview y das tabulador ves todo lo que se exporta, el nodo llamado Cam esta en las coordenadas 131,0,-98 que son las que estamos llamando.

Camerazom cámara,1 ;con esto puedes hacer zoom, el zoom por defecto es 1, así ajustas la vista como harías en 3dsmax con el valor Fov.

Foco=createlight(2).

Positionentity foco,entityx(findchild(punto_luz,luz)),entityy(findchild(punto_luz,luz)),entityz(findchild(punto_luz,luz)).

Lightrange foco,200, esto determina la intensidad de la luz para que me todo.

Mover la cámara.
While not keyhit (1) ;mientras no se pulse escape. Aquí se inicia el bucle principal del programa t.

Movimientos_esfera ().

Movimientos_camara ().

Updateworld.

Renderworld.

Flip.
Wend.

End.

Function movimientos_esfera ().

If keydown(200) then ;al pulsar flecha up mover el cubo adelante.

Moveentity esfera,0,0,1.

Endif.

If keydown(20 then ;al pulsar flecha down movel el cubo hacia atrás.

Moveentity esfera,0,0,-1.

Endif.

If keydown(203) then ;al pulsar flecha left mover cubo a la izquierda.

Turnentity esfera,0,1,0.

Endif.

If keydown(205) then ;al pulsar flecha right mover cubo a la derecha.

Turnentity esfera,0,-1,0.

Endif.

End function.

Function movimientos_camara ().

Dx#=entityx(pivote_esfera)-entityx(cámara).

Dy#=entityy(pivote_esfera)-entityy(cámara).

Dz#=entityz(pivote_esfera)-entityz(cámara).

Translateentity cámara, dx# *.015, dy# *.015, dz# *.015.

Pointentity cámara, esfera ;esto posiciona el target de la cámara donde queramos, la bola se cargara antes de esta orden.

End function.

Nota:este sistema de exportar la cámara del 3ds Max funciona mejor si el target de cámara en 3dsmax esta en o,o,o.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110167

Cibertronic - 25/07/2009 05:47
[size=4]. I am back[/size]
.Hola Oniromante. En tu código todo está ok, lo único que está faltando es que la llamar a las funciones es necesario enviarles lo objetos que son nesesarios para la función, cosa que no ocurre con gosub.

Así en tu código:
Movimientos_esfera ()
Movimientos_camara ().

Lo correcto sería:
movimientos_esfera (esfera)
Movimientos_camara (cámara, pivote_esfera, esfera)
.

Porque por ejemplo la función movimientos de esfera es:
Function movimientos_esfera () if keydown(200) then.

Moveentity esfera,0,0,1
Endif end function.

Como podemos observar usa el objeto esfera entonces el código correcto sería:
function movimientos_esfera (esfera) if keydown(200) then.

Moveentity esfera,0,0,1
Endif end function
.

Otra forma de hacerlo seria poner a los objetos del tipo global.

Así ya no tendríamos que enviarle los objetos a la función, pues al ser globlaes, estos estarán presentes en cada parte del código del programa.
global caja=loadanimmesh (cubo, b3d)
global esfera=loadanimmesh (bola, b3d)
global punto_camara=loadanimmesh(escena, b3d), esto carga el punto con coordenadas de la cámara en 3dsmax para llamarlo después.
global punto_luz=loadanimmesh(escena2.b3d), esto carga el punto con coordenadas de la luz en 3dsmax para llamarlo después.
global pivote_esfera=createpivot(esfera)
global cámara=createcamera ().

Ahí te dejos las dos formas del código, para tener el resultado que estas buscando.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110669



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110670



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110671

Cibertronic - 27/07/2009 09:55
Hola a todos, aquí les dejo mi solución al problema de emasq, el del hilo ayuda con el tenis lo subo aquí también para quetodos lo veamos y comentemos.

Como siempre el código fuente y el ejecutable están el adjunto. Un saludo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110736



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110737



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #110765

danielblanco3d - 27/07/2009 15:52
Muchas gracias por la explicación Cibertronic. Estoy intentando conseguir un buen seguimiento de cámara con colisión y la cosa va avanzando.

Por si a alguien le interesa esto en la parte del código que posiciona la cámara respecto al pivote hay que añadir el true quedando así.

Function movimientos_camara ().

Dx#=entityx(pivote_esfera, true)-entityx(cámara).

Dy#=entityy(pivote_esfera, true)-entityy(cámara).

Dz#=entityz(pivote_esfera, true)-entityz(cámara).

Translateentity cámara, dx# *.015, dy# *.015, dz# *.015.

Pointentity cámara, esfera ;esto posiciona el target de la cámara donde queramos, la bola se cargara antes de esta orden.

End function.

Así con el true toma el pivote del objeto pivote (elpropio objeto), si no lo pones toma el pivote del objeto padre (que en este caso es la esfera).
dyonyzyoz - 04/08/2009 03:15
Hola Cibertronic, te felicito por ese acabado del mundo, estoy tratando de hacer un rrecorrido virtual con esta cálida de iluminación y no he podido trabaje con tu archivo lo único que hice fue modificar el archivo del 3ds Max, bueno te adjunto mi archivo, te agradecería cual quier ayuda, me urge terminar.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111108

Cibertronic - 05/08/2009 06:06
Hola dyonyzyoz. Tome tu modelo y hay ciertos problemas con tu mallaen las columnas desaparecen algunos vértices, a mi me paso.

Bueno reice tus columnas.

Y le aplique un render to texture le hice unos pequeños retoques a tu programa, tamiben dejo el ejecutable para los que deseen probarlo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111166



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111167

pioj - 05/08/2009 13:34
Hola chavatars. Ya he vuelto de las vacaciones en la campus party. Veo que le estáis dando al proyecto tecno ese. Chachi.
Cibertronic - 07/08/2009 17:56
Qué tal el deled, no lo había probado hasta ahora, pero me gustó, es como un gile[s](revisar muchos mensaje atrás) solo que no es gratis, pero su versión gratuita es funcional. [url]http://www.delgine.com/[/url].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111299



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111300



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111301

Cibertronic - 11/08/2009 07:57
Una inteligencia artificial no muy i. Esta solo busca el camino blanco y si encuentra un punto rojo, busca otra dirección por la cual pueda seguir su camino el control lo hace si el próximo punto s negro entonces busca otra dirección el punto blanco. Y todo con un corto, sencillo y simple programa de 50 líneas muy fácils de entender.
conclusión:
Segir aleatoriamente el camino dibujado.

Este algoritmo sería la base para un comecocos.quien se anima en el programa están scritos los valores que obtengo al darle clci en los colores rojo, blanco, negro, espero que sean los mismos en sus máquinas, si no pasen la vos por favor.
. Confirmado en cada máquina cambia el valor del color. Nago raro sucede no funca.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111459



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111460



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111476

Cibertronic - 13/08/2009 06:36
Aquí la inteligencia artificial un pcoc mejorada, espero que está si corra en todas las máquinas. Avisarme por favor si no corre en sus máquinas pd, le puse un pac para hacerla más divertida si solo se va por los bordes cambiar la línea marcada está el valor 248, ponelrle 255, ¿cómo se ve en la figura.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111580



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111581



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111599

Jyrok - 15/08/2009 22:25
Hola, soy nuevo en este foro. Nunca había relacionado la programación con el modelado 3d como lo he visto en este foro. Existe alguna versión reciente del Blitz3d o complemento que usen para ejecutar los ejemplos.

Porque al importar el objeto y sus secuencias con.

Objeto=loadmesh(obj, b3d).

Extractanimseq(objeto,1,5).

Extractanimseq(objeto,6,7).

Me da que las funciones no existen.

Y al probar los ejemplos del foro me dan los giguientes errores.

Me dan los siguientes errores:
Error| memory acces violation.

Error| entity doest not exist.

Error| function doest not exist.
Cibertronic - 18/08/2009 21:48
Eso mismo pe saba a mí. Tenía una versión comercial(pirata) y para que funciones era necesario que se le pongan 3 upgrates.

Busca y ponles las acutlaizaciones.

Para no complicarme la vida, ahora.

Yo uso la versión demo que hay en la misma página del Blitz.

Es total mente funcional.
Jyrok - 21/08/2009 04:28
Hola, disculpa que siga con lo mismo, pero. No encuentro actualizaciones para el bliz, al parecer la página de Blitz ya no existe.
KiusteR - 21/08/2009 06:02
Hola jyrokproblemas con Blitz? Mi mail es [email]kiuster_91@hotmail.com[/email] así te puedo dar una mano con esto, también te ayudo a localizar las actualizaciones. Saludos.
KiusteR - 21/08/2009 06:21
Algunas imágenes de la demo 2.1 de conquest, a ver qué les parece, pasen por el proyecto y descargenlo (apenas 5 Mb, salado.) pero vale la pena, bah para mí vale. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111952



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111953



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111954



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #111955

Cibertronic - 21/08/2009 15:57

Hola, disculpa que siga con lo mismo, pero. No encuentro actualizaciones para el bliz, al parecer la página de Blitz ya no existe.

Sigue la página oficial del Blitz. [url]http://www.blitzBasic.com/file/get.php?file=/products/demos/blitz3demo183.exe[/url].
konker_2 - 25/08/2009 08:01
Hola, aquí muestro un paisaje que me estaba haciendo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #112108



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #112109



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #112110



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #112111

xarpo_ - 25/08/2009 12:08
Solo decir una cosa: Precioso. En serio, tu paisaje es precioso, colorido, y bonito, me encanta.
konker_2 - 25/08/2009 23:24
Gracias Xarpo. Aquí muestro uno viejo que había hecho.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #112135

Cibertronic - 25/08/2009 23:26
Excelente el trabajo konker. Esos efectos están interesantes, esa de la transparencia, la niebla también le da un buen efecto.

Y sobre todo a mí me gustaría hacerte una pregunta.

Como haces para que todo quede metido en un exe único.

Buen trabajo, saludos (y).
konker_2 - 26/08/2009 00:52
Hola Cibertronic, pues para hacer ese ejecutable es sencillo mira.
paso-1:
Creamos el.bato.cmd y lo editamos con el nombre del.exe que compila Blitz3d.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113756


paso-2:
Luego instalamos el [i]quick Batch file compiler[/i] //de preferencia el portable o si es full da igual, porque este nos permite ocultar la consola de dos, y su función es pasar a ejecutable un.bat, cmd.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113757


paso-3:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113758


paso-4:
En la pestaña texto e icono ocupamos unos comandos básicos para llamar la aplicación.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113759


resultado final:
Después de dar examinar el paso-4 buscamos un icono.ico especial y con eso solo aceptamos y crea el (*.exe) de todo el proyecto de Blitz3d o de cualquier otro programa (esto sirve para hacer portables y con esto puedes crear archivos maliciosos, pero no queremos llegar a eso, también puedes hacer bromas directamente desde el Blitz3d).

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113760



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113756



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113757



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113758



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113759



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113760

Cibertronic - 28/08/2009 03:44
Gracias konker. Excelente y genial forma de crear ejecutable. Nuevamente muchas gracias.
konker_2 - 31/08/2009 21:23
Provando Bump/normal.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113761


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113762


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113763


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113764


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113765


🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113766



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113761



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113762



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113763



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113764



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113765



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #113766

Sadyk - 07/09/2009 17:29
Me encanta el efecto Bump del agua sobre todo, muy bueno, y muy profesional.
xarpo_ - 07/09/2009 22:45
Jope, es super profesional eso, a ver cuándo llega el día que yo haga cosas así.
Turriano - 30/09/2009 23:36
2cositas:
1) ¿alguien sabe cómo puedo conseguir el mapa del teclado (la tecla y u número corresondiente. Ejemplo: if keydown(número) then.), para elegir la tecla más adecuada para los programas de Blitz3d? (deseo hacerme algo más que juegos, con este programa).
2) ¿cómo podría simular un botón (del estilo widows, es decir botón-en-reposo=>botón-pulsado-ejecutar-algo). Gracias.
konker_2 - 05/10/2009 00:42

2cositas:
1) ¿alguien sabe cómo puedo conseguir el mapa del teclado (la tecla y u número corresondiente. Ejemplo: if keydown(número) then.), para elegir la tecla más adecuada para los programas de Blitz3d? (deseo hacerme algo más que juegos, con este programa).

Gracias.

Esta lista tal vez te sirva, parece que faltan más, pero ahí están los más comunes.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #114479

Turriano - 05/10/2009 13:58
Gracias.
lluk - 24/10/2009 23:36
Hola me gustaría aprender a usar al menos al 85% el Blitz3d. Tengo la versión 1.94 y de momento se hacer esto (ver adjuntos).

Si alguien me puede ayudar que me envié un mensaje a mi email: [email]loestontitanium@gmail.com[/email].

Posdata: yo y unos amigos hemos empezado ha crear un juego necesito un modelador 3d si a alguien le interesa que me mande un mail. Adiós, y gracias.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #115849

el aprendiz 3d - 26/10/2009 01:12
Turriano: sobre lo que quieres hacer del botón:
[code]Global botón=loadanimimage (botón, (*.png),50,20,0,3). Global botonframe=0.
While not keyhit(1).

Cls.

X=mousex().

Y=mousey().

If mouseover(100,50,60,20)=true.

Botonframe=1.

If mousehit(1) then loquequierasejecutar().

Else.

Botonframe=0.

Endif.

Drawimage botón,100,50,botonframe.

Flip.
Wend.

End.

Function mouseover(xboton,yboton,anchoboton,altoboton).

If x > xbotón and x < (xbotón + anchoboton) and y > ybotón and y < (ybotón + altoboton).

Return true.

Else.

Return false.

Endif.

End function.
[/code]
Turriano - 26/10/2009 06:03
Gracias aprendiz. Lluk: un programa fácil de usar y barato, es milkhape 3d. Tienes 3d Studio Max, con un montón de tutoriales por ahí y mejor todavía es Blender, que encima es gratis. Aunque éste último tiene un, pero y es que su interfaz no se parece para nada al entorno Windows. No obstante, compensa de sobras el esfuerzo empleado, para los resultados obtenidos. Ánimo.
KiusteR - 27/10/2009 14:50
Bueno.(hace cuanto que no paso por aquí). Encontré este código interesante en el foro de Blitz3d. A ver si lo quieren probar. Es para juegos en tercera persona.

Simplemente crea una cámara inteligente que también reconoce si existe un objeto interfiriendo entre la cámara y el personaje y se ubica al frente del objeto.
[size=4][font=arial black"]saludos y, a ver nuevos proyectos.[/font][/size].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #116028

Turriano - 28/10/2009 00:03
Esto. ¿Qué significa flip?
KiusteR - 28/10/2009 03:23
(Referencia de comandos en español).
flip [vwait].
definición:
En un entorno con doble buffering, invierte el backbuffer a la vista.
descripción de los parámetros:
Vwait = establece a true para esperar a la sincronización vertical para acabar.

Descripción del comando:
Cuando estés en doble buffering (o haciendo operación de dibujo en el backbuffer(), y hayas dibujado todos tus elementos) necesitarás voltear el backbuffer para que sea visible en el frontbuffer(). Este comando realiza esta función. Éste te permite dibujar muchos gráficos rápidamente y voltearlos a la vista. Mira backbuffer() para más información.
ejemplo:
Flip/backbuffer()/rect example.

Set graphics mode.

Graphics 640,480.

Go double buffering.

Setbuffer backbuffer().

Setup initial locations for the box.

Box_x = -20, negative so it Will start of screen.

Box_y = 100.
While not keyhit(1).

Cls, always clear screen first.

Rect box_x, box_y,20,20,1, draw the box in the current x, y location.

Flip, flip it into view.

Box_x = box_x + 1, move the box over one píxel.

If box_x = 640 then box_x=-20, if it leaves the right edge, reset its x location.
Wend.
Turriano - 28/10/2009 15:06
Ok kluster.
fitopaisa - 16/11/2009 14:23
Hola amigos. Hace ya bastante tiempo que no toco el Blitz, pero viendo este hilo me. Alegro me anime a reinstalar mi viejo Blitz, espero aportaros alguna ayuda a vuestro hilo.

De momento od diré que como colaboración podéis descargaros mi fuente de.

Space inavers en ni vieja web.

Vaya, el programa no me deja pegar enlace por ser mi primer mensaje.

Si buscar en google:
Fitopaisa space invader.

Te saldrá mi web, código y demás.

En el foro también podríes ver un tutorial de varibles, arrays, explicación del juego con el código por supuesto y demás funciones a modo tutorial que iré retomando y como no compartiré con vosotros.

De momento estoy con los tutoriales y códigos del principio de este hilo, me parecen muy interesantes.

Bueno, miraré más despacio el hilo ya que es bien largo. Un saludo de fito y de berdad hace tiempo que buscaba a programadores Blitz para continuar compartiendo códigos, hacéis un bueno trabajo.
konker_2 - 18/11/2009 09:16
Vieja prueba, que había hecho hace ya varios meses.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #117986



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #117987

Damian1985 - 18/11/2009 17:08

Hola me gustaría aprender a usar al menos al 85% el Blitz3d. Tengo la versión 1.94 y de momento se hacer esto (ver adjuntos).

Si alguien me puede ayudar que me envié un mensaje a mi email: [email]loestontitanium@gmail.com[/email].

Posdata: yo y unos amigos hemos empezado ha crear un juego necesito un modelador 3d si a alguien le interesa que me mande un mail. Adiós, y gracias.

Yo si quieres te puedo echar una manilla con el apartado 3d, me defiendo más o menos con 3d Studio Max.
xarpo_ - 18/11/2009 21:34
Yo, aunque no de señales de vida os leo cada día, y sigo con el tema en mis ratos libres, que ahora son pocos, salgo por la mañana a las 7:30 de la mañana y vuelvo casi a las 10 de la noche.

Aun así, espero publicar un juego que estoy haciendo con el Blitz en breve. Un saludo.
fitopaisa - 20/11/2009 14:38

Buenas gente, he entrado por aquí de casualida. Primero me he entretenido viendo algunos dibujos hecho en 3d (son muy buenos).

Cute.

Hey juanyang es un honor verte por un hilo.

Hace unos años vi ese código tuyo que por cierto está en este ilo también.

Empecé a hacer algunos códigos, etc.

El caso es que me alaga verte por aquí. Gracias por esos códigos que has aportado, ya los descargue.

Estoy impaciente por examinarlos.

A mí me interesaría algo sobre TCP/IP.

Encontré documentación hace tiempo en inglés sobre eso.

Incluso me baje un código de ejemplo de un chat que fuenciona bastante bien.

Aunque el cñodigo para mí es algo complejo.

La idea seria abrir un chat cliente servidor para chatear.

Esa ventana seria útil para abrir una ventana en cualquier juego y mandar líneas de texto y que los clientes que estén conectados lean el chat.

Y ya de paso ya que están conectados a ese programa varios jugadores clientes aprovechar para leer las coordenadas de cada jugador eso te abriría la posibilidad de hacer un juego multijugador.
fitopaisa - 20/11/2009 14:40
Chicos disculpad que todavía no he compartido algún código con vosotros. Este hilo es ya bien largo. Estoy leyendo despacito todo el seguimiento que habéis hecho.

Tengo algún código bien comentado para compartir.

Pero antes de subirlo leerle todo, uf bien largo.

Pero da gusto leerlo.

Tengo un buen ejemplo de gravedad, es fácil.

Un ejemplo para subir escaleras, bajarlas, caerte, etc.

De momento estoy flipando como os habéis currado la animación de barny.

Resumiendo, os estoy leyendo cada día, aunque todavía escriba poco.
Damian1985 - 11/01/2010 03:03
Alguien me podría decir cómo puedo hacer para guardar partidas en Blitz3d, y si Blitz3d puede leer archivos de base de datos? Gracias de antemano.
Damian1985 - 12/01/2010 01:29
Bueno aquí dejo un aporte, esta sacado de la web oficial de Blitz3d yo le hice algunas modificaciones, es una base para las personas que quieres hacer su propio juego on-line, no es gran cosa, pero bueno.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #121168



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #121169

Taito - 22/01/2010 11:46
Hola a todos, no sé si este es el lugar o no para hacer esta pregunta, pero bueno, si no es perdonadme. La cuestión es que estoy haciendo unos modelos en Blender y algo en 3ds Max para un videojuego. A la persona a la que se lo estoy haciendo utiliza Blitz3d y mi pregunta es la siguiente. Cuales son los pasos que tengo que dar para que los archivos lleguen perfectos para meterlos en Blitz3d, quiero decir, puedo hacer el modelo 3d, ponerle un material estándar, con una imagen en el difuso, un Normal Bump y puedo ponerle un mapa de reflejos? Y decirle que se le aplique a las dos caras? Algo más en general?
Muchas gracias antes de nada.
Cibertronic - 22/01/2010 14:38
Hola taito. A mí el que menos problemas me ha dado es con el max, con el plugin pipeline. [url]http://www.onigirl.com/pipeline/[/url]
con este plugin el max puede exportar directamente a formato b3d para efectos especiales yo promero.

Hago un rendertotexture, utilizando el 3dsMax o uno de los muchos que hay para ese fin.

Desde Blender lo he hecho exportadno a formato x, pero a veces desaparecen algunos vértices, bueno eso porque el modelo no era muy bueno.

Yo te recomiendo utilizar el pipeline.
Offspring - 02/02/2010 21:25
Hola a todos. mi pregunta es si alguien me puede ayudar a arreglar el problema que tengo con la animación en mí juego. La cuestión es que, al empezar a correr el personaje, correr la animación, pero cuando la velocidad llega a su punto máximo la animación se traba.

Aquí dejo el juego para que lo puedan ver.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #122849



Desde ya muchas gracias. Saludos.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #122849

Offspring - 03/02/2010 20:49
Les dejo el mismo juego, pero organice un poco más el código y ordene los archivos en carpetas.

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #122939



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #122939

Offspring - 04/02/2010 01:20
Ya lo arregle era una tontería gracias a todos. Ahora sigo con el problema de la animación que va lenta. Saludos.
Turriano - 23/02/2010 02:53
¿Alguien sabe de dónde me puedo bajar la carpeta help en español? Gracias. Nota: no tengo mula y el ares lo tengo desconectado.

Un enlace directo por favor. Que ya estuve en Blitz hispano y no va el enlace de descarga.
xarpo_ - 06/04/2010 12:25
Hola a todos.primero, no he creado un mensaje nuevo, ya que mi duda/problema tiene mucho que ver con este mensaje, por lo que espero que no me regañen por subir un tema relativamente antiguo.

Pues bueno, yo ando haciendo un juego con un amigo, yo doy por hecho que no lo acabaremos, pero estamos aprendiendo mucho, por lo que nos lo tomamos como un auto aprendizaje.

Bueno, el es el guionista de momento, y yo ando modelando. Ya tengo algunos modelos y estaba probando de crear un pequeño programa para meterlos.

Hasta aquí perfecto, sé crear un programa para que me cargue un mapa, mi personaje, con la cámara y el movimiento del personaje tampoco tengo ningún problema.

El problema viene cuando uso las animaciones de mis modelos dentro del programa.

El tema del código creo que no tengo problemas, de hecho, el Biped se anima perfectamente, tal y como yo le digo, y como digo, el problema que tengo, es precisamente ese, el Biped se anima, pero la malla no.

O sea, si exporto solo Biped, se anima perfectamente, si exporto malla y Biped, se ve como el Biped se anima por dentro de la malla cuando éste lo traspasa, pero la malla nada de nada, y si solo exporto malla, no se anima.

Me he estado informando, y el formato (*.3ds), hace eso, exporta la animación de los huesos, pero no de la malla, pero creo, que el formato b3d, si lo hace, de hecho, en este mensaje hay ejemplo de barny, el policía de Half Life, donde lo exportan de max a b3d con el pipeline, y en el juego se les mueve la malla.

Además, encontré esto por internet, pero no entiendo lo que quiere decir con rotbone.

Make character model.

Make texture.

Uv map texture todo character model.

Make Bones.

Rig Bones into character using skin modifier - Be careful with weighting - Read up on this maybe.

Ensure b3d pipeline is installed correctly - Not sure chek note on [url]www.onigirl.com[/url].

Hide any controls you dont want todo eport with the animatied Mesh.

Export b3d from max as either an animated Mesh with animation or export just the Mesh and then export the animation separately and use loadanimseque in b3d todo use them together (chek b3d docs).

Now todo get them todo animate you must animate the root - So you have todo find the root bone and tell b3d thats what you want todo use:
Animate rotbone,1,1,0,10make character model.

Uso 3ds Max 9 y el pipeline para exportarlo a b3d.

No sé si mi problema es que exporto mal con el pipeline.

Si alguien que lo haya hecho antes me puede explicar cómo lo hace, se lo agradecería.

Si necesitan más información, encantando de dársela. Un saludo y gracias de antemano.
dkunze - 01/05/2010 07:18
Hola. Vamos gente, que no decaiga, estoy desde hace fácil 2 horas leyendo este hilo, desde el principio hasta el final. Es increíble como han progresado en todo éste tiempo, y espero que lo sigan haciendo.

Me baje el 99% de todos los archivos adjuntos, y ahora con todo eso que recopilé trataré de iniciarme en éste mundo del 3d, aunque estoy comparando con lo que me acuerdo del 2d en otros lenguaje (div, Fenix) y no es ni parecido, pero bueno, espero agarrarle la mano ya que el mundo tridimensional me encanta.

Les mando un saludo para todos y espero que sigan así.
Turriano - 01/05/2010 12:17
Que no, que no decae. Yo sigo entrando y saliendo de el y sigo aprendiendo, además de estar en otros foros, como ideas4allcom.

Lo que ocurre, es que no he hecho nada practico en concreto.

Para poner tonterías no pongo nada, pero en cuanto tenga un proyecto decente, lo publicaré.

Palabra de turriano.
Turriano - 01/05/2010 12:19
Por cierto, que si alguien tiene páginas o algún forro o blog sobre el tema, creo que le daría más vidilla a éste foro.
dkunze - 01/05/2010 18:02
De todas las formas pretendo utilizar este foro para plantear mis dudas y demás. Recién me inicio con Blitz después de mucho tiempo, yo tenía un código, que se había subido a tutorialgames, net o algo así, pero ya no está más online.
Ánimo gente, están muy buenos los ejemplos que han publicado durante todo este tiempo.

Espero que sigan así, y si alguien tiene ganas de explicar para ayudar a los muy novatos bienvenido sean. Un saludo.
Thrall - 13/05/2010 18:09
Hola a todos aquí. Ante todo quisiera presentarme. Soy cubano y he estado siguiendo este foro desde la 1era página me he pasado varios días leyendo cada publicación que han hecho y como han venido conformando poco a poco algo más genuino y complicado con cosas muy sencillas en el mejor sentido de la palabra, aquí tengo internet en un horario porque estudio en la universidad y aquí no hay servicio de internet a domicilio, si alguien pudiera publicarme aquí la última versión del Blitz 3d para descargarlo, además de los pluing que utilizan para el trabajo de gráficos y demás cosas. De veras quisiera agradecer la desinteresada ayuda de muchos de ustedes de los que más cosas he leído y de los que más cosas publican aquí, pero si lo hiciera y se me quedará alguno fuera no me lo perdónaría así que, para no ofender a nadie pues mis más sentidas gracias por todo el esfuerzo que hacen para mantener vivo este sitio.

Hablando de lo que me trae a este foro pudiera decir que quiero realizar una aplicación que haga un recorrido virtual por los centros históricos más importantes de mi país, quiero comenzar por la parte central que es donde estudio y donde vivo, para ello tengo algunos amigos que están estudiando arquitectura que me ayudan con el modelado de las zonas, yo hago mis aportes, pero estoy desnudo en el 3ds Max, trabajo el AutoCAD, pero no me gusta usarlo para estas cosas, no soy ciego y veo la superioridad en el 3ds Max, quiero comenzar a aprender lo mínimo para después ir complicándome más, por ahora quiero dedicarme a aprender bien el Blitz 3d y esto que han hecho aquí si lo recopilaremos seria el mejor libro de Blitz 3d jamás editado, la revista que publican esta divina, la comparto con mis amigos aquí en Cuba, aunque a veces pesa un poco y aquí la internet es muy lenta e intermitente. Bueno creo que me extendido un poco, después quisiera contactar con alguien que se dedique a hacer modelos en 3dsMax para que me de algunas ideas o a alguno de mis amigos para hacer un pionero cubano, es decir un escolar cubano, de primaria y secundaria. Gracias por los aportes o, k. Muy buenos.
Yue - 13/05/2010 20:58
Hola la última versión de Blitz3d es la 1.99, para tener la versión oficial lo haces en su web, es muy económico comparado con otros sistemas, pero si le metes ganas puedes hacer algo muy bueno.

Sobre una comunidad, para hablar sobre el tema tengo esta [url]http://www.blitz3dspanish.com.ar[/url] y esta naciendo hasta ahora.

Ok, ok, ya pongo el enlace a los foros (administrador).

En la actualidad existen librerías externas que son de pago y otras gratuitas que expanden su funcionalidad, yo por ahora tengo pensado hacer un videojuego de coches. Un saludo.
Thrall - 14/05/2010 02:29
Gracias amigos ya me descargue con un poco de trabajo el Blitz 3d, hacia unos cuantos días que estaba detrás de el, ustedes no se imaginan lo difícil que es aquí en Cuba descargar un programa, que no sea freeware. Ahora a ver cada cosa que han publicado aquí desde el 2008 que nostalgia debe darle esto a los que como Cibertronic han estado desde el comienzo de este gran proyecto, porque así es como lo denomino, proyecto conjunto Blitz 3d, más que una comunidad hemos fundado una familia de amigos creadores de sueños. De veras muchas gracias por ser así. Más adelante de seguro les pediré ayuda con las cosas que quiero hacer. Por ahora los dejo estoy en el último año de mi Carrera [5to] ing. Civil y estoy haciendo la tesis. Gracias de nuevo, nunca dejare de agradecerles.
Turriano - 14/05/2010 07:57
Me parece una muy bonita idea thrall. Ahora mismo estoy algo liado, pero en cuanto, pueda, no dudes que haré lo posible por echarte un cable en lo que pueda.

Tengo personajes, vehículos y muchas cosas que podrás incorporar a tu trabajo. Saludos.
Damian1985 - 14/05/2010 19:21
Buenas alguien sabe sobre alguna librería para utilizar base de dato en Blitz3d.
Yue - 15/05/2010 01:43
Que clase de base de datos quieres manejar, si no estoy equivocado se pueden crear en texto plano introduciento datos línea por línea, eso es manejo de ficheros.
Yue - 15/05/2010 04:23
Ok mira ya encontré algo: [url]http://repeatuntil, online.fr/etna/[/url]. O busca este pack blitzxml v1.71. También te respondí en la comunidad de blitz3dspanish. Un saludo.
Turriano - 15/05/2010 08:38
¿Con read-data?
Damian1985 - 15/05/2010 09:26
Pero al hacerla en texto plano cualquier usuario podría modificarla y yo la necesitaría para que desde ay me cargue los mundo, cuentas de usuario, las Quest, las coordenadas de los NPC.
Thrall - 17/05/2010 21:38
Hola amigos, tengo una duda muy sencilla, pero no sé que será, estoy tratando de cargar un modelo 3d en extensión *.b3d, pero cuando, por ejemplo, pongo este código me dice que la entidad no existe, por ejemplo.

Terreno= loadmesh( terreno, b3d).

Entitytype terreno,2.

Entonces veo ejemplos que lo utilizan y no me corren, por ejemplo, he descargado miles de ejemplos de aquí de este foro y el ejecutable que tienen esta perfecto, pero el.bb no me corre, no sé si será problema del programa o de que será. Gracias a todos por su ayuda.

Estoy comenzando en esto de la programación y tengo algunas dudas mas:
1- Esta es la forma de iniciar una variable con algún valor? Sp#=0.3.
2-como le doy a la variable el tipo de dato que guardara?
Yue - 18/05/2010 02:06
Hola bueno, para el primer paso el caso es que el modelo debe estar en la carpeta dónde está el respectivo archivo.bb, de lo contrario te dirá que no existe el modelo, otra cosa que veo es que el identificador del modelo dentro de las respectivas comillas no debe contener espacio. Terreno, b3d terreno, b3d.

Con respecto a las variables en lo básico existen tres tipos de datos que se pueden almacenar en las variables, por defecto es un número entero.

Vida_jugador = 100.

Se puede usar este identificador para decirle que es un número entero %, pero por ausencia del mismo se entenderá que es un número entero.

Las otras variables son números decimales o flotantes.

Dinero_jugador# = 100.5.

Y la otra es tipo cadena, dato que se le indica a la variable mediante $.

Nombre_jugador = yue.

Las cadenas, aunque sean números no se pueden realizar operación matemáticas.

Telefono_movil$ = 3155256636.

Edad$ = 31.

Print telefono_movil + edad.

El resultado en pantalla es la concatenación del valor de las dos variables, por lo tanto lo que se muestra en pantalla es:
15525663631.

Los identificadores para indicarle el dato que contendrá la variable solo es exclusivamente cuando se declara, por lo tanto si hablamos de variables existen dos tipos locales y globales.

Bueno eso es todo.
Thrall - 18/05/2010 03:01
Hola amigo, gracias por las aclaraciones, todo lo que pasaba era cuestión del programa, como sabes soy de aquí de Cuba y aquí la internet es un gran problema, yo soy estudiante y gracias a eso tengo la posibilidad de tener acceso a ella, de ella descargue el software Blitz3d, pero con la demo que antes había descargado el código si funcionaba, es decir la demo reconocía la entidad, pero el full no, entonces busque un poco en la internet y con la instalación venían unas updates que tenía que instalar para que el mismo corriera a toda su plenitud. De todas las maneras un millón de gracias. Necesito si alguien sabe o tiene o ya hizo o le es fácil hacer, que me faciliten un modelo 3d lo más detallado posible de un bulldozer. Gracias.

Posdata: gracias especiales para ti Blitz3d. Ah tengo otra duda cuando compilo existe alguna opción para cambiar el icono con que se crea el ejecutable?
Thrall - 18/05/2010 03:05
Alguien que pueda subirme un enlace directo de descarga para el pluing ese de 3dsMax para combertir en *.b3d, que mi internet es muy restringida.

Posdata: por favor que sea gratis que el acceso que tengo a internet es limitado, pero bueno gracias que puedo acceder a el ok. Gracias a ustedes familia por cooperar.
Yue - 18/05/2010 05:21
Ok me alegra que hayas resuelto el inconveniente, si como veraz tenias la demo, esa es muy restringida. Bien para cambiar el icono existen dos formas una es a fuerza bruta usando un programa llamado resourcehacker con el que abres el ejecutable final y le cambias el icono, la otra forma es con una librería externa llamada da séticon.

Cualquier duda me comentas y te ayudo ok.

Sobre el plugin creo que se llama pipeline, pero yo uso un programa llamado Milkshape que no es muy pesado y tiene esa opción, por otro lado, Blitz3d recibe en formato (*.3ds), o x también.

Sobre el modelo si deseas dibujarlo de frente, y de lado y yo te lo modelo, eso sí no se mucho de texturas, pero te puedo dar el modelo como tal. Un saludo.
Yue - 18/05/2010 06:01
Hola aquí está [url]http://www.TurboSquid.com/3d-models/free-cd8n-3d-model/195946[/url] es gratuito. Un saludo.
Thrall - 18/05/2010 06:32
Amigo gracias de veras, estoy más que agradecido por su ayuda. De veras un millón de gracias, a medidas que vaya adelantando en el proyecto se lo iré publicando aquí para que vaya viendo y así de paso si no conoce Cuba al menos lo hagas por este medio de lo digital. Y la historia del che aquí en Cuba.
Yue - 19/05/2010 23:44
Nueva actualización para Blitz3d, [url]http://Blitz Basic.com/community/mensajes.php?Topic=89691[/url], las funciones que encontramos son compilación en sistemas operativos de 64 bits, y corrección de multitud de errores, esa noticia es de hace un mes. Un saludo.
Yue - 06/06/2010 20:52
Hola, aquí quiero compartir una herramienta que más de una vez me ha sacado de apuros, su funcionalidad es crear mapas de luz, pero que es un mapa de luz? Bien el ámbito de los vídeo juegos, se utiliza efectos de luces estáticas, esto es para simular las sombras de un edificio, elementos en un interior de una habitación, sería no muy incorrecto usar luces dinámicas para este propósito con lo cual se desperdicia recursos. Por lo tanto, los mapas de luz son más que texturas que hacen de sombras, en Blitz 3d se puede establecer esto gracias a que tiene la opción de multitextura, pero este programa lo que hace es que toma un modelo y transforma la textura con las sombras incluidas, acepta b3d,3ds y otros tipos de modelos.

El programa es gratuito y su última actualización es del 2009, los creadores tienen un plugin para 3ds Max para abrir arhivos b3d. Un saludo.
Yue - 06/06/2010 21:59
Bueno otro aporte, ¿cómo hacer sombras en Blitz3d sin usar libreríasí pues bien les pongo a disposición las funciones necesarias para hacer eso de sombras dinámicas que en muchas ocasiones deseamos que sea mucho más fácil, pues no te has pillado el ejemplo de Blitz3d.

Todas las funciones están respectivamente encapsuladas, así que, te evitara el trabajo duro.

Así que no seas flojo y para sombras estáticas usa mapas de luz.



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #134027

promedi - 15/07/2010 21:49
Hola a todos. Antes de nada agradeceros a todos vuestro desinteresado trabajo y esfuerzo. Espero no desviar el tema del mensajes. Estoy siguiendo un curso que salió hace varios años, y que imagino que todos conocéis sobre Blitz 3d en el que hay que crear un juego de una bionave, pues mi problema es que, al intentar texturizar la nave no lo consigo a pesar de tener el Deep pain3d, pero al parecer es una versión posterior y no tiene incorporado el mercatoruv que es el que se usa para mapearlo en el curso para luego pintar sobre la malla con el Deep pain3d, mi pregunta es la siguiente: se puede crear la nave con el 3dsMax y texturizarla y posteriormente usarla en Blitz3d? O cómo puedo hacerlo para mapearla con el Deep Paint sin el mercatoruv? Gracias de antemano.

Promedi.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #135702

Yue - 15/07/2010 23:47

Hola a todos. Antes de nada agradeceros a todos vuestro desinteresado trabajo y esfuerzo. Espero no desviar el tema del mensajes. Estoy siguiendo un curso que salió hace varios años, y que imagino que todos conocéis sobre Blitz 3d en el que hay que crear un juego de una bionave, pues mi problema es que, al intentar texturizar la nave no lo consigo a pesar de tener el Deep pain3d, pero al parecer es una versión posterior y no tiene incorporado el mercatoruv que es el que se usa para mapearlo en el curso para luego pintar sobre la malla con el Deep pain3d, mi pregunta es la siguiente: se puede crear la nave con el 3dsMax y texturizarla y posteriormente usarla en Blitz3d? O cómo puedo hacerlo para mapearla con el Deep Paint sin el mercatoruv? Gracias de antemano.

Promedi.

Hola se de que curso hablas, es uno de 20 capítulos si te falta algo del curso me avisas yo lo tengo completo.

Bueno el caso es que la nave si se puede modelar en 3dsmax, pero con la versión 5 o 6 o 7, para usar el plugin pipeline, para exportar al formato nativo de bltiz3d (b3d), pero eso no es problema puedes modelar en una última versión pues Blitz soprotagonista formato (*.3ds), x y obj.

Sobre el prorama, bueno yo hice lo siguiente cuando hice ese curso, tome el Milkshape modele una nave, y las texturas las hice con Coreldraw.

Así que ya miro tu nave. Un saludo.
Yue - 15/07/2010 23:58
Ok me he pillado tu nave, yo la verdad no soy un experto en 3dsmax pero si me defiendo muy bien con el milkshape3d, la idea es que puedes dejar la nave con materiales, colores plateados o los que quieras, pero en materiales, así te evitas la texturizada, por el contrario si deseas texturizara toca echarle mano a otro programa externo como Corel Draw, hacer las texturas y ponérselas a la nave, otra cosa es que Milkshape exporta b3d.

Bueno un saludo.
promedi - 16/07/2010 20:55
Gracias Blitz3d por contestar y perdona mi ignorancia, pero para crear las texturas con Corel tengo que crear una para cada elemento de los que la nave está formada o puedo crear un bitmap con todas las texturas y aplicarlas a la vez, estoy un poco verde con el tema de las texturas.

He intentado mapear la nave para crear un mapa y poder pintar en un bitmap solo, toda la nave tal cómo está en el ejemplo del curso y no he podido crear el dichoso mapa, pero si me explicas lo de Corel seguro que lo consigo, pues el Corel lo toco bastante bien. Gracias.
Yue - 17/07/2010 00:04
Lo puedes hacer de juntas formas, te repito yo lo he realizado en Milkshape, veo que tú nave este agrupada en superficies, o sea partes, pero no uses bmp, si no más bien (*.png), ocupa menos espacio y tiene la misma calidad de un bmp.

Entonces lo que tienes que hacer es en un solo (*.png), dibujar las partes de la nave, alas, turbinas etc, y luego acomodarlas al modelo.

Cualquier inquietud me avisas.
promedi - 18/07/2010 15:19
Gracias Blitz3d he seguido tu consejo y lo he texturizado con Milkshape y guardado en la misma carpeta que el modelo con las texturas *.tga y funciona bien.

Bueno ahora seguiré con el resto del curso. Gracias.
Yue - 18/07/2010 18:43
Oye, una pregunta que versión tienes de Blitz3d? Yo tengo la 1.105.
xarpo_ - 18/07/2010 20:27
Si lo acabas ya nos lo enseñaras. Yo empecé el curso, y lo dejé porque ahora estoy con un grupo diseñando otro videojuego, pero tengo pensado continuarlo una vez tenga algo de tiempo, ya que lo poco que hice me aprecio muy interesante. Un saludo y suerte, y espero verte publicar por aquí.
promedi - 18/07/2010 21:45

Oye, una pregunta que versión tienes de Blitz3d? Yo tengo la 1.105.

Blitz3d tengo la 1.98, he estado intentando bajar la 1.105 pero no lo he conseguido, te agradecería que me dijeses donde conseguirla, pues tengo entendido que soluciona algunos bug anteriores y trae algunos comandos nuevos.

Xarpo, muchas gracias por tus ánimos espero acabarlo y mejorarlo pues la intención que tengo, es de cambiar algunas cosas para mejorarlo y hacerlo con más jugabilidad, pues desde que el curso salió los ordenadores son más potentes y se les puede exigir más y lo cierto es que el curso está muy bien pues te enseña a hacer un juego desde cero creándote tu los gráficos los sonidos y la programación, personalmente creo que está muy bien, aunque yo personalmente habría creado otro juego tipo shooter, pero bueno lo importante es coger una buena base y lo demás vendrá después. Saludos y gracias.
Nightman - 21/07/2010 17:52
Hola a todos soy nuevo por aquí y necesito un favor de quien pueda ayudarme, el hecho es que estoy muy interesado en el desarrollo de videojuegos, y he hecho hasta lo imposible por descargarme cualquier versión del Blitz3d, pero no puedo, en mí país descargar algo de rapidshare y Megaupload es imposible, al igual que 4shared pues los dos primeros nunca comienzan a descargar y 4shared lo hace y después quita la descarga, necesito alguno de ustedes que pueda subirme la versión que tengan del programa a mediafire pues es el único que hasta ahora se ha comportado bien, se los agradecería mucho, y así podría interactuar con ustedes aquí en el foro. Gracias de antemano.
Yue - 21/07/2010 18:16
Agregame al MSN.
Nightman - 21/07/2010 18:58

Agregame al MSN.

Brother aquí no podemos usar ningún tipo de Messenger.
Yue - 21/07/2010 20:20

Brother aquí no podemos usar ningún tipo de Messenger.

[email]iris3d@hotmail.es[/email].
Cibertronic - 04/08/2010 03:34
Hola a todos. Según kbzon_v8 y acabo de verlo yo también con cierto asombro que el plugin para 3dsMax 9 pipeline. Para lsok no lo conocen este plugin permite exportar las escenas, las animaciones y todo neustro trabajo de 3ds Max a formato b3d.

Ya no está disponible (el parche para mnax 9).

Este plugin es mi favorito.

Ya que con max es super fácil realizar neustrs mundos y exportarlos con u nsolo clic.

Esperemos que lo haya nquitado para poner uno mejor pero mientras tanto les dejo aquí el plugin.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #136242

kbzon_v8 - 04/08/2010 04:06
Grande Jorge. No sabes cómo te lo agradezco, lo busque por todos lados, lástima que no haya uno para el 3dsMax 2010, pero bueno ya es algo.

A ver si reanimamos este foro así llegamos lejos. Saludos.
Yue - 04/08/2010 06:44
Es una gran noticia, pues vemos que Blitz3d desde su perspectiva es una gran herramienta que, aunque usa DirectX 7, siempre va en auge de la mano con 3ds Max, ya que se puede crear un pipeline actualizado y corroboro que funciona perfectamente.

Posdata: si deseas DirectX 10 en Blitz3d, una opción es xors3d, o simplemente manejar las DirectX con librerías externas desde desde lenguajes de programación como c/C++. Saludos.
Yue - 23/08/2010 20:37
Hola aquí les pongo un código abierto de Blitz3d que se usa para crear terrenos, sin librerías externas.







Descargar de la web oficial de Blitz3d. [url]http://www.blitzBasic.com/community/mensajes.php?Topic=84809[/url]. Un saludo.
Turriano - 24/08/2010 12:12
Sólo me sale una palabra: Preciosos.
Yue - 24/08/2010 15:19
Liberacción del código fuente del envoltorio de física para Blitz3d, denominado PhysX Wrapper. El autor xors3d team, a anunciado que el proyecto se abandono debido a que el equipo de trabajo se centra en desarrollar la física para su motor denominado xors3d que en un comienzo era un complemento de Blitz3d y por lo tanto el código es liberado para que otros usuarios continúen con el proyecto, esto implica que toca programar en C++, algo que no es apetecido por la mayoría de usuarios noveles.

Yo por mi parte estoy en tramites para ver si puedo liberar mi key, y entregar la (*.dll) a otros usuarios que no quieran copilar el código por falta de conocimientos de programación. Un saludo.

Código fuente aquí:
Mycop.xors3d.com/public/pxw/physxwrapper, zip.
aprendiz - 08/12/2010 18:50
Hola, no sé si alguien continua este tema, la verdad que soy nuevo en el foro, pero tengo bastantes conocimientos de Blitz para responder casi cualquier duda creo.

Pero tengo una pregunta, a ver si alguien puede responder.

Cuando cargas en bliz3d una textura : textura = loadtexture (prueba.jpg).

Luego la borras : fretexture textura, no ocurre nada,xd, el caso es que, si haces este proceso un número de veces, Blitz da un fallo, y es memory Access violation. El juego que estoy haciendo necesito liberar memoria, ya sea con frentity enemigo, o fretexture para cargar nuevos niveles, pero al llegar un número de veces da ese error, si alguien pudiera solucinarme este problema le estaría muy agradecido.
Yue - 08/12/2010 22:13
Hola la textura se elimina de la memoria, más no visualmente del objeto donde se encuentra la textura, por ejemplo, tienes un cubo texturizado, y si has eliminado la textura de la memoria no podrás texturizar otro cubo con ese mismo identificador que apunta a la memoria, ya que la textura no está, aunque si la puedas ver sivualmente.

Como compruebas lo que te dijo? Sencillo usa el comando availvidmem() que te regresa la memoria disponible en tu ordenador y al liberar la textura dependiendo del tamaño de la misma veraz un aumento en la memoria disponible.

Lo del error sucede efectivamente por que has eliminado de la memoria la textura, esto si lo haces en modo de depuración no te dirá memory acces violation, si no que la textura no existe.

Ahora bien si eliminas unas entidades para dar paso al siguiente nivel, debes tener en cuenta que debes cargarlos de nuevo ya que no están en la memoria del computador y no tienen identificador para recuperar sus datos.

Otra cosa depende de qué versión que estés usando de Blitz3d, la versión actual va por la 1.106 y para evitar confusiones de la versión 1.99 paso a la 1.10.

Aprovecho para mostrar mi proyecto que hago cada vez que me prestan un computador.



Edito: otra cuestión es que cuando carges de nuevo entidades para otro nivel no lo hagas con el mismo identificador, por ejemplo, hazlo de esta manera:
[code]enemigo_nivel1 = loadmesh(enemigo.3ds).

Enimigo_nivel2 = loadanimmesn(enemigo.3ds)[/code]
aprendiz - 14/12/2010 10:59
Muchas gracias, me ha servido mucho, al final la solución era la versión como dijiste, el error lo da con la última versión de blizt, sin embargo, instale la 1.90 y nunca falla, gracias. Y ahora tengo una nueva duda.

Como puedo hacer (con Milkshape o con lo que sea, yo uso Milkshape) para exportar transaparencias de textura a un.b3d. En el Milkshape cargo una textura (*.png) con transparencia a un plano (para hacer un árbol) pero al exportarla a Blitz 3d me sale sin transparencia. Además, sé que se puede acer porque he descargado un.b3d con dos texturas apartes y al cargarlo contiene transparencias, pero quiero saber hacerlo yo. Bueno, si alguien sabe muchas gracias de antemano.
Yue - 14/12/2010 12:57
Hola, el tratamiento de transparencias se puede hacer directamente desde 3dsMax (un ejemplo) donde al cargar el Mesh en Blitz salen automáticamente, por el contrario en Milkshape, se debe filtrar la textura con un flag.

Por ejemplo, tenemos un árbol, cuya textura de las hojas es hojas, (*.png), esta textura debe tener un canal alpha o una maskara, si es un canal alpha antes de cargar el Mesh se pone esto.

Texturefilters hojas, (*.png),2.

aprendiz - 17/12/2010 12:14
Muchas gracias Blitz3d, pero eso ya sabia, el caso es que, ahora encontré un programa que permite exportar a.b3d añadiendo los flags que me comentas e incluirlos directamente en el.b3d. El programa se llama gile[s], un poco difícil de encontrar, pero lo dejo aquí:[url]http://www.frecle.net/index.php?Show=§ion=giles&sub=download[/url].

Es muy bueno a mi parecer, porque no necesitas escribir nada de código en blizt, tan solo cargar el.b3d, y con el se cargaran todas las transparencias, planos vistos por las dos caras (para árboles.) iluminaciones, varias capas de textura, todo en un solo.b3d. El nuevo problema que tengo ahora es que el.b3d exportado por dicho programa, no sé porque, pero no permite colisiones el modelo a polígono, si a esfera, pero si tengo un personaje con entityradius y un terreno exportado desde gile[s], pues no puedo hacer que el personaje colisione contra el terreno (polígono), es un gran problema, pero ando buscando si puedo solucionarlo ya que sin ese fallo, este programa es perfecto para texturizar.
aprendiz - 17/12/2010 12:16
A, y como haces para exportar desde max a.b3d y cargarlo directamente, que intente con el pipeline, pero no me funciona, eso sería de gran ayuda.
aprendiz - 17/12/2010 14:35
Hola de nuevo Blitz3d, ya he conseguido instalar el pipeline rebuscando por el hilo, pero me sigue ocurriendo lo mismo que con el giles, al exportar el.b3d, luego las colisiones a polígono no funcionan, sabes cómo solucionar esto?
Yue - 17/12/2010 17:36
Si giles es genial para hacer mapas de luz, es su especialidad y lo más importante es que es gratuito, el problema de las colisiones es el mapeado UV, entonces lo que sucede es que el modelo tiene varias texturas. El truco para esto que yo encontré es que el modelo tenga una sola textura y de esta manera si funcionado, por el contrario si tiene varias texturas es hacer otra copia del elemento y usar ese para las colisiones ocupando el mismo espacio y este estaría invisible, pero solo sería la malla.

aprendiz - 18/12/2010 00:54
Gracias por la respuesta Blitz3d, pero estuve haciendo varias pruebas, porque el giles lo encontré (*.ace) poco, (ya veo que tú no,xd), y si cargo un modelo.b3d exportado del giles con loadmesh, no ai problema para colisiones. Si lo cargo con loadanimmesh para recoger coordenadas de los joints, o para animarlo simplemente, entonces es como si la malla no existiera, ya que ni colisiones de polígono funcionan, ni tampoco comandos de malla, como getsurface.

Lo que me dices de las texturas no lo entiendo muy, allá (ya te digo que soy nuevo en el giles) si pudieras explicarme también lo del mapa de luz, y cómo funciona, y como cargarlo en blizt, sería una gran ayuda. Yo para dar luz falsa a los modelos uso Mesh Light en blizt, pero sería bueno saber usar el mapa de luz. Cuando exporto en.b3d desde giles, me da la opción de guardar el mapa de luz, pero como te digo no sé cómo se modifica, ni cómo cargarlo. Gracias de antemano, me ayudas mucho.
aprendiz - 23/12/2010 20:50
Hola de nuevo, tengo un problema a ver si alguien sabe cómo puedo hacer. Necestio exportar desde giles un modelo con mapa de luz, texturas etc, pero conservar la animación que ice desde Milkshape. Como puedo hacer para tener un.b3d animado y además texturas, transparencias etc?
Damian1985 - 29/12/2010 23:17
Muy buenas a todos alguien sabría decirme con qué programa puedo hacer terrenos con su vegetación y como cargarlo en Blitz3d.
Falco - 04/01/2011 23:02
Buenas a todos, gran hilo. Hace un par de años lo seguí desde que empezó y comencé a hacer un juego de coches, no lo terminé porque no tenía ordenador suficiente se me ralentizaba y me desmoralicé. Al cabo de dos años me ha picado el gusanillo otra vez y lo he retomado, bueno más bien he empezado de nuevo porque perdí las fuentes. Ahora ya está muy avanzado, aunque sólo tengo un circuito hecho o casi hecho, pero el online funciona de lujo hasta 16 jugadores, por lo menos en local no he podido probarlo todavía con gente que no comparta mí mismo router. Por cierto, no tengo ni idea de modelar, he usado el Google SketchUp para todo ya que exporta.3ds, el lenguaje lo conocía un poco porque tuve un amiga y hacía algún juego en amos basic que creo que es del mismo creador que el Blitz o por lo menos se parece enormemente.

Os dejo el enlace para que podáis ver el juego: [url]http://www.racerphysics.com[/url].
Sadyk - 05/01/2011 11:31
Muy bueno el juego, intenta mejorar las texturas del escenario, si puedes cambia el menú del principio, intenta meter un menú con imagen de fondo y demás que se vea mejor, porque que se vea así, como el símbolo del sistema, vamos, queda un poco cutre, si funciona lo del online, mi enhorabuena, solo mejoraría la forma de unirse a los servidores, es poco intuitivo para el usuario, si complica eso demasiado la cosa, intenta que en el menú del servidor este a la vista en una esquina la IP, para que sea accesible y no tenga que ponerse a buscarla el usuario para pasarsela a los amigos con los que va a jugar.

Un gran trabajo el que has hecho.
Falco - 05/01/2011 19:36
Gracias por el comentario, sobre las texturas, intentaré mejorarlo ya que me tengo que hacer muchos circuitos, las que he usado ahí son las que vienen por defecto en SketchUp, hierba, tierra, etc. Sobre el menú principal lo tengo en tareas pendientes todavía queda mucho trabajo, el online funciona perfectamente lo he probado ya con varios ordenadores, el sistema de conexión a otras partidas mi idea es tener un archivo colgado por la red, en el cual el juego pueda consultarlo para ver las partidas disponibles y si me ánimo un poco más una base de datos estaría bien para guardar las vueltas rápidas, resultados de carreras y esas cosas y poder ir descargando los nuevos circuitos.
xarpo_ - 05/01/2011 23:10
Genial el juego, esta trabajado, ya me gustaría a mí saber programar todo eso. El tema gráficos es lo de menos, ya los mejoraras más adelante.

Eso sí, podrías ponerle un poco más de velocidad al coche.

Pero enhorabuena, sobre todo ves pasándonos tus avances.
Falco - 15/01/2011 20:10
Ya hay un menú gráfico, gracias a la librería etna, se pueden guardar las vueltas rápidas en un hosting con mysql. Por cierto, el que hace de server debe tener el puerto 6500 abierto.

Descarga -> [url]http://www.racerphysics.com[/url].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #141718

povmaniaco - 15/01/2011 20:57
Hombre, si somos casi vecinos. Me gusta la gente que bien poco, y hace mucho. Enhorabuena por el juego. Saludos.
Damian1985 - 22/01/2011 00:18
Buenas a todos, estoy interesado en realizar un juego de estrategia, y mis dudas son las siguiente:
¿Qué es más fácil hacerlo 2d estilo age of empire o 3d estilo Warcraft 3?
¿Y si alguien tiene algún ejemplo de seleccionar un objeto ya sea 3d o 2d y que este se mueva?
¿Cómo podría hacer para limitar mi mapa?
Damian1985 - 22/01/2011 17:51
Bueno ya tengo solucionado lo de seleccionar un objeto, quizás no sea la mejor forma, pero bueno por ahora me vale y estoy contento. Aquí dejo el código por si alguien le pudiera interesar, o ve alguna forma de hacerlo mejor que me lo diga.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #142011

Falco - 23/01/2011 01:59
Me sirve para mí juego, concretamente en el menú de introducción donde las letras son entidades 3d, lo tengo por coordenadas del ratón en 2d, pero al cambiar de resolución, cambian ligeramente las posiciones 3d.

Interesante tu proyecto, ánimo, ya llevas 74 líneas de código, yo llevo algo más de 5000 y cuando no salen las cosas te da bajón, pero al final se consiguen. Si quieres ver los avances de mi juego están en [url]http://www.racerphysics.com[/url].

Si tienes dudas y puedo ayudarte en algo ves publicando.
Damian1985 - 23/01/2011 11:42
Ya que lo dices si tengo una duda, y es que no consigo que cuando clickeo un objeto me salga una imagen y esta se mantenga, solo se ve la imagen cuando pulos, pero al instante desaparece.
[code]If mousehit (1) = true then.

Pickeentity = camerapik (Camera,mousex(),mousey()) tif pickedentity()=castillo then t entitycolor castillo, 255,0,0 drawimage guerrero_ico,413,375 tendif t.

Else tif pickedentity()=Terrain then t entitycolor castillo, 255,255,255 tendif t.

End if.
[/code]
Falco - 23/01/2011 11:59
Hay muchas maneras de hacerlo, depende de cómo te quieras organizar, la más sencilla es: If mousehit (1) = true then. Pickeentity = camerapik (Camera,mousex(),mousey()) tif pickedentity()=castillo then t entitycolor castillo, 255,0,0 imagenguerrero=1 tendif t.

Else tif pickedentity()=Terrain then t entitycolor castillo, 255,255,255 tendif t.

End if.

If imagenguerrero=1 then drawimage guerrero_ico,413,375.

Luego cuando selecciones otra imagen debes poner:
Otraimagen=1.

Imagenguerrero=0.
Damian1985 - 23/01/2011 12:18
Muchas gracias, no se me hubiera ocurrido eso en la vida, por cierto, no tendrás una ligera idea de cómo hacer para limitar la cámara para que no se salga por los lado del mapa, y la forma de hacer un minimapa.

La programación no es mi fuerte yo soy más de gráficos.
Falco - 23/01/2011 16:04
Tienes unas funciones para controlar las entidades, como entityx(), entity(y),entity(z), sólo tienes que poner, por ejemplo:
If entityx(tucamara)>300 then translatentity tucamara, entityx(tucamara)-1,0,0.

El -1 posiblemente te haga mucho rebote, lo vas cambiando y probando hasta que no notes rebote. Como todo hay muchas maneras de hacerlo, este es sólo un ejemplo.
Damian1985 - 23/01/2011 19:33
Gracias de nuevo, voy a probarlo. Por cierto, si te te puedo ayudar en hago en tu proyecto solo tienes que pedírmelo, al modelo o algo.

Ya lo probé, pero cuando llega al límite no sé dónde me manda la cámara, pero se ve todo negro, voy hacer a lo bestia y voy a crear un cubo gigante y ponerlo con colisiones hacia la cámara.
Damian1985 - 24/01/2011 20:33
Hay alguna forma de crar un minimapa como este:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #142103



No se me ocurre ninguna idea la verdad.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #142103

Falco - 24/01/2011 22:14
Yo lo tengo en tareas pendientes, tengo que hacer un minimapa con los coches, supongo que, los tiros irán como adaptar el juego a todas las resoluciones, veras yo lo tengo todo diseñado para una resolución de 1280x800, pues en todas las coordenadas hago lo siguiente:
Global puntero=loadimage (osd/puntero, bmp) tmaskimage puntero,0,0,0 tximage=imagewidth(puntero) : yimage=imageheight(puntero) tresizeimage puntero, (ximage*gráficosx)/1280, (yimage*gráficosy)/800.

Drawimage marconombre, (920*gráficosx/1280), (220*gráficosy/800).

Todo esto cada vez que sale una coordenada que influye directamente con la resolución siendo gráficosx, gráficosy la resolución seleccionada.
Damian1985 - 25/01/2011 22:55
No lo que me quieres decir, pero en tu caso si es un juego 3d puedes utilizar el comando cameraproject o algo así se llama para hacer el mapa, yo mi juego es en 2d y a mí no me vale, gracias de todos modos.

Por cierto ¿no sabrás alguna forma de empaquetar los archivos? Para que nadie los pueda modificar yo encontré el pakmaker empaqueta de miedo, pero el fallo que no es capaz de cargar los ficheros con el comando include.
Falco - 06/02/2011 00:59
Nueva versión disponible, v0.53 que incluye:
-Soporte para pad analógico/digital.

Mejorado el menú opciones.

Añadido compuestos blandos/duros.

Añadida opción de cambio manual/automático.

Mejoras notables en el osd.

Calculo de vueltas con el combustible restante.

Descarga-> [url]http://www.racerphysics.com/download/racerphysics0.53.rar[/url].

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #161435



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #161436

Yue - 07/02/2011 01:54
Falco en hora buena se ve muy bien. Puedes mejorar el cielo haciendo un cubico, ya que se ven la unión de las caras de los cielos, no recuerdo bien debes aplicar unos flag a las texturas.

Creo que hace falta sombras. Un saludo.
Yue - 07/02/2011 01:55

No lo que me quieres decir, pero en tu caso si es un juego 3d puedes utilizar el comando cameraproject o algo así se llama para hacer el mapa, yo mi juego es en 2d y a mí no me vale, gracias de todos modos.

Por cierto ¿no sabrás alguna forma de empaquetar los archivos? Para que nadie los pueda modificar yo encontré el pakmaker empaqueta de miedo, pero el fallo que no es capaz de cargar los ficheros con el comando include.

Usa el packmachine te permite cifrar datos de hostia, es una lib free.
Yue - 07/02/2011 02:01
Falco sobre el cambio de resoluciones donde se mueven las imágenes, usa como partida la mitad de la pantalla tanto en altura como en anchura, por lo tanto al cambiar la resolución no se verá afectado.

Por ejemplo:
[code]drawimage imagen,graphicswidht()/2-200,graphicsheight()/2 +200[/code]

Al realizar esto el cambio de resolución no afecta los objetos que uses en el menú.
Falco - 08/02/2011 21:37
Gracias Blitz, en cuanto al tema de las resoluciones no tengo ningún problema con el 2d, usé en su día una simple regla de tres, con resize image y drawimage y me va perfecto, el único problemas es el 3d, el menú de introducción los textos son entidades 3d, para así poder hacer los efectos de girar las letras, y cuando pasa el ratón por encima se iluminan y caminan hacia adelante, ahí está el problema uso un simple recuadro de coordenadas x, y para detectar la posición del ratón, pero cuando cambia el aspect ratio de 16:10 (que uso por defecto) a otro las letras se desplazan un poco hacia abajo por lo tanto se activan cuando el ratón pasa ligeramente por encima de lo deseado.
Yue - 08/02/2011 23:11
Bueno aquí pongo un código bastante interesante como crear el efecto blur.
[code]initgraphics(1024,1024). Global light = createlight().

Global Camera = createcamera ().

Positionentity Camera,0,1,-5.

Camerarange Camera.001,100.

Createplane ().

Local Cube = createcube ().

Positionentity Cube,0,1,0.

Rotateentity Cube,30,40,0.

Local overlay = createquad(1,1,-1,Camera).

Positionentity overlay,0,0.5.

Entityalpha overlay.8.

Local texture = createtexture (1024,1024,1+16+32).

Entitytexture overlay,texture.

Loockbuffer texturebuffer(texture).

For y = 0 todo texturewidth(texture)-1 tfor x = 0 todo textureheight(texture)-1 writepixelfast x y,0,texturebuffer(texture) tnext.

Next.

Unlockbuffer texturebuffer(texture).

Rendertexture (texture).
While not keydown(1) tturnentity Cube.5,1.5 tif keydown(200) translateentity Camera,0,0.1 if keydown(20 translateentity Camera,0,0,-.1 if keydown(203) translateentity Camera,-.1,0,0 if keydown(205) translateentity Camera.1,0,0 t updateworld t rendertexture (texture) t flip wend end t.

Function rendertexture (texture) trenderworld tcopyrect 0,0,1024,1024,0,0,frontbuffer(),texturebuffer(texture).

End function.

Function initgraphics(w = 1024, h = 768, title$=iris3d, exit_message$=) tgraphics3d w, 32, 2 tsetbuffer backbuffer() tsedrnd millisecs() tif exit_message <> apptitle title, exit_message telse apptitle title tendif.

End function.

Function createquad(width#, height#, order%=-1, parent%=false) tlocal v0, 1, 2, 3 tlocal point,surface tif not parent = false point = createmesh(parent) telse point = createmesh() tendif tif order <> 0 entityorder point, order tendif tentityfx point,1 tsurface = createsurface (point) tv0=addvertex(surface,-(width*.5), (height*.5),0,0,0) TV1=addvertex(surface, (width*.5), (height*.5),0,1,0) tv2=addvertex(surface,-(width*.5),-(height*.5),0,0,1) TV3=addvertex(surface, (width*.5),-(height*.5),0,1,1) taddtriangle (surface, 0, 1, 2) taddtriangle (surface, 1, 3, 2) treturn point.

End function[/code] Un saludo.
aprendiz - 09/02/2011 15:10
Muy bueno el código para hacer blur. Ahora estoy intentando comprenderlo del todo para poder variar la cantidad de blur. Gracias.

Ya me di cuenta, variando el entityalpha del ente overlay se consigue variar el blur.
videogamef1 - 09/02/2011 19:16
Hola, estaba mirando un código de Blitz para leer píxeles y cuando utilizo el comando readpixelfast me pone en un mensaje memory acces violation. Que puede será gracias.
Yue - 09/02/2011 19:42
Hola. Aprendiz, me alegra que te haya gustado el código. Ahora el siguiente fragmento de código es una función que detecta la posición del modo gráfico especificado, tanto en altura, como anchura y su respectiva profundidad.
[code]function buscarmg(ancho%,alto%,profundidad%) tlocal itermodes tfor itermodes=countgfxmodes3d() todo 1 step -1 ;it more likely that searches would prefer higher - End resolutions if (gfxmodewidth(itermodes)=width)*(gfxmodeheight(itermodes)=height)*(gfxmodedepth(itermodes)=depth) then return itermodes if (gfxmodewidth(itermodes)
End function.

Local modo_gráfico = buscarmg(800,600,32).

Print modo_gráfico ().
Waitkey().
[/code]

En mi caso retorna un 11, es la posición en la tarjeta gráfica donde se encuentra el modo gráfico, esto puedo variar de ordenador a ordenador, por ejemplo, en otros puede dar un 20 o un 30, esto se usa cuando se escanean los modos gráficos soportados por la tarjeta gráfica y este valor se toma como partida para mostrar las opciones disponibles en una lista dinámica para que el jugador lo cambie a su gusto.
[code]if (gfxmodewidth(itermodes)
Esta parte se usa para que salte los modos de 16, 24 de profundidad, si desea que detecte estos modos puede anular esta línea de código. Un saludo.
Yue - 09/02/2011 20:05
Continuando con otro código, este es la base de cómo hacer sombras volumétricas.
[code]Graphics3d 1024, 768, 32, 2.

Setbuffer backbuffer().

Globs.

Dim edge#(65000, 7).

Camera.

Cam = createcamera ().

Caster.

Cube = createsphere ().

Positionentity Cube, 0, 0, 7.

Light.

Light = createlight().

Positionentity light, 3, 3, 7.

Pointentity light, Cube.
While not keyhit(1) tturnentity Cube, 1. 5, 1.5 tvol = createvolume (Cube, light) trenderworld tfreentity vol tflip.
Wend.

End.

Function createvolume (model, light, volume_lenght = 1000000).

Volumemesh = createmesh().

Volumesurface = createsurface (volumemesh).

Entityalpha volumemesh. 5.

Entitycolor volumemesh, 255, 0, 0.

Entityfx volumemesh, 1.

Light_x# = entityx(light).

Light_y# = entityy(light).

Light_z# = entityz(light).

For n = 1 todo countsurfaces(model) tsurf = getsurface (model, n) tdwnumfaces = counttriangles(surf) - 1 tfor v = 0 todo dwnumfaces vert0 = trianglevertex(surf, v, 0) vert1 = trianglevertex(surf, v, 1) vert2 = trianglevertex(surf, v, 2) tformpoint vertexx(surf, vert0), vertexy(surf, vert0), vertexz(surf, vert0), model, 0 v1_x# = tformedx() v1_y# = tformedy() v1_z# = tformedz() tformpoint vertexx(surf, vert1), vertexy(surf, vert1), vertexz(surf, vert1), model, 0 v2_x# = tformedx() v2_y# = tformedy() v2_z# = tformedz() tformpoint vertexx(surf, vert2), vertexy(surf, vert2), vertexz(surf, vert2), model, 0 v3_x# = tformedx() v3_y# = tformedy() v3_z# = tformedz() a_x# = v3_x# - V2_x# a_y# = v3_y# - V2_y# a_z# = v3_z# - V2_z# bb_x# = v2_x# - V1_x# bb_y# = v2_y# - V1_y# bb_z# = v2_z# - V1_z# norm_x# = a_y# * bb_z# - A_z# * bb_y# norm_y# = a_z# * bb_x# - A_x# * bb_z# norm_z# = a_x# * bb_y# - A_y# * bb_x# normlight_x# = (v1_x# + v2_x# + v3_x#) / 3 - Light_x# normlight_y# = (v1_y# + v2_y# + v3_y#) / 3 - Light_y# normlight_z# = (v1_z# + v2_z# + v3_z#) / 3 - Light_z# if (norm_x# * normlight_x# + norm_y# * normlight_y# + norm_z# * normlight_z#) * (1.0 / float(sqr(norm_x# * norm_x# + norm_y# * norm_y# + norm_z# * norm_z#))) * (1.0 / float(sqr(normlight_x# * normlight_x# + normlight_y# * normlight_y# + normlight_z# * normlight_z#))) => 0 then Edge (cntfront, 0) = surf Edge (cntfront, 1) = Tri Edge (cntfront, 2) = v1_x# Edge (cntfront, 3) = v1_y# Edge (cntfront, 4) = v1_z# Edge (cntfront, 5) = v2_x# Edge (cntfront, 6) = v2_y# Edge (cntfront, 7) = v2_z# cntfront = cntfront + 1 Edge (cntfront, 0) = surf Edge (cntfront, 1) = Tri Edge (cntfront, 2) = v2_x# Edge (cntfront, 3) = v2_y# Edge (cntfront, 4) = v2_z# Edge (cntfront, 5) = v3_x# Edge (cntfront, 6) = v3_y# Edge (cntfront, 7) = v3_z# cntfront = cntfront + 1 Edge (cntfront, 0) = surf Edge (cntfront, 1) = Tri Edge (cntfront, 2) = v3_x# Edge (cntfront, 3) = v3_y# Edge (cntfront, 4) = v3_z# Edge (cntfront, 5) = v1_x# Edge (cntfront, 6) = v1_y# Edge (cntfront, 7) = v1_z# cntfront = cntfront + 1 endif tnext.

Next.

For a = 0 todo cntfront tif Edge (a, 0) > 0 then diverso = true p0_x# = Edge (a, 2) p0_y# = Edge (a, 3) p0_z# = Edge (a, 4) p1_x# = Edge (a, 5) p1_y# = Edge (a, 6) p1_z# = Edge (a, 7) for b = a + 1 todo cntfront p0_2_x# = Edge (b, 2) p0_2_y# = Edge (b, 3) p0_2_z# = Edge (b, 4) p1_2_x# = Edge (b, 5) p1_2_y# = Edge (b, 6) p1_2_z# = Edge (b, 7) if Edge (b, 0) > 0 then if (p0_x# = p0_2_x# and p0_y# = p0_2_y# and p0_z# = p0_2_z# and p1_x# = p1_2_x# and p1_y# = p1_2_y# and p1_z# = p1_2_z#) = false then if p0_x# = p1_2_x# and p0_y# = p1_2_y# and p0_z# = p1_2_z# and p1_x# = p0_2_x# and p1_y# = p0_2_y# and p1_z# = p0_2_z# then Edge (a, 0) = surf = 0 Edge (b, 0) = surf = 0 diverso = false exit endif endif endif next if diverso then pe0_x# = p0_x# - Light_x# pe0_y# = p0_y# - Light_y# pe0_z# = p0_z# - Light_z# do# = 1.0 / float(sqr(pe0_x# * pe0_x# + pe0_y# * pe0_y# + pe0_z# * pe0_z#)) pe0_x# = pe0_x# * do# * volume_lenght + p0_x# pe0_y# = pe0_y# * do# * volume_lenght + p0_y# pe0_z# = pe0_z# * do# * volume_lenght + p0_z# pe1_x# = (p1_x# - Light_x#) * volume_lenght + p1_x# pe1_y# = (p1_y# - Light_y#) * volume_lenght + p1_y# pe1_z# = (p1_z# - Light_z#) * volume_lenght + p1_z# va = addvertex(volumesurface, p0_x#, p0_y#, p0_z#) vb = addvertex(volumesurface, pe1_x#, pe1_y#, pe1_z#) addtriangle (volumesurface, va, addvertex(volumesurface, pe0_x#, pe0_y#, pe0_z#), vb) addtriangle (volumesurface, va, vb, addvertex(volumesurface, p1_x#, p1_y#, p1_z#)) Edge (a, 0) = 0 endif tendif.

Next.

Return volumemesh.

End function.
[/code]
Yue - 09/02/2011 20:08
Y con este finalizamos hoy: efecto Glow.
[code]Graphics3d 640,480,32,2. Setbuffer backbuffer(). Global Camera=createcamera ().

Moveentity Camera,3,3,0.

Rotateentity Camera,30,30,0.

Light=createlight().

Global Cube=createsphere ().

Positionentity Cube,0,0,5.

Tex0=createtexture (300,300).

Setbuffer texturebuffer(tex0).

Clscolor 255,255,255.

Cls.

Sedrnd(millisecs()).

For k=1 todo 50 tcolor Rand(256),Rand(256),Rand(256) trect Rand(600),Rand(600),Rand(600),Rand(600).

Next.

Entitytexture Cube, tex0.

Setbuffer backbuffer().

S=1.

Global sizex=640/s.

Global sizey=480/s.

Global glowtexture=createtexture (384,384,256).

Global sp=createsprite (Camera).

Moveentity service pack,-.25,-0.06,1.18.

Entityalpha sp.32.

Scaletexture glowtexture,graphicswidth()/sizex,graphicsheight()/sizey.

Entitytexture service pack, glowtexture.

Textureblend glowtexture, 5.
While not keydown(1) tturnentity Cube,0.5,0.5,0.5 tcameraviewport Camera,0,0, sizex, sizey trenderworld tcopyrect 0,0, sizex, sizey,0,0,backbuffer(),texturebuffer(glowtexture) tcameraviewport Camera,0,0,graphicswidth(),graphicsheight() trenderworld tflip.
Wend.

End.
[/code]

Efecto blur FX.
[code]Const texsize=1024, FX=7, o =-1.

Graphics3d 800,600,32.

Cam=createcamera ().

Positionentity Cam, 0,0,-6.

Rotateentity createlight(), 45,0,0.

Cube=createcube ().

Entitycolor Cube, 255,128,0.

Cone1=createcone (20).

Entitycolor cone1,0,255,255.

Positionentity cone1,-4,0,0.

Cone2=createcone (20).

Entitycolor cone2,0,255,0.

Positionentity cone2,4,0,0.

P=createpivot().

Sph=createsphere (20, p).

Positionentity SPH, 0,0,-4.

Select FX tcase 1:bl=createblurlayer(Cam, 1,0,1,1. 95,1, o) tcase 2:bl=createblurlayer(Cam, 1,0,1. 97,1,3, o) tcase 3:bl=createblurlayer(Cam, 1. 2,1.02. 97,1,3, o) tcase 4:bl=createblurlayer(Cam, 1,0,1.01,1. 95,1, o) tcase 5 bl=createblurlayer(Cam, 1,0,1.01,1. 9,1, o) entitycolor bl, 240,255,225 tcase 6 bl=createblurlayer(Cam, 1.1,0,1,1. 95,1, o) rotateentity bl, 1,1,0 tcase 7 bl=createblurlayer(Cam, 1.01,1,1,1. 9,1, o) bl2=createblurlayer(Cam, 1.02,-1,1,1. 8,1, o).

End select.

Setbuffer backbuffer().
While not keyhit(1) tturnentity Cube. 1. 2. 3 tturnentity p. 55. 35. 2 trenderworld tbltex=updateblurlayer(bl, bltex) tif bl2 then entitytexture bl2, bltex tif FX=4 then positionentity bl, rnd(-.01. 01), rnd(-.01. 01), 1 tflip.
Wend.

Function createblurlayer(Cam, z#, ang#, mgn#, bright#, alpha#, bmode, ord) tlocal xres=graphicswidth() tlocal yres=graphicsheight() tlayer=createmesh(Cam) ts=createsurface (layer) tvx#= 1.0*xres/texsize tvy#= 1.0*yres/texsize taddvertex,-1,-1,0,0,0 taddvertex, 1,-1,0, vx#, 0 taddvertex,-1,1,0,0, vy# taddvertex, 1,1,0, vx#, vy# taddtriangle, 0,1,2 taddtriangle, 3,2,1 tpositionentity layer, 1,1, z# tcameraproject Cam, entityx(layer, true), entityy(layer, true), entityz(layer, true) trx#= projectedx#()-.5*xres try#= projectedy#()-.5*yres tscalemesh layer. 5*xres/rx#.5*yres/ry#, 1 tpositionentity layer,-.5/rx#,-.5/ry#, z# trotateentity layer, 0,0, ang# tscaleentity layer, mgn#, mgn#, mgn# tentityalpha layer, alpha# tentityblend layer, bmode tcol=255*bright# tentitycolor layer, col, col, col tentityfx layer, 1 tentityorder layer, ord treturn layer.

End function.

Function updateblurlayer(layer, TeX) tif TeX=0 then TeX=createtexture (texsize, texsize) tentitytexture layer, TeX tcopyrect 0,0, graphicswidth(), graphicsheight(), 0,0, backbuffer(), texturebuffer(TeX) treturn TeX.

End function.
[/code]

Más blur.
[code]Graphics3d 1024,768,32,1.

Setbuffer backbuffer().

Light=createlight().

Rotateentity light,45,45,0.

Cube=createcube ().

Translateentity Cube,0,0,3.0.

Scaleentity Cube.1,2.1.

Camera=createcamera ().

Camerarange Camera,0.01,100.

Cameraclscolor Camera,255,0,0.

Motion_blur_on=1.

Motion_blur_quad=create_blurquad(Camera).

Entityfx motion_blur_quad,2 or 1 or 16.

Motion_blur_tex=createtexture (1024,1024,256).

Entityalpha motion_blur_quad,0.333.

Entitytexture motion_blur_quad, motion_blur_tex.

Translateentity motion_blur_quad,-(1.0/2048.0),0-(1.0/2048.0), 0.995.

Entityorder motion_blur_quad,-1.
While keydown(1)=0 tif keyhit(57), tecla espacio motion_blur_on=motion_blur_on XOR 1 if motion_blur_on=0 then hideentity motion_blur_quad else showentity motion_blur_quad endif tendif t.

If motion_blur_on<>0 copyrect 0,0,1024,768,0,128,backbuffer(),texturebuffer(motion_blur_tex).

Endif.

Turnentity Cube.2.4.6.

Updateworld().

Renderworld().

Vwait:flip 0.
Wend.

Function create_blurquad(par=0) tlocal al1#, al2#, 0, 1, 2, tr tal1#=1.0 tal2#=0.2 tm=createmesh() ts=createsurface (m) tv0=addvertex(s,-1,-1,0, 0,1) TV1=addvertex(s,+1,-1,0, 1,1) tv2=addvertex(s, 0,0,0. 5.5) tvertexcolor, 0,255,255,255, al1# tvertexcolor, 1,255,255,255, al1# tvertexcolor, 2,255,255,255, al2# ttr=addtriangle (s, 0, 1, 2) tv0=addvertex(s,+1,-1,0, 1,1) TV1=addvertex(s,+1,+1,0, 1,0) tv2=addvertex(s, 0,0,0. 5.5) tvertexcolor, 0,255,255,255, al1# tvertexcolor, 1,255,255,255, al1# tvertexcolor, 2,255,255,255, al2# ttr=addtriangle (s, 0, 1, 2) tv0=addvertex(s,+1,+1,0, 1,0) TV1=addvertex(s,-1,+1,0, 0,0) tv2=addvertex(s, 0,0,0. 5.5) tvertexcolor, 0,255,255,255, al1# tvertexcolor, 1,255,255,255, al1# tvertexcolor, 2,255,255,255, al2# ttr=addtriangle (s, 0, 1, 2) tv0=addvertex(s,-1,+1,0, 0,0) TV1=addvertex(s,-1,-1,0, 0,1) tv2=addvertex(s, 0,0,0. 5.5) tvertexcolor, 0,255,255,255, al1# tvertexcolor, 1,255,255,255, al1# tvertexcolor, 2,255,255,255, al2# ttr=addtriangle (s, 0, 1, 2) tflipmesh tupdatenormals tif par <>0 then entityparent m, par treturn m.

End function.
[/code]
Yue - 10/02/2011 02:18
Bueno aquí otro código, cuya función es tener una idea de cómo hacer un menú dinámico donde el usuario pueda elegir la resolución de pantalla, de acuerdo a lo que soporte la tarjeta gráfica. Lo siguiente es lograr que al cambiar la información en pantalla se cambie la resolución en tiempo real, algo de tener muy en cuenta es que directX 7 tiene como límite la resolución de pantalla máxima 1024 por 1536, es decir si en un ordenador moderna, se escanea este modo gráfica y se intente ejecutar dará un error.

Por tal motivo se recomiendo implementar un método que no escanee más, allá de ese limite. Un saludo.
[code]Code by yue.

Public domain 2011.

Graphics 800,600,32,false.

Local total_mg = countgfxmodes3d().

Local profu_p[50].

Local alto_p[50].

Local ancho_p[50].
=============================
Local t_escape = 1 : local numero_mg = buscarmg(1024,768,32).

Local x.

For x = 1 todo numero_mg talto_p[x] = gfxmodeheight(x) tancho_p[x] = gfxmodewidth(x) tprofu_p[x] = gfxmodedepth(x).

Next.
While not keyhit(1) t tcls ttext 0,0, alto_p[numero_mg] + + ancho_p[numero_mg] + + profu_p[numero_mg] t t tapptitle numero_mg t tif keyhit(200), up t numero_mg = numero_mg +1 if numero_mg > total_mg numero_mg = total_mg t telseif keyhit(20, down t numero_mg = numero_mg - 1 t if numero_mg = 0 numero_mg = 1 tend if t.
Wend.

Function buscarmg(width%,height%,depth%) tlocal itermodes tfor itermodes=countgfxmodes3d() todo 1 step -1 if (gfxmodewidth(itermodes)=width)*(gfxmodeheight(itermodes)=height)*(gfxmodedepth(itermodes)=depth) then return itermodes tnext treturn false.

End function.
[/code]
Yue - 10/02/2011 16:43
Hola. Bueno aquí un ejemplo de cómo cifrar datos.
[code]Tmp$=fbk_cryptstring$(mi nombre es yue rexie,$e2cdf032). Print tmp$.

Tmp2$=fbk_cryptstring$(tmp$,$e2cdf032).

Print tmp2$.
Waitkey.

Function fbk_cryptstring$(source$,key) tfor c=1 todo len(source$) char$=char$+chr$(asc(mid$(source$,c,1)) XOR key) tnext treturn char$.

End function.
[/code] Saludos.
aprendiz - 11/02/2011 02:11
Me han gustado mucho los códigos de Blitz3d, tanto es así que, los he comprendido y modificado y además los estoy usando en un proyecto que estoy haciendo.

Sin embargo, les he hecho unas pequeñas modificaciones. Aunque básicamente hacen lo mismo, lo hacen de otra forma la cual permite aplicar el blur para cualquier resolución (menor a 1024 por 1024) y además aplicar camerazom en tiempo real y el blur se mantiene.

Cualquier duda sobre el código o mejora estaré encantado de oírla.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #142794

Yue - 11/02/2011 02:26
Hola aprendiz. Me alegre que los entiendas, te comento que descargue la prueba blur y se ve muy bien, una cosa es que debes implementar funciones en los modos gráficos para cada tarjeta gráfica, por ejemplo, en mi caso la tarjeta que uso ahora solo soporta 14 modos, en el ejemplo que me has pasado al legar al límite me da error, pues parece que busca un modo gráfico inexistente en mí PC.

Otra cosa es a ver si me ayudas a verificar los modos gráficos de mi proyecto. [url]http://download143.mediafire.com/ell37itfnrcg/cwc9ktk9te75ye6/demo.7z[/url].

Y me pasas los modos gráficos que visualiza tu tarjeta.

Aún no tengo implementado el sistema de cambio de modo gráfico el cual lo hago mediante endgraphics o clearworld.

Espero me puedas colaborar.
aprendiz - 11/02/2011 05:48
Hola blizt3d, a ver si puedes subir el código fuente para ejecutarlo desde el Blitz, si no poco puedo hacer. Os dejo aquí un juego antiguo que había echo al cual le he aplicado el blur, a ver qué os parece a mí me parece relajante, prueben todas sus opciones que son bastantes y cada configuración hace un efecto diferente y divertido. Si a alguien le interesa como lo hice, preguntenme y les publico el código, que lo disfruten.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #142816

Yue - 11/02/2011 15:39
Bueno solo quería una ayuda como tester. La idea era escanear los modos gráficos teniendo como máximo el modo 1536 x 1024 ya que este es el límite de directX 7, ya que, aunque los puede escanear al ejecutarlos daría error.

Ahora bien, lo que estoy tratando antes de hacer algo es optimizar un menú con todas las respectivas opciones.

[video=youtube;b0unphycggg]http://www.youtube.com/watch?v=b0unphycggg[/video]
aprendiz - 11/02/2011 15:57
A, pues me detecta las resoluciones bien, hasta 1280 por 1024. Pero el juego no me funciona, no puedo andar con el coche ni nada.

Para los que hacen efectos desde Particle Illusion o cualquier programa que te genere una colección de imágenes (frames) de efecto, les gustara este código.

Lo que hace es convertir esa colección de imágenes a una sola imagen animada, lista para ser cargada desde Blitz con loadanimimage.

Para usarlo compilen el código o ejecutenlo en la carpeta donde se encuentre las imágenes, el generara un.bmp animado para Blitz.
[code]graphics3d 800,600,16,2.

Type sprite_animado tfield ruta$.

End type.

Print animación inversa? (1 - 0).

Reg_inverso = input ().

If reg_inverso <> 1 and reg_inverso <> 0 then end.

Crear_imagen_animada (reg_inverso).

Convertir una colección de imágenes en una sola imagen animada.

Function crear_imagen_animada (reg_inverso) truta$ = currentdir() tdir$ = readdir(ruta$) tarchivo1$ = tlocal sprite, sprite_animado[500] tfiltro1$ =.jpg tfiltro2$ =.bmp tfiltro3$ =.png twhile archivo1$ <> archivo1$ = nextfile$(dir$) ruta_archivo$ = ruta$ + archivo1$ ;filtrar imágenes ext1 = instr(archivo1$, filtro1$) ext2 = instr(archivo1$, filtro2$) ext3 = instr(archivo1$, filtro3$) ;contar archivos y obtener ancho y alto if archivo1$ <>. And archivo1$ <>. And archivo1$ <> and archivo1$ <> thumbs, db and (ext1 <> 0 or ext2 <> 0 or ext3 <> 0) then if reg_creado = 0 then imagen = loadimage (ruta_archivo$) ancho = imagewidth(imagen) alto = imageheight(imagen) freimage imagen reg_creado = 1 endif sprite[frame] = new sprite_animado sprite[frame]\ruta$ = ruta_archivo$ frame = frame + 1 endif twend t;crear textura animada tif frame <> 0 then tipo = 1 imagen = createimage (ancho * frame, alto, tipo) buffer_imagen = imagebuffer(imagen) setbuffer buffer_imagen if reg_inverso = 1 then x = ancho * (frame - 1) for dibujo = 0 todo frame -1 imagen2 = loadimage (sprite[dibujo]\ruta$) drawimage imagen2,x,0 freimage imagen2 delete sprite[dibujo] if reg_inverso = 0 then x = x + ancho if reg_inverso = 1 then x = x - Ancho next nombre$ = ancho + _ + alto + _ + frame +.bmp saveimage (imagen, nombre$) closedir dir tendif.

End function[/code]
aprendiz - 11/02/2011 16:10
Para saber el ascci y el scancode un sencillo programa. Solo pulsa las teclas.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #142822

Yue - 12/02/2011 03:49
Hola bueno, la verdad el juego lo comencé de nuevo por problemas técnicos (no tengo ordenador) y el código almacenado en una usb se me jodido. [url]http://download1057.mediafire.com/npv9imzl9kog/j8c6eqabmvma5u5/demo.rar[/url].

Este ya hace los respectivos cambios, lo que no sé es si funcione correctamente.

Ya miro tu código. Saludos.
Yue - 12/02/2011 03:51
Hola muy bueno el programa, una duda que me asalta es porque los ejecutables quedan tan grandes?
aprendiz - 12/02/2011 04:21
Pues la verdad siempre ocupan eso al compilar, será por la versión de Blitz. Haces algo especial para que te ocupen menos? O al compilar te quedan ya así? Que versión usas?
Edito: viste el juego de gravedad puntos? Gracias a ti a quedado así, me sirvió y me está sirviendo mucho el código de blur.
Yue - 12/02/2011 05:15
Debe ser la versión yo uso la 1.109, y si acabo de mirar y es genial lo que has hecho, esos efectos son de 10.
Yue - 12/02/2011 13:48
Bueno, esto debería ir aquí. [url]https://www.foro3d.com/f113/sombras-Blitz3d-92498.html[/url]. Saludos.
Yue - 12/02/2011 17:29
Más sobre sombras. Lo bueno de las sombras cartográficas es que permiten proyecciones de sombras en objetos animados, por el contrario en las sombras volumétricas si deseamos proyeciones animadas, las animaciones del modelo no deben ser por huesos si no por vertex.
[code]Type shadow tfield obj tfield shwtexsize tfield shwtex tfield shwinit t.

End type.

Graphics3d 1024,768,32,2.

Setbuffer backbuffer().

Ambientlight 0,0,0.

Global xscale#=1*(.8/2).

Shadowcam=createcamera ().

Cameraprojmode shadowcam,2.

Camerafogmode shadowcam,1.

Camerafogrange shadowcam,1,1.

Camerafogcolor shadowcam,255,255,255.

Hideentity shadowcam.

Local Camera=createcamera (), cámara que visualiza el game.

Positionentity Camera,0,5,-15.

Scene=createsphere ().

Local scene=createcube ().

Scaleentity scene,20,1,20.

Positionentity scene,0,-1,0.

Local idscene. Shadow = sw_addobject(scene).

Local caster=createcone (32).

Positionentity caster, 0,3,0.

Rotateentity caster,40,90,60.

Scaleentity caster, 1,2,1.5.

Updatenormals caster.

Entitycolor caster,200,0,0.

Local idcaster. Shadow = sw_addobject(caster).

Local caster1=createsphere (32).

Positionentity caster1,0,1,0.

Entitycolor caster1,0,0,200.

Updatenormals caster1.

Local idcaster1. Shadow = sw_addobject(caster1).

Local light=createlight(2).

Local vis_light = createsphere (12, light).

Entitycolor vis_light,0,200,0.

Entityfx vis_light,1.

Positionentity light,-20,8,-1.
=================================
While quit=0 t;===> tif keyhit(1) then quit=1 tif keyhit(203) then xscale#=xscale#*.9 tif keyhit(205) then xscale#=xscale#*1.1 t;===> tsw_resetshadow(), t;===> tmoveentity light,0,0,0.25:turnentity light,0,-1.25,0 tturnentity caster,0,0.5 tupdateworld tshadow_test1(shadowcam, Camera, light,idcaster,idscene) tshadow_test1(shadowcam, Camera, light,idcaster1,idscene) tshadow_test1(shadowcam, Camera, light,idcaster,idcaster1) trenderworld() t;===> ttext 500,10,xscale#: + xscale# ttext 500,20,zoom: +.06/xscale# ttext 300,30,hit <- & -> todo change the xscale# tflip t;===>.
Wend.

End.
=====================================================
Function shadow_test1(s_camera, g_camera, s_light, caster. Shadow, s_receiver. Shadow) t;===> t;stop t;===> thideentity g_camera tshowentity s_camera t;===> tif s_receiver\shwinit=true then cameraclsmode s_camera, false, true telse cameraclsmode s_camera, true, true s_receiver\shwinit = true tendif t;===> tlocal tsize = s_receiver\shwtexsize t;===> tcameraclscolor s_camera,255,255,255 tcamerazom s_camera.06/xscale# tcameraviewport s_camera,0,0,tsize,tsize tcameraprojmode s_camera,2 t;===> tsw_hideobject() t;===> tlocal s_caster=copyentity(caster\obj) tentityfx s_caster,1+8 tentitycolor s_caster,0,0,0 tshowentity s_caster t;===> tpositionentity s_camera,entityx(s_light,true),entityy(s_light,true),entityz(s_light,true) tpointentity s_camera, s_receiver\obj trenderworld() t;===> tcopyrect 0,0,tsize,tsize,0,0,backbuffer(),texturebuffer(s_receiver\shwtex) t;===> tlocal curobj = s_receiver\obj tfor s=1 todo countsurfaces(curobj) local surf=getsurface (curobj, s) for v=0 todo countvértices(surf)-1 tformpoint vertexx(surf), vertexy(surf), vertexz(surf), curobj, s_camera vertextexcords surf, (tformedx()/xscale#)/32+0.5,1-((tformedy()/xscale#)/32+.5) next tnext t;===> tsw_showobject() t;===> tshowentity g_camera thideentity s_camera tfreentity s_caster t;===> t.

End function.

Function sw_addobject. Shadow(obj) tlocal sw_size = 512 tlocal curmodel. Shadow = new shadow tcurmodel\obj = obj tcurmodel\shwinit = false tcurmodel\shwtex = createtexture (sw_size, sw_size, 16+32) tcurmodel\shwtexsize = sw_size tentitytexture curmodel\obj,curmodel\shwtex t;===> tsetbuffer(texturebuffer(curmodel\shwtex)) tclscolor 255,64,255 tcls tsetbuffer(backbuffer()) t;===> treturn curmodel.

End function.

Function sw_resetshadow() tlocal curmodel. Shadow tfor curmodel=each shadow curmodel\shwinit = false tnext.

End function.

Function sw_hideobject() tlocal curmodel. Shadow tfor curmodel=each shadow hideentity curmodel\obj tnext.

End function.

Function sw_showobject() tlocal curmodel. Shadow tfor curmodel=each shadow showentity curmodel\obj tnext.

End function.
[/code]

Una de las cosas es que se puede implementar sombras con efecto blur manipulando el zoom de la cámara.

Esto a veces a abrumador, pero si no deseas hacer esto desde cero se puede usar la lib gom puesta en unos mensaje más atrás. Saludos.
aprendiz - 13/02/2011 17:01
Gracias Blitz3d, la verdad que me gustaría hacer una librería propia para sombras, pero no acabo de entender el manejo de vertextexcords en ese código (sigo pensando).
Yue - 13/02/2011 19:41
Hola ese comando tiene como función establecer la coordenada de un vértice en una malla. Un automóvil va a 230 kilómetros por hora un circuito, para hacer pruebas de colisión, se detecta la normal con la que se ha estrellado el auto contra un muro de contención de acero, un bucle for next detecta las superficies del auto, uno los vértices, entonces de acuerdo a las normales con que colisiono se reposiciónan los vértices para emular latas retorcidas. Un saludo.
aprendiz - 13/02/2011 22:28
Por ejemplo, tengo un escenario desde giles en le que tengo dos texturas. En la capa 1 (tierra) en la capa 3 (hierba), en la capa 2 por defecto del giles está el mapa de luz.

He probado el código de sombra ortográficas y solo funciona estableciendo:
Vertextexcords superficie,índice, u#, #[,w#][, cord_set] donde cord_set = 0.

Al hacer esto lo que ocurre es que la sombra se aplica (más o menos bien) pero me modifica las coordenadas UV de la textura aplicada desde el giles. He estado buscando por la página oficial y el aprametro cord_set permite diferenciar a que capa de textura aplicas el comando. En mi caso necesito aplicar el comando a la capa 4, ya que en la 1,2,3 están las texturas de giles. Sin embargo, cuando pongo cord_set = 3 (capa1 = 0, capa2 = 1, capa3 = 2, capa4 = 3), no funciona la sombra, la textura se aplica, pero no lo (*.ace) bien. No sé si será un fallo de Blitz o quizás la exportación del giles.
Yue - 13/02/2011 23:28
Si no estoy mal giles tiene la opción de colapsar las texturas en una sola, por lo tanto solo se usarían dos capas en el Mesh, sobre las coordenadas de los verttices es que son sombras dinámicas y es para que la textura se mueva correctamente cuando se mueve el ente que proyecta la sombra.
Yue - 13/02/2011 23:36
Otra cuestión es que la capa de la sombra siempre debe quedar encima, es la última. Bueno otro aporte este pequeño manual sobre el poder de los types en Blitz3d. Algo, así como c. Se trata de entender un poco la programación orientada a objetos. Lo jodido es que me llego en ingles. [url]http://www.mediafire.com/?Idr7qqzrbwj2291[/url].
Yue - 13/02/2011 23:41
Sobre el comando vertexords solo tiene estos parámetros, [superficie],[x#],[y#],[z#], el otro es advertex, pero eso es cuando se crea mallas en tiempo real en Blitz3d.
Yue - 13/02/2011 23:46
Ya ya, el descabezado soy yo, si es este comando. [url]http://www.blitzBasic.com/b3ddocs/command.php?Name=vertextexcords&ref=3d_a-z[/url].

El otro es vertexcords lo siento. Ahora me entero de eso, ya le estoy echando un vistazo.
Yue - 13/02/2011 23:52
Ok ya plante esa cuestión en el foro: posiblemente nos ayude a entender ese comando a cabalidad. [url]http://Blitz Basic.com/community/mensajes.php?Topic=93806[/url].
aprendiz - 14/02/2011 01:20
Pues gracias, ya que es algo confuso el comando. A ver si puedes decirme cómo hago para fusionar las texturas en una solo desde giles, sería de gran ayuda, que no encuentro la opción. Gracias.
aprendiz - 14/02/2011 03:52
Solucinado. Cuando exportas desde giles un modelo con un mapa de luz, el mapa de luz es asignado como una textura de sombras (por defecto en la capa 1). En la capa 0 estaría la textura que le asignas al modelo, bien, cuando usas el comando vertextexcords superficie,índice, u#, #[,w#][, cord_set] poniendo cord_set = 0, estas modificando las coordenadas UV de la textura que tú asignas (ladrillos, madera, etc), cuando pones cord_set = 1 modificas las coordenadas UV de la capa de textura asignada a la sombra, en este ejemplo, la capa 1. Pero sin embargo, para que surja efecto en la modificación (cord_set = 1) debes establecer otro comando : texturécords textura 1.

Si lo estableces a 0, aunque cord_set = 1, no tendrá efecto. Con esto se soluciona el problema y la duda que tenía. Sin embargo, surge otro problema,xd, y es que, al establecer sombras ortográficas mediante el uso de vertextexcords estableciendo cord_set = 1 y estableciendo texturécords a 1, se pierde el mapa de luz creado en giles, y se usa como mapa de luz el obtenido por el código de sombras ortográficas.

Edito: en resumen, hoy lo veo más claro. El parámetro cord_set = 1 modifica las coordenadas de todas las texturas establecidas como texturécords textura 1, cord_set = 0 modificas las coordenadas de todas las texturas establecidas como texturécords textura 0 (por defecto).
Yue - 21/02/2011 20:31
Hola, a ver si alguien me puede colaborar probando esto. Lo que necesito verificar es:
-Cambio de resoluciones de pantalla.

Cambio en detalle de la sombra.

Cambio en el brillo de la pantalla.

Aceleración para rendimiento óptimo.

Agradecería la ayuda y todos los datos posibles. [url]http://download1129.mediafire.com/ksgdn58 Gbxyg/av6akgx7v1lxy0/demo.rar[/url].
aprendiz - 21/02/2011 22:59
Hola, lo he probado y no note ningún error. Pero tengo varias preguntas. La primera es si la sombra la implementas ortográfica o volumétrica. También como consigues el cambio de gamma (es con ambienlight ==?) y por último a ver si podías subir el código una de las (*.dll) ya que se como crear librerías.dll, pero no tengo de dónde sacar información de los comandos y me gustaría ver un código en C++ para poder aprender. Gracias.
Yue - 25/02/2011 20:48
Hola aprendiz no he podido responder antes es que como he mencionado no tengo internet ni ordenador en casa, por lo que entro aquí cada vez que el bolsillo permite.

Así que estoy contra el reloj.

Son cartográficas.

La gamma se realiza mediante el comando setgamme y updategamma, esto es útil para hacer filtros como de visión nocturna, o poner la pantalla en blanco y negro cuando el personaje muere.

Bueno este este tema te lo quedo debiendo, la idea de hacer una (*.dll) es expandier la funcionalidad de Blitz3d, permitiendo migrar de direcx7 a 8 10 o yo qué sé, esto se logra mediante viusal Studio.net con el SDK respectivo, por ejemplo, si usas el SDK de DirectX 8.1, se puede hacer llamadas a la lib de DirectX 8.1.

Ahora bien de manera somera, lo que se hace son funciones, estas funciones se deben menter en archivos DCL, que luego se meten en userlib para que Blitz3d reconozca estos comandos, ya luego cuando regrese te mando une jemplo.

Por ahora mira mi web y me dices como va el nuevo demo. [url]http://www.iris3d.tk[/url]. Un saludo, se acaba el tiempo.

Otra cosa es que he sido invitado a campus party 2011 Colombia, y no tengo ordenador eso me da risa.

Adiós pues.
aprendiz - 28/02/2011 02:58
Muchas gracias, no conocía el comando setgamma ni uptdategamma, muy útiles. Lo de las (*.dll) yo se programar en C++ pero lo más que llegue a hacer para el Blitz es una función que sume dos números o multiplique, (xd). Lo que quería saber es de dónde sacar los comandos del DirectX para programar una buena.dll.
Yue - 12/05/2011 20:47
Hola a los tiempos. En estos días me paso por aquí, para dejar un tutorial de mi autoría muy básico de Blitz3d. Venga que no soy escritor, ni mucho menos, pero espero sea de utilidad para alguien.



-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #145908

Yue - 12/05/2011 20:50
Oye los comandos los sacas haciendo llamadas a las Api de Windows, eso lo haces instalado un SDK en visual.net, por ejemplo, un SDK para trabajar con directx9c, todo lo que hagas lo encapsulas en funciones que son pasadas de la (*.dll) Blitz.
Turriano - 12/05/2011 23:27
Muy interesante tu aporte. En cuanto pueda, lo echo un ojo.
aprendiz - 15/05/2011 05:01
Muy bueno el manual, es bonito ver cómo alguien intenta hacer entender lo que ama. viva la programación.
Damian1985 - 20/05/2011 17:40
Muy buenas a ver si alguien o entre todos me podéis ayudar a mejorar este código, pongo el código y los archivos para que los descargueis. Gracias de antemano.
[code]Graphics3d 800,600,32,2.

Setbuffer backbuffer().

Movemouse graphicswidth()/2.8, graphicsheight()/2.

Hidepointer.

Player = createpivot().

Camera=createcamera (player).

Cameraclscolor Camera, 0,162,232.

Camerarange Camera,0.1,10000.

Light=createlight().

Rotateentity light,90,0,0.

Cursor=loadimage (puntero1.png).

Plane=createplane ().

Grass_tex=loadtexture (textura_suelo_piedra.jpg).

Entitytexture plane, grass_tex.

Cerdo=loadanimmesh(asalto, b3d).

Scaleentity cerdo,0.01,0.01,0.01.

Rotateentity cerdo,0,180,0.

Cerdo_hijo=findchild (cerdo, cylinder01).

Extractanimseq(cerdo_hijo,1,10) ;anim seque 1: frames 0.10 are parado.

Extractanimseq(cerdo_hijo,11,20) ;anim seque 2: frames 11.21 are correr.

Animate cerdo_hijo,2. 020, 1.

Cerdo_spine1 = findchild (cerdo, bip01 spine1).

Cerdo_arma = findchild (cerdo, jamon_asalto).

Entityparent cerdo_arma, cerdo_spine1.
While not keydown(1) tif keydown(32)=true then Turn Entity Camera,0,-1,0 tif keydown(30)=true then Turn Entity Camera,0,1,0 tif keydown(32)=true then Turn Entity cerdo,0,-1,0 tif keydown(30)=true then Turn Entity cerdo,0,1,0 tif keydown(31)=true then if animseq(cerdo_hijo)=1 then t animate cerdo_hijo,1,0.2,2 endif moveentity cerdo,0,0,0.04 telseif keydown(17)=true then t if animseq(cerdo_hijo)=1 then t animate cerdo_hijo,1,0.2,2 endif moveentity cerdo,0,0,-0.04 telse if animseq(cerdo_hijo)=2 or animseq(cerdo_hijo)=3 then t animate cerdo_hijo, 2.020,1 endif tendif tmxs#=mxs# + mousexsped() tmys#=mys# + mouseysped() tif mxs# > 45 then mxs# = 45 tif mxs# < -45 then mxs# = -45 tif mys# > 30 then mys# = 30 tif mys# < -30 then mys# = -30 trotateentity cerdo_spine1, mxs#, mys#,0 tpositionentity Camera, entityx(cerdo),entityy(cerdo),entityz(cerdo) tmoveentity Camera,0.5,1,-1 trenderworld tupdateworld tdrawimage cursor,mousex(),mousey() ttext 0,0, para mover y girar son w,a,s,d y el ratón para apuntar o eso intento hacer tflip t.
Wend.

End.
[/code]

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #146086

aprendiz - 22/05/2011 11:40
Hola Damian, lo que querías conseguir es con cameraproject, el problema es que tú modelo animado tiene las coordenadas cambiadas, y aún encima al animarlo estas coordenadas no son reales. Por ello, o bien pones un join (hueso) en la punta del cañón del arma y luego proyectas sus coordenadas a la pantalla, o haces lo que hice yo, -> una animación manual echa con funciones. Luego todo lo que queda hacer es trabajo las coordenadas a la pantalla 2d y dibujar el cursor en ellas, por cierto, la más mínima duda que tengas del código te la explicaré sin ningún problema.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #146160

Damian1985 - 22/05/2011 13:34
Buenas aprendiz, antes de nada gracias por el código, lo descargo y me pongo a investigarlo, en verdad la programación no es mi fuerte, lo mío es más el diseño gráfico.
aprendiz - 22/05/2011 19:44
Bueno no pasa nada, el código es imprescindible en un juego al igual que el diseño. Si investigas y aprendes más código, podrás llegar a crear cualquier juego.
aprendiz - 29/05/2011 03:28
Podéis ver un juego nuevo que he hecho y que subí en esta página aquí -> [url]https://www.foro3d.com/f113/videojuego-estrategia-echo-Blitz3d-95155.html[/url] <-- Comenten.
Falco - 08/07/2011 22:44
Hace dos meses empecé a hacer un remake de una recreativa del 85, king of boxer, al final le creé una base de datos con gestión de entrenamientos, economía, objetos, etc. Hoy por fin lo he acabado, quien quiera probarlo puede descargarlo aquí: [url]http://www.racerphysics.com/download/boxking.rar[/url].

Por supuesto en Blitz basic, aunque me ha tocado aprender php y mysql.
Yue - 06/08/2011 21:33
Hola, a los tiempos, bueno comparto algo que he realizado con Blitz3d, algo para matar el tiempo:
[attach=config]148983[/attach]

El efecto de luz se hace con los comandos de pixel.
jodo - 23/11/2011 15:18
Hola, soy nuevo en el foro y he aprendido mucho en este foro, pero dentro de lo que se ha hablado en este foro no he encontrado cómo se coloca una textura con un canal alpha será que ustedes me pueden explicar cómo se hace, por ejemplo, un árbol en un plano, agradezco la ayuda.
aprendiz - 23/11/2011 16:44
Pues con gile[s] puedes cargar el modelo de un árbol, le pones unos planos y le pones una textura y la textura le pones alpha activado, pero antes tienes que exportarla como (*.png) del Adobe Photoshop o así, o si no, puedes cargar la textura desde blizt3d, por ejemplo, se llama hojas, (*.png), pues bien, coges y haces, hojas = loadtexture (hojas, (*.png),2) y ya la cargas con alpha, y luego cargarías el árbol: árbol = loadmesh (árbol, b3d), y luego haces para aplicarle la textura: entitytexture árbol, hojas, y listo.

Muchos saludos y espero que te ayude.
jodo - 24/11/2011 15:24
Gracias me ha servido de mucho tu ayuda, ahora tengo otra duda, o mejor dicho es un grito de ayuda, como hago para poner un sistema de partículas que siga a una roca? Es para hacer una estela de fuego, me explico: estoy haciendo un juego de plataforma en 3d, pero debo hacer unas rocas que caigan del cielo y afecten al jugador, el cómo lo afecta ya lo tengo resuelto lo que me tiene pegado es cómo hacer que el sistema de partículas siga las rocas. Muchas gracias.
aprendiz - 24/11/2011 15:54
De nada amigo. Mira, para un sistema de partículas lo que debes hacer es coger las coordenadas de las piedras en todo momento y pasárselas a la función que se encarga de crear las partículas para que las partículas sean creadas en la posición dónde está la piedra, y si la piedra se mueve las partículas irán dejando un rastro detrás de la roca.

De todas maneras, te pueden ayudar estos tutoriales, en concreto yo te diría que leyeras el segundo tutorial, y dentro de el puedes ver sobre cómo hacer un sistema de particuals:r. [url]https://www.foro3d.com/f17/tutorial-completo-hacer-videojuego-3d-ahora-mismo-96787.html[/url].
Yue - 27/11/2011 04:58
Hola, estoy tratando de hacer un sistema de partículas como el que necesita vaya, así que, espero pronto poner el código.
Yue - 27/11/2011 05:03
Creo que la idea es algo así. Un saludo.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #154835

jodo - 28/11/2011 16:48
Hola que pena no a ver contestado antes apenas entre en la oficina, muchas gracias a aprendiz estoy estudiando los tutoriales de antemano te digo estoy aprendiendo mucho con ellos ha y para blizt3d también gracias, y si esa es la idea. Cambiando de tema, pero sin alejarme mucho, me sorprende la velocidad con que se responde en este foro es increíble, muchas gracias a todos por su interés y claro esta sacar el tiempo para explicarle a novatos como yo.
aprendiz - 28/11/2011 17:05
De nada, y este foro a veces parece como un MSN que te responden casi al momento, mola. Saludos.
aprendiz - 05/01/2012 20:06
Bueno, estoy planteándome aprender la parte de Blitz3d que está dedicada a internet, es decir, conexiones TCP, udp y directplay.

Sinceramente, no tengo ni idea de todo esto, empezando por no saber los conceptos como servidor, cliente, puerto. El IP si que sé lo que es, menos mal.

Pero es un tema que siempre me gustó, y ya que Blitz tiene comandos para trabajar con este tipo de cosas me gustaría algo de información sobre todo el tema de conexiones, envío de datos, etc.

Y me he puesto a mirar los comandos de Blitz, y ya puedo empezar diciendo que no entiendo por qué para enviar datos hay que escribir en un archivo? Valla, no entiendo el concepto de internet, siempre lo he visto como un ordenador macrogigante que sabe todo lo que hacer, pero parece que no, que es el servidor/cliente el que escribe los archivos, bueno que estoy perdido en este tema, cualquier ayuda, será bienvenida.
Yue - 12/09/2012 14:19
Bueno, algo para compartir, en estos días que he retomado el asunto de Blitz3d siempre ando en busca de solucionar dudas.

Blitz3d por su infraestructura solo permite trabajar en un solo hilo o proceso, así que, me tope con la necesidad de implementar dos procesos simultáneos debido a que necesitaba cargar recursos y poner una animación de una imagen. Esto aparentemente en Blitz3d no es posible hacer y toca recurrir a trucos sucios, como, por ejemplo.

Se carga un archivo y luego se avanza un poco en una barra de progreso, así que, toca hacer primero una cosa y luego otra, pero no se puede hacer simultáneamente.

Pero este método se puede falsificar, pero siempre será en un solo proceso, aunque parezca que son dos.
[code]Global hilo_branch=0.

Global hilo_count=0.

Global hilo_percent=0.

Global filecount.

Global file_in$=image, img.

Global file_out$=image, img.

Global filein.

Global fileout.

Global x=0.

Global y=0.

Create the file you are loading later.

Savefile (file_out$).

Graphics 800,600.

Setup imagebuffer.

Global img=createimage (640,480).

Setup mousepointer.

Global mouseimg=createimage (10,10).

Setbuffer imagebuffer(mouseimg).

Color 250,250,250.

For q= 0 todo 9.

Plot que, que.

Plot 0, que.

Next.

Color 5,5,5.

For q= 1 todo 9.

Plot q+1, que.

Plot 1, que.

Next.

Setup doublebuffering.

Setbuffer backbuffer().

Starting values.

Thread_branch=1.

Main loop.
While not keyhit(1).

Branch todo file loading tif hilo_branch=1 then loadfile (file_in$).

Endif.

Draw on backbuffer.

Setbuffer backbuffer().

Cls.

Color 255,255,255.

Text 360,230,loading.

Draw the slider tif hilo_branch=1 then.

Thread_percent=((filecount*100)/filesize (file_in$)).

Color 255,255,255.

Rect 150,250,500,25,0.

Rect 150,250, hilo_percent*5,25,1.

Endif.

Draw the image when loaded tif hilo_branch=2 then drawblok img, 250,200.

Text 360,450,esc todo quit.

Endif.

Draw mouse pointer.

Drawimage mouseimg, mousex(), mousey().

Flip false.
Wend.

End.

Saving file.

Function savefile (file_out$).

Fileout = writefile (file_out$).

For x=0 todo 319 tfor y=0 todo 199 twritebyte (fileout, rnd(0,255)) twritebyte (fileout, rnd(0,255)) twritebyte (fileout, rnd(0,255)) tnext.

Next.

Closefile (fileout).

End function.

Loading file in lógical steps.

Function loadfile (file_in$).

Step one - Open file for reading.

If hilo_count=0 then tfilein = readfile (file_in$) tthread_count=1.

Filecount=0.

X=0.

Y=0.

Endif.

Step two - Read data and write todo imagebuffer.

If hilo_count =1 then ty=y+1 tif y=200 then x=x+1 y=0 tendif tread1 = readbyte (filein) tread2 = readbyte (filein).

Read3 = readbyte (filein).

Filecount=filecount+3.

Draw todo imagebuffer.

Setbuffer imagebuffer(img) tcolor read1, read2, read3 tplot x, y.

Chek for end of file tif eof(filein) then thread_count=2 tendif.

Endif.

Step thre - Close file.

If hilo_count=2 then tclosefile (filein) tthread_branch=2.

Endif.

End function.
[/code]

Esto es mucho código para lo que se conoce como falos threading en Blitz3d, así que, a solución de esto existe una lib llamada fastpointer que trabaja punteros, es desig asigna partes de la memoria para llevar a cabo varios threading a la vez, y los resultados parecen ser prometedores.

Pues en un hilo o threading una animación muestra una imagen como esta. [url]http://i50.tinypic.com/2wel47q.jpg[/url].

Y el otro hilo en segundo plano carga los recursos necesarios. Esto implica que la pantalla no queda paralizada mientras se carga los recursos algo muy guapo, al igual que sucede en GTA IV, cuando carga los recursos.

Bien eso es todo.

Ha y la lib.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #172169

ric278 - 18/10/2012 18:34
Hola señores me presento soy Ricardo y estoy tratando de aprender el lenguaje Blitz basic, la consulta es por una cuestión puntual, es estado leyendo la ayuda del Blitz y no veo la forma de hacer que el puntero del mouse sea visible en el modo full screen, agredeseré cualquier ayuda.
Yue - 19/10/2012 00:20

Hola señores me presento soy Ricardo y estoy tratando de aprender el lenguaje Blitz basic, la consulta es por una cuestión puntual, es estado leyendo la ayuda del Blitz y no veo la forma de hacer que el puntero del mouse sea visible en el modo full screen, agredeseré cualquier ayuda.

Hola, en modo de pantalla completa no es posible ver el puntero del mouse a menos que cartes una textura con la figura del puntero y la dibujes en las cordenads del mouse (x, y), por ejemplo.
[code]Drawimage (puntero%,mousex(),mousey()).
[/code]

La variable puntero%, hace referencia a una imagen que ha sido cargada con anterioridad.
[code]Local puntero% = loadimage (media\puntero, png).
[/code]

De esta forma ya en pantalla completa visualizas el puntero. Saludos.
Falco - 20/11/2012 18:35
Este hilo está un poco dejado, he hecho un Pacman en Blitz, dejo el juego y el código para quien quiera verlo, saludos. descargar archivo.
[code];---------------------------------------------------------------------------------------------------------------------
-Pacman by manufer--------------------------------------------------------------------------

Graphics 800,600,16,2.

Setbuffer backbuffer().

Creando un timer----

Frametimer=createtimer(60).

Carga de gráficos---

Logotipo=loadimage (GFX/logotipo, bmp).

Pantalla=loadimage (GFX/pantalla, bmp).

Maskimage pantalla,0,0,0.

Pacman=loadanimimage (GFX/sprites, bmp,32,32,0,32).

Maskimage Pacman,0,0,0.

Bola=loadimage (GFX/bola, bmp).

Maskimage bola,0,0,0.

Gran_bola=loadimage (GFX/gran_bola, bmp).

Maskimage gran_bola,0,0,0.

Nullimage=loadimage (GFX/null, bmp).

Frutas=loadanimimage (GFX/frutas, bmp,32,32,0,16).

Maskimage frutas,0,0,0.

Maskimage nullimage,255,255,255.

Shadow=loadanimimage (GFX/fantasma, bmp,32,32,0,4, rojo.

Maskimage shadow,0,0,0.

Spedy=loadanimimage (GFX/fantasma, bmp,32,32,0,4, rosa.

Maskimage speedy,0,0,0.

Bashful=loadanimimage (GFX/fantasma, bmp,32,32,0,4, azul.

Maskimage bashful,0,0,0.

Pokey=loadanimimage (GFX/fantasma, bmp,32,32,0,4, amarillo.

Maskimage pokey,0,0,0.

Color 250,250,250.

Carga de sonidos---

Andar=loadsound(sonidos/andando.wav).

Lopsound andar.

Dead=loadsound(sonidos/pacman_dead.wav).

Come_fruta=loadsound(sonidos/come_fruta.wav).

Pip=loadsound(sonidos/pacman_pip.wav).

Newlevel=loadsound(sonidos/comienza_nivel.wav).

Come=loadsound(sonidos/come_bola.wav).

Soundvolume come.5.

Azules=loadsound(sonidos/fantasmas_azules, wav).

Soundvolume azules.5.

Lopsound azules.

Azules2=loadsound(sonidos/fantasmas_azules2.wav).

Lopsound azules2.

Declaración de variables---

Skipframe1=0.

Frame_pacman=2.

Velocidad#=1.

Temp_velocidad#=0.

Xpacman#=0.

Ypacman#=0.

Dirección_pacman=4.

Pacman_status=1 ; 0=muerto, 1=vivo.

Level#=0.

Vidas=3.

Total_bolas=244.

Status_fantasma=1.

Contador_fantasmas#=0.

Dim status_fantasmas(4).

Puntos=0.

Dim bolas(460).

Dim granbolas(4).

Dim eyes(4).

Record=0.

Dim posx(10).

Posx(1)=192 : posx(2)=228 : posx(3)=280 : posx(4)=333 : posx(5)=385 : posx(6)=438 : posx(7)=490 : posx(=542.

Posx(9)=595 : posx(10)=628.

Dim Posy(10).

Posy(10)=519 : Posy(9)=465 : Posy(=410 : Posy(7)=357 : Posy(6)=302 : Posy(5)=248 : Posy(4)=192 : Posy(3)=139.

Posy(2)=86 : Posy(1)=12.

Sedrnd millisecs().

Flash=0.

Tips-------

Dim tip$(30).

Consejo=Rand(10).

Tip(1)=shadow (rojo) es el fantasma más rápido, si lo llevas pegado te costara deshacerte de él.

Tip(2)=speedy (rosa) es el más listo de todos, buscara hacerte una emboscada.

Tip(3)=bashful (cyan) es el más lento, pero no lo subestimes.

Tip(4)=pokey (naranja) es el tonto del grupo, incluso a veces tomara caminos evasivos.

Tip(5)=cuando Pacman come bolas, su velocidad se ve reducida, toma caminos despejados para escapar de los fantasmas.

Tip(6)=los carriles de teletrasnportación reducen la velocidad de los fantasmas, si los usas los dejaras atrás.

Tip(7)=la zona inferior de la pantalla es la más peligrosa, puedes caer en una emboscada fácilmente.

Tip(=a los 10.000 puntos conseguirás una vida extra.

Tip(9)=las bolas pequeñas dan 10 puntos, las grandes 50 puntos, además de convertir los fantasmas en comestibles.

Tip(10)=el tiempo que los fantasmas están de color azul, se irá acortando conforme pases niveles.

Tip(11)=las frutas que salen en el centro de la pantalla dan suculosos puntos, podrás comer 2 por nivel, pero si pierdes una vida mientras la fruta esta activa la perderas.

Tip(12)=cuando comas un fantasma cerca de su casa, ten mucho cuidado ya que se regenerara muy pronto y podrá darte caza.

Tip(13)=cada nivel aumentara el ritmo de juego, siendo extremadamente desafiante a partir del nivel 8.

Tip(14)=el nombre original en Japón que es donde salió el juego, es puck-man, pero debido a su similitud con fuck-man lo cambiaron por pac-man.

Tip(15)=el juego fue lanzado el 21 de mayo de 1980 y se vendieron 293.822 unidades, desbancando a space Invaders que hasta entonces era el rey de los salones recreativos.

Tip(16)=en el juego original, la ultima pantalla jugable es la 255, por un error de programación no contemplaron la posibilidad de pasar tantas pantallas y el byte encargado se desborda provocando errores gráficos.

Dim nivel_jugador$(11).

Nivel_jugador(1)=pringado del Pacman;hasta 2000.

Nivel_jugador(2)=jugador mediocre;hasta 5000.

Nivel_jugador(3)=aficionado;hasta 8000.

Nivel_jugador(4)=el típico jugador medio;hasta 12000.

Nivel_jugador(5)=espabilado en el Pacman;hasta 14000.

Nivel_jugador(6)=mareador de fantasmas;hasta 18000.

Nivel_jugador(7)=tragabolas avanzado;hasta 22000.

Nivel_jugador(=chuleando a esos fantasmas.;hasta 25000.

Nivel_jugador(9)=el crack del Pacman;hasta 30000.

Nivel_jugador(10)=el amo ;hasta 50000.

Nivel_jugador(11)=dios del Pacman.

Nivel_jugador_actual$=
--fantasmas-.

X_shadow#=posx(5) : y_shadow#=Posy(4) : frame_shadow=1 : velocidad_shadow#=1.2 :temp_velocidad_shadow#=0: dirección_shadow=4.

X_spedy#=posx(5) : y_spedy#=Posy(4) : frame_spedy=1 : velocidad_spedy#=1.1 :temp_velocidad_spedy#=0: dirección_spedy=1.

X_bashful#=posx(5) : y_bashful#=Posy(4) : frame_bashful=1 : velocidad_bashful#=1.1 :temp_velocidad_bashful#=0: dirección_bashful=1.

X_pokey#=posx(5) : y_pokey#=Posy(4) : frame_pokey=1 : velocidad_pokey#=1.1 :temp_velocidad_pokey#=0: dirección_pokey=1.

Filein=openfile (data, dat).

Record=readint(filein).

Closefile (filein).

Font20=loadfont(arcade normal,14,false,false,false).

Setfont font20.

Menu.

Menú----------------------------------------------------------------------------------------

Color 200,200,200.

X_pacman=1000.

X_text=600.

Dirección_pacman=4.

Dirección_spedy=4.

Dirección_shadow=4.

Dirección_bashful=4.

Dirección_pokey=4.

Vidas=3.

Vida_extra=0.

Puntos=0.

Level=0.

For a=1 todo 4.

Status_fantasmas(a)=1.

Next.
While not keydown(31).

Cls.

If keydown(1) then end.

X_text=x_text-2.

X_pacman=x_pacman-1.

If x_text<-1500 then x_text=1000 : consejo=Rand(10).

If x_pacman=-180 then x_pacman=800.

Skipframe1=skipframe1+1.

Skipframe_fantasma=skipframe_fantasma+1.

If Skipframe1>20 then Skipframe1=1.

If Skipframe_fantasma>30 then Skipframe_fantasma=0.

Contador=contador+1.

If contador>79 then contador=0.

If contador<50 then flash=1 else flash=0.

Gosub animación.

Nivel_jugador_actual=nivel_jugador(1).

If récord>5000 then nivel_jugador_actual=nivel_jugador(2).

If récord>7500 then nivel_jugador_actual=nivel_jugador(3).

If récord>9000 then nivel_jugador_actual=nivel_jugador(4).

If récord>12000 then nivel_jugador_actual=nivel_jugador(5).

If récord>14000 then nivel_jugador_actual=nivel_jugador(6).

If récord>18000 then nivel_jugador_actual=nivel_jugador(7).

If récord>22000 then nivel_jugador_actual=nivel_jugador(.

If récord>25000 then nivel_jugador_actual=nivel_jugador(9).

If récord>30000 then nivel_jugador_actual=nivel_jugador(10).

If récord>50000 then nivel_jugador_actual=nivel_jugador(11).

Drawimage logotipo,150,60.

Drawimage Pacman,x_pacman,250, frame_pacman.

Drawimage shadow,x_pacman+100,250, frame_shadow.

Drawimage speedy,x_pacman+125,250, frame_spedy.

Drawimage bashful,x_pacman+150,250, frame_bashful.

Drawimage pokey,x_pacman+175,250, frame_pokey.

Drawimage shadow,70,350, frame_shadow : text 130,360,shadow.

Drawimage speedy,70,390, frame_spedy : text 130,400,speedy.

Drawimage bashful,70,430, frame_bashful : text 130,440,bashful.

Drawimage pokey,70,470, frame_pokey : text 130,480,pokey.

Text 370,360,hi-score +récord.

Text 370,400, nivel_jugador_actual.

If flash=1 then text 270,200,pres s todo start.

Text 110,560,Manuel Fernández - Manuferhi@gmail. Com.

Text x_text,20, tip(consejo).
Waittimer(frametimer).

Flip.
Wend.

Newlevel.

Comienza el nivel (reset)------------------------------------------------------------------------

Stopchannel(andando).

Cls.

Stopchannel(fantasmas_azules).

Stopchannel(fantasmas_azules2).

Velocidad=1.3+level/10.

Velocidad_shadow=1.2+level/10.

Velocidad_spedy=1.15+level/10.

Velocidad_bashful=1.1+level/10.

Velocidad_pokey=1.1+level/10.

Contador_velocidad=50.

Level=level+1.

Total_bolas=244.

Fruta_level=level.

Fruta_activa=1.

Sedrnd millisecs().

For a=1 todo 460.

Bolas(a)=copyimage (bola), regénero las bolas pequeñas.

Next.

For a=1 todo 4.

Granbolas(a)=copyimage (gran_bola).

Next.

Playsound newlevel.

Drawimage pantalla,182,1,0.

Color 255,255,0 : text posx(5), Posy(6)+8,ready.

Flip.

Delay 3500.

If level=1 then fruta_level=1 :puntos_fruta=100.

If level=2 then fruta_level=2 :puntos_fruta=300.

If level=3 or level=4 then fruta_level=3 :puntos_fruta=500.

If level=5 or level=6 then fruta_level=4 :puntos_fruta=700.

If level=7 or level=8 then fruta_level=5 :puntos_fruta=1000.

If level=9 or level=10 then fruta_level=6 :puntos_fruta=2000.

If level=11 or level=12 then fruta_level=7 :puntos_fruta=3000.

If level=>13 then fruta_level=0 :puntos_fruta=5000.

Newlive.

Pacman_status=1.

Dirección_pacman=4.

Contador_fantasmas=0.

Status_fantasma=1.

Xpacman=posx(5)+26 : ypacman=Posy(;posición inicial Pacman.

X_shadow#=posx(5)+26 : y_shadow#=Posy(4) ;posición inicial shadow.

X_spedy#=posx(5)+26 : y_spedy#=Posy(5) ;posición inicial speedy.

X_bashful#=posx(5)-10 : y_bashful#=Posy(5) ;posición inicial bashful.

X_pokey#=posx(5)+62 : y_pokey#=Posy(5) ;posición inicial pokey.

Dirección_shadow=4.

Dirección_spedy=3.

Dirección_bashful=1.

Dirección_pokey=1.

Contador_fantasmas=0.

For n=1 todo 4.

Status_fantasmas(n)=1.

Eyes(n)=0.

Next.

Contador_fruta=0.

Stopchannel(fantasmas_azules).

Stopchannel(andando).

Andando=playsound(andar).

Comienza el bucle------------------------------------------------------------------------------------
While not keydown(1).
Waitkey.

Cls.

Contador_velocidad=contador_velocidad+1.

Velocidades.

If contador_velocidad<35 then temp_velocidad=velocidad*.9 else temp_velocidad=velocidad.

If temp_velocidad>2.5 then temp_velocidad=2.5.

If status_fantasmas(1)=1 then temp_velocidad_shadow=velocidad_shadow.

If status_fantasmas(1)=2 then temp_velocidad_shadow=velocidad_shadow*2.

If status_fantasmas(1)=0 then temp_velocidad_shadow=velocidad_shadow*.6.

If status_fantasmas(2)=1 then temp_velocidad_spedy=velocidad_spedy.

If status_fantasmas(2)=2 then temp_velocidad_spedy=velocidad_spedy*2.

If status_fantasmas(2)=0 then temp_velocidad_spedy=velocidad_spedy*.6.

If status_fantasmas(3)=1 then temp_velocidad_bashful=velocidad_bashful.

If status_fantasmas(3)=2 then temp_velocidad_bashful=velocidad_bashful*2.

If status_fantasmas(3)=0 then temp_velocidad_bashful=velocidad_bashful*.6.

If status_fantasmas(4)=1 then temp_velocidad_pokey=velocidad_pokey.

If status_fantasmas(4)=2 then temp_velocidad_pokey=velocidad_pokey*2.

If status_fantasmas(4)=0 then temp_velocidad_pokey=velocidad_pokey*.6.

If temp_velocidad_shadow>2.5 then temp_velocidad_shadow=2.5.

If temp_velocidad_spedy>2.5 then temp_velocidad_spedy=2.5.

If temp_velocidad_bashful>2.5 then temp_velocidad_bashful=2.5.

If temp_velocidad_pokey>2.5 then temp_velocidad_pokey=2.5.

If abs(x_shadow-posx(1))<40 and abs(y_shadow-Posy(5))<5 then temp_velocidad_shadow=temp_velocidad_shadow*.6.

If abs(x_spedy-posx(1))<40 and abs(y_spedy-Posy(5))<5 then temp_velocidad_spedy=temp_velocidad_spedy*.6.

If abs(x_bashful-posx(1))<40 and abs(y_bashful-Posy(5))<5 then temp_velocidad_bashful=temp_velocidad_bashful*.6.

If abs(x_pokey-posx(1))<40 and abs(y_pokey-Posy(5))<5 then temp_velocidad_pokey=temp_velocidad_pokey*.6.

If abs(x_shadow-posx(10))<40 and abs(y_shadow-Posy(5))<5 then temp_velocidad_shadow=temp_velocidad_shadow*.6.

If abs(x_spedy-posx(10))<40 and abs(y_spedy-Posy(5))<5 then temp_velocidad_spedy=temp_velocidad_spedy*.6.

If abs(x_bashful-posx(10))<40 and abs(y_bashful-Posy(5))<5 then temp_velocidad_bashful=temp_velocidad_bashful*.6.

If abs(x_pokey-posx(10))<40 and abs(y_pokey-Posy(5))<5 then temp_velocidad_pokey=temp_velocidad_pokey*.6.

Skipframe1=skipframe1+1.

Skipframe_fantasma=skipframe_fantasma+1.

If Skipframe1>20 then Skipframe1=1.

If Skipframe_fantasma>30 then Skipframe_fantasma=0.

Gosub animación.

If puntos>10000 and vida_extra=0 then vidas=vidas+1 : vida_extra=1.

If eyes(1)=0 and eyes(2)=0 and eyes(3)=0 and eyes(4)=0 then stopchannel(fantasmas_azules2).

Detección de colisiones.

Pacman_shadow=ImagesCollide (shadow,x_shadow, y_shadow,36, Pacman,xpacman, ypacman,14).

If pacman_shadow=1 and status_fantasmas(1)=1 then pacman_status=0.

If pacman_shadow=1 and status_fantasmas(1)=0 then.

Eyes(1)=1 : velocidad_eyes=3 : status_fantasmas(1)=2 :display_puntos_fantasmas=1.

Temp_x=xpacman : temp_y=ypacman.

Temp_frame=temp_frame+1.

If temp_frame=27 then puntos=puntos+200.

If temp_frame=28 then puntos=puntos+400.

If temp_frame=29 then puntos=puntos+800.

If temp_frame=30 then puntos=puntos+1600.

Stopchannel(fantasmas_azules2).

Fantasmas_azules2=playsound(azules2).

Playsound(come_fruta).

Endif.

Pacman_spedy=ImagesCollide (speedy,x_spedy, y_spedy,36, Pacman,xpacman, ypacman,14).

If pacman_spedy=1 and status_fantasmas(2)=1 then pacman_status=0.

If pacman_spedy=1 and status_fantasmas(2)=0 then.

Eyes(2)=1 : velocidad_eyes=3 : status_fantasmas(2)=2 :display_puntos_fantasmas=1.

Temp_x=xpacman : temp_y=ypacman.

Temp_frame=temp_frame+1.

If temp_frame=27 then puntos=puntos+200.

If temp_frame=28 then puntos=puntos+400.

If temp_frame=29 then puntos=puntos+800.

If temp_frame=30 then puntos=puntos+1600.

Stopchannel(fantasmas_azules2).

Fantasmas_azules2=playsound(azules2).

Playsound(come_fruta).

Endif.

Pacman_bashful=ImagesCollide (bashful,x_bashful, y_bashful,36, Pacman,xpacman, ypacman,14).

If pacman_bashful=1 and status_fantasmas(3)=1 then pacman_status=0.

If pacman_bashful=1 and status_fantasmas(3)=0 then.

Eyes(3)=1 : velocidad_eyes=3 : status_fantasmas(3)=2 :display_puntos_fantasmas=1.

Temp_x=xpacman : temp_y=ypacman.

Temp_frame=temp_frame+1.

If temp_frame=27 then puntos=puntos+200.

If temp_frame=28 then puntos=puntos+400.

If temp_frame=29 then puntos=puntos+800.

If temp_frame=30 then puntos=puntos+1600.

Stopchannel(fantasmas_azules2).

Fantasmas_azules2=playsound(azules2).

Playsound(come_fruta).

Endif.

Pacman_pokey=ImagesCollide (pokey,x_pokey, y_pokey,36, Pacman,xpacman, ypacman,14).

If pacman_pokey=1 and status_fantasmas(4)=1 then pacman_status=0.

If pacman_pokey=1 and status_fantasmas(4)=0 then.

Eyes(4)=1 : velocidad_eyes=3 : status_fantasmas(4)=2 :display_puntos_fantasmas=1.

Temp_x=xpacman : temp_y=ypacman.

Temp_frame=temp_frame+1.

If temp_frame=27 then puntos=puntos+200.

If temp_frame=28 then puntos=puntos+400.

If temp_frame=29 then puntos=puntos+800.

If temp_frame=30 then puntos=puntos+1600.

Stopchannel(fantasmas_azules2).

Fantasmas_azules2=playsound(azules2).

Playsound(come_fruta).

Endif.

If pacman_status=0 then stopchannel andando.

If status_fantasma=0 then contador_fantasmas=contador_fantasmas+velocidad.

If contador_fantasmas>800 then.

Contador_fantasmas=0.

For n=1 todo 4.

If eyes(n)=0 then status_fantasmas(n)=1.

Next.

Status_fantasma=1.

Stopchannel(andando) : stopchannel(fantasmas_azules) :andando=playsound(andar) topchannel(fantasmas_azules2).

Endif.

If contador_fruta>2000 then contador_fruta=0.

Contador_fruta=contador_fruta+velocidad.

If total_bolas=<0 then goto newlevel.

If display_puntos>0 then display_puntos=display_puntos+1.

If display_puntos>150 then display_puntos=0.

If display_puntos_fantasmas>0 then display_puntos_fantasmas=display_puntos_fantasmas+1.

If display_puntos_fantasmas>150 then display_puntos_fantasmas=0.

Detección de teclas---
-Horientación de los fantasmas.

Dirección_inversa_shadow=dirección_shadow+2.

Dirección_inversa_spedy=dirección_spedy+2.

Dirección_inversa_bashful=dirección_bashful+2.

Dirección_inversa_pokey=dirección_pokey+2.

If dirección_inversa_shadow>4 then dirección_inversa_shadow=dirección_inversa_shadow-4.

If dirección_inversa_spedy>4 then dirección_inversa_spedy=dirección_inversa_spedy-4.

If dirección_inversa_bashful>4 then dirección_inversa_bashful=dirección_inversa_bashful-4.

If dirección_inversa_pokey>4 then dirección_inversa_pokey=dirección_inversa_pokey-4.

If xpacman>x_shadow then.

If ypacman
Endif.

If xpacman>x_spedy then.

If ypacman
Endif.

If xpacman>x_bashful then.

If ypacman
Endif.

If xpacman>x_pokey then.

If ypacman
Endif.

If xpacman
If ypacman
Endif.

If xpacman
If ypacman
Endif.

If xpacman
If ypacman
Endif.

If xpacman
If ypacman
Endif.

If abs(xpacman-x_shadow)<4 then.

If ypacman
Endif.

If abs(xpacman-x_spedy)<4 then.

If ypacman
Endif.

If abs(xpacman-x_bashful)<4 then.

If ypacman
Endif.

If abs(xpacman-x_pokey)<4 then.

If ypacman
Endif.

If abs(ypacman-y_shadow)<4 then.

If xpacman
Endif.

If abs(ypacman-y_spedy)<4 then.

If xpacman
Endif.

If abs(ypacman-y_bashful)<4 then.

If xpacman
Endif.

If abs(ypacman-y_pokey)<4 then.

If xpacman
Endif.

If bloqueo>0 then bloqueo=bloqueo-1.

If bloqueo2>0 then bloqueo2=bloqueo2-1.

If bloqueo3>0 then bloqueo3=bloqueo3-1.

If bloqueo4>0 then bloqueo4=bloqueo4-1.

Ejes.

Casa de los fantasmas----

If sale_bashful<>1 then sale_bashful=Rand(80-level*.

If sale_bashful=1 then sale_pokey=Rand(80-level*.

If abs(x_bashful-posx(5)+10)<2 and abs(y_bashful-Posy(5)+15)<2 then.

Dirección_bashful=3.

Endif.

If abs(x_bashful-posx(5)+10)<2 and abs(y_bashful-Posy(5))<2 then.

If sale_bashful=1 then dirección_bashful=2.

Endif.

If abs(x_bashful-posx(5)+10)<2 and abs(y_bashful-Posy(5)-15)<2 then.

Dirección_bashful=1.

Endif.

If abs(x_pokey-posx(5)-62)<2 and abs(y_pokey-Posy(5)+15)<2 then.

Dirección_pokey=3.

Endif.

If abs(x_pokey-posx(5)-62)<2 and abs(y_pokey-Posy(5))<2 then.

If sale_pokey=1 then dirección_pokey=4.

Endif.

If abs(x_pokey-posx(5)-62)<2 and abs(y_pokey-Posy(5)-15)<2 then.

Dirección_pokey=1.

Endif.

Fila 1----------------------------------------------

If (abs(xpacman-posx(1))<2 or abs(xpacman-posx(6))<2) and (abs(ypacman-Posy(1))<2 or abs(ypacman-Posy(7))<2 or abs(ypacman-Posy(9))<2) then.

Dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(20 then dirección_pacman=3.

Endif.

If (abs(x_shadow-posx(1))<2 or abs(x_shadow-posx(6))<2) and (abs(y_shadow-Posy(1))<2 or abs(y_shadow-Posy(7))<2 or abs(y_shadow-Posy(9))<2) then.

If dirección_shadow=1 then dirección_shadow=2.

If dirección_shadow=4 then dirección_shadow=3.

Endif.

If (abs(x_spedy-posx(1))<2 or abs(x_spedy-posx(6))<2) and (abs(y_spedy-Posy(1))<2 or abs(y_spedy-Posy(7))<2 or abs(y_spedy-Posy(9))<2) then.

If dirección_spedy=1 then dirección_spedy=2.

If dirección_spedy=4 then dirección_spedy=3.

Endif.

If (abs(x_bashful-posx(1))<2 or abs(x_bashful-posx(6))<2) and (abs(y_bashful-Posy(1))<2 or abs(y_bashful-Posy(7))<2 or abs(y_bashful-Posy(9))<2) then.

If dirección_bashful=1 then dirección_bashful=2.

If dirección_bashful=4 then dirección_bashful=3.

Endif.

If (abs(x_pokey-posx(1))<2 or abs(x_pokey-posx(6))<2) and (abs(y_pokey-Posy(1))<2 or abs(y_pokey-Posy(7))<2 or abs(y_pokey-Posy(9))<2) then.

If dirección_pokey=1 then dirección_pokey=2.

If dirección_pokey=4 then dirección_pokey=3.

Endif.

If (abs(xpacman-posx(3))<2 or abs(xpacman-posx()<2) and abs(ypacman-Posy(1))<2 then.

If dirección_pacman=1 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(3))<2 or abs(x_shadow-posx()<2) and abs(y_shadow-Posy(1))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=6 then.

If sorteo=1 then horientación_shadow=2 else horientación_shadow=3.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If status_fantasmas(1)=0 then dirección_shadow=dirección_pacman.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(2,4).
While dirección_shadow=1 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=3.

Endif.

Endif.

If (abs(x_spedy-posx(3))<2 or abs(x_spedy-posx()<2) and abs(y_spedy-Posy(1))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=6 then.

If sorteo=1 then horientación_spedy=2 else horientación_spedy=3.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If status_fantasmas(2)=0 then dirección_spedy=dirección_pacman.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(2,4).
While dirección_spedy=1 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=3.

Endif.

Endif.

If (abs(x_bashful-posx(3))<2 or abs(x_bashful-posx()<2) and abs(y_bashful-Posy(1))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=6 then.

If sorteo=1 then horientación_bashful=2 else horientación_bashful=3.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If status_fantasmas(4)=0 then dirección_bashful=dirección_pacman.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(2,4).
While dirección_bashful=1 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=3.

Endif.

Endif.

If (abs(x_pokey-posx(3))<2 or abs(x_pokey-posx()<2) and abs(y_pokey-Posy(1))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=6 then.

If sorteo=1 then horientación_pokey=2 else horientación_pokey=3.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If status_fantasmas(4)=0 then dirección_pokey=dirección_pacman.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(2,4).
While dirección_pokey=1 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=3.

Endif.

Endif.

If (abs(xpacman-posx(5))<2 or abs(xpacman-posx(10))<2) and (abs(ypacman-Posy(1))<2 or abs(ypacman-Posy(7))<2 or abs(ypacman-Posy(9))<2) then.

Dirección_pacman=0.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(5))<2 or abs(x_shadow-posx(10))<2) and (abs(y_shadow-Posy(1))<2 or abs(y_shadow-Posy(7))<2 or abs(y_shadow-Posy(9))<2) then.

If dirección_shadow=2 then dirección_shadow=3.

If dirección_shadow=1 then dirección_shadow=4.

Endif.

If (abs(x_spedy-posx(5))<2 or abs(x_spedy-posx(10))<2) and (abs(y_spedy-Posy(1))<2 or abs(y_spedy-Posy(7))<2 or abs(y_spedy-Posy(9))<2) then.

If dirección_spedy=2 then dirección_spedy=3.

If dirección_spedy=1 then dirección_spedy=4.

Endif.

If (abs(x_bashful-posx(5))<2 or abs(x_bashful-posx(10))<2) and (abs(y_bashful-Posy(1))<2 or abs(y_bashful-Posy(7))<2 or abs(y_bashful-Posy(9))<2) then.

If dirección_bashful=2 then dirección_bashful=3.

If dirección_bashful=1 then dirección_bashful=4.

Endif.

If (abs(x_pokey-posx(5))<2 or abs(x_pokey-posx(10))<2) and (abs(y_pokey-Posy(1))<2 or abs(y_pokey-Posy(7))<2 or abs(y_pokey-Posy(9))<2) then.

If dirección_pokey=2 then dirección_pokey=3.

If dirección_pokey=1 then dirección_pokey=4.

Endif.

Fila 2----------------------------------------------

If abs(xpacman-posx(1))<2 and abs(ypacman-Posy(2))<2 then.

If dirección_pacman=4 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(20 then dirección_pacman=3.

If keydown(200) then dirección_pacman=1.

Endif.

If abs(x_shadow-posx(1))<2 and abs(y_shadow-Posy(2))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=6 then.

If sorteo=1 then horientación_shadow=2 else horientación_shadow=3.

Endif.

If horientación_shadow=5 then.

If sorteo=1 then horientación_shadow=2 else horientación_shadow=1.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=4 then dirección_shadow=2.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(3).

If status_fantasmas(1)=2 then dirección_shadow=2.

Endif.

Endif.

If abs(x_spedy-posx(1))<2 and abs(y_spedy-Posy(2))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=6 then.

If sorteo=1 then horientación_spedy=2 else horientación_spedy=3.

Endif.

If horientación_spedy=5 then.

If sorteo=1 then horientación_spedy=2 else horientación_spedy=1.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=4 then dirección_spedy=2.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(3).

If status_fantasmas(2)=2 then dirección_spedy=2.

Endif.

Endif.

If abs(x_bashful-posx(1))<2 and abs(y_bashful-Posy(2))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=6 then.

If sorteo=1 then horientación_bashful=2 else horientación_bashful=3.

Endif.

If horientación_bashful=5 then.

If sorteo=1 then horientación_bashful=2 else horientación_bashful=1.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=4 then dirección_bashful=2.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(3).

If status_fantasmas(3)=2 then dirección_bashful=2.

Endif.

Endif.

If abs(x_pokey-posx(1))<2 and abs(y_pokey-Posy(2))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=6 then.

If sorteo=1 then horientación_pokey=2 else horientación_pokey=3.

Endif.

If horientación_pokey=5 then.

If sorteo=1 then horientación_pokey=2 else horientación_pokey=1.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=4 then dirección_pokey=2.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(3).

If status_fantasmas(4)=2 then dirección_pokey=2.

Endif.

Endif.

If (abs(xpacman-posx(3))<2 or abs(xpacman-posx()<2) and (abs(ypacman-Posy(2))<2 or abs(ypacman-Posy(5))<2 or abs(ypacman-Posy(7))<2) then.

If keydown(200) then dirección_pacman=1.

If keydown(205) then dirección_pacman=2.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(3))<2 or abs(x_shadow-posx()<2) and (abs(y_shadow-Posy(2))<2 or abs(y_shadow-Posy(5))<2 or abs(y_shadow-Posy(7))<2) then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=6 then.

If sorteo=1 then horientación_shadow=2 else horientación_shadow=3.

Endif.

If horientación_shadow=5 then horientación_shadow=2.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If horientación_shadow>4 then.

If sorteo=1 then dirección_shadow=horientación_shadow-4 else dirección_shadow=horientación_shadow-6.

Endif.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=0 then dirección_shadow=dirección_pacman.

If status_fantasmas(1)=2 then.

If abs(x_shadow-posx(3))<2 then dirección_shadow=2.

If abs(x_shadow-posx()<2 then dirección_shadow=4.

Endif.

Endif.

Endif.

If (abs(x_spedy-posx(3))<2 or abs(x_spedy-posx()<2) and (abs(y_spedy-Posy(2))<2 or abs(y_spedy-Posy(5))<2 or abs(y_spedy-Posy(7))<2) then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=6 then.

If sorteo=1 then horientación_spedy=2 else horientación_spedy=3.

Endif.

If horientación_spedy=5 then horientación_spedy=2.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If horientación_spedy>4 then.

If sorteo=1 then dirección_spedy=horientación_spedy-4 else dirección_spedy=horientación_spedy-6.

Endif.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=0 then dirección_spedy=dirección_pacman.

If status_fantasmas(2)=2 then.

If abs(x_spedy-posx(3))<2 then dirección_spedy=2.

If abs(x_spedy-posx()<2 then dirección_spedy=4.

Endif.

Endif.

Endif.

If (abs(x_bashful-posx(3))<2 or abs(x_bashful-posx()<2) and (abs(y_bashful-Posy(2))<2 or abs(y_bashful-Posy(5))<2 or abs(y_bashful-Posy(7))<2) then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=6 then.

If sorteo=1 then horientación_bashful=2 else horientación_bashful=3.

Endif.

If horientación_bashful=5 then horientación_bashful=2.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If horientación_bashful>4 then.

If sorteo=1 then dirección_bashful=horientación_bashful-4 else dirección_bashful=horientación_bashful-6.

Endif.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=0 then dirección_bashful=dirección_pacman.

If status_fantasmas(3)=2 then.

If abs(x_bashful-posx(3))<2 then dirección_bashful=2.

If abs(x_bashful-posx()<2 then dirección_bashful=4.

Endif.

Endif.

Endif.

If (abs(x_pokey-posx(3))<2 or abs(x_pokey-posx()<2) and (abs(y_pokey-Posy(2))<2 or abs(y_pokey-Posy(5))<2 or abs(y_pokey-Posy(7))<2) then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=6 then.

If sorteo=1 then horientación_pokey=2 else horientación_pokey=3.

Endif.

If horientación_pokey=5 then horientación_pokey=2.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If horientación_pokey>4 then.

If sorteo=1 then dirección_pokey=horientación_pokey-4 else dirección_pokey=horientación_pokey-6.

Endif.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=0 then dirección_pokey=dirección_pacman.

If status_fantasmas(4)=2 then.

If abs(x_pokey-posx(3))<2 then dirección_pokey=2.

If abs(x_pokey-posx()<2 then dirección_pokey=4.

Endif.

Endif.

Endif.

If (abs(xpacman-posx(4))<2 or abs(xpacman-posx(7))<2) and (abs(ypacman-Posy(2))<2 or abs(ypacman-Posy()<2) then.

If dirección_pacman=1 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(4))<2 or abs(x_shadow-posx(7))<2) and (abs(y_shadow-Posy(2))<2 or abs(y_shadow-Posy()<2) then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=2.

If horientación_shadow=6 then horientación_shadow=2.

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=8 then horientación_shadow=4.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(2,4).
While dirección_shadow=1 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(2,4).
Wend.

If status_fantasmas(1)=2 then.

If abs(y_shadow-Posy(2))<2 then dirección_shadow=3 else dirección_shadow=2.

Endif.

Endif.

Endif.

If (abs(x_spedy-posx(4))<2 or abs(x_spedy-posx(7))<2) and (abs(y_spedy-Posy(2))<2 or abs(y_spedy-Posy()<2) then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=2.

If horientación_spedy=6 then horientación_spedy=2.

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=8 then horientación_spedy=4.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(2,4).
While dirección_spedy=1 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(2,4).
Wend.

If status_fantasmas(2)=2 then.

If abs(y_spedy-Posy(2))<2 then dirección_spedy=3 else dirección_spedy=2.

Endif.

Endif.

Endif.

If (abs(x_bashful-posx(4))<2 or abs(x_bashful-posx(7))<2) and (abs(y_bashful-Posy(2))<2 or abs(y_bashful-Posy()<2) then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=2.

If horientación_bashful=6 then horientación_bashful=2.

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=8 then horientación_bashful=4.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(2,4).
While dirección_bashful=1 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(2,4).
Wend.

If status_fantasmas(3)=2 then.

If abs(y_bashful-Posy(2))<2 then dirección_bashful=3 else dirección_bashful=2.

Endif.

Endif.

Endif.

If (abs(x_pokey-posx(4))<2 or abs(x_pokey-posx(7))<2) and (abs(y_pokey-Posy(2))<2 or abs(y_pokey-Posy()<2) then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=2.

If horientación_pokey=6 then horientación_pokey=2.

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=8 then horientación_pokey=4.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(2,4).
While dirección_pokey=1 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(2,4).
Wend.

If status_fantasmas(4)=2 then.

If abs(y_pokey-Posy(2))<2 then dirección_pokey=3 else dirección_pokey=2.

Endif.

Endif.

Endif.

If (abs(xpacman-posx(5))<2 or abs(xpacman-posx(6))<2) and (abs(ypacman-Posy(2))<2 or abs(ypacman-Posy()<2 or abs(ypacman-Posy()<2) then.

If dirección_pacman=3 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(5))<2 or abs(x_shadow-posx(6))<2) and (abs(y_shadow-Posy(2))<2 or abs(y_shadow-Posy()<2 or abs(y_shadow-Posy()<2) then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=5 then horientación_shadow=2.

If horientación_shadow=6 then horientación_shadow=2.

If horientación_shadow=7 then horientación_shadow=1.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=3 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If (abs(x_spedy-posx(5))<2 or abs(x_spedy-posx(6))<2) and (abs(y_spedy-Posy(2))<2 or abs(y_spedy-Posy()<2 or abs(y_spedy-Posy()<2) then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=5 then horientación_spedy=2.

If horientación_spedy=6 then horientación_spedy=2.

If horientación_spedy=7 then horientación_spedy=1.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=3 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If (abs(x_bashful-posx(5))<2 or abs(x_bashful-posx(6))<2) and (abs(y_bashful-Posy(2))<2 or abs(y_bashful-Posy()<2 or abs(y_bashful-Posy()<2) then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=5 then horientación_bashful=2.

If horientación_bashful=6 then horientación_bashful=2.

If horientación_bashful=7 then horientación_bashful=1.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=3 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If (abs(x_pokey-posx(5))<2 or abs(x_pokey-posx(6))<2) and (abs(y_pokey-Posy(2))<2 or abs(y_pokey-Posy()<2 or abs(y_pokey-Posy()<2) then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=5 then horientación_pokey=2.

If horientación_pokey=6 then horientación_pokey=2.

If horientación_pokey=7 then horientación_pokey=1.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=3 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(10))<2 and abs(ypacman-Posy(2))<2 then.

If dirección_pacman=2 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(10))<2 and abs(y_shadow-Posy(2))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=2 then horientación_shadow=3.

If horientación_shadow=7 then horientación_shadow=Rand(3,4).

If horientación_shadow=8 then.

If sorteo=1 then horientación_shadow=1 else horientación_shadow=4.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=2 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=3.

Endif.

Endif.

If abs(x_spedy-posx(10))<2 and abs(y_spedy-Posy(2))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=2 then horientación_spedy=3.

If horientación_spedy=7 then horientación_spedy=Rand(3,4).

If horientación_spedy=8 then.

If sorteo=1 then horientación_spedy=1 else horientación_spedy=4.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=2 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=3.

Endif.

Endif.

If abs(x_bashful-posx(10))<2 and abs(y_bashful-Posy(2))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=2 then horientación_bashful=3.

If horientación_bashful=7 then horientación_bashful=Rand(3,4).

If horientación_bashful=8 then.

If sorteo=1 then horientación_bashful=1 else horientación_bashful=4.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=2 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=3.

Endif.

Endif.

If abs(x_pokey-posx(10))<2 and abs(y_pokey-Posy(2))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=2 then horientación_pokey=3.

If horientación_pokey=7 then horientación_pokey=Rand(3,4).

If horientación_pokey=8 then.

If sorteo=1 then horientación_pokey=1 else horientación_pokey=4.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=2 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=3.

Endif.

Endif.

Fila 3----------------------------------------------

If abs(xpacman-posx(1))<2 and (abs(ypacman-Posy(3))<2 or abs(ypacman-Posy(10))<2 or abs(ypacman-Posy()<2) then.

Dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx(1))<2 and (abs(y_shadow-Posy(3))<2 or abs(y_shadow-Posy(10))<2 or abs(y_shadow-Posy()<2) then.

If dirección_shadow=3 then dirección_shadow=2.

If dirección_shadow=4 then dirección_shadow=1.

Endif.

If abs(x_spedy-posx(1))<2 and (abs(y_spedy-Posy(3))<2 or abs(y_spedy-Posy(10))<2 or abs(y_spedy-Posy()<2) then.

If dirección_spedy=3 then dirección_spedy=2.

If dirección_spedy=4 then dirección_spedy=1.

Endif.

If abs(x_bashful-posx(1))<2 and (abs(y_bashful-Posy(3))<2 or abs(y_bashful-Posy(10))<2 or abs(y_bashful-Posy()<2) then.

If dirección_bashful=3 then dirección_bashful=2.

If dirección_bashful=4 then dirección_bashful=1.

Endif.

If abs(x_pokey-posx(1))<2 and (abs(y_pokey-Posy(3))<2 or abs(y_pokey-Posy(10))<2 or abs(y_pokey-Posy()<2) then.

If dirección_pokey=3 then dirección_pokey=2.

If dirección_pokey=4 then dirección_pokey=1.

Endif.

If abs(xpacman-posx(3))<2 and abs(ypacman-Posy(3))<2 then.

If dirección_pacman=2 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(3))<2 and abs(y_shadow-Posy(3))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=7 then horientación_shadow=3.

If horientación_shadow=6 then horientación_shadow=3.

If horientación_shadow=5 then horientación_shadow=1.

If horientación_shadow=2 then horientación_shadow=1.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=2 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(3))<2 and abs(y_spedy-Posy(3))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=7 then horientación_spedy=3.

If horientación_spedy=6 then horientación_spedy=3.

If horientación_spedy=5 then horientación_spedy=1.

If horientación_spedy=2 then horientación_spedy=1.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=2 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(3))<2 and abs(y_bashful-Posy(3))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=7 then horientación_bashful=3.

If horientación_bashful=6 then horientación_bashful=3.

If horientación_bashful=5 then horientación_bashful=1.

If horientación_bashful=2 then horientación_bashful=1.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=2 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(3))<2 and abs(y_pokey-Posy(3))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=7 then horientación_pokey=3.

If horientación_pokey=6 then horientación_pokey=3.

If horientación_pokey=5 then horientación_pokey=1.

If horientación_pokey=2 then horientación_pokey=1.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=2 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(4))<2 and abs(ypacman-Posy(3))<2 then.

Dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx(4))<2 and abs(y_shadow-Posy(3))<2 then.

If dirección_shadow=3 then dirección_shadow=2.

If dirección_shadow=4 then dirección_shadow=1.

Endif.

If abs(x_spedy-posx(4))<2 and abs(y_spedy-Posy(3))<2 then.

If dirección_spedy=3 then dirección_spedy=2.

If dirección_spedy=4 then dirección_spedy=1.

Endif.

If abs(x_bashful-posx(4))<2 and abs(y_bashful-Posy(3))<2 then.

If dirección_bashful=3 then dirección_bashful=2.

If dirección_bashful=4 then dirección_bashful=1.

Endif.

If abs(x_pokey-posx(4))<2 and abs(y_pokey-Posy(3))<2 then.

If dirección_pokey=3 then dirección_pokey=2.

If dirección_pokey=4 then dirección_pokey=1.

Endif.

If abs(xpacman-posx(5))<2 and abs(ypacman-Posy(3))<2 then.

Dirección_pacman=0.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(5))<2 and abs(y_shadow-Posy(3))<2 then.

If dirección_shadow=2 then dirección_shadow=3.

If dirección_shadow=1 then dirección_shadow=4.

Endif.

If abs(x_spedy-posx(5))<2 and abs(y_spedy-Posy(3))<2 then.

If dirección_spedy=2 then dirección_spedy=3.

If dirección_spedy=1 then dirección_spedy=4.

Endif.

If abs(x_bashful-posx(5))<2 and abs(y_bashful-Posy(3))<2 then.

If dirección_bashful=2 then dirección_bashful=3.

If dirección_bashful=1 then dirección_bashful=4.

Endif.

If abs(x_pokey-posx(5))<2 and abs(y_pokey-Posy(3))<2 then.

If dirección_pokey=2 then dirección_pokey=3.

If dirección_pokey=1 then dirección_pokey=4.

Endif.

If abs(xpacman-posx(6))<2 and abs(ypacman-Posy(3))<2 then.

Dirección_pacman=0.

If keydown(20 then dirección_pacman=3.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx(6))<2 and abs(y_shadow-Posy(3))<2 then.

If dirección_shadow=1 then dirección_shadow=2.

If dirección_shadow=4 then dirección_shadow=3.

Endif.

If abs(x_spedy-posx(6))<2 and abs(y_spedy-Posy(3))<2 then.

If dirección_spedy=1 then dirección_spedy=2.

If dirección_spedy=4 then dirección_spedy=3.

Endif.

If abs(x_bashful-posx(6))<2 and abs(y_bashful-Posy(3))<2 then.

If dirección_bashful=1 then dirección_bashful=2.

If dirección_bashful=4 then dirección_bashful=3.

Endif.

If abs(x_pokey-posx(6))<2 and abs(y_pokey-Posy(3))<2 then.

If dirección_pokey=1 then dirección_pokey=2.

If dirección_pokey=4 then dirección_pokey=3.

Endif.

If abs(xpacman-posx(7))<2 and abs(ypacman-Posy(3))<2 then.

Dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(7))<2 and abs(y_shadow-Posy(3))<2 then.

If dirección_shadow=2 then dirección_shadow=1.

If dirección_shadow=3 then dirección_shadow=4.

Endif.

If abs(x_spedy-posx(7))<2 and abs(y_spedy-Posy(3))<2 then.

If dirección_spedy=2 then dirección_spedy=1.

If dirección_spedy=3 then dirección_spedy=4.

Endif.

If abs(x_bashful-posx(7))<2 and abs(y_bashful-Posy(3))<2 then.

If dirección_bashful=2 then dirección_bashful=1.

If dirección_bashful=3 then dirección_bashful=4.

Endif.

If abs(x_pokey-posx(7))<2 and abs(y_pokey-Posy(3))<2 then.

If dirección_pokey=2 then dirección_pokey=1.

If dirección_pokey=3 then dirección_pokey=4.

Endif.

If abs(xpacman-posx()<2 and abs(ypacman-Posy(3))<2 then.

If dirección_pacman=4 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx()<2 and abs(y_shadow-Posy(3))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=8 then horientación_shadow=Rand(2,3).

If horientación_shadow=7 then horientación_shadow=3.

If horientación_shadow=6 then horientación_shadow=3.

If horientación_shadow=5 then horientación_shadow=Rand(1,2).

If horientación_shadow=4 then horientación_shadow=3.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(3).
While dirección_shadow=4 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(3).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=3.

Endif.

Endif.

If abs(x_spedy-posx()<2 and abs(y_spedy-Posy(3))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=8 then horientación_spedy=Rand(2,3).

If horientación_spedy=7 then horientación_spedy=3.

If horientación_spedy=6 then horientación_spedy=3.

If horientación_spedy=5 then horientación_spedy=Rand(1,2).

If horientación_spedy=4 then horientación_spedy=3.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(3).
While dirección_spedy=4 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(3).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=3.

Endif.

Endif.

If abs(x_bashful-posx()<2 and abs(y_bashful-Posy(3))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=8 then horientación_bashful=Rand(2,3).

If horientación_bashful=7 then horientación_bashful=3.

If horientación_bashful=6 then horientación_bashful=3.

If horientación_bashful=5 then horientación_bashful=Rand(1,2).

If horientación_bashful=4 then horientación_bashful=3.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(3).
While dirección_bashful=4 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(3).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=3.

Endif.

Endif.

If abs(x_pokey-posx()<2 and abs(y_pokey-Posy(3))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=8 then horientación_pokey=Rand(2,3).

If horientación_pokey=7 then horientación_pokey=3.

If horientación_pokey=6 then horientación_pokey=3.

If horientación_pokey=5 then horientación_pokey=Rand(1,2).

If horientación_pokey=4 then horientación_pokey=3.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(3).
While dirección_pokey=4 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(3).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=3.

Endif.

Endif.

If abs(xpacman-posx(10))<2 and (abs(ypacman-Posy(3))<2 or abs(ypacman-Posy(10))<2 or abs(ypacman-Posy()<2) then.

Dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(10))<2 and (abs(y_shadow-Posy(3))<2 or abs(y_shadow-Posy(10))<2 or abs(y_shadow-Posy()<2) then.

If dirección_shadow=2 then dirección_shadow=1.

If dirección_shadow=3 then dirección_shadow=4.

Endif.

If abs(x_spedy-posx(10))<2 and (abs(y_spedy-Posy(3))<2 or abs(y_spedy-Posy(10))<2 or abs(y_spedy-Posy()<2) then.

If dirección_spedy=2 then dirección_spedy=1.

If dirección_spedy=3 then dirección_spedy=4.

Endif.

If abs(x_bashful-posx(10))<2 and (abs(y_bashful-Posy(3))<2 or abs(y_bashful-Posy(10))<2 or abs(y_bashful-Posy()<2) then.

If dirección_bashful=2 then dirección_bashful=1.

If dirección_bashful=3 then dirección_bashful=4.

Endif.

If abs(x_pokey-posx(10))<2 and (abs(y_pokey-Posy(3))<2 or abs(y_pokey-Posy(10))<2 or abs(y_pokey-Posy()<2) then.

If dirección_pokey=2 then dirección_pokey=1.

If dirección_pokey=3 then dirección_pokey=4.

Endif.

Fila 4----------------------------------------------

If abs(xpacman-posx(4))<2 and abs(ypacman-Posy(4))<2 then.

Dirección_pacman=0.

If keydown(20 then dirección_pacman=3.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx(4))<2 and abs(y_shadow-Posy(4))<2 then.

If dirección_shadow=1 then dirección_shadow=2.

If dirección_shadow=4 then dirección_shadow=3.

Endif.

If abs(x_spedy-posx(4))<2 and abs(y_spedy-Posy(4))<2 then.

If dirección_spedy=1 then dirección_spedy=2.

If dirección_spedy=4 then dirección_spedy=3.

Endif.

If abs(x_bashful-posx(4))<2 and abs(y_bashful-Posy(4))<2 then.

If dirección_bashful=1 then dirección_bashful=2.

If dirección_bashful=4 then dirección_bashful=3.

Endif.

If abs(x_pokey-posx(4))<2 and abs(y_pokey-Posy(4))<2 then.

If dirección_pokey=1 then dirección_pokey=2.

If dirección_pokey=4 then dirección_pokey=3.

Endif.

If (abs(xpacman-posx(5))<2 or abs(xpacman-posx(6))<2) and abs(ypacman-Posy(4))<2 then.

If dirección_pacman=3 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(205) then dirección_pacman=2.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(5))<2 and abs(y_shadow-Posy(4))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=6 then horientación_shadow=2.

If horientación_shadow=5 then horientación_shadow=2.

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=3 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=2.

Endif.

Endif.

If abs(x_spedy-posx(5))<2 and abs(y_spedy-Posy(4))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=6 then horientación_spedy=2.

If horientación_spedy=5 then horientación_spedy=2.

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=3 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=2.

Endif.

Endif.

If abs(x_bashful-posx(5))<2 and abs(y_bashful-Posy(4))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=6 then horientación_bashful=2.

If horientación_bashful=5 then horientación_bashful=2.

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=3 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=2.

Endif.

Endif.

If abs(x_pokey-posx(5))<2 and abs(y_pokey-Posy(4))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=6 then horientación_pokey=2.

If horientación_pokey=5 then horientación_pokey=2.

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=3 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=2.

Endif.

Endif.

If abs(x_shadow-posx(5)-27)<2 and abs(y_shadow-Posy(4))<2 then.

If status_fantasmas(1)=2 then dirección_shadow=3.

If status_fantasmas(1)=1 then.

If horientación_shadow=6 then dirección_shadow=2.

If horientación_shadow=5 then dirección_shadow=2.

If horientación_shadow=7 then dirección_shadow=4.

If horientación_shadow=8 then dirección_shadow=4.

If horientación_shadow=1 then dirección_shadow=2.

If horientación_shadow=2 then dirección_shadow=2.

If horientación_shadow=3 then dirección_shadow=4.

If horientación_shadow=4 then dirección_shadow=2.

Endif.

Endif.

If abs(x_spedy-posx(5)-27)<2 and abs(y_spedy-Posy(4))<2 then.

If status_fantasmas(2)=2 then dirección_spedy=3.

If status_fantasmas(2)=1 then.

If horientación_spedy=6 then dirección_spedy=2.

If horientación_spedy=5 then dirección_spedy=2.

If horientación_spedy=7 then dirección_spedy=4.

If horientación_spedy=8 then dirección_spedy=4.

If horientación_spedy=1 then dirección_spedy=2.

If horientación_spedy=2 then dirección_spedy=2.

If horientación_spedy=3 then dirección_spedy=4.

If horientación_spedy=4 then dirección_spedy=2.

Endif.

Endif.

If abs(x_bashful-posx(5)-27)<2 and abs(y_bashful-Posy(4))<2 then.

If status_fantasmas(3)=2 then dirección_bashful=3.

If status_fantasmas(3)=1 then.

If horientación_bashful=6 then dirección_bashful=2.

If horientación_bashful=5 then dirección_bashful=2.

If horientación_bashful=7 then dirección_bashful=4.

If horientación_bashful=8 then dirección_bashful=4.

If horientación_bashful=1 then dirección_bashful=2.

If horientación_bashful=2 then dirección_bashful=2.

If horientación_bashful=3 then dirección_bashful=4.

If horientación_bashful=4 then dirección_bashful=2.

Endif.

Endif.

If abs(x_pokey-posx(5)-27)<2 and abs(y_pokey-Posy(4))<2 then.

If status_fantasmas(4)=2 then dirección_pokey=3.

If status_fantasmas(4)=1 then.

If horientación_pokey=6 then dirección_pokey=2.

If horientación_pokey=5 then dirección_pokey=2.

If horientación_pokey=7 then dirección_pokey=4.

If horientación_pokey=8 then dirección_pokey=4.

If horientación_pokey=1 then dirección_pokey=2.

If horientación_pokey=2 then dirección_pokey=2.

If horientación_pokey=3 then dirección_pokey=4.

If horientación_pokey=4 then dirección_pokey=2.

Endif.

Endif.

If abs(x_shadow-posx(5)-27)<2 and abs(y_shadow-Posy(5))<2 then.

Status_fantasmas(1)=1.

Dirección_shadow=1.

Eyes(1)=0.

Endif.

If abs(x_spedy-posx(5)-27)<2 and abs(y_spedy-Posy(5))<2 then.

Status_fantasmas(2)=1.

Dirección_spedy=1.

Eyes(2)=0.

Endif.

If abs(x_bashful-posx(5)-27)<2 and abs(y_bashful-Posy(5))<2 then.

Status_fantasmas(3)=1.

Dirección_bashful=1.

Eyes(3)=0.

Endif.

If abs(x_pokey-posx(5)-27)<2 and abs(y_pokey-Posy(5))<2 then.

Status_fantasmas(4)=1.

Dirección_pokey=1.

Eyes(4)=0.

Endif.

If abs(x_shadow-posx(6))<2 and abs(y_shadow-Posy(4))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=6 then horientación_shadow=2.

If horientación_shadow=5 then horientación_shadow=1.

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=8 then horientación_shadow=4.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=3 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=4.

Endif.

Endif.

If abs(x_spedy-posx(6))<2 and abs(y_spedy-Posy(4))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=6 then horientación_spedy=2.

If horientación_spedy=5 then horientación_spedy=1.

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=8 then horientación_spedy=4.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=3 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=4.

Endif.

Endif.

If abs(x_bashful-posx(6))<2 and abs(y_bashful-Posy(4))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=6 then horientación_bashful=2.

If horientación_bashful=5 then horientación_bashful=1.

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=8 then horientación_bashful=4.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=3 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=4.

Endif.

Endif.

If abs(x_pokey-posx(6))<2 and abs(y_pokey-Posy(4))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=6 then horientación_pokey=2.

If horientación_pokey=5 then horientación_pokey=1.

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=8 then horientación_pokey=4.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=3 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=4.

Endif.

Endif.

If abs(xpacman-posx(7))<2 and abs(ypacman-Posy(4))<2 then.

Dirección_pacman=0.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(7))<2 and abs(y_shadow-Posy(4))<2 then.

If dirección_shadow=2 then dirección_shadow=3.

If dirección_shadow=1 then dirección_shadow=4.

Endif.

If abs(x_spedy-posx(7))<2 and abs(y_spedy-Posy(4))<2 then.

If dirección_spedy=2 then dirección_spedy=3.

If dirección_spedy=1 then dirección_spedy=4.

Endif.

If abs(x_bashful-posx(7))<2 and abs(y_bashful-Posy(4))<2 then.

If dirección_bashful=2 then dirección_bashful=3.

If dirección_bashful=1 then dirección_bashful=4.

Endif.

If abs(x_pokey-posx(7))<2 and abs(y_pokey-Posy(4))<2 then.

If dirección_pokey=2 then dirección_pokey=3.

If dirección_pokey=1 then dirección_pokey=4.

Endif.

Fila 5----------------------------------------------

If abs(xpacman-posx(4))<2 and abs(ypacman-Posy(5))<2 then.

If dirección_pacman=2 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(4))<2 and abs(y_shadow-Posy(5))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=7 then horientación_shadow=Rand(3,4).

If horientación_shadow=8 then.

If sorteo=1 then horientación_shadow=1 else horientación_shadow=4.

Endif.

If horientación_shadow=5 then horientación_shadow=1.

If horientación_shadow=6 then horientación_shadow=3.

If horientación_shadow=2 or horientación_shadow=4 then.

If sorteo=1 then horientación_shadow=3 else horientación_shadow=1.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=2 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(4))<2 and abs(y_spedy-Posy(5))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=7 then horientación_spedy=Rand(3,4).

If horientación_spedy=8 then.

If sorteo=1 then horientación_spedy=1 else horientación_spedy=4.

Endif.

If horientación_spedy=5 then horientación_spedy=1.

If horientación_spedy=6 then horientación_spedy=3.

If horientación_spedy=2 or horientación_spedy=4 then.

If sorteo=1 then horientación_spedy=3 else horientación_spedy=1.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=2 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(4))<2 and abs(y_bashful-Posy(5))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=7 then horientación_bashful=Rand(3,4).

If horientación_bashful=8 then.

If sorteo=1 then horientación_bashful=1 else horientación_bashful=4.

Endif.

If horientación_bashful=5 then horientación_bashful=1.

If horientación_bashful=6 then horientación_bashful=3.

If horientación_bashful=2 or horientación_bashful=4 then.

If sorteo=1 then horientación_bashful=3 else horientación_bashful=1.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=2 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(4))<2 and abs(y_pokey-Posy(5))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=7 then horientación_pokey=Rand(3,4).

If horientación_pokey=8 then.

If sorteo=1 then horientación_pokey=1 else horientación_pokey=4.

Endif.

If horientación_pokey=5 then horientación_pokey=1.

If horientación_pokey=6 then horientación_pokey=3.

If horientación_pokey=2 or horientación_pokey=4 then.

If sorteo=1 then horientación_pokey=3 else horientación_pokey=1.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=2 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(7))<2 and abs(ypacman-Posy(5))<2 then.

If dirección_pacman=4 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx(7))<2 and abs(y_shadow-Posy(5))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=Rand(1,2).

If horientación_shadow=6 then horientación_shadow=Rand(2,3).

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=7 then horientación_shadow=3.

If horientación_shadow=4 or horientación_shadow=2 then.

If sorteo=1 then horientación_shadow=3 else horientación_shadow=1.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(3).
While dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(3).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(7))<2 and abs(y_spedy-Posy(5))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=Rand(1,2).

If horientación_spedy=6 then horientación_spedy=Rand(2,3).

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=7 then horientación_spedy=3.

If horientación_spedy=4 or horientación_spedy=2 then.

If sorteo=1 then horientación_spedy=3 else horientación_spedy=1.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(3).
While dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(3).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(7))<2 and abs(y_bashful-Posy(5))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=Rand(1,2).

If horientación_bashful=6 then horientación_bashful=Rand(2,3).

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=7 then horientación_bashful=3.

If horientación_bashful=4 or horientación_bashful=2 then.

If sorteo=1 then horientación_bashful=3 else horientación_bashful=1.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(3).
While dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(3).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(7))<2 and abs(y_pokey-Posy(5))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=Rand(1,2).

If horientación_pokey=6 then horientación_pokey=Rand(2,3).

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=7 then horientación_pokey=3.

If horientación_pokey=4 or horientación_pokey=2 then.

If sorteo=1 then horientación_pokey=3 else horientación_pokey=1.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(3).
While dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(3).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(1)+20)<2 and abs(ypacman-Posy(5))<2 then.

If dirección_pacman=4 then xpacman=posx(10).

Endif.

If abs(x_shadow-posx(1)+20)<2 and abs(y_shadow-Posy(5))<2 then.

Temp_velocidad_shadow=temp_velocidad_shadow/2.

If dirección_shadow=4 then x_shadow=posx(10).

Endif.

If abs(x_spedy-posx(1)+20)<2 and abs(y_spedy-Posy(5))<2 then.

Temp_velocidad_spedy=temp_velocidad_spedy/2.

If dirección_spedy=4 then x_spedy=posx(10).

Endif.

If abs(x_bashful-posx(1)+20)<2 and abs(y_bashful-Posy(5))<2 then.

Temp_velocidad_bashful=temp_velocidad_bashful/2.

If dirección_bashful=4 then x_bashful=posx(10).

Endif.

If abs(x_pokey-posx(1)+20)<2 and abs(y_pokey-Posy(5))<2 then.

Temp_velocidad_pokey=temp_velocidad_pokey/2.

If dirección_pokey=4 then x_pokey=posx(10).

Endif.

If abs(xpacman-posx(10)-20)<2 and abs(ypacman-Posy(5))<2 then.

If dirección_pacman=2 then xpacman=posx(1).

Endif.

If abs(x_shadow-posx(10)-20)<2 and abs(y_shadow-Posy(5))<2 then.

Temp_velocidad_shadow=temp_velocidad_shadow/2.

If dirección_shadow=2 then x_shadow=posx(1).

Endif.

If abs(x_spedy-posx(10)-20)<2 and abs(y_spedy-Posy(5))<2 then.

Temp_velocidad_spedy=temp_velocidad_spedy/2.

If dirección_spedy=2 then x_spedy=posx(1).

Endif.

If abs(x_bashful-posx(10)-20)<2 and abs(y_bashful-Posy(5))<2 then.

Temp_velocidad_bashful=temp_velocidad_bashful/2.

If dirección_bashful=2 then x_bashful=posx(1).

Endif.

If abs(x_pokey-posx(10)-20)<2 and abs(y_pokey-Posy(5))<2 then.

Temp_velocidad_pokey=temp_velocidad_pokey/2.

If dirección_pokey=2 then x_pokey=posx(1).

Endif.

Fila 6----------------------------------------------

If abs(xpacman-posx(4))<2 and abs(ypacman-Posy(6))<2 then.

If dirección_pacman=4 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(205) then dirección_pacman=2.

Endif.

If abs(x_shadow-posx(4))<2 and abs(y_shadow-Posy(6))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=Rand(1,2).

If horientación_shadow=6 then horientación_shadow=Rand(2,3).

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=7 then horientación_shadow=3.

If horientación_shadow=4 or horientación_shadow=2 then.

If sorteo=1 then horientación_shadow=3 else horientación_shadow=1.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(3).
While dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(3).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(4))<2 and abs(y_spedy-Posy(6))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=Rand(1,2).

If horientación_spedy=6 then horientación_spedy=Rand(2,3).

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=7 then horientación_spedy=3.

If horientación_spedy=4 or horientación_spedy=2 then.

If sorteo=1 then horientación_spedy=3 else horientación_spedy=1.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(3).
While dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(3).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(4))<2 and abs(y_bashful-Posy(6))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=Rand(1,2).

If horientación_bashful=6 then horientación_bashful=Rand(2,3).

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=7 then horientación_bashful=3.

If horientación_bashful=4 or horientación_bashful=2 then.

If sorteo=1 then horientación_bashful=3 else horientación_bashful=1.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(3).
While dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(3).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(4))<2 and abs(y_pokey-Posy(6))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=Rand(1,2).

If horientación_pokey=6 then horientación_pokey=Rand(2,3).

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=7 then horientación_pokey=3.

If horientación_pokey=4 or horientación_pokey=2 then.

If sorteo=1 then horientación_pokey=3 else horientación_pokey=1.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(3).
While dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(3).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(7))<2 and abs(ypacman-Posy(6))<2 then.

If dirección_pacman=2 then dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(7))<2 and abs(y_shadow-Posy(6))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=1.

If horientación_shadow=7 then horientación_shadow=Rand(3,4).

If horientación_shadow=8 then horientación_shadow=Rand(4).

If horientación_shadow=6 then horientación_shadow=3.

If horientación_shadow=4 or horientación_shadow=2 then.

If sorteo=1 then horientación_shadow=3 else horientación_shadow=1.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=2 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(7))<2 and abs(y_spedy-Posy(6))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=1.

If horientación_spedy=7 then horientación_spedy=Rand(3,4).

If horientación_spedy=8 then horientación_spedy=Rand(4).

If horientación_spedy=6 then horientación_spedy=3.

If horientación_spedy=4 or horientación_spedy=2 then.

If sorteo=1 then horientación_spedy=3 else horientación_spedy=1.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=2 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(7))<2 and abs(y_bashful-Posy(6))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=1.

If horientación_bashful=7 then horientación_bashful=Rand(3,4).

If horientación_bashful=8 then horientación_bashful=Rand(4).

If horientación_bashful=6 then horientación_bashful=3.

If horientación_bashful=4 or horientación_bashful=2 then.

If sorteo=1 then horientación_bashful=3 else horientación_bashful=1.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=2 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(7))<2 and abs(y_pokey-Posy(6))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=1.

If horientación_pokey=7 then horientación_pokey=Rand(3,4).

If horientación_pokey=8 then horientación_pokey=Rand(4).

If horientación_pokey=6 then horientación_pokey=3.

If horientación_pokey=4 or horientación_pokey=2 then.

If sorteo=1 then horientación_pokey=3 else horientación_pokey=1.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=2 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

Fila 7----------------------------------------------

If abs(xpacman-posx(4))<2 and abs(ypacman-Posy(7))<2 then.

If dirección_pacman=3 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(4))<2 and abs(y_shadow-Posy(7))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=Rand(2).

If horientación_shadow=6 then horientación_shadow=Rand(2).

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=8 then horientación_shadow=Rand(4).

If horientación_shadow=3 then.

If sorteo=1 then horientación_shadow=2 else horientación_shadow=4.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=3 then.

If sorteo=1 then horientación_shadow=4 else horientación_shadow=2.

Endif.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).

If dirección_shadow=3 then dirección_shadow=Rand(4).
While dirección_shadow=3 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(4))<2 and abs(y_spedy-Posy(7))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=Rand(2).

If horientación_spedy=6 then horientación_spedy=Rand(2).

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=8 then horientación_spedy=Rand(4).

If horientación_spedy=3 then.

If sorteo=1 then horientación_spedy=2 else horientación_spedy=4.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=3 then.

If sorteo=1 then horientación_spedy=4 else horientación_spedy=2.

Endif.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).

If dirección_spedy=3 then dirección_spedy=Rand(4).
While dirección_spedy=3 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(4))<2 and abs(y_bashful-Posy(7))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=Rand(2).

If horientación_bashful=6 then horientación_bashful=Rand(2).

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=8 then horientación_bashful=Rand(4).

If horientación_bashful=3 then.

If sorteo=1 then horientación_bashful=2 else horientación_bashful=4.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=3 then.

If sorteo=1 then horientación_bashful=4 else horientación_bashful=2.

Endif.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).

If dirección_bashful=3 then dirección_bashful=Rand(4).
While dirección_bashful=3 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(4))<2 and abs(y_pokey-Posy(7))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=Rand(2).

If horientación_pokey=6 then horientación_pokey=Rand(2).

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=8 then horientación_pokey=Rand(4).

If horientación_pokey=3 then.

If sorteo=1 then horientación_pokey=2 else horientación_pokey=4.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=3 then.

If sorteo=1 then horientación_pokey=4 else horientación_pokey=2.

Endif.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).

If dirección_pokey=3 then dirección_pokey=Rand(4).
While dirección_pokey=3 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(7))<2 and abs(ypacman-Posy(7))<2 then.

If dirección_pacman=3 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If abs(x_shadow-posx(7))<2 and abs(y_shadow-Posy(7))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=Rand(2).

If horientación_shadow=6 then horientación_shadow=2.

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=3 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(7))<2 and abs(y_spedy-Posy(7))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=Rand(2).

If horientación_spedy=6 then horientación_spedy=2.

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=3 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(7))<2 and abs(y_bashful-Posy(7))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=Rand(2).

If horientación_bashful=6 then horientación_bashful=2.

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=3 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(7))<2 and abs(y_pokey-Posy(7))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=Rand(2).

If horientación_pokey=6 then horientación_pokey=2.

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=3 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

Fila 8----------------------------------------------

If abs(xpacman-posx(2))<2 and abs(ypacman-Posy()<2 then.

Dirección_pacman=0.

If keydown(203) then dirección_pacman=4.

If keydown(20 then dirección_pacman=3.

Endif.

If abs(x_shadow-posx(2))<2 and abs(y_shadow-Posy()<2 then.

If dirección_shadow=2 then dirección_shadow=3.

If dirección_shadow=1 then dirección_shadow=4.

Endif.

If abs(x_spedy-posx(2))<2 and abs(y_spedy-Posy()<2 then.

If dirección_spedy=2 then dirección_spedy=3.

If dirección_spedy=1 then dirección_spedy=4.

Endif.

If abs(x_bashful-posx(2))<2 and abs(y_bashful-Posy()<2 then.

If dirección_bashful=2 then dirección_bashful=3.

If dirección_bashful=1 then dirección_bashful=4.

Endif.

If abs(x_pokey-posx(2))<2 and abs(y_pokey-Posy()<2 then.

If dirección_pokey=2 then dirección_pokey=3.

If dirección_pokey=1 then dirección_pokey=4.

Endif.

If abs(xpacman-posx(3))<2 and abs(ypacman-Posy()<2 then.

If dirección_pacman=4 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

If keydown(20 then dirección_pacman=3.

Endif.

If abs(x_shadow-posx(3))<2 and abs(y_shadow-Posy()<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=Rand(2).

If horientación_shadow=6 then horientación_shadow=Rand(2,3).

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=7 then horientación_shadow=3.

If horientación_shadow=4 or horientación_shadow=2 then.

If sorteo=1 then horientación_shadow=3 else horientación_shadow=1.

Endif.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(3).
While dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(3).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx(3))<2 and abs(y_spedy-Posy()<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=Rand(2).

If horientación_spedy=6 then horientación_spedy=Rand(2,3).

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=7 then horientación_spedy=3.

If horientación_spedy=4 or horientación_spedy=2 then.

If sorteo=1 then horientación_spedy=3 else horientación_spedy=1.

Endif.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(3).
While dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(3).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx(3))<2 and abs(y_bashful-Posy()<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=Rand(2).

If horientación_bashful=6 then horientación_bashful=Rand(2,3).

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=7 then horientación_bashful=3.

If horientación_bashful=4 or horientación_bashful=2 then.

If sorteo=1 then horientación_bashful=3 else horientación_bashful=1.

Endif.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(3).
While dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(3).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx(3))<2 and abs(y_pokey-Posy()<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=Rand(2).

If horientación_pokey=6 then horientación_pokey=Rand(2,3).

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=7 then horientación_pokey=3.

If horientación_pokey=4 or horientación_pokey=2 then.

If sorteo=1 then horientación_pokey=3 else horientación_pokey=1.

Endif.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(3).
While dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(3).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx()<2 and abs(ypacman-Posy()<2 then.

If dirección_pacman=2 then dirección_pacman=0.

If keydown(203) then dirección_pacman=4.

If keydown(20 then dirección_pacman=3.

If keydown(200) then dirección_pacman=1.

Endif.

If abs(x_shadow-posx()<2 and abs(y_shadow-Posy()<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 or horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow=6 or horientación_shadow=7 then horientación_shadow=3.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(3,4).
While dirección_shadow=2 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If abs(x_spedy-posx()<2 and abs(y_spedy-Posy()<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 or horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy=6 or horientación_spedy=7 then horientación_spedy=3.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(3,4).
While dirección_spedy=2 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If abs(x_bashful-posx()<2 and abs(y_bashful-Posy()<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 or horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful=6 or horientación_bashful=7 then horientación_bashful=3.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(3,4).
While dirección_bashful=2 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If abs(x_pokey-posx()<2 and abs(y_pokey-Posy()<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 or horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey=6 or horientación_pokey=7 then horientación_pokey=3.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(3,4).
While dirección_pokey=2 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If abs(xpacman-posx(9))<2 and abs(ypacman-Posy()<2 then.

Dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(20 then dirección_pacman=3.

Endif.

If abs(x_shadow-posx(9))<2 and abs(y_shadow-Posy()<2 then.

If dirección_shadow=4 then dirección_shadow=3.

If dirección_shadow=1 then dirección_shadow=2.

Endif.

If abs(x_spedy-posx(9))<2 and abs(y_spedy-Posy()<2 then.

If dirección_spedy=4 then dirección_spedy=3.

If dirección_spedy=1 then dirección_spedy=2.

Endif.

If abs(x_bashful-posx(9))<2 and abs(y_bashful-Posy()<2 then.

If dirección_bashful=4 then dirección_bashful=3.

If dirección_bashful=1 then dirección_bashful=2.

Endif.

If abs(x_pokey-posx(9))<2 and abs(y_pokey-Posy()<2 then.

If dirección_pokey=4 then dirección_pokey=3.

If dirección_pokey=1 then dirección_pokey=2.

Endif.

Fila 9----------------------------------------------

If (abs(xpacman-posx(2))<2 or abs(xpacman-posx(9))<2) and abs(ypacman-Posy(9))<2 then.

If dirección_pacman=3 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(2))<2 or abs(x_shadow-posx(9))<2) and abs(y_shadow-Posy(9))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=3 then horientación_shadow=4.

If horientación_shadow=6 then horientación_shadow=4.

If horientación_shadow=5 then horientación_shadow=Rand(2).

If horientación_shadow=7 then horientación_shadow=4.

If horientación_shadow=8 then horientación_shadow=1.

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(2).
While dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(2).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If (abs(x_spedy-posx(2))<2 or abs(x_spedy-posx(9))<2) and abs(y_spedy-Posy(9))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=3 then horientación_spedy=4.

If horientación_spedy=6 then horientación_spedy=4.

If horientación_spedy=5 then horientación_spedy=Rand(2).

If horientación_spedy=7 then horientación_spedy=4.

If horientación_spedy=8 then horientación_spedy=1.

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(2).
While dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(2).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If (abs(x_bashful-posx(2))<2 or abs(x_bashful-posx(9))<2) and abs(y_bashful-Posy(9))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=3 then horientación_bashful=4.

If horientación_bashful=6 then horientación_bashful=4.

If horientación_bashful=5 then horientación_bashful=Rand(2).

If horientación_bashful=7 then horientación_bashful=4.

If horientación_bashful=8 then horientación_bashful=1.

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(2).
While dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(2).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If (abs(x_pokey-posx(2))<2 or abs(x_pokey-posx(9))<2) and abs(y_pokey-Posy(9))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=3 then horientación_pokey=4.

If horientación_pokey=6 then horientación_pokey=4.

If horientación_pokey=5 then horientación_pokey=Rand(2).

If horientación_pokey=7 then horientación_pokey=4.

If horientación_pokey=8 then horientación_pokey=1.

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(2).
While dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(2).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

If (abs(xpacman-posx(3))<2 or abs(xpacman-posx(7))<2) and abs(ypacman-Posy(9))<2 then.

Dirección_pacman=0.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(3))<2 or abs(x_shadow-posx(7))<2) and abs(y_shadow-Posy(9))<2 then.

If dirección_shadow=2 then dirección_shadow=1.

If dirección_shadow=3 then dirección_shadow=4.

Endif.

If (abs(x_spedy-posx(3))<2 or abs(x_spedy-posx(7))<2) and abs(y_spedy-Posy(9))<2 then.

If dirección_spedy=2 then dirección_spedy=1.

If dirección_spedy=3 then dirección_spedy=4.

Endif.

If (abs(x_bashful-posx(3))<2 or abs(x_bashful-posx(7))<2) and abs(y_bashful-Posy(9))<2 then.

If dirección_bashful=2 then dirección_bashful=1.

If dirección_bashful=3 then dirección_bashful=4.

Endif.

If (abs(x_pokey-posx(3))<2 or abs(x_pokey-posx(7))<2) and abs(y_pokey-Posy(9))<2 then.

If dirección_pokey=2 then dirección_pokey=1.

If dirección_pokey=3 then dirección_pokey=4.

Endif.

If (abs(xpacman-posx(4))<2 or abs(xpacman-posx()<2) and abs(ypacman-Posy(9))<2 then.

Dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

Endif.

If (abs(x_shadow-posx(4))<2 or abs(x_shadow-posx()<2) and abs(y_shadow-Posy(9))<2 then.

If dirección_shadow=4 then dirección_shadow=1.

If dirección_shadow=3 then dirección_shadow=2.

Endif.

If (abs(x_spedy-posx(4))<2 or abs(x_spedy-posx()<2) and abs(y_spedy-Posy(9))<2 then.

If dirección_spedy=4 then dirección_spedy=1.

If dirección_spedy=3 then dirección_spedy=2.

Endif.

If (abs(x_bashful-posx(4))<2 or abs(x_bashful-posx()<2) and abs(y_bashful-Posy(9))<2 then.

If dirección_bashful=4 then dirección_bashful=1.

If dirección_bashful=3 then dirección_bashful=2.

Endif.

If (abs(x_pokey-posx(4))<2 or abs(x_pokey-posx()<2) and abs(y_pokey-Posy(9))<2 then.

If dirección_pokey=4 then dirección_pokey=1.

If dirección_pokey=3 then dirección_pokey=2.

Endif.

Fila 10----------------------------------------------

If (abs(xpacman-posx(5))<2 or abs(xpacman-posx(6))<2) and abs(ypacman-Posy(10))<2 then.

If dirección_pacman=3 then dirección_pacman=0.

If keydown(205) then dirección_pacman=2.

If keydown(200) then dirección_pacman=1.

If keydown(203) then dirección_pacman=4.

Endif.

If (abs(x_shadow-posx(5))<2 or abs(x_shadow-posx(6))<2) and abs(y_shadow-Posy(10))<2 then.

If bloqueo=0 then.

Bloqueo=bloqueo+20.

Sorteo=Rand(2).

Dirección_shadow=0.

If horientación_shadow=5 then horientación_shadow=Rand(4).

If horientación_shadow=8 then horientación_shadow=Rand(4).

If horientación_shadow<5 then dirección_shadow=horientación_shadow.

If dirección_shadow=dirección_inversa_shadow then dirección_shadow=Rand(4).
While dirección_shadow=3 or dirección_shadow=dirección_inversa_shadow.

Dirección_shadow=Rand(4).
Wend.

If status_fantasmas(1)=2 then dirección_shadow=1.

Endif.

Endif.

If (abs(x_spedy-posx(5))<2 or abs(x_spedy-posx(6))<2) and abs(y_spedy-Posy(10))<2 then.

If bloqueo2=0 then.

Bloqueo2=bloqueo2+20.

Sorteo=Rand(2).

Dirección_spedy=0.

If horientación_spedy=5 then horientación_spedy=Rand(4).

If horientación_spedy=8 then horientación_spedy=Rand(4).

If horientación_spedy<5 then dirección_spedy=horientación_spedy.

If dirección_spedy=dirección_inversa_spedy then dirección_spedy=Rand(4).
While dirección_spedy=3 or dirección_spedy=dirección_inversa_spedy.

Dirección_spedy=Rand(4).
Wend.

If status_fantasmas(2)=2 then dirección_spedy=1.

Endif.

Endif.

If (abs(x_bashful-posx(5))<2 or abs(x_bashful-posx(6))<2) and abs(y_bashful-Posy(10))<2 then.

If bloqueo3=0 then.

Bloqueo3=bloqueo3+20.

Sorteo=Rand(2).

Dirección_bashful=0.

If horientación_bashful=5 then horientación_bashful=Rand(4).

If horientación_bashful=8 then horientación_bashful=Rand(4).

If horientación_bashful<5 then dirección_bashful=horientación_bashful.

If dirección_bashful=dirección_inversa_bashful then dirección_bashful=Rand(4).
While dirección_bashful=3 or dirección_bashful=dirección_inversa_bashful.

Dirección_bashful=Rand(4).
Wend.

If status_fantasmas(3)=2 then dirección_bashful=1.

Endif.

Endif.

If (abs(x_pokey-posx(5))<2 or abs(x_pokey-posx(6))<2) and abs(y_pokey-Posy(10))<2 then.

If bloqueo4=0 then.

Bloqueo4=bloqueo4+20.

Sorteo=Rand(2).

Dirección_pokey=0.

If horientación_pokey=5 then horientación_pokey=Rand(4).

If horientación_pokey=8 then horientación_pokey=Rand(4).

If horientación_pokey<5 then dirección_pokey=horientación_pokey.

If dirección_pokey=dirección_inversa_pokey then dirección_pokey=Rand(4).
While dirección_pokey=3 or dirección_pokey=dirección_inversa_pokey.

Dirección_pokey=Rand(4).
Wend.

If status_fantasmas(4)=2 then dirección_pokey=1.

Endif.

Endif.

Fin de los ejes-.

Desplazamientos.

If pacman_status=1 then.

If dirección_pacman=1 and keydown(20 then dirección_pacman=3.

If dirección_pacman=2 and keydown(203) then dirección_pacman=4.

If dirección_pacman=3 and keydown(200) then dirección_pacman=1.

If dirección_pacman=4 and keydown(205) then dirección_pacman=2.

If dirección_pacman=1 then ypacman=ypacman-temp_velocidad.

If dirección_pacman=2 then xpacman=xpacman+temp_velocidad.

If dirección_pacman=3 then ypacman=ypacman+temp_velocidad.

If dirección_pacman=4 then xpacman=xpacman-temp_velocidad.

If dirección_shadow=1 then y_shadow=y_shadow-temp_velocidad_shadow.

If dirección_shadow=2 then x_shadow=x_shadow+temp_velocidad_shadow.

If dirección_shadow=3 then y_shadow=y_shadow+temp_velocidad_shadow.

If dirección_shadow=4 then x_shadow=x_shadow-temp_velocidad_shadow.

If dirección_spedy=1 then y_spedy=y_spedy-temp_velocidad_spedy.

If dirección_spedy=2 then x_spedy=x_spedy+temp_velocidad_spedy.

If dirección_spedy=3 then y_spedy=y_spedy+temp_velocidad_spedy.

If dirección_spedy=4 then x_spedy=x_spedy-temp_velocidad_spedy.

If dirección_bashful=1 then y_bashful=y_bashful-temp_velocidad_bashful.

If dirección_bashful=2 then x_bashful=x_bashful+temp_velocidad_bashful.

If dirección_bashful=3 then y_bashful=y_bashful+temp_velocidad_bashful.

If dirección_bashful=4 then x_bashful=x_bashful-temp_velocidad_bashful.

If dirección_pokey=1 then y_pokey=y_pokey-temp_velocidad_pokey.

If dirección_pokey=2 then x_pokey=x_pokey+temp_velocidad_pokey.

If dirección_pokey=3 then y_pokey=y_pokey+temp_velocidad_pokey.

If dirección_pokey=4 then x_pokey=x_pokey-temp_velocidad_pokey.

Endif.

Pantalla.

Impresión en pantalla.

Drawimage pantalla,182,1,0.

Dibujando bolas---------------------------------------------------------------------------------------------

For z=1 todo 26.

If z<>13 and z<>14 then.

Drawimage bolas(z), posx(1)+(z*17.35)-8, Posy(1)+10.

If ImagesCollide (bolas(z), posx(1)+(z*17.35)-8, Posy(1)+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 26 bolas.

For z=1 todo 26.

Drawimage bolas(z+26), posx(1)+(z*17.35)-8, Posy(2)+10.

If ImagesCollide (bolas(z+26), posx(1)+(z*17.35)-8, Posy(2)+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z+26)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Next ;llevo 50 bolas.

For z=1 todo 26.

If z<>7 and z<>8 and z<>13 and z<>14 and z<>19 and z<>20 then.

Drawimage bolas(z+52), posx(1)+(z*17.35)-8, Posy(3)+10.

If ImagesCollide (bolas(z+52), posx(1)+(z*17.35)-8, Posy(3)+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z+52)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 70 bolas.

For z=1 todo 26.

If z<>13 and z<>14 then.

Drawimage bolas(z+7, posx(1)+(z*17.35)-8, Posy(7)+10.

If ImagesCollide (bolas(z+7, posx(1)+(z*17.35)-8, Posy(7)+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z+7 =copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 94 bolas.

For z=1 todo 26.

If z<>1 and z<>4 and z<>5 and z<>22 and z<>23 and z<>26 and z<>13 and z<>14 then.

Drawimage bolas(z+104), posx(1)+(z*17.35)-8, Posy(+10.

If ImagesCollide (bolas(z+104), posx(1)+(z*17.35)-8, Posy(+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z+104)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 112 bolas.

For z=1 todo 26.

If z<>7 and z<>8 and z<>13 and z<>14 and z<>19 and z<>20 then.

Drawimage bolas(z+130), posx(1)+(z*17.35)-8, Posy(9)+10.

If ImagesCollide (bolas(z+130), posx(1)+(z*17.35)-8, Posy(9)+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z+130)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 132 bolas.

For z=1 todo 26.

Drawimage bolas(z+156), posx(1)+(z*17.35)-8, Posy(10)+10.

If ImagesCollide (bolas(z+156), posx(1)+(z*17.35)-8, Posy(10)+10,0, Pacman,xpacman, ypacman,14) then.

Bolas(z+156)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Next ;llevo 156 bolas.

Bolas grandes.

Drawimage granbolas(1), posx(1)+9, Posy(1)+10+(2*18.17).

If ImagesCollide (granbolas(1), posx(1)+9, Posy(1)+10+(2*18.17),0, Pacman,xpacman, ypacman,14) then.

Granbolas(1)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+50.

Stopchannel(fantasmas_azules).

Playsound come : status_fantasma=0 : fantasmas_azules=playsound(azules) : stopchannel(andando).

Contador_velocidad=0.

Contador_fantasmas=0.

Temp_frame=26.

If status_fantasmas(1)=1 then dirección_shadow=dirección_inversa_shadow.

If status_fantasmas(2)=1 then dirección_spedy=dirección_inversa_spedy.

If status_fantasmas(3)=1 then dirección_bashful=dirección_inversa_bashful.

If status_fantasmas(4)=1 then dirección_pokey=dirección_inversa_pokey.

For n=1 todo 4.

If status_fantasmas(n)=1 then status_fantasmas(n)=0.

Next.

Endif.

Drawimage granbolas(2), posx(10)+7, Posy(1)+10+(2*18.17).

If ImagesCollide (granbolas(2), posx(10)+9, Posy(1)+10+(2*18.17),0, Pacman,xpacman, ypacman,14) then.

Granbolas(2)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+50.

Stopchannel(fantasmas_azules).

Playsound come : status_fantasma=0 : fantasmas_azules=playsound(azules) : stopchannel(andando).

Contador_velocidad=0.

Contador_fantasmas=0.

Temp_frame=26.

If status_fantasmas(1)=1 then dirección_shadow=dirección_inversa_shadow.

If status_fantasmas(2)=1 then dirección_spedy=dirección_inversa_spedy.

If status_fantasmas(3)=1 then dirección_bashful=dirección_inversa_bashful.

If status_fantasmas(4)=1 then dirección_pokey=dirección_inversa_pokey.

For n=1 todo 4.

If status_fantasmas(n)=1 then status_fantasmas(n)=0.

Next.

Endif.

Drawimage granbolas(3), posx(1)+(1*17.35)-8, Posy(+10.

If ImagesCollide (granbolas(3), posx(1)+(1*17.35)-8, Posy(+10,0, Pacman,xpacman, ypacman,14) then.

Granbolas(3)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+50.

Stopchannel(fantasmas_azules).

Playsound come : status_fantasma=0 : fantasmas_azules=playsound(azules) : stopchannel(andando).

Contador_velocidad=0.

Contador_fantasmas=0.

Temp_frame=26.

If status_fantasmas(1)=1 then dirección_shadow=dirección_inversa_shadow.

If status_fantasmas(2)=1 then dirección_spedy=dirección_inversa_spedy.

If status_fantasmas(3)=1 then dirección_bashful=dirección_inversa_bashful.

If status_fantasmas(4)=1 then dirección_pokey=dirección_inversa_pokey.

For n=1 todo 4.

If status_fantasmas(n)=1 then status_fantasmas(n)=0.

Next.

Endif.

Drawimage granbolas(4), posx(10)+8, Posy(+10.

If ImagesCollide (granbolas(4), posx(10)+8, Posy(+10,0, Pacman,xpacman, ypacman,14) then.

Granbolas(4)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+50.

Stopchannel(fantasmas_azules).

Playsound come : status_fantasma=0 : fantasmas_azules=playsound(azules) : stopchannel(andando).

Contador_velocidad=0.

Contador_fantasmas=0.

Temp_frame=26.

If status_fantasmas(1)=1 then dirección_shadow=dirección_inversa_shadow.

If status_fantasmas(2)=1 then dirección_spedy=dirección_inversa_spedy.

If status_fantasmas(3)=1 then dirección_bashful=dirección_inversa_bashful.

If status_fantasmas(4)=1 then dirección_pokey=dirección_inversa_pokey.

For n=1 todo 4.

If status_fantasmas(n)=1 then status_fantasmas(n)=0.

Next.

Endif.

For z=1 todo 27;comienza el eje Y.

If z=1 or z=3 or z=5 or z=6 or z=20 or z=21 or z=26 or z=27 then.

Drawimage bolas(z+182), posx(1)+9, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+182), posx(1)+9, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+182)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 164 bolas.

For z=1 todo 27.

If z=24 or z=23 then.

Drawimage bolas(z+209), posx(2)+9, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+209), posx(2)+9, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+209)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 166 bolas.

For z=1 todo 27.

If z=1 or z=2 or z=3 or z=5 or z=6 or (z>7 and z<19) or z=20 or z=21 or z=23 or z=24 then.

Drawimage bolas(z+236), posx(3)+8, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+236), posx(3)+8, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+236)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 186 bolas.

For z=1 todo 27.

If z=24 or z=23 or z=5 or z=6 then.

Drawimage bolas(z+263), posx(4)+7, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+263), posx(4)+6, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+263)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 190 bolas.

For z=1 todo 27.

If z=1 or z=2 or z=3 or z=26 or z=27 or z=20 or z=21 then.

Drawimage bolas(z+290), posx(5)+7, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+290), posx(5)+6, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+290)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 197 bolas.

For z=1 todo 27.

If z=1 or z=2 or z=3 or z=26 or z=27 or z=20 or z=21 then.

Drawimage bolas(z+317), posx(6)+6, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+317), posx(6)+5, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+317)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 204 bolas.

For z=1 todo 27.

If z=24 or z=23 or z=5 or z=6 then.

Drawimage bolas(z+344), posx(7)+6, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+344), posx(7)+5, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+344)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 208 bolas.

For z=1 todo 27.

If z=1 or z=2 or z=3 or z=5 or z=6 or (z>7 and z<19) or z=20 or z=21 or z=23 or z=24 then.

Drawimage bolas(z+371), posx(+6, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+371), posx(+5, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+371)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 228 bolas.

For z=1 todo 27.

If z=24 or z=23 then.

Drawimage bolas(z+39, posx(9)+5, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+39, posx(9)+5, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+39 =copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 230 bolas.

For z=1 todo 27.

If z=1 or z=3 or z=5 or z=6 or z=20 or z=21 or z=26 or z=27 then.

Drawimage bolas(z+425), posx(10)+7, Posy(1)+10+(z*18.17).

If ImagesCollide (bolas(z+425), posx(10)+5, Posy(1)+10+(z*18.17),0, Pacman,xpacman, ypacman,14) then.

Bolas(z+425)=copyimage (nullimage) :total_bolas=total_bolas-1 : puntos=puntos+10.

Playsound come.

Contador_velocidad=0.

Endif.

Endif.

Next ;llevo 240 bolas.

Frutas---------------------------

If (fruta_activa=1 or fruta_activa=2) and contador_fruta>1000 then.

Drawimage frutas, posx(5)+26, Posy(6), fruta_level.

If ImagesCollide (frutas, posx(5)+26, Posy(6),0, Pacman,xpacman, ypacman,14) then.

Puntos=puntos+puntos_fruta.

Fruta_activa=fruta_activa+1.

Contador_fruta=0.

Playsound come_fruta.

Display_puntos=1.

Endif.

Endif.

Osd.

If vidas>0 then drawimage Pacman,xpacman, ypacman, frame_pacman.

If Skipframe_muerte<60 and vidas>0 then.

Drawimage shadow,x_shadow, y_shadow, frame_shadow.

Drawimage speedy,x_spedy, y_spedy, frame_spedy.

Drawimage bashful,x_bashful, y_bashful, frame_bashful.

Drawimage pokey,x_pokey, y_pokey, frame_pokey.

Endif.

If display_puntos>0 then.

Drawimage frutas, posx(5)+26, Posy(6), fruta_level+8.

Endif.

If display_puntos_fantasmas>0 then.

Drawimage Pacman, temp_x, temp_y, temp_frame.

If display_puntos_fantasmas=10 then delay 700.

Endif.

For z=1 todo level.

If z=1 or z=2 then x=z.

If z=3 or z=4 then x=3.

If z=5 or z=6 then x=4.

If z=7 or z=8 then x=5.

If z=9 or z=10 then x=6.

If z=11 or z=12 then x=7.

If z>12 then x=0.

Drawimage frutas, posx(10)-z*32, Posy(10)+40,x.

Next.

For z=2 todo vidas.

If vidas>1 then drawimage Pacman, posx(1)+z*32-75, Posy(10)+45,15.

Next.

Score.

If puntos>récord then récord=puntos.

Color 200,200,200.

Text 90,10,score,true.

Text 90,40, puntos,true.

Text 90,80,hi-score,true.

Text 90,110, récord,true.

Text 100, Posy(10),level, true.

Text 90, Posy(10)+25,int(level),true.

Flushkeys().

If vidas=0 then.

Fileout=writefile (data, dat).
Writeint(fileout, récord).

Closefile (fileout).

Color 255,255,0 topchannel(andando): text posx(5)-32, Posy(6)+8,game over :flip : delay 1000 :waitkey() : goto menú.

Endif.
Waittimer(frametimer).

Flip.
Wend.

Fin del bucle-------

End.

Animación.

Animación del Pacman.

Skipframe_pacman=skipframe1/7.

If Skipframe_fantasma>15 and dirección_shadow=4 then frame_shadow=4.

If Skipframe_fantasma>15 and dirección_shadow=1 then frame_shadow=0.

If Skipframe_fantasma>15 and dirección_shadow=2 then frame_shadow=6.

If Skipframe_fantasma>15 and dirección_shadow=3 then frame_shadow=2.

If Skipframe_fantasma<15 and dirección_shadow=4 then frame_shadow=5.

If Skipframe_fantasma<15 and dirección_shadow=1 then frame_shadow=1.

If Skipframe_fantasma<15 and dirección_shadow=2 then frame_shadow=7.

If Skipframe_fantasma<15 and dirección_shadow=3 then frame_shadow=3.

If Skipframe_fantasma<15 and status_fantasmas(1)=0 then frame_shadow=32.

If Skipframe_fantasma>15 and status_fantasmas(1)=0 then frame_shadow=33.

If Skipframe_fantasma<15 and status_fantasmas(1)=0 and contador_fantasmas>600 then frame_shadow=33.

If Skipframe_fantasma>15 and status_fantasmas(1)=0 and contador_fantasmas>600 then frame_shadow=34.

If eyes(1)=1 and dirección_shadow=1 then frame_shadow=40.

If eyes(1)=1 and dirección_shadow=3 then frame_shadow=41.

If eyes(1)=1 and dirección_shadow=4 then frame_shadow=42.

If eyes(1)=1 and dirección_shadow=2 then frame_shadow=43.

If Skipframe_fantasma>15 and dirección_spedy=4 then frame_spedy=4+8.

If Skipframe_fantasma>15 and dirección_spedy=1 then frame_spedy=0+8.

If Skipframe_fantasma>15 and dirección_spedy=2 then frame_spedy=6+8.

If Skipframe_fantasma>15 and dirección_spedy=3 then frame_spedy=2+8.

If Skipframe_fantasma<15 and dirección_spedy=4 then frame_spedy=5+8.

If Skipframe_fantasma<15 and dirección_spedy=1 then frame_spedy=1+8.

If Skipframe_fantasma<15 and dirección_spedy=2 then frame_spedy=7+8.

If Skipframe_fantasma<15 and dirección_spedy=3 then frame_spedy=3+8.

If Skipframe_fantasma<15 and status_fantasmas(2)=0 then frame_spedy=32.

If Skipframe_fantasma>15 and status_fantasmas(2)=0 then frame_spedy=33.

If Skipframe_fantasma<15 and status_fantasmas(2)=0 and contador_fantasmas>600 then frame_spedy=33.

If Skipframe_fantasma>15 and status_fantasmas(2)=0 and contador_fantasmas>600 then frame_spedy=34.

If eyes(2)=1 and dirección_spedy=1 then frame_spedy=40.

If eyes(2)=1 and dirección_spedy=3 then frame_spedy=41.

If eyes(2)=1 and dirección_spedy=4 then frame_spedy=42.

If eyes(2)=1 and dirección_spedy=2 then frame_spedy=43.

If Skipframe_fantasma>15 and dirección_bashful=4 then frame_bashful=4+16.

If Skipframe_fantasma>15 and dirección_bashful=1 then frame_bashful=0+16.

If Skipframe_fantasma>15 and dirección_bashful=2 then frame_bashful=6+16.

If Skipframe_fantasma>15 and dirección_bashful=3 then frame_bashful=2+16.

If Skipframe_fantasma<15 and dirección_bashful=4 then frame_bashful=5+16.

If Skipframe_fantasma<15 and dirección_bashful=1 then frame_bashful=1+16.

If Skipframe_fantasma<15 and dirección_bashful=2 then frame_bashful=7+16.

If Skipframe_fantasma<15 and dirección_bashful=3 then frame_bashful=3+16.

If Skipframe_fantasma<15 and status_fantasmas(3)=0 then frame_bashful=32.

If Skipframe_fantasma>15 and status_fantasmas(3)=0 then frame_bashful=33.

If Skipframe_fantasma<15 and status_fantasmas(3)=0 and contador_fantasmas>600 then frame_bashful=33.

If Skipframe_fantasma>15 and status_fantasmas(3)=0 and contador_fantasmas>600 then frame_bashful=34.

If eyes(3)=1 and dirección_bashful=1 then frame_bashful=40.

If eyes(3)=1 and dirección_bashful=3 then frame_bashful=41.

If eyes(3)=1 and dirección_bashful=4 then frame_bashful=42.

If eyes(3)=1 and dirección_bashful=2 then frame_bashful=43.

If Skipframe_fantasma>15 and dirección_pokey=4 then frame_pokey=4+24.

If Skipframe_fantasma>15 and dirección_pokey=1 then frame_pokey=0+24.

If Skipframe_fantasma>15 and dirección_pokey=2 then frame_pokey=6+24.

If Skipframe_fantasma>15 and dirección_pokey=3 then frame_pokey=2+24.

If Skipframe_fantasma<15 and dirección_pokey=4 then frame_pokey=5+24.

If Skipframe_fantasma<15 and dirección_pokey=1 then frame_pokey=1+24.

If Skipframe_fantasma<15 and dirección_pokey=2 then frame_pokey=7+24.

If Skipframe_fantasma<15 and dirección_pokey=3 then frame_pokey=3+24.

If Skipframe_fantasma<15 and status_fantasmas(4)=0 then frame_pokey=32.

If Skipframe_fantasma>15 and status_fantasmas(4)=0 then frame_pokey=33.

If Skipframe_fantasma<15 and status_fantasmas(4)=0 and contador_fantasmas>600 then frame_pokey=33.

If Skipframe_fantasma>15 and status_fantasmas(4)=0 and contador_fantasmas>600 then frame_pokey=34.

If eyes(4)=1 and dirección_pokey=1 then frame_pokey=40.

If eyes(4)=1 and dirección_pokey=3 then frame_pokey=41.

If eyes(4)=1 and dirección_pokey=4 then frame_pokey=42.

If eyes(4)=1 and dirección_pokey=2 then frame_pokey=43.

If pacman_status=1 then.

If dirección_pacman=2 then.

If Skipframe_pacman<1 then frame_pacman=2.

If Skipframe_pacman=1 then frame_pacman=3.

If Skipframe_pacman=2 then frame_pacman=4.

Endif.

If dirección_pacman=4 then.

If Skipframe_pacman<1 then frame_pacman=2.

If Skipframe_pacman=1 then frame_pacman=0.

If Skipframe_pacman=2 then frame_pacman=1.

Endif.

If dirección_pacman=1 then.

If Skipframe_pacman<1 then frame_pacman=2.

If Skipframe_pacman=1 then frame_pacman=5.

If Skipframe_pacman=2 then frame_pacman=6.

Endif.

If dirección_pacman=3 then.

If Skipframe_pacman<1 then frame_pacman=2.

If Skipframe_pacman=1 then frame_pacman=8.

If Skipframe_pacman=2 then frame_pacman=9.

Endif.

Endif.

If pacman_status=0 then.

Skipframe_muerte=skipframe_muerte+1.

If Skipframe_muerte=50 then frame_pacman=16 : playsound dead.

If Skipframe_muerte=60 then frame_pacman=17.

If Skipframe_muerte=70 then frame_pacman=18.

If Skipframe_muerte=80 then frame_pacman=19.

If Skipframe_muerte=90 then frame_pacman=20.

If Skipframe_muerte=100 then frame_pacman=21.

If Skipframe_muerte=110 then frame_pacman=22.

If Skipframe_muerte=120 then frame_pacman=23.

If Skipframe_muerte=130 then frame_pacman=24.

If Skipframe_muerte=140 then frame_pacman=25.

If Skipframe_muerte=160 then playsound pip.

If Skipframe_muerte=170 then frame_pacman=26 : playsound pip.

If Skipframe_muerte=200 then.

Frame_pacman=26 : delay 1000 :skipframe_muerte=0 :vidas=vidas-1.

If contador_fruta>1000 then fruta_activa=fruta_activa+1.

Goto newlive.

Endif.

Endif.
[/code]

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #175109

Damian1985 - 28/04/2013 21:56
Esta esto un poco abandonado
Danzabia - 04/10/2013 16:25
Hola Compañeros.

Soy nuevo en esto de BlitzBasic 3D y tengo muchas ganas de aprender. Saludos.
Turriano - 05/10/2013 00:13
Aprovecho que se reabre el foro, para preguntar si sabéis algo de eso. Gracias a todos.