Ir al contenido

publicidad

Foto

Programar un juego tipo Eye of the Beholder


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
10 respuestas en este tema

  • MikiBroki

  • Ancillae

  • vida restante: 100%
  • Registrado: 03 abr 2009
  • Mensajes: 80
#1

Escrito 20 mayo 2009 - 09:34

Hola a tod@s

Desde hace muchos años tengo en mente el realizar un día un juego "pseudo-3d", en realidad es 2D del tipo Eye of the Beholder, pero aunque soy programador jamás he realizado nada gráfico y realmente no se por dónde empezar, unas nociones básicas (en cuanto a cómo realizar el juego en sí, los mapeados, giros de pantalla, etc). No me interesa uno en 3D real.

Conoce alguien alguna web o tiene algo de información al respecto ?

Muchas gracias !

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#2

Escrito 20 mayo 2009 - 16:47

Dinos en que lenguaje tienes pensado hacerlo y te orientaremos sobre como hacerlo. Porque en un lenguaje visual es mucho mas facil que hacerlo todo por codigo, y te evitas un par de cosas.

PD: Yo si se hacerlo, me hice uno hace tiempo para el visual basic. Y no lo volvere a hacer. Menuda hartada a dibujar escenarios y cosas que me pegué...

Un saludo.

  • MikiBroki

  • Ancillae

  • vida restante: 100%
  • Registrado: 03 abr 2009
  • Mensajes: 80
#3

Escrito 20 mayo 2009 - 23:18

Muchas gracias por responder,

Pues en cuanto en lenguajes tenía pensado usar Java, aunque también podría con VB6, VB.NET, C# o C. Delphi y C++ no he tocado.

A mi en principio el tema gráficos no me preocupa demasiado pues lo primero es aprender el sistema usado.

Gracias de nuevo !

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#4

Escrito 21 mayo 2009 - 11:31

Pues bien, te comento como lo hice para el visual basic.

Primero te dire como hacer un prototipo de esta clase de juegos que luego puedes ir mejorando hasta hacer lo que tu quieres.

Vamos a analizar un poco el juego. Para hacerlo sencillo, en vez de hacer pasillos de una mazmorra y todo eso vamos a hacer unas pocas areas. Cada area esta conectada desde con 1 hasta con otras 4 areas.

En cada area puede haber uno o varios objetos y uno o varios enemigos. El jugador va a ir haciendo click en los objetos de la pantalla para cogerlos o interactuar con ellos. Aparte de lo que ve el protagonista pondremos varios botones en dos zonas de la pantalla.

En la parte de abajo pondremos 4 botones con flechitas para indicar a donde ira el protagonista. Si al norte, al sur, al este o al oeste.

En la parte de la derecha pondremos botones para ver las acciones del jugador y en la izquierda pondremos el inventario.

Para terminar el hud en la parte superior pondremos un textbox donde iremos escribiendo las acciones y los resultados.

Cada area será hecha con un panel, que tendra como fondo una imagen que represente lo que ve el protagonista. Dentro del panel pondremos varios picturebox que seran o bien el enemigo de ahi o algun objeto.

Como este el prototipo, con que hagas unas 5 salas y las pongas el fondo de un color distinto para identificarla vamos sobrados. Acuerdate de ponerles algun indice o algo de eso para identificarlas

Las acciones del jugador seran atacar, mirar, coger y usar. Asi que pondremos 4 botones en el lado derecho y con que tengan el nombre de la accion va bien, luego ya pondras alguna imagen de fondo que represente la accion.

En el inventario pondremos 4 picturebox en el lado izquierdo, tampoco hace falta mas.

Con esto tendremos ya todo preparado para empezar a ponernos a programar. El panel de la zona donde estemos será el unico visible, los demas los esconderemos. Creas un array o un objeto o una estructura o un tipo o lo que quieras para controlar los datos de la zona. Necesitas al menos 5 datos por zona: El indice, norte, sur, este y oeste, de tipo numerico. Indice es el "nombre" de la sala, norte indica que sala se cargará si se pulsa el boton de ir para allá, sur, este y oeste lo mismo.

luego create otra estructura/array/tipo/objeto jugador para almacenar los datos del jugador, como la zona donde esta, el objeto del inventario 1, el objeto del inventario 2, ... objeto 4, la vida si lo ves necesario para los combates, etc...

