Foros del Web » Programación » Java »

Juego de estrategia por turnos

Estas en el tema de Juego de estrategia por turnos en el foro de Java en Foros del Web. Hola a todos! Quería ver si me podríais orientar un poco con un proyecto de juego que me he propuesto en java. Mi nivel es ...
  #1 (permalink)  
Antiguo 11/06/2008, 17:37
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 6 años, 6 meses
Puntos: 0
Pregunta Juego de estrategia por turnos

Hola a todos!

Quería ver si me podríais orientar un poco con un proyecto de juego que me he propuesto en java. Mi nivel es aproximadamente el de un 60% o 70% del necesario para ser un Programador Certificado Java, y creo tener los conocimientos suficientes para mi proyecto; el problema que tengo es que no sé como organizar y gestionar exactamente el programa.

Se trata de un juego de estrategia por turnos de ciencia ficcion implementado en un applet. Un juego de mesa “sencillo” pasado a un applet de java, vamos. Tenemos un tablero-mapa de varias dimensiones (galaxia, sistema, etc), diversas civilizaciones (una por jugador) con sus planetas, unidades, etc. Está pensado para llevar partidas largas, que pretendo guardar con una simple serialización en un fichero.

El mayor problema que encuentro es que no se cómo gestionar exactamente las listas de las unidades, planetas, posiciones, civilizaciones, etc. Casi todas están relaccionadas entre si: la posición de una unidad, por ejemplo, puede coincidir con la de un planeta u otra unidad. Me he planteado que ha de poderse acceder a dicha posición tanto desde la unidad como desde el mapa, al igual que ha de poderse acceder al Jugador a través de su unidad y viceversa… Tengo ArrayList por todos los lados! Y creo que ha de haber métodos mas efectivos xD

También me estoy comiendo la cabeza sobre como representar las 20 o 30 unidades diferentes que tengo pensadas y como identificarlas, si con un simple String o un numero identificativo único o una Clase en si misma de la que hereden las 20 o 30 unidades…

Por otro lado, también ando un poco perdido en la forma en la que debería llevar los turnos de los jugadores. Sus acciones se acumularan en una lista de tareas que se efectuaran al pulsar el botón “Fin del turno”… Y luego cambio el turno del jugador representándolo en una simple variable numérica??

Llevo mucho tiempo investigando, y la única información que he conseguido hasta ahora ha sido que para llevar a cabo mi proyecto no me queda otra que “practicar”; sin embargo estoy seguro de que me podréis ayudar con algún consejo orientativo ;)

Un saludo y muchas gracias a todos!
  #2 (permalink)  
Antiguo 11/06/2008, 17:46
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 6 años, 11 meses
Puntos: 6
Respuesta: Juego de estrategia por turnos

Hola amigo bienvenido al foro! mira en primer lugar creo que deberias llevar todos esos datos a una base de datos y no manejarlos en archivos, creo que te facilitara mucho la tarea, muchos consejos no te puedo dar porq no veo el modelo de clases entonces no se que podrias mejorar si puedes subelo a imageshack y pon el link y con justo te ayudare
saludos
  #3 (permalink)  
Antiguo 12/06/2008, 10:30
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 6 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Juego de estrategia por turnos

Muchas gracias!!

Ok me parece buena idea lo de gestionarlo con una base de datos! Lo que pasa es q no tngo ni idea de bases de datos en java xD voy a ver si pillo un buen libro en la biblioteca sobre el tema

Sobre lo de subir las clases, de momento solo tngo un borrador muy guarro xD a ver q tal cuando avance un poco...

un saludo y muxas gracias!
  #4 (permalink)  
Antiguo 12/06/2008, 11:10
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 6 años, 11 meses
Puntos: 6
Respuesta: Juego de estrategia por turnos

Ok podrias usar mysql que es gratis y bastante potente, pero si quieres algo mas potente pero no es gratis podrias usar PostgresSql
saludos
  #5 (permalink)  
