Como organizar un proyecto?

Consulte acerca de programas, técnicas, algoritmos etc.

Como organizar un proyecto?

Notapor migueleitorone » Jue Nov 04, 2010 10:50 am

Buenos dias!
Ahora que he aprendido a usar clases y punteros me gustaria hacer un juego dentro de lo que cabe complejo -almenos para mi nivel- y practicar lo estudiado.
El problema es que las veces que he intentado hacer algo "grande" siempre a sido un caos e incluso me he llegado a cargar lo que tenia hasta el momento por intentar implementar algo.

He buscado por google como diseñar un software pero todo lo que encuentro es bastante avanzado y me imagino que con la practica se aprenden estas cosas, pero si para empezar me pudierais dar unas pautas a seguir, me iria de maravilla.
Como planteo el problema? Por donde empiezo? nose, lo que podais explicarme me servira ;D

Muchas gracias de antemano :)
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Como organizar un proyecto?

Notapor Mightygaver » Jue Nov 04, 2010 12:09 pm

No soy ningun experto en la matería pero creo que para conseguir llegar a una buena organización de tu código hace falta que antes pases por esa fase que has comentado, la de hacerte un lío de programa.

Para conseguir hacer más simple un proyecto, siempre recuerdo las "consignas" de la programación orientada a objetos.
La encapsulación es crucial. Trata que tu programa principal se base en llamadas a las funciones de tus clases o módulos
haciéndolo más legible y apartándolo del nivel de detalle que esas funciones encapsularán.

Otra es el aprovechamiento de código. Siempre que veas código duplicado, piensa en como podrías hacer de ello una función, o un método de una clase que haga más sencillo su uso. Piensa, que te haces más fácil la vida a tí mismo.

Si aún así tienes problemas mira algo de ingeniería del software por encima, no al nivel de especificación de requisitos, ni análisis, sino sobre nuevas tendencias que tratan de hacer el código más legible y, sobretodo, más mantenible.

Y bueno, evidentemente con la práctica se llega a dominar un poco estas técnicas. La verdad que yo he programado un poquillo durante mis años estudiando la carrera y, a pesar de ello, sigo siendo algo desastre, por eso digo que no soy un buen ejemplo a seguir, pero sé que estas son algunas de las recetas que debes tener en mente.

En fin, mucha suerte con tu proyecto y a ver si esto te ha servido de algo XD.
Mightygaver
 
Mensajes: 69
Registrado: Vie Ago 27, 2010 5:46 pm
Ubicación: Vila-real, España

Re: Como organizar un proyecto?

Notapor migueleitorone » Jue Nov 04, 2010 1:13 pm

muchas gracias por responder Mightygaver, la verdad es que lo que me comentas lo tengo en mente, y de hecho lo llevo a la practica mucho mejor programa a programa, aunque yo me referia a la parte previa a escribir el codigo.

De momento tengo escrito sobre papel la historia del juego y el sistema de combate y dialogo. Algo en principio sencillito y facil de hacer, pero que entre mas lo pienso mas complejo lo veo. Lo que no se es como desarroyar la idea sobre el papel de una forma mas cercana al codigo final. Como lo haceis vosotros? por que me imagino que no es poneis a programar sobre la marcha (lo que he estado haciendo hasta ahora).
Gracias de nuevo y toda ayuda es bienvenida :D
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Como organizar un proyecto?

Notapor Juanxo » Jue Nov 04, 2010 2:02 pm

generalmente lo que se suele hacer en diseño e ingeniería del software es el documento de requisitos. Pero estoy de acuerdo en que lleva demasiado tiempo, y las grandes empresas lo hacen porque no pueden tomar demasiados riesgos de fallar.

Pero una versión simplificada que suele utilizarse también es leerse la historia dle juego que tienes y empezar a sacar características y clases de ahí. Aunque no te hagas un diagrama de clase completo, tener anotadas las cosas que crees que vas a ir necesitando te ayuda mucho.

Otra cosa es hacer el diseño y la programación de arriba a abajo. Con esto me refiero a escribir primero las partes grandes del programa, como por ejemplo como vas a usar el sistema de animaciones. Y una vez que esté hecho, fijarte en que cosas necesita tener el propio sistema de animaciones. Un ejemplo sería escribir primero como vamos a ejecutar o como vamos a cambiar entre los frames de las animaciones, y una vez que veamos como queremos que se haga, hacemos un sistema que se acople a esto.

Para estas cosas viene genial utilizar bibliotecas de testeo unitario, como unittest++
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Como organizar un proyecto?

Notapor carlostex » Vie Nov 05, 2010 3:03 am

Hacer buenos códigos que sean legibles y robustos también se logra con la práctica, podrías empezar haciendo algo pequeño para que vallas viendo las partes cruciales del software que haces, aunque ya sepas mucho del lenguaje no implica que puedas hacer un proyecto grande, por que implica diseño. otra forma de aprender es leyendo código, algunas de las cosas que se de diseño de software y optimización de código las aprendí viendo otros códigos de juegos, pero mas el hecho que fue evolucionando mientras veía como lo podía hacer mejor.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: Como organizar un proyecto?

Notapor migueleitorone » Vie Nov 12, 2010 12:22 am

Buenas, gracias por responder, me ha sido de ayuda. Ahora ya tengo un caracter que se mueve por un mapa y viaja entre mapas y la verdad que bastante bien ordenado y hasta ahora no he tenido problema a la hora de implementar nuevas clases y funciones.