Asi al programar el evento hacer click en el boton norte tienes que mirar en el indice de la zona que indica el protagonista de la zona en la que esta, con que zona comunica al norte.

Si es 0, haz que el boton sea invisible pues no conecta con ninguna. Asi si el inventario 1 tiene el objeto 0 es que no tiene nada y debes esconderlo tambien.

En fin, que al saber a que habitacion se dirige, escondes el panel de la sala donde esta, haces visible el panel de la sala donde va y cambias la variable de la sala al protagonista.

Y lo mismo para el resto de los botones.

Con eso tienes ya el movimiento. Cuando lo tengas hecho ya tendras una "mazmorra" o un mundo donde puede suceder algo, pero por ahora te mueves por ahi todo lo que quieras.

En ese momento te contaré mas que con esto ya tienes suficiente por ahora ^^

Un saludo.

PD: Que conste que a mi nadie me tuvo que ir diciendo como ir haciendolo, simplemente pensé como podria hacer algo así y fui apuntando en un folio distintos sistemas para conseguir esto y me quede con el que me parecia mas facil ;) Asi que si ves que puedes seguir ampliando toda esta base que te he comentado por tu cuenta mucho mejor, pues el sistema para hacer lo que tu dices sustituye las zonas por pasillos o salas, segun los datos de una matriz de dos dimensiones que representa el mapa, y poco mas. Seguro que tu puedes ;)

Es mas, yo de ser tu lo que haria seria intentarlo y si veo que no me funciona o que me da muchos problemas o no me sale diria: Pasa esto y no veo como solucionarlo. Nos ahorraras el escribirte tochos como este. Aparte de que intentandolo tu para proximos proyectos guardas mas experiencia de esto que simplemente seguir instrucciones de otros.

PDD: Y por si acaso se pasa por la cabeza, yo no respondo a preguntas como "necesito un codigo para esto" ;) Es de mala educacion hacer esas preguntas por aqui. En cambio a las de "He hecho esto pero no me funciona y no veo el fallo" o "he hecho esto pero pregunto si alguien sabe algun codigo mejor que el que he usado"... Esas se responden con mucho gusto.

  • MikiBroki

  • Ancillae

  • vida restante: 100%
  • Registrado: 03 abr 2009
  • Mensajes: 80
#5

Escrito 22 mayo 2009 - 19:57

Pes muchísimas gracias por la información, en la medida que tenga tiempo iré metiéndole mano poco a poco, siempre me ha atraido mucho hacer un juego de ese tipo,

En cuanto a lo pedir código soy de los que me gusta buscarme la vida y aprender por mi cuenta, aparte de que ya tengo cierta experiencia, lo que me falta es una guía de cómo hacerlo

MUCHAS GRACIAS !

  • tacritan

  • Humano

  • vida restante: 100%
  • Registrado: 27 jul 2009
  • Mensajes: 1
#6

Escrito 27 julio 2009 - 15:27

Saludos Mikibroki. Yo también tengo en mente desde hace años hacer un juego "tipo Eye of Beholder", pero no basado en éste, sino en el Dungeon Hack, que me parece muchísimo mejor. Además, tengo en mente una especie de "segunda parte". El tema es que no sé programar y el software de creación de juegos que he visto por ahí no me convence nada.

Quiero que este mensaje sea mi presentación y mi propuesta de trabajo en este sentido. El tema es que no sé hasta qué punto vale la pena aprender a programar para mejorar un juego ya hecho. Además, esa es mi segunda pregunta: ¿Se puede reprogramar este juego con el fin de hacer una especie de segunda parte o nueva versión? Lo digo porque es abandoneware, con lo que no creo que haya problema.

Venga, un saludo y gracias.

  • Pampito

  • Anima

  • vida restante: 100%
  • Registrado: 02 ene 2003
  • Mensajes: 6.415
#7

Escrito 30 julio 2009 - 19:11

Yo tambien intenté uno en VB y creo que puedo darte un par e ideas interesantes sobre el dibujo de la vista:

Si te paras a pensar te puedes construir un juego de muros por cada "escenário" y luego ir calculando que dibujo de ese juego se ve según dónde esté el jugador y hacía donde mire. Vas montando la vista con las partes y te ahorras el hacer u dibujo por cada localización y vista del juego (que es un curro brutal y un consumo de memoria tambien bastante grande).

Si al juego de muros añades otro de adornos (huecos, ventanas, ladrillos rotos, antorchas, hierbajos,...) que dibujar por encima de los muros te montas un sistema bastante variado sin mucho trabajo.

Como te han dicho con un lenguaje como VB o similar te quitas mucho código y avnazas relativamente muy rápido. Si te interesa Java se que Netbeans tiene un editor de formularios muy a lo VB. Lo mismo es lo que andas buscando.

  • MikiBroki

  • Ancillae

  • vida restante: 100%
  • Registrado: 03 abr 2009
  • Mensajes: 80
#8

Escrito 26 octubre 2009 - 01:48

Gracias por los consejos !

Ahora mismo como es algo que me vuelve la idea a ratos (y lo dejo porque no se cómo avanzar) y después de darle vueltas a lo que aconseja Ellolo17 estoy trabado en las vistas del personaje y en cuál es la mejor forma de hacerlo, optimizada en consumo de memoria (o al menos una que no vaya lento ni a pantallazos):

Tengamos por ejemplo un sencillo mapa de 3x5, donde 'X' es un muro y 'O' los cuadros por los que se puede mover un personaje:


--------------------------

norte

XXXXX
XOOOX este
XXOXX

sur

--------------------------

Mi idea es crear para el mapa un array bidimensional de objetos de tipo llamémosle Vista, con las siguientes propiedades que recogan qué imagen se debe mostrar según la orientación del personaje:

- imagen_norte
- imagen_sur
- imagen_este
- imagen_oeste

Y por otro lado tener un objeto Personaje con entre otras propiedades:

- orientación_actual (N/S/E/O)

Así, suponiendo que el personaje está en la fila 2 columna 2 (índices comenzando desde cero) y mirando a la izquierda (oeste), debería mostrarse la imagen de un muro, y si se gira a la derecha (quedaría mirando hacia el norte) un espacio libre, y más alejado otro muro.

Pero me echa mucho para atrás ya que como digo, nunca he hecho nada de programación gráfica y no se si es una buena forma ésta, ni en cuanto a consumo de memoria (en un mapa pequeño como el del ejemplo no hay problema pero sí en uno más grande... aunque se puede ir cargando por secciones). Lo haría en Java o C#.


==============

tacritan pues no sabría decirte en cuanto a tema de permisos y tal, en mi caso si lograra sacar el proyectillo yo intentaría ponerme en contacto con SSI que fue la que creó Dungeon Hack (y Eye of the Beholder).

Lo que no te perdono es que digas que Dungeon Hack es mejor ;-) pues es un juego que al contrario que los EOB tiene historia cero, es sólo un generador de mapas que recorrer matando bichos y punto pelota, a mi me decepcionó mucho (te lo digo de buen rollo y como opinón eh!!) ;-)

Pampito, en su día lo intenté con VB pero lo veo algo lento... quizás ahora con VB.NET sí iría mejor, pero prefiero hacerlo con Java o C#.

Bueno un saludo !

    vendojuegosz

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 03 oct 2009
  • Mensajes: 182
#9

Escrito 04 noviembre 2009 - 15:55

¿que librerias usas en esos lenguajes para programar videojuegos? Lo digo porque en mi experiencia y si es 2D... usa SDL con C, C++ o python(pygame)...

Este ultimo es interpretado sencillito pero potente, no te costaria mucho captarlo si ya tienes experiencia programando.

  • MikiBroki

  • Ancillae

  • vida restante: 100%
  • Registrado: 03 abr 2009
  • Mensajes: 80
#10

Escrito 04 noviembre 2009 - 16:05

Como dije más arriba, soy programador de aplicaciones de gestión y web, pero no he hecho nada de tema gráfico :-( y en cuanto a lenguaje, usaría c# o java

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#11

Escrito 04 noviembre 2009 - 16:08

Pues yo usaría o c++ con alguna libreria visual o con Visual Basic.net.

Con este ultimo me he hecho ya uno.

Luego algo que te ahorraria mucha programacion para esto si te interesa es el multimedia fusion o el game maker, porque es basicamente ir haciendo click y todo eso ;)

Un saludo.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad