• Jueves 28 de Marzo de 2024, 19:46

Autor Tema:  Importancia De Las Fases Anteriores Al Código  (Leído 3646 veces)

jaal2000

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://www.jaal.tk
Importancia De Las Fases Anteriores Al Código
« en: Viernes 21 de Mayo de 2004, 05:09 »
0
Hola a todos!

Hace unos meses comencé un proyecto que consiste en un Shoot'em all.
El proyecto pretende mostrar la importancia de las fases anteriores a la codificación (planificación, análisis y diseño) de un videojuego. Ya he terminado la fase de planificación (muy breve) y me encuentro en la fase de análisis, ya he creado varios documentos al respecto. Estoy realizando un análisis estructurado (diagramas entidad-relación, flujo de datos) y posteriormente comenzaré un análisis OO (UML). Quisiera saber que tan útil puede ser este material a quienes estén interezados en el tema (de todas formas pienso hacer un web site para publicar todo el material). El proyecto pretende ser un ejemplo práctico del proceso de desarrollo.
Alejandro Duarte.
DPA Software.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #1 en: Viernes 21 de Mayo de 2004, 13:51 »
0
Hola.

Francamente, creo que es erróneo enfocar la planificación de un videojuego con una metodología clásica, del estilo Métrica 3 o Merise. Incluso no me acaba de gustar para esa aplicación concreta Unified Process. Demasiado trabajo antes de llegar a ver algo funcionar, que está muy bien para muchos casos, ya que ayuda a organizar todo de manera que se asegure el éxito de un proyecto. Sin embargo un videojuego es, claramente, una pieza software que se ha de ver funcionar desde el principio y hay que ir construyendo sobre prototipo inicial.

Prueba de esto es el desarrollo de los videojuegos de las grandes compañías: al poco de empezar ya hay screenshots del juego funcionando, aunque aún falten años para acabarlo.

Cierto es que se ha de tener claro el juego antes de empezar, definir una serie de requisitos funcionales. Pero no realizar todos los diagramas detallados en UML, o cualquier otra notación, módulo por módulo y clase por clase. En mi opinión esto le quita diversión a la realización del juego en sí, además de flexibilidad (si realizas algún cambio que se te ocurra a mitad de escribir el código tendrás que actualizar diagramas y, dependiendo de lo fielmente que sigas la metodología, hacer estudios de viabilidad del cambio, gestión de la configuración, etc. Esto se puede hacer muy pesado).

Lo esencial de un videojuego es su jugabilidad, el estilo de juego, que esté bien balanceado, que sea divertido. Y eso no lo vas a conseguir con diagramas de flujo de datos, de módulos, de clases, de colaboración, o del tipo que sean.

Te recomiendo que le eches un vistazo a esta página, con una cantidad enorme de recursos sobre el diseño de juegos (incluido un documento de diseño oficial de empresas del sector, bastante interesante ver cómo se centra en describir el juego y cómo funciona, en vez de cómo programarlo):
General Game Design

Un saludo.

Ruben3d

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #2 en: Viernes 21 de Mayo de 2004, 16:34 »
0
Bueno,
en mi experiencia personal si es muy necesario...
No utilizar una metodologia determinada puede llevar a un juego que aunque sirva seria solo un monton de codigo desordenado y tedioso..
si realmente la falta de diseño se veria reflejada en que el juego seria muy tedioso de depurar, y la falta de diseño va en detrimento de la modularidad e incrementa la dependencia entre componentes.

Es cierto que es muy aburrido el diseño, pero si uno va a hacer algo bien es mejor comenzar por alli..
he hecho dos juegos en toda mi vida.. de hecho el segundo recien inicie la implemenatcion..
el primero se veia bonito pero el codigo es un completo desastre, al punto que he querido cambiarle algunas cosas pero me ha dado pereza y tedio pues resulto muy complicado (tal como lo advirtieron los libros y mis maestros)...
en mi seundo juego (mi proyecto de grado en la universidad) somos tres personas y vamos desde febrero en la fase de diseño y recien la semana pasado iniciamos el desarrollo, aunque a travez del proceso de diseño paralelamente desarrollamos pruebitas para ir aprsndiendo a manejar el directX y el C#.

