graficos y movimiento

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Avatar de Usuario
jordigahan
Jack The Nipper
Mensajes: 184
Registrado: Mar Oct 30, 2007 11:10 pm
Ubicación: qui lo xa
Contactar:

graficos y movimiento

Mensaje por jordigahan » Sab Nov 17, 2007 3:38 pm

para el juego que estoy desaroyando se me presentan varios problemas, haber si podeis echarme una mano:

1 - estoy realizando graficos con plot y draw y queda bastante bien, pero cuando lo ejecuto tarda bastante en generarse todo el dibujo, hay alguna forma de que se genere todo instantaneamente ?

2 - para el movimiento, he probado varias cosas, hacer cls entre frame y frame, el efecto es bastante bueno, pero si hago eso, me cargo todo el decorado, asi que esta opcion la estoy descartando. como alternativa se me ocurrio ir cambiando de color el personaje con ink cada frame , pero me parece bastante laborioso y tengo dudas de que salga bien.
Imagen
Respuestas Acertadas: 3

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: graficos y movimiento

Mensaje por mcleod_ideafix » Sab Nov 17, 2007 4:49 pm

jordigahan escribió:1 - estoy realizando graficos con plot y draw y queda bastante bien, pero cuando lo ejecuto tarda bastante en generarse todo el dibujo, hay alguna forma de que se genere todo instantaneamente ?

En BASIC hay pocas cosas "instantáneas". Lo más rápido que yo sepa es imprimir caracteres, y para ello puedes o bien usar GDU's, o bien redefinir por completo el juego de caracteres del Spectrum (o las dos cosas) y así tener más variedad.

jordigahan escribió:2 - para el movimiento, he probado varias cosas, hacer cls entre frame y frame, el efecto es bastante bueno, pero si hago eso, me cargo todo el decorado, asi que esta opcion la estoy descartando. como alternativa se me ocurrio ir cambiando de color el personaje con ink cada frame , pero me parece bastante laborioso y tengo dudas de que salga bien.

Yo usé una técnica parecida a eso de cambiar el INK del personaje: se basa en cómo presentan la información las pantallas LCD de los antigoos Game&Watch. Echale un vistazo al código de "Fireman" de uno de los concursos de BASIC de Radastan (el del 2005 o 2006, no recuerdo ahora bien).
Basicamente consiste en que todos los movimientos los pinto de antemano, pero con el mismo ink y el mismo paper, con lo que quedan invisibles. Cuando quiero mostrar una posición concreta, en donde hay un "fotograma" del personaje, simplemente cambio los atributos (POKE es lo más rápido) de la parte de pantalla que corresponde a esa posición, y voila! el personaje aparece.
Para ver el truco en ese juego, carga por separado la última pantalla del juego y quítale los atributos. Verás a qué me refiero. Después carga el juego completo y échale un vistazo jugando, y lo comprenderás mejor.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
jordigahan
Jack The Nipper
Mensajes: 184
Registrado: Mar Oct 30, 2007 11:10 pm
Ubicación: qui lo xa
Contactar:

Re: graficos y movimiento

Mensaje por jordigahan » Sab Nov 17, 2007 5:35 pm

lo siento, creo que me pierdo con lo de los atributos y los poke, mi nivel no es tan alto. podris ponerme un ejemplo sencillo para que lo vea mejor como funciona?
Imagen
Respuestas Acertadas: 3

Avatar de Usuario
compiuter
Sabreman
Mensajes: 337
Registrado: Vie May 18, 2007 9:00 pm
Ubicación: Palma de Mallorca

Re: graficos y movimiento

Mensaje por compiuter » Dom Nov 18, 2007 11:46 am

10 PRINT "A"
20 POKE 22528,BIN 00110010
McLeod se refiere al archivo de atributos,
que va desde 22528 -linea 0-
hasta 23295 -linea 23-
(700 y pico posiciones)
mas adelante.
Lo que tienes que hacer es pokear una de esas posiciones
con un numero de 0 a 255 que en binario se ve más claro el
color que sacara.
flash=0 brigh=0 paper=110 ink=010
esto te pinta sin flash sin brillo
con papel amarillo y tinta roja
El pintaba primero todo el dibujo digamos "ABCDE"
y luego pintaba los atributos de ese dibujo en blanco-blanco.
Así que luego solo tenía que colorear dicho dibujo,
que lleva menos tiempo (en basic el tiempo cuenta).
El dibujo de abajo "ABCDE" nunca se borra, solo se le cambia el color.
Es un buen sistema y es rápido.
Un saludo.

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: graficos y movimiento

Mensaje por na_th_an » Dom Nov 18, 2007 12:52 pm

Te recomiendo que te bajes mi juego "Phantomasa in the land of the Grunge Wizards", la versión 1.0 que ganó en concurso libre 2006 de bytemaniacos organizado por Radastan. Está escrito en BASIC y lleva el código fuente. Ahí puedes ver cómo se hace para mover "sprites" por la pantalla.

Aquí:

http://www.bytemaniacos.com/html/libre2006.htm

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Re: graficos y movimiento

Mensaje por sromero » Lun Nov 19, 2007 11:57 am

Animar gráficos con plot y draw es inviable.

Tendrás que hacerlo con UDGs (¿viste mi respuesta en tu hilo de BASIC?) o con cambios de atributos...

saludos.
NoP / Compiler

Avatar de Usuario
jordigahan
Jack The Nipper
Mensajes: 184
Registrado: Mar Oct 30, 2007 11:10 pm
Ubicación: qui lo xa
Contactar:

Re: graficos y movimiento

Mensaje por jordigahan » Lun Nov 19, 2007 12:46 pm