Antiguo 12/06/2008, 11:22
Avatar de apah99  
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: Juego de estrategia por turnos

La licencia de PostgresSql es BSD... si que es gratis. Pero de igual modo te recomiendo MySQL porque creo que es mas ligera.
  #6 (permalink)  
Antiguo 12/06/2008, 11:26
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 6 años, 11 meses
Puntos: 6
Respuesta: Juego de estrategia por turnos

tienes razon es gratis me confundi con oracle pero sin duda postgresql es mas potente q mysql
saludos
  #7 (permalink)  
Antiguo 12/06/2008, 13:17
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 11 años, 2 meses
Puntos: 51
Respuesta: Juego de estrategia por turnos

Si va a ser un juego multijugador, necesitaras un servidor central que coordine las partidas entre jugadores ¿no? Ahi es donde yo pondría la BDD.

Como en cualquier programa, aunque en este hay bastante informacion, yo lo que iria es pensando paso a paso lo que ocurre desde que se inicia una partida hasta que se termina e ir mirando la informacion que necesitas guardar y la que generas para cada paso... de ahi poco a poco iras sacando toda la informacion de tu sistema para almacenar en la BDD.

Luego necesitaras atacar las comunicaciones entre clientes y servidor y mas tarde la informacion propia que maneje el cliente (no tiene por que enviarsela toda al servidor ya que puede tener informacion parcial para sus propios fines como la visualizacion).

Yo empezaria por algo muy muy simple y cuando tengas claras las piezas, cliente, servidor, BDD, comunicaciones, iria añadiendo detalles. Pensarlo todo de golpe se te hará muy duro.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 12/06/2008, 13:37
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 6 años, 7 meses
Puntos: 2
Respuesta: Juego de estrategia por turnos

Mi opinion es la siguiente:

1) La certificación en java que da Sun es solo un papel, y creo que no mide realmente lo que tu sabes. Puedes ser un gurú en programación orientada a objetos, y que en sus exámenes apenas superes su aprobado, por quizas no llevarte tan bien con apis que no son de vida o muerte... (bleh, este punto es puro palabrerío).

2) Creo que en primera instancia podrias encarar el juego como un sencillo applet que trabaje local. No me gastaría en conexiones usuario servidor, objetos remotos, sockets, porque da una complejidad extra a la necesaria, y lo que tu quieres es experiencia. Más adelante podrás agregarle de a poco todas esas cosas pero una vez hayas asentado todo lo básico.

3) Si es un juego que quieres difundir, para que lo pruebe mucha gente, y trabaja en forma local, no deberías de obligar a los usuarios a instalar un mySql o postgreSql. Me gusta la idea del/ los archivos externos.

4) Tu problema principal creo que radica en como modelar el juego... En primer lugar, no esta mal usar los arrayList por todos lados... pero primero me fijaría si realmente sin necesarios...

Para ello no solo deberías dibujar el diagrama de clases, sino tambien empezar a tirar algo de código, y saber que es lo que quieres que haga tu juego. Una herramienta que te recomiendo y seguramente conoces es jUnit.

Con respecto a las unidades... como modelarlas así nomas es dificil de ver. ¿Son todas las unidades iguales? ¿hacen todas lo mismo (atacan, defienden y no se que mas)?¿Solo se diferencian en poder de ataque y defensa? A partir de esas preguntas y muchas otras debes pensar como serán tus objetos, si pertenecerán a la misma clase, o serán de clases distintas o serán una composición de varios objetos...

Con respecto a los turnos, es una decisión que debes tomar. Una forma sencilla sería quizas tener la coleccion ordenada de jugadores, y que al hacer clic en el boton "pasar Turno" empiece el turno del otro jugador...

Quizas deberías separar el juego en varias capas... Podriamos decir que usando el patron MVC (modelo, vista, controlador) pero no de una manera estricta... algo como:

Modelo (sistemas solares, unidades, jugadores..)
Controlador (Es quien ubica a las unidades, controla los turnos).
Vista( como se muestran las cosas, segun lo que dice el controlador...)