Todo el diseño n su primera etapa se derivo del documento que nuestro amigo Ruben3D a colocado el link y de otros que tambien se encuentran en GameDev,
sin embargo el documento o los documentos solo ayudan a crear una version conceptual general de lo que  sera el juego y resulta de utilidad para diseñar los personajes, los escenarios etc, en fin sirve para diseñar el juego y entiendo como juego lo que ve el usuario... MUY IMPORTANTE , NECESARIO!!!. pero solo de utilidad para el desarrollo en su etapa mas basica.. cual es la etapa más basica del desarrollo? pues el inicio del diseño...

Dentro del ciclo del diseño hemos utilizado UML con RUP... realmente no hay ninguna metodologia que se ajuste demasiado a lo del videojuego , pero UML es la mas general y es suficientemente amplia para cubrir todos los aspectos.

Nosotros (mis dos compañeros y yo) hemos utilizado aspectos importantes del UML pero no todo el UML porque seria una perdida de tiempo, utilizamos lo que sabemos que nos seria de utilidad en el futuro-...

definicion de requerimientos
calificacion de requerimientos
casos de uso pimarios y secundarios
integtracion de casos de uso
descripcion de iteraciones
Arquitectura
diagrama de clases
Colaborativo

por mencionar solo algunos y que realmente no llegan a ser la mitad de los que especifica el UML.

El ciclo de desarrollo que se deberia seguir es por iteraciones (modelo en espiral incremental)
Con una semana que llevo de desarrollo al 100% y veo la diferencia notable...
y gracias a estos 4 meses de diseño de videojuego y de diseño del desarrollo ya se ve que el proceso de desarrolo sera muy rapido y que la estructura del codigo sera de gran calidad.. un codigo claro, entendible, modular con bajo acoplamiento y alta cohesion..

Al dia de hoy llevamos más de 200 paginas solo en documentos relativos al diseño del videojuego y al diseño del desarrollo del mismo.

Yo apoyo el diseño sea como sea.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

jaal2000

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://www.jaal.tk
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #3 en: Viernes 21 de Mayo de 2004, 16:39 »
0
Saludos Ruben3D!

Entiendo tu punto de vista (ya que al parecer te dedicas a la parte gráfica) pero
un buen análisis y un diseño robusto, si que puede ayudar a la hora de implementar el juego.

Los grandes desarrolladores generan "screenshots" rápidamente porque adoptan un modelo de proceso en "espiral", esto es, se van generando incrementos del proyecto por medio de iteraciones, pero cada iteración cuenta con su etapa de planificación, análisis, diseño y obiamente la implementación de un prototipo (desechable o no), es decir: codigo + imágenes.

La realización de un modelo (UML, estructurado, o los que sea) tiene como objetivo servir de guía a los programadores, no importa que posteriormente se realicen cambios en las clases o se agregen más elementos.

Con los diagramas (y no sólo estos, sino otros documentos "hablados" que también son parte del análisis y el diseño) no se pretende construir un juego, pero si puede aportar mucho a la hora de implementarlo.

Al contrario de una "aplicación de escritorio", un videojuego no requiere de unas etapas de analisis y diseño tan complejas, ya que por lo general el cliente es el mismo desarrollador y CLARO! nada mejor que ver funcionando algo en la pantalla.

Visité tu página y me gusto el trabajo de la <Nave de transporte>, felicitaciones.
Alejandro Duarte.
DPA Software.

jaal2000

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://www.jaal.tk
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #4 en: Viernes 21 de Mayo de 2004, 16:45 »
0
.....
¿Qué es RUP?
Alejandro Duarte.
DPA Software.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #5 en: Viernes 21 de Mayo de 2004, 16:56 »
0
jajaja  :smartass:

me corchaste!!!!
sino estoy mal es Rational Unified Procces

En palabras globales UML es una 'herramienta' o 'lenguaje' (lenguaje ... no creo pero asi lo he visto por ahi) y el RUP es la guia de como usarla.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #6 en: Viernes 21 de Mayo de 2004, 16:57 »
0
Citar
¿Qué es RUP?

Rational Unified Process, lo mencioné yo también más arriba.

Como ya dije, de las metodologías es la que más se acerca a la que usaría para un juego.

Citar
El ciclo de desarrollo que se deberia seguir es por iteraciones (modelo en espiral incremental)

Eso es a lo que me refería cuando hablé sobre crear un prototipo y construir sobre él. Por cómo había hablado jal2000 me dió la impresión de que se referería a un modelo en cascada, aunque ya he visto que no es así.

Respecto al diseño interno del juego, está claro que ha de hacerse después de diseñar la parte que ve el jugador, pensando en darle soporte. Con los cambios a los que están sujetos los juegos y las ataduras y carga de documentación que suponen la mayor parte de las metodologías veo poco apto seguir una metodología al pie de la letra. Creo que lo que más se ajustaría al estilo de desarrollo para juegos que me gusta es Extreme Programming

Me contáis qué opináis.

Un saludo.

Ruben3d

EDIT: Se me adelantó juank a "¿Qué es RUP?" por unos segundos. :blink:
EDIT 2: Gracias por el comentario sobre la página, jaal2000.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #7 en: Viernes 21 de Mayo de 2004, 17:06 »
0
Mi contestación a este post

UML cómo se usa?

explica un poco la relación entre UML y UP.

Un saludo.

Ruben3d

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #8 en: Sábado 22 de Mayo de 2004, 19:36 »
0
Si algo se es que la documentación de respaldo necesaria para el desarrollo de cualquier tipo de software se incrementa proporcionalmente al número de personas involucradas en el desarrollo del proyecto.

Si sólo participa una persona, tiene las ideas claras y el desarrollo completo del software no tomará más de 6 meses bastará con un código moderadamente comentado y algunos diagramas "en borrador", no extrañarás tener en papel el diseño y el análisis.

Si participa más de una persona ya hay que pensar que tiene que existir sincronización, ambos tienen que entender el trabajo que realiza el otro. Y lo mejor es tener todo el análisis y diseño en digital e impreso, junto con código generosamente comentado para no perder tiempo. Nunca sobrarán las aclaraciones en ningún tipo de diagrama o código.

Debido al anterior punto, no puedes acelerar el proceso del desarrollo de un sistema simplemente incrementando el número de personas involucradas, por que también es necesario incrementar el nivel de documentación. Llega un punto en el que incrementar el personal dedicado al desarrollo del proyecto más alla de un cierto límite no hace más que estorbar el proceso por los elevados niveles de comunicación y documentación necesarios.

Otro punto muy importante es que es muy difícil realizar un buen diseño en papel si antes no se ha participado activamente en la realización de un proyecto similar. "El papel aguanta todo", pero puede ser que al final "no compile" el diseño.  :)  Una vez que ya has metido la pata sabes cuales son los caminos que NO debes tomar para ese tipo de proyecto.

La verdad es que sólo cuando estás en plena programación te das cuenta si tu análisis y diseño son una belleza (te ahorran trabajo/dinero) o fueron una total pérdida de tiempo que te está haciendo perder más tiempo/dinero.

¿Se puede elaborar una brillante estrategia si no se conoce el campo de batalla,  los guerreros y las armas?

jaal2000

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://www.jaal.tk
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #9 en: Sábado 22 de Mayo de 2004, 21:47 »
0
Está claro que la determinación de la adopción de fases de análisis y diseño son circunstanciales, es decir, depende de la situación específica del proyecto.

PERO:

Lo que realmente quiero saber, es si existe un interés por obtener un ejemplo real, práctico y aplicado de estas fases en el desarrollo de un videojuego, ya que en la red existen pocos ejemplos de esto (por lo menos en nuestro idioma), o si alguien conoce alguno, por favor citarlo. Lo que pretendo es realizar un modelado de todo el sistema (juego) y no tanto la creación de un juego exitoso.
Alejandro Duarte.
DPA Software.

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #10 en: Sábado 22 de Mayo de 2004, 21:52 »
0
Hola.

Bueno, me fui desviando del tema. La verdad es que sí me gustaría ver los diagramas de diseño previos al juego y qué tanto de ellos se ha acabado reflejando en el producto final (aunque se deberían haber ido cambiando si se introducían cambios en el código).

Un saludo.

Ruben3d

PENTEX

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
    • http://black-byte.com/
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #11 en: Sábado 22 de Mayo de 2004, 22:38 »
0
Hola que tal.

En verdad creo que esta muy bien la fase de planificacion, no solo para la parte de la programacion, sino tambien para los otros tipos relacionados en el videojuegos (historia, graficos, sonido), de esta manera, se llevan unos procesos concordantes de scripting, programacion,modelado,etc.

Aun así, hace poco un amigo me hizo entender que hacer un juego es un proceso creativo, aun la parte de programacion, que para algunos es la mas cuadrada.

De todos modos seria bueno que publicaras los esquemas a ver que tal salió, pero yo no trataría de encapsular la programacion de videojuegos en esquemas tan formales como el UML, le quitan lo divertido cuando terminas el juego (ya verás).

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #12 en: Domingo 23 de Mayo de 2004, 02:47 »
0
Como algunos habrán leído en algún post mío, estoy aprendiendo C++  lo de POO, y para mí sería de gran utilidad poder ver este tipo de documentos no sólo para realizar un videojuego, sino con el afán de tener ejemplos de cómo implementar un sistema y organizar un proyecto con las herramientas de diseño disponibles. Yo estoy aprendiendo C++, POO y lo del UML, así que ver la mayor cantidad posible de proyectos implementados en sus fases de diseño y planeación antes que programación, me sería de gran utilidad para comprender probables usos de dichas metodologías.

Vamos, al final tu diseño si sería de utilidad :).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #13 en: Domingo 23 de Mayo de 2004, 06:19 »
0
Bueno,
yo solo digo una cosa..

Un juego se hace para divertir a los demas y generalmente para obteber utilidad de eso. Para obtener utilidad debemos diseñar algo que cualquier persona del ramo lo pueda entender y que nosotros mismo lo podamos hacer si queremos que nuestro codigo sea reutilizable y nos ahorre mucho trabajo en el futuro.

No dudo que hay, y habemos muchos gomozos de la programacion y que pensemos que deberiamos hacer un juego pensado en divertirnos..
eso no esta mal..

Pero es un mal enfoque hacer un juego pensando en divertirnos haciendolo, ya que sin lugar a dudas esa 'necesidad' de diversion por patrte de los creadores va en contraparte con lo que es el desarrollo de un producto de calidad, que sijn lugar a dudas para lograr ese objetivo de 'calidad' requerira mucho esfuerzo y tiempo dedicado al diseño.

Los procesos de dieño no prentenden ser la ultima palabra en el desarrallo y creacion de un videojuego ni de ningun tipo de software, el objeto del diseño es el de minimizar los fallos y todos los problemas en el futuro y desde luego crear una aplicacion cuyos componentes faciliten su reutilizacion y disminuyan el tiempo de desarrollo y de depuracion del software una vez este terminado.

Los diseños nunca contemplan todo, siempre quedan vaches, pero sino fuera por el diseño esos vaches estarian presentes un un porcentaje mucho mayor.

Tras realizar correcciones o desarrollos que se alejan del diseño debido a una necesidad o problema que no pudo ser previsto en la fase de diseño es necesario actualizar los documentos de diseño ya que el fin de estos mismos es el de dar soporte, documentacion y el de servir de almacenes de experiencia para eventos futuros.

En resumen el diseño y el mantenimiento del mismo es muy importante, el objeto de crear un juego puede variar segun las nececidades de cada quien,
los que quieren hacer juegos solo para tener un trabajo divertido... no necesitaran mucho de diseño porque su trabajo a la larga solo sera visto por ellos y por unos pocos y luego estara en la papelera de reciclaje o en alguna carpeta que nunca miren, y luego tal vez comiencen otro juego para divertirce, o tal ves no vuelvan a hacer ninguno nunca.
Las personas que pretendan o que tengan una vision empresarial y contemplenla creacion de videojuegos  como algo que no solamente debe ser divertido sino que debe ser un producto que cumpla estandares de calidad deberian pensar en procesos no tan divertidos como solo hacer un juego y ya, sino pensar en los diferentes procesos de modelamiento de software, en especial lo que se acomoden a los estandare internacionales, y si no logran por alguna razon adoptar un estandart existente, deberioan ponerse en la tarea de diselñar su propia metodologia de diseño siempre y cuando esta este en favor de la calidad en todos sus aspectos.

Infortunadamente o afortunadamente, segun sea el caso, en paises como colombia que son de escasos recursos, patrocinar empresas que quieran surgir en el campo de la multimedia y de los videojuego puede ser un riesgo muy alto que muy, pero muy pocos o ningun inversionista esta dispuesto a hacer... la razon...
No existen propuestas serias que cumplan con estandares ya establecidos, que cuenten con proyecciones basadas en datos reales y que adopten metodologias que incrementen la probabilidad de exito en la elaboracion de dichos proyectos.. los inversionistas necesitan saber que su inversion va a ser recuperada y que mas aun va a producir utilidades...
No podemos pretender convencer a alguien de que un producto va a ser bueno porque para nosotros es divertido hacerlo y somos muy buenos programando y haciendo animaciones...
se necesita vision empresarial y de negocios...

