por carlostex » Sab Feb 05, 2011 6:23 am
Bueno, la forma de hacerlo pues es siguiendo el esquema de orientación a objetos. es una buena pregunta, en uno de los libros de sdl que esta en esta página se hace al final un juego 1945 el clásico de aviones, creo que a ese tipo de estructura se refiere Juan, es un juego sencillo, y es fácil ver que se hace en el main y como se van llamando las funciones que mantienen el juego, pero ese esquema para un juego mas grande sería muy engorroso a mi parecer. Regresando a lo que me preguntabas, bueno cuando empecé el juego fue de la forma como el 1945 del libro, declare funciones para mantener el cuadro y los actores, era casi todo estructurado, luego me di cuenta que me acomodaba mas la forma un motor, un motor para ese juego, lo aclaro por que no es lo mismo que el motor de pilas que trae un montón de cosas. Mi motor trate lo necesario para el juego que tenia pensado, pero claro al ser un motor es muy general y puedo hacer con el otro tipo de juego, quizas un RPG, uno tipo Mario bros, pero no implementa un motor de física por que no es necesario, en cambio pilas mientras mas general sea mejor.Me desvié un poco jeje, pero bueno, la forma que lo junto es llamar a las clases que necesito, si quiero crear un actor pues lo creo al inicio del programa, le puedo dar una velocidad y se ira moviendo cada que pase un frame sin hacer nada mas, pero si quiero detectar una colisión pues tengo que meter el código en el bucle principal donde llamo a las clases que ya cree para ver si un objeto choca con otro.
Quizás si miras los ejemplos que tengo te des una mejor idea, están en la carpeta test, son tres checate el que dice debug, es muy simple, pero aí se ve el uso del motor, lo que hago es incluir hai todo el motor, por que lo compilo como un biblioteca dinámica, puede parecer ciertas cosas engorrosas, sobre todo la parte en la que defino unos puntos ya lo veras de referencia en cada actor, pero no termine de afinar muchas cosas, básicamente lo que tengo son ideas, que funcionan pero les falta un poco de código para que queden mejor, por que si no defino esos puntos los actores no aparecen, ya que el gestor de gráficos no los dibuja.
De hecho la parte que puede ser mas compleja no es como interactúa la lógica del juego con el motor, por que como te digo solo es ir instanciando objetos según necesitas. En cambio la interacción interna del motor puede ser un poco compleja, en mi caso como ya viste para cada módulo(actores, gráficos, efectos, sonido, etc) tengo creado un manager, y la idea es análoga a la de un jefe de un departamento, organiza a sus subordinados y mantiene la comunicación con los demás departamentos si es que lo necesita, y un director que se encarga de pedirle a los jefes las tareas que requiere de ese departamento, y el cliente en este caso la lógica del juego o el que lo programador hace peticiones al director.
La biblioteca del motor está preparada para ser importada en un script de LUA lo que permite un desarrollo mas fácil si no se quiere usar C++.
Saludos, y cualquier dudad del código intentare responderla en cuanto pueda.
El conocimiento de unos es conocimiento de todos.