gracias por las respuestas, ya le estoy pillando el truco a esto de hacer caracteres predefinidos.

por cierto, si que vi el post, muchas gracias, hay muchas cosas interesantes que mirar.
Imagen
Respuestas Acertadas: 3

Avatar de Usuario
jordigahan
Jack The Nipper
Mensajes: 184
Registrado: Mar Oct 30, 2007 11:10 pm
Ubicación: qui lo xa
Contactar:

Re: graficos y movimiento

Mensaje por jordigahan » Mar Nov 20, 2007 12:17 pm

vale, esto funciona bastante bien con sprites pequeños, pero supongamos que quiero mover un grafivo grande, como por ejemplo el movimiento del coche del outrun. si ya se que en realidad no es el coche el que se mueve, sino la pantalla y que el coche solo cambia de posicion, pero aun asi, como podria dibujar un grafico tan grande y que fuera instantaneo ?
Imagen
Respuestas Acertadas: 3

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Re: graficos y movimiento

Mensaje por sromero » Mar Nov 20, 2007 12:30 pm

jordigahan escribió:vale, esto funciona bastante bien con sprites pequeños, pero supongamos que quiero mover un grafivo grande, como por ejemplo el movimiento del coche del outrun. si ya se que en realidad no es el coche el que se mueve, sino la pantalla y que el coche solo cambia de posicion, pero aun asi, como podria dibujar un grafico tan grande y que fuera instantaneo ?


Lo que estás comentando es incompatible con BASIC.

BASIC = juegos con UDGs, o con cambios de atributos, no le pidas más.

Para mover sprites grandes, o muchos sprites, tienes que hacerlo en C+ASM o ASM, no hay vuelta de hoja, no puedes pretender programar un juego con la fluidez de los "profesionales" en un lenguaje diseñado para aprender a programar, y en un ordenador de 3.59Mhz...

Se pueden hacer cosillas en BASIC, y juegos de muchos tipos, pero "sprites", "fluidez" y "velocidad" no se llevan bien con "BASIC".
NoP / Compiler

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: graficos y movimiento

Mensaje por na_th_an » Mar Nov 20, 2007 12:46 pm

Echadle un ojo a http://tcyr.wordpress.com/2007/11/20/pr ... -spectrum/ y leeros mis artículos de la ZXSF :)

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Re: graficos y movimiento

Mensaje por Gandulf » Mar Nov 20, 2007 1:10 pm

Estoy con sromero. Si quieres hacer juegos potables en basic cambia de género. Haz puzzles o juegos sencillos técnicamente. Si haces otro tipo de juegos el resultado no será bueno o al menos no tendrá nada que ver con los juegos comerciales.

Hacer un "outrun" o un "enduro racer" en basic sin código de apoyo es inviable. Ni aunque lo compiles obtendrás un buen resultado.
Un saludo,

Gandulf

Avatar de Usuario
compiuter
Sabreman
Mensajes: 337
Registrado: Vie May 18, 2007 9:00 pm
Ubicación: Palma de Mallorca

Re: graficos y movimiento

Mensaje por compiuter » Mar Nov 20, 2007 2:34 pm

Totalmente de acuerdo, salvo que utilices machine coder 2 como compilador basic, ya que te da muchísima velocidad pero tiene dos grandes inconvenientes. Debes programar pensando en los comandos basic que debes adaptar o excluir, y en nada que crece el programa no te cabe y desbordas la memoria que te queda para hacer tus cosas, si te conformas con algo menos de velocidad y más flexibilidad (menos velocidad y menos comandos excluidos o inadaptados) puedes probar machine coder 3 o la gran alternativa es hisoft basic para 128k que según creo reubica las cosas en los bancos de RAM y consigues más memoria para programar. Esto viene a cuento porque yo no se programar en C y estoy aprendiendo ASM de Z80, el gran lenguaje del spectrum, pero para un juego rápido y sencillo son utilidades que pueden valer (vease el deep scan de Beyker).

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: graficos y movimiento

Mensaje por na_th_an » Mar Nov 20, 2007 4:24 pm

Hisoft BASIC es casi 99% compatible con el idioma del intérprete, funciona en modo 128 usando el disco RAM para que puedas usar toda la RAM del 48 para tí, puedes elegir el tipo de las variables para que sean enteras o de punto flotante (de 4 bytes, creo) y mil cosas más. Es el que he usado yo para compilar mis BASICs la mayoría de las veces. Nanako in CJMC o Phantomasa 1 están hechos usando este compilador.

En el último número de ZXSF tenéis un artículo mío donde se explica cómo manejarlo.

Avatar de Usuario
jordigahan
Jack The Nipper
Mensajes: 184
Registrado: Mar Oct 30, 2007 11:10 pm
Ubicación: qui lo xa
Contactar:

Re: graficos y movimiento

Mensaje por jordigahan » Lun Nov 26, 2007 12:02 am

na_th_an escribió:Echadle un ojo a http://tcyr.wordpress.com/2007/11/20/pr ... -spectrum/ y leeros mis artículos de la ZXSF :)

he estado mirando el codigo y lo entiendo todo bastante bien, pero no cosigo pillarle el truco a lo de cambiar los atributos.

podrias ponerme un pequeño ejemplo con este listado?

10 let a=1
20 print a
Imagen
Respuestas Acertadas: 3

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: graficos y movimiento

Mensaje por na_th_an » Lun Nov 26, 2007 12:23 pm

No entiendo qué tiene que ver ese listado con cambiar los atributos :? Le estás asignado un valor a A y luego impriméndolo. ¿Podrías explicarte mejor?

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados