|
#1
|
||||
|
||||
|
Hola, estoy creando un juego de pokemon, la idea es que sea similar a los de gameboy, pero con historia, personajes y varias cosas mas distintas, la idea es ir agregando progresivamente lo que cualquiera hubiese querido ver en un juego oficial.
El juego esta siendo realizado completamente desde cero, sin ayuda de hack roms, ni programas como gamemaker ni nada igual. El lenguaje de programación que utilizo es Basic4GL ( para mayor informacion: www.basic4gl.net ). No busco ayudantes, ni diseñadores de sprites ni nada similar, sin embargo quien quiera aportar con ideas realizables o cambios, puede hacerlo. Este juego sera open source, por ahora solo publicaré una imagen y el archivo que pueden descargar para probar lo que llevo del juego (es poco, la idea es avanzar dia a dia y tengo un pequeño tiempo diario para eso). El código lo publicaré solo si hay gente interesada en eso. Tengan en cuenta que el codigo lo publicaría junto a comentarios que ayuden a entenderlo, y si quieren cooperar con código o quieren modificarlo, basta con que descarguen Basic4GL gratuitamente desde la página que indiqué anteriormente y ponerse a experimentar. Asi todos entenderan un poco como esta programado el juego, y podran incluso crear otros juegos similares, basta con entender como se programa (no es dificil). Bueno, lo que llevo del juego lo pueden descargar y probar desde aqui: http://www.mediafire.com/?vb0ms13haco9nrz Finalmente, una imagen del juego: ![]() Saludos!!! Última edición por techmachine fecha: 09-ene-2012 a las 05:15. |
|
#2
|
||||
|
||||
|
Lamento el multipost, pero no veo mucho entusiasmo por aqui (o sera que el tema bajó demasiado y no lo han visto).
Creo que postearé de todas formas el código fuente y seguiré avanzandolo, lo pegaré por partes para poder agregarle una explicación previa. Comenzamos. Lo primero que debemos hacer, es crear el fondo. Para esta prueba, solo haremos pasto y algunas pequeñas plantas. Ocuparemos para esto, un tilemap (grilla de sprites). Primero debemos crear dicha grilla, por lo que ocuparemos por ahora una matriz de 19x19. Código:
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
dim tiles(19)(19), x, y, tileMap
for y = 0 to 19
for x = 0 to 19
read tiles (x)(y)
next
next
Luego agregamos las siguientes lineas: Código:
tileMap = NewTileMap (LoadTexStrip("data\sprites\floors\floor08.png", 32, 32))
SprSetTiles (tiles)
![]() Debido a la ubicacion, ya que comienza de 0, al número 0 se le asigna la imagen correspondiente a la planta, y al número 1 se le asigna el pasto. De esta forma podemos crear el escenario modificando las lineas de DATA. Seguimos: Código:
dim ashdir dim ash dim posx, posy La variable ASH correspondra al sprite de nuestro personaje y sobre el se realizaran las modificaciones de movimiento y futuras colisiones. Las variables POSX y POSY contendran el numero de posicion horizontal y vertical de nuestro personaje. De esta forma podemos realizar todo el calculo de colisiones primero, y al finalizarlo, enviarle dichos datos a las propiedades de ASH. Ahora: Código:
dim tsetashwalk(ImageStripFrames("data\sprites\ash\tileset_walk_ash.png") -1)
tsetashwalk = LoadImageStrip("data\sprites\ash\tileset_walk_ash.png")
ash = newsprite(tsetashwalk)
SprSetSize (45, 45)
SprSetPos (320, 240)
![]() La tercera linea asigna la imagen strip a la variable ASH, para que la podamos ocupar. La siguiente linea define el tamaño de nuestro personaje, independiente del tamaño del dibujo original. La ultima linea define su ubicacion inicial (en este caso, el centro de la pantalla). Código:
ashdir = 6 posx = 0: posy = 0 Ahora crearemos las variables que contendran nuestra animacion. Código:
dim ashwalkdown(3), ashwalkup(3), ashwalkright(3), ashwalkleft(3) Código:
ashwalkdown(0) = tsetashwalk(0): ashwalkdown(1) = tsetashwalk(1) ashwalkdown(2) = tsetashwalk(0): ashwalkdown(3) = tsetashwalk(2) ashwalkdown(0) ---> tsetashwalk(0) ashwalkdown(1) ---> tsetashwalk(1) ashwalkdown(2) ---> tsetashwalk(0) ashwalkdown(3) ---> tsetashwalk(2) Recuerden que el numero entre parentesis en ashwalkdown sirve para crear el ciclo de la animacion, asi podemos crear un ciclo que avance varias veces de 0 a 3, a la velocidad que queramos y mostrando las imagenes de tsetashwalk. Recuerden tambien que el numero entre parentesis en tsetashwalk corresponde a la ubicacion de la imagen a mostrar, dentro del archivo anterior. La primera imagen siempre comienza con 0. ![]() Le agregamos las imagenes restantes: Código:
ashwalkup(0) = tsetashwalk(3): ashwalkup(1) = tsetashwalk(4) ashwalkup(2) = tsetashwalk(3): ashwalkup(3) = tsetashwalk(5) ashwalkright(0) = tsetashwalk(6): ashwalkright(1) = tsetashwalk(7) ashwalkright(2) = tsetashwalk(6): ashwalkright(3) = tsetashwalk(8) ashwalkleft(0) = tsetashwalk(9): ashwalkleft(1) = tsetashwalk(10) ashwalkleft(2) = tsetashwalk(9): ashwalkleft(3) = tsetashwalk(11) Agregamos: Código:
bindsprite(ash) SprSetZOrder (-1) El resto del codigo es el siguiente, y lo analizaremos por parte: Código:
while true
if ScanKeyDown(VK_LEFT) then
ashdir = 9
SprSetTextures(ashwalkleft): SprSetAnimSpeed(.15)
posx = posx + 2
gosub ubicacion
elseif ScanKeyDown(VK_RIGHT) then
ashdir = 3
SprSetTextures(ashwalkright): SprSetAnimSpeed(.15)
posx = posx - 2
gosub ubicacion
elseif ScanKeyDown(VK_UP) then
ashdir = 12
SprSetTextures(ashwalkup): SprSetAnimSpeed(.15)
posy = posy + 2
gosub ubicacion
elseif ScanKeyDown(VK_DOWN) then
ashdir = 6
SprSetTextures(ashwalkdown): SprSetAnimSpeed(.15)
posy = posy - 2
gosub ubicacion
else
if ashdir = 3 then SprSetTexture(ashwalkright(0)): endif
if ashdir = 6 then SprSetTexture(ashwalkdown(0)): endif
if ashdir = 9 then SprSetTexture(ashwalkleft(0)): endif
if ashdir = 12 then SprSetTexture(ashwalkup(0)): endif
SprSetAnimSpeed(0)
bindsprite(ash)
endif
AnimateSprites ()
WaitTimer(18)
wend
SCANKEYDOWN detectara que tecla presionamos, aqui usaremos solo las teclas de flecha, y realizara los comandos dependiendo de que tecla presionemos. Primero asignara el numero dependiendo de hacia donde miraremos, a la variable ASHDIR. Luego elegira el tipo de animacion dependiendo de la tecla presionada, y le asignara una velocidad. Luego agregara o quitara 2 unidades a las variables POSX o POSY, dependiendo de la direccion hacia donde se movera el escenario. Finalmente con el gosub realizara un salto a las instrucciones en UBICACION, que en este caso seran las siguientes: Código:
ubicacion: bindsprite(tilemap): SprSetX (posx): SprSetY (posy) bindsprite(ash) return Despues de chequear la tecla presionada, si detecta que no se ha presionado ninguna tecla, se dirigira al ELSE, en el cual detendra la animacion y dejara la imagen de nuestro personaje en reposo, mirando en la direccion que dependera del valor de ASHDIR. La linea WAITTIMER ajusta la velocidad del juego completo y obliga a que funcione a esa velocidad. Con eso se evita que en computadores muy poderosos el juego corra demasiado rapido. Bueno, eso es mas que nada el codigo, lo copiare completo aca abajo por si alguien lo quiere probar o modificar con Basic4GL. A medida que avance, añadire mas codigo con su explicacion. Ojo, si hay algo que no ha quedado claro, avisenme y se los explico con gusto. Codigo completo del test: Código:
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
dim tiles(19)(19), x, y, tileMap
for y = 0 to 19
for x = 0 to 19
read tiles (x)(y)
next
next
tileMap = NewTileMap (LoadTexStrip("data\sprites\floors\floor08.png", 32, 32))
SprSetTiles (tiles)
dim ashdir
dim ash
dim posx, posy
dim tsetashwalk(ImageStripFrames("data\sprites\ash\tileset_walk_ash.png") -1)
tsetashwalk = LoadImageStrip("data\sprites\ash\tileset_walk_ash.png")
ash = newsprite(tsetashwalk)
SprSetSize (45, 45)
SprSetPos (320, 240)
ashdir = 6
posx = 0: posy = 0
dim ashwalkdown(3), ashwalkup(3), ashwalkright(3), ashwalkleft(3)
ashwalkdown(0) = tsetashwalk(0): ashwalkdown(1) = tsetashwalk(1)
ashwalkdown(2) = tsetashwalk(0): ashwalkdown(3) = tsetashwalk(2)
ashwalkup(0) = tsetashwalk(3): ashwalkup(1) = tsetashwalk(4)
ashwalkup(2) = tsetashwalk(3): ashwalkup(3) = tsetashwalk(5)
ashwalkright(0) = tsetashwalk(6): ashwalkright(1) = tsetashwalk(7)
ashwalkright(2) = tsetashwalk(6): ashwalkright(3) = tsetashwalk(8)
ashwalkleft(0) = tsetashwalk(9): ashwalkleft(1) = tsetashwalk(10)
ashwalkleft(2) = tsetashwalk(9): ashwalkleft(3) = tsetashwalk(11)
bindsprite(ash)
SprSetZOrder (-1)
while true
if ScanKeyDown(VK_LEFT) then
ashdir = 9
SprSetTextures(ashwalkleft): SprSetAnimSpeed(.15)
posx = posx + 2
gosub ubicacion
elseif ScanKeyDown(VK_RIGHT) then
ashdir = 3
SprSetTextures(ashwalkright): SprSetAnimSpeed(.15)
posx = posx - 2
gosub ubicacion
elseif ScanKeyDown(VK_UP) then
ashdir = 12
SprSetTextures(ashwalkup): SprSetAnimSpeed(.15)
posy = posy + 2
gosub ubicacion
elseif ScanKeyDown(VK_DOWN) then
ashdir = 6
SprSetTextures(ashwalkdown): SprSetAnimSpeed(.15)
posy = posy - 2
gosub ubicacion
else
if ashdir = 3 then SprSetTexture(ashwalkright(0)): endif
if ashdir = 6 then SprSetTexture(ashwalkdown(0)): endif
if ashdir = 9 then SprSetTexture(ashwalkleft(0)): endif
if ashdir = 12 then SprSetTexture(ashwalkup(0)): endif
SprSetAnimSpeed(0)
bindsprite(ash)
endif
AnimateSprites ()
WaitTimer(18)
wend
ubicacion:
bindsprite(tilemap): SprSetX (posx): SprSetY (posy)
bindsprite(ash)
return
Saludos!!! Última edición por techmachine fecha: 09-ene-2012 a las 05:34. |
|
#3
|
|||
|
|||
|
no creo q se trate del entuciasmo todos queremos un gran juego de pokemon lo q pasa es q no se entiende muy bien que necesitas o en q se te puede colaborar o solo espones tu juego?
|
|
#4
|
||||
|
||||
|
Cita:
|
|
#5
|
||||
|
||||
|
Bueno, para que vean que este proyecto no queda botado como otros, les actualizo.
Ordené un poco el código para que lo entiendan y puedan modificarlo a gusto. No necesitan entender el codigo, mas pueden probar a cambiar ciertos valores y ver los resultados. Las lineas de codigo que no llevan explicacion, no debieran modificarlas, ya que son parte del funcionamiento esencial del juego. Los archivos de referencia los pueden encontrar mas arriba, deben ponerle el mismo nombre que aparece en la linea de codigo con la ruta, salvo con la imagen para crear el mapa, ya que lo modifiqué para agregarle un cartel. El codigo ahora quedaria asi: Código:
'-----------------------------------------------------
'-----------------------------------------------------
'CREACION DEL MAPA (0 = LETRERO, 1 = PASTO, 2 = PLANTA)
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
dim tiles(19)(19), x, y, tileMap
for y = 0 to 19
for x = 0 to 19
read tiles (x)(y)
next
next
'ARCHIVO QUE INCLUYE LOS DIBUJOS A USAR EN EL MAPA
tileMap = NewTileMap (LoadTexStrip("data\sprites\floors\floor09.png", 32, 32))
SprSetTiles (tiles)
dim ashdir
dim ash
dim posx, posy
'ARCHIVO QUE INCLUYE LOS DIBUJOS DE ASH CAMINANDO
dim tsetashwalk(ImageStripFrames("data\sprites\ash\tileset_walk_ash.png") -1)
tsetashwalk = LoadImageStrip("data\sprites\ash\tileset_walk_ash.png")
ash = newsprite(tsetashwalk)
'DETERMINA EL TAMAÑO DEL DIBUJO DE ASH
SprSetSize (45, 45)
'COLOCA EN POSICION INICIAL A ASH
SprSetPos (320, 240)
'COLOCA A ASH MIRANDO HACIA ABAJO AL COMENZAR EL JUEGO
'(12 = ARRIBA, 3 = DERECHA, 6 = ABAJO, 9 = IZQUIERDA)
ashdir = 6
posx = 0: posy = 0
dim ashwalkdown(3), ashwalkup(3), ashwalkright(3), ashwalkleft(3)
ashwalkdown(0) = tsetashwalk(0): ashwalkdown(1) = tsetashwalk(1)
ashwalkdown(2) = tsetashwalk(0): ashwalkdown(3) = tsetashwalk(2)
ashwalkup(0) = tsetashwalk(3): ashwalkup(1) = tsetashwalk(4)
ashwalkup(2) = tsetashwalk(3): ashwalkup(3) = tsetashwalk(5)
ashwalkright(0) = tsetashwalk(6): ashwalkright(1) = tsetashwalk(7)
ashwalkright(2) = tsetashwalk(6): ashwalkright(3) = tsetashwalk(8)
ashwalkleft(0) = tsetashwalk(9): ashwalkleft(1) = tsetashwalk(10)
ashwalkleft(2) = tsetashwalk(9): ashwalkleft(3) = tsetashwalk(11)
bindsprite(ash)
'COLOCA A ASH FRENTE A TODO EL ESCENARIO (NUMEROS MAYORES LO COLOCAN DETRAS)
SprSetZOrder (-1)
'SPRSETANIMSPEED = VALOR DE LA VELOCIDAD DE ANIMACION DE ASH AL CAMINAR
'POSX - POSY = VALOR DE LA VELOCIDAD DE MOVIMIENTO DEL MAPA
'WAITTIMER = VALOR DE LA VELOCIDAD A LA QUE CORRERA EL JUEGO COMPLETO
while true
if ScanKeyDown(VK_LEFT) then
ashdir = 9
SprSetTextures(ashwalkleft): SprSetAnimSpeed(.15)
posx = posx + 2
gosub ubicacion
elseif ScanKeyDown(VK_RIGHT) then
ashdir = 3
SprSetTextures(ashwalkright): SprSetAnimSpeed(.15)
posx = posx - 2
gosub ubicacion
elseif ScanKeyDown(VK_UP) then
ashdir = 12
SprSetTextures(ashwalkup): SprSetAnimSpeed(.15)
posy = posy + 2
gosub ubicacion
elseif ScanKeyDown(VK_DOWN) then
ashdir = 6
SprSetTextures(ashwalkdown): SprSetAnimSpeed(.15)
posy = posy - 2
gosub ubicacion
else
if ashdir = 3 then SprSetTexture(ashwalkright(0)): endif
if ashdir = 6 then SprSetTexture(ashwalkdown(0)): endif
if ashdir = 9 then SprSetTexture(ashwalkleft(0)): endif
if ashdir = 12 then SprSetTexture(ashwalkup(0)): endif
SprSetAnimSpeed(0)
bindsprite(ash)
endif
AnimateSprites ()
WaitTimer(18)
wend
ubicacion:
bindsprite(tilemap): SprSetX (posx): SprSetY (posy)
bindsprite(ash)
return
En un rato mas les dejaré el código que hará que nuestro personaje colisione con el cartel, y ademas lo pueda leer. Saludos!!! P.D.: mejor les dejo las imagenes usadas, en caso de cualquier cosa tengan problemas ![]() tileset_walk_ash.png : ![]() floor09.png :
Última edición por techmachine fecha: 15-ene-2012 a las 20:14. |
|
#6
|
||||
|
||||
|
Realmente lamento el multipost, si es que alguien lo considera asi, pero es la unica forma que encuentro para poder mostrar los avances de mi juego y que el tema no se vaya muy abajo (ya que nadie lo comenta, o no me tienen fe o no entienden nada de nada del codigo del juego).
Actualizacion 19-01-2012 : - Añadido cartel. - Detección de colisión con el cartel. - Ash puede leer el cartel (presionar barra espaciadora). - Se realizan pequeñas modificaciones en el código para evitar bugs al presionar mas de una tecla al mismo tiempo. Link de descarga: http://www.mediafire.com/?z5jeqhnr75egaed ![]() Para la próxima ocasion, agregaremos una casa a la cual se pueda entrar, y ademas fijaremos los limites de Ciudad Prueba (asi la he bautizado). Con esto, ya no será un pueblo infinito. Cualquier duda, consulta o sugerencia, avisen!!! Si no les funciona, tambien!!! Saludos!!! P.D.: Esta vez no agrego el código A MENOS QUE ALGUIEN ME LO PIDA. |
|
#7
|
||||
|
||||
|
Actualizacion 22-01-2012 :
- Fijados los limites de Ciudad Prueba. Colisiones con los arbustos funcionando ok. - Warp de la puerta de la casa funcionando 50%, si tocas la puerta la pantalla se coloca en negro, pero no aparece la habitacion (aun no, porque la estoy editando). Link de descarga AQUI Saludos!!! |
|
#8
|
|||
|
|||
|
Espero que el proyecto no se hacha descontinuado, me interesa este tema, y me gustaria, que si en dado caso no permites ayuda
Si me puediras capacitar, o simplemente seguir con tu tema(: Gracias Kmadridr |
|
#9
|
||||
|
||||
|
Realmente, crear todo un juego una sola persona es un reto de dimensiones titánicas. Sigue así y ve informándonos
|
|
#10
|
||||
|
||||
|
bueno muy bueno el juego jejeje
|
![]() |
|
|
Temas Similares para: Pokemon Dream (open source)
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Dream End Drama ~ Border between Dream and Reality | ALXz | Exposición de diseños | 21 | 10-nov-2011 01:06 |
| i open my eyes,it was only just a dream. | ~Adrenaline | Exposición de diseños | 3 | 11-dic-2010 21:31 |
| Creación de chars con sheets open source | SaviorZala | MUGEN | 7 | 24-oct-2009 03:49 |
| [INVITACIÓN] IV Freedom & Open Source Day | sebas_burgos | Informática | 0 | 19-oct-2009 19:11 |
| Dream team de Pokémon | chadorro | Cafetería | 10 | 08-jul-2009 17:11 |