Dudo que empresas como Nintendo, Acclaim, Sega, SquareSoft o cualquiera bien conocida no utilice una metodologia determinada de diseño y desarrollo de software, aunque seguro que esto implica para ellos una mayor inversion de dinero y de tiempo para sus proyectos , pero de igual forma esta inversion se retribuira en resultados inmediatos en forma de ganancias y en resultados en mediano plazo mejorando sus procesos de desarrolo a travez de la reutilizacion y facil depuracion de los codigos ya escritos...

Sinceramente.. alguien cree que  el motor que ha logrado hacer SquareSoft no conto con un fuerte diseño desde sus primeras y posiblemente simples versiones?

Yo estoy convencido de que si hubo mucho diseño y de que seguramente pasaron muchos meses elaborando papeles poco divertidos....
Lo mismo pienso de juegos como Luigis Mansion para el NGC o los juegos de deportes de EA.

Tal ves en los tiempos del primer donkey Kong, o de la famosa ranita que saltava troncos en el atari 2600 o en los tiempos de juegos como el primer Goal! no se usaba mucho o nada de diseño pero hoy en dia...???
No se cuantos participantes sean ingenieros o cuantos estan estudiando.. pero lo cierto es que un ingeniero se caracteriza por llevar procesos a travez de metodologias propias o innovadoras, trabajos que no requieran diseñlo y que esten en elgun modo mas enfocados a la programacion o al hobby son más caractreristicos de personas que han optado por seguir ramas tecnicas o tecnologicas, lo cual no esta mal porque hacen lo que les gusta y estudiaron lo que les gusta.... en lo personal estudie ingenieria de sistemas por que me GUSTA la parte tecnica, la tecnologica pero mucho mas me gusta la parte de innovar y hacer las cosas bien siguiendo estandares de calidad y promoviendo siempre la eficiencia y economia de los procesos.. asi que he dado una respuesta pensando como Ingeniero.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #14 en: Domingo 23 de Mayo de 2004, 15:33 »
0
Cita de: "jaal2000"
¿...existe un interés por obtener un ejemplo real, práctico y aplicado de estas fases en el desarrollo de un videojuego...?
Sin duda que será de interés para todo el que quiera programar un videojuego. No hay mejor forma de ver los posibles problemas y soluciones que se se puedan encontrar en el proceso de desarrollo del juego. Pero es mejor, si luego de terminar de desarrollar el juego, se hace un "ajuste" de los diagramas para que concuerden mejor con el resultado final en caso que hubieran sido necesarios dichos cambios. En ese caso no sólo serían los planos del proyecto de construcción, sino los planos reales.

jaal2000

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://www.jaal.tk
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #15 en: Lunes 24 de Mayo de 2004, 06:00 »
0
Bueno.....

Para finalizar quiero decir que un buen diseño es la antesala a la garantía de calidad del software (incluyendo videojuegos).

He visto que hay interés en el tema, así que próximamente publicaré el primero de una serie de documentos que he escrito: El documento conceptual, que tiene como proposito, presentar la idea del juego de una forma resumida. Quiero aclarar que la idea original fue tomada de un curso de programación de juegos en http://www.geocities.com/agnasg/ . Lo que hice fue ampliarla un poco y cambiar algunos detalles.

Espero que les sea útil, y más adelante publicaré el argumento del juego (una historia pequeña pero interesante) y el documento de planificación.

Nota: Ya está listo:
         - Planificación y estimaciones (en LDC y PF)
         - Especificaciones
         - Análisis de sistemas
         - Análisis estructurado de los sistemas

         Falta hacer una revisión de este material.

(Yo creo que mañana estará listo el sitio web en: http://www.fireoff.tk)
Alejandro Duarte.
DPA Software.

jaal2000

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
    • http://www.jaal.tk
Re: Importancia De Las Fases Anteriores Al Código
« Respuesta #16 en: Martes 25 de Mayo de 2004, 19:31 »
0
Ya está lista la página:

    http://www.fireoff.tk

Espero que lean el Documento Conceptual y me envíen sus comentarios.


AYUDA:

Necesito ARTE CONCEPTUAL para este documento.
Alejandro Duarte.
DPA Software.