Una cosa que deberías si leer es algun libro de desarrollo de juegos, porque es una rama muuuy especial del desarrollo.

Suerte!
__________________
Saludoss
Guille
  #9 (permalink)  
Antiguo 18/06/2008, 18:06
 
Fecha de Ingreso: junio-2008
Mensajes: 4
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: Juego de estrategia por turnos

Vaya, que cantidad de respuestas! Muchas gracias a todos!
Cita:
Iniciado por GreenEyed
Como en cualquier programa, aunque en este hay bastante informacion, yo lo que iria es pensando paso a paso lo que ocurre desde que se inicia una partida hasta que se termina e ir mirando la informacion que necesitas guardar y la que generas para cada paso... de ahi poco a poco iras sacando toda la informacion de tu sistema para almacenar en la BDD.
Gracias! Eso no se me había ocurrido y lo encuentro bastante útil, y de hecho lo ha sido!

guille_el3, me has entendido a la perfeccion!! realmente es eso lo que trato de hacer: un pequeño juego implementado en un applet que trabaja localmente, sin ninguna conexion multijugador online ni cosas similares. Algo muy básico para tener las ideas claras respecto el diseño de un juego de estrategia por turnos. Y lo más importante: conseguir experiencia.

Como quería que se tuviese en cuenta mi nivel de conocimiento de java, se me ocurrió compararlo con algo estandar y básico que todos conociéseis, como el certificado de sun; pero estoy totalmente de acuerdo contigo, de hecho soy de los que sacan un 10 en practicas y un 5,1 en teoría xD


Bueno al tema:

De momento, he reducido la estructura del juego; voy a hacer un juego básico, centrándome en lo que he dicho antes, de estrategia por turnos. Primero me he propuesto un tablero sencillo, una unidad por casilla, actuación de una unidad por turno y unidades que puedan atacar y defenderse teniendo en cuenta unos atributos que serán comunes para todas estas.

Como bien has dicho, mi problema principal es en el modelado. Ya había nadado un poco entre clases y código, más allá del diagrama... pero lo único que conseguí fue confundirme mas.
Pues no conocía JUnit, ya le estoy dando caña y es utilísimo! Esto es lo que me faltaba, experiencia y practica!!

Contestando a tu pregunta sobre al modelado de las unidades, de momento tienen dos atributos enteros únicos y todas atacan y defienden del mismo modo (teniendo en cuenta el valor de estos atributos). Respecto a los turnos de los jugadores, ya hice una lista ordenada con dicho fin… El tema era que formas mas habituales hay de encadenar los turnos de los jugadores en un juego por turnos, pero ya lo iré viendo, sobre todo teniendo en cuenta, ahora que gracias a ti lo conozco, el patrón MVC del cual no había ni oído hablar todavía. Yo había separado la vista del juego, simplemente, pero MVC no lo conocía y me parece genial también… experiencia! Así me he estructurado mejor el juego.

En cuanto a libros sobre desarrollo de juegos, ya había echado algún vistazo, pero en la biblioteca de la facultad escasean! Sólo encontré dos, uno de ellos al parecer famosillo, “Developing Games in Java” de David Brackeen, más útil que el otro. Aprendí mucho respecto al diseño algo mas profesional de juegos, presentación y adaptación al entorno visual, y sobre todo al diseño de juegos en “tiempo real”, plataformas, acción etc… pero nada de estrategia y turnos!!

Pues aprovecho para preguntaros qué libros conocéis que sean interesantes para el desarrollo de juegos, en plan genérico o específicamente para Java. Y también si conocéis códigos de ejemplo/tutoriales o sencillamente juegos de los de toda la vida que van por turnos (como las damas, por ejemplo) implementados en java y en código fuente, por aquello de apoyar mi aprendizaje con ejemplos.

Os agradezco de nuevo vuestra atención, de verdad que esta batería de información me esta siendo muy útil!!
Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:19.
SEO by vBSEO 3.3.2