He hecho lo que me decia Juanxo, he leido la informacion del juego que tenia sobre papel y de ahi he ido sacando y clases con sus metodos y sus miembros (data members lo llaman en ingles,imagino que esa sera la traduccion xdd)y no veas como cambia teniendo la idea bien clara.

Sobre lo de leer codigos, lo he intentado alguna vez, y yo no se si sera que he escojido codigos mal hechos o mi falta de experiencia, pero se me ha hecho muy dificil entenderlo. Me parece increible lo "rapido" que aprende uno de los errores, por que intente hacer lo del caracter que se mueve por el mapa y me salio una birria de codigo, en cambio en el segundo intento me ha salido muy bien, dentro de lo que cabe jeje.

de nuevo, muchas gracias por la ayuda, por cierto juanxo, para que sirve unitest? por que en google me salen tests de embarazos o informacion en ingles y no me entero mucho :S
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Como organizar un proyecto?

Notapor Juanxo » Vie Nov 12, 2010 12:51 am

buenas miguel:

unittest es una herramienta que te permite establecer test que se ejecutarán de forma automática, y podrás comprobar si los cambios que realizaste desde la última vez han "roto" algo de lo que ya tenías.
En pilasC++ los estamos usando. puedes descargarte el código si quieres echarle un vistazo

Te pongo aquí un ejemplo:
Código: Seleccionar todo
#include <Pilas/habilidades.h>
#include <Pilas/entidad_base.h>
#include <Pilas/actores.h>
#include <Pilas/texto.h>
#include <Pilas/tipo_habilidades.h>
#include <iostream>
#include <UnitTest++.h>

void funcion_test( Pilas::vector_entidades objetos, sf::Event& evento )
{
  std::cout << "funcion de prueba" << std::endl;
}

struct Habilidades_fixture
{
  Habilidades_fixture(): nombre("funcion_test"), habilidades()
  {
    habilidades.registrar(nombre, &funcion_test);
  }
  std::string nombre;
  Pilas::Habilidades habilidades;
};

SUITE( PILAS_HABILIDADES )
{
  TEST( CARGAR_FICHERO )
  {
    Pilas::Habilidades habilidades( "../tests/habilidades.txt" );
    int  resul = habilidades.numero_habilidades();
    CHECK_EQUAL( 6, resul );
  }

  TEST_FIXTURE(Habilidades_fixture, REGISTRAR_FUNCION )
  {
    int resul = habilidades.numero_habilidades();
    CHECK_EQUAL( 6, resul );

  }

  TEST_FIXTURE(Habilidades_fixture, NUMERO_OBJETOS_POR_DEFECTO)
  {
    int num_objetos = habilidades.numero_objetos( nombre );
    CHECK_EQUAL( 0, num_objetos );
  }

  TEST_FIXTURE(Habilidades_fixture, REGISTRAR_HABILIDAD_REPETIDA )
  {

    int resul = habilidades.numero_habilidades();
    CHECK_EQUAL( 6, resul );
    habilidades.registrar( nombre, &Pilas::SeguirAlMouse::mover );
    resul = habilidades.numero_habilidades();
    CHECK_EQUAL( 6, resul );
  }

  TEST_FIXTURE(Habilidades_fixture, ENSENIAR_HABILIDADES )
  {

    Pilas::Entidad_base* objeto = NULL;
    habilidades.enseniar(nombre, objeto);
    int resul = habilidades.numero_objetos(nombre);
    CHECK_EQUAL(1, resul);
  }

}


Suponte que ahora cambio algo de la clase habilidades, y al ejecutar los test me dice que ha habido errores. Esto me indicaría que lo que acabo de cambiar a tocado algo que no debería.

En proyectos pequeños a lo mejor no supone una gran ventaja, pero son cosas que a mi me gusta conocer para el día de mañana, donde probablemente la empresa donde trabajes, si que lo podría utilizar. Pero si no llevas demasiado bien el inglés, no te recomendaría su uso, ya que casi toda la documentación está en inglés. Pero ten en cuenta que sin poder leer bien en inglés, te estás perdiendo el 90% de la información que hay ahí fuera.
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Como organizar un proyecto?

Notapor migueleitorone » Lun Nov 15, 2010 1:57 pm

pues me parece muy interesante, por que precisamente eso es lo que me suele pasar, que al implementar algo nuevo me cargo lo anterior.
Le hechare un vistazo aver si veo como usarlo aunque este en ingles(no es que no lo entienda pero se me hace bastante mas pesado de leer que en español)

Gracias y felicidades por el proyecto pilas. Espero poder ayudar en eso mas adelante :P
migueleitorone
 
Mensajes: 88
Registrado: Mié Ago 18, 2010 2:59 pm
Ubicación: Barcelona, España

Re: Como organizar un proyecto?

Notapor carlostex » Vie Nov 26, 2010 4:35 am

Si seria buena la ayuda en pilasCpp, y aunque no te metas tanto, ten la confianza de descargarte el código y postear preguntas con respecto al código, intentamos que el código sea legible y que hallan comentarios, hacer un motor de videojuegos implica también diseño y podrás ir viendo como evoluciona. Por ahora lo que llevamos es poco, pero ahora que ya vienen las vacaciones nos pondremos a ello y avanzaremos mas rápido, por eso puedes empezar a checar el código.
Acerca de leer código sí tienes que tener experiencia en el lenguaje y las bibliotecas que use cada programador, pero hay pequeñas partes de las que puedes sacar ideas, aunque la evolución de mismo código, que escribe uno mismo deja mucho aprendizaje como comentas, sigue así, lo importante es intentarlo.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico


Volver a General

¿Quién está conectado?

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

cron