Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Busco consejos para la creación de un juego en 2D

Iniciado por Meme, 25 de Octubre de 2012, 12:50:13 AM

« anterior - próximo »

Meme

Saludos, hace tiempo que estoy interesado en crear algún juego con el funcionamiento parecido a los primero juegos del final fantasy, o del Breath of Fire, o el mismo Pokemon [me refiero al tipo de juego, no a lo que conlleva la programación para esos juegos :P por lo menos quiero empezar por las bases y despues ir viendo jaja]. Por el momento prefiero aprender hasta ahí. Mi problema es que no tengo los conocimientos necesarios para saber por donde arrancar. En cuanto a estudios, soy programador en lenguaje C,C++,C#, Java, entre otras cosas, pero eh visto mas que nada estos. Pero todos orientados a los programas de escritorio y demás, en ningún punto relacionado a los videojuegos.

Mi pregunta puntual va dirigida a, desde donde debería empezar a leer e investigar. Que lenguaje me convendría elegir, que motor gráfico me recomendarían y demás cosas que tal vez no tengo idea que sean necesarias.

Espero que mi consulta sea entendible, y ante cualquier duda les pido que me indiquen que mas datos debería darles.

Desde ya Muchas gracias,
Nos leemos pronto!

Meme

No comprendí esta parte :P jaja

Cita de: Gorkinovich en 25 de Octubre de 2012, 01:23:45 PM
Me imagino que te refieres a un juego en 2D.

Pero entiendo lo que propones. el nombrar Java era para que tal vez sirva para guiarme un poco mas, mi idea no es crear nada en android ni mucho menos, por el momento sería algo para pc. Voy a investigar un poco sobre la propuesta de C# y la de c++. Te doy gracias por tu respuesta y si tenes algun tutorial o algo similar que me puedas recomendar, estaría aún más agradecido :P jaja

Saludos

Erkosone

Si controlas C++ puedes empezar con CDIV, es un engine basado en allegro que funciona "sin cambiar un ápice de código" en Windows, linux y MacOSX bajo C++.

Te permite crear este tipo de juego sin ningún problema, es bastante potente en cuanto a 2D se refiere, trae una documentación excelente y muchos juegos de ejemplo.

Yo no me lo pensaría 2 veces y le daría una oportunidad.

Yo he programado algún juego parecido a estos que comentas "FF o BOF", antes de empezar tienes que tener varias cosas presentes:

Zonas, tienes que crear una estructura de zonas con todos los datos de cada zona, es decir, si la zona ha sido visitada antes, si es la primera vez que la visitas, y sobre todo en que estado está la zona y el juego global.

Los juegos tipo FF son extremadamente complejos de programar si no se enfocan correctamente desde el principio por que básicamente todo depende de todo de demás.

Mi consejo es que te centres en una aventura lineal si es la primera vez que haces algo así, osea, una simple variable como por ejemplo:

INT GAME_STATE = 0;

Entonces empieza el juego, tienes que tener una lista de objetivos bien definida que van a marcar la trayectoria de la historia, es tan simple como que cada vez que alcanzas un pequeño objetivo aumentas en 1 el GAME_STATE, así tenemos que al empezar el juego el programa espera que lo primero que hagas es hablar con un personaje que aparece justo al lado tuyo por ejemplo..  por ahora sin hablar con el el game_state vale cero..   si intentas interactuar con cualquier cosa los mensajes que recibirá el player serán del tipo "creo que primero deberíamos encontrar a alguien que nos explique que ha sucedido.." y todo estará bloqueado.. en cuanto interactues con lo que toque hacer en ese momento la variable global GAME_STATE vale 1, y ahora algunos eventos cambian, como por ejemplo:

puerta de salida al exterior:

si game_State < 1 entonces mandar evento al sistema de textos en pantalla con el string "heyy... no puedes salir todavia!"..
si game_State =>1 entonces mandar sonido al gestor de sonidos "click.wav" paralizar momentaneamente al personaje.. aniar objeto puerta hasta que se abre del todo.. desparalizar al personaje..

Otro ejemplo siguiendo con lo de las zonas que te comentaba, imagina una Struct como esta:

Struct gameZoneStatus[100];
string fileWithGraphicsScene;
int idmusicNew;
int idmusicDay;
int idmusicNIGHT;
int niebla;
int estado;
int disponible;
int nueva;
int specialItemsDiscovered[10];
int completamenteExplorada;
end

100 zonas de juego que puedes configurar como quieras y que al iniciar una nueva partida tienes que asegurarte de resetear la estructura completamente a cero "menos las rutas de archivos del escenario etc etc..".. entonces si la zona está disponible puedes acceder a ella, si es nueva puedes hacer sonar una música especial para tal ocasión, puedes tener conocimiento de cuantos items ocultos quedan por descubrir en la zona.. etc etc etc..


Lo mejor de todo es que plantees un sistema sencillo de transición entre zonas, eso es lo primero que necesitas para el juego, un sistema mediante en cual puedas descargar los archivos de la zona que dejas atrás y cargar los de la nueva zona.

También es buena idea "siguiendo con la estructura" crear unos registros al estilo startXplayer y startYplayer que serán int´s y corresponderán a la posición dentro del scroll que tendrá el player al aparecer en la zona en cuestión..


Luego ya cuando tengas esto funcionando y las transiciones entre escenarios te funcionen bien.. suenen las músicas.. el personaje aparezca donde tiene que aparecer.. pues ya te lias a meterle contenido a los escenarios en función de la historia y los eventos o linea de eventos del juego.


Yo empezaría el proyecto creando una serie de escenarios con el paint así feos.. con caminos y hierba.. y un par de cuadrados que representen la puerta de entrada y la de salida a la zona/excenario, entonces montas el programa para que gestione las transiciones entre escenarios, osea.. cuando el personaje colisiona con la puerta de salida un pequeño fadeOFF de pantalla y:
congelar el objeto player..
descarga de los recursos del escenario..
carga de los recursos del nuevo escenario..
posicionamiento del player..
hacer sonar la música..
desconjelar el objeto player..
fadeON de pantalla..

Un saludo.
No existen intentos fallidos, solo  descubrimos métodos incorrectos.

julen26

Bueno yo trataré de aportar mi granito de arena en tu decisión.

Según mi experiencia en creación de videojuegos en 2D, te recomiendo usar SFML que es la que actualmente estoy usando para mis proyectos. SDL también esta bien dada su estabilidad y facilidad de instalación, pero aún asi sigo recomendandote SFML. A pesar de los problemas de los principiantes en instalar esa librería, con un poco de ganas se consiguen excelentes resultados.

Actualmente desconozco de las características de la versión mas reciente de SDL, pero la versión 1.2 al menos era muy superada por la versión 1.6 de SFML (más rápido, sobre OpenGL, aceleración por hardware, integración con Qt, wxWidgets, GTK y un largo etc.). Ahora con la versión 2.0 han cambiado muchas cosas así que te recomiendo que empieces por ahí.

Quizás no sea tan estable, porque a menudo realizan cambios que te hacen cambiar el código, pero cuando se publique la 2.0 de forma oficial (y no el Release Candidate) será otra cosa, y no queda mucho.

Lo más importante es que SFML es muy fácil de usar, con poca documentación pero buena y que es un proyecto muy activo respecto a su desarrollo.

Meme

Hola Erkosone gracias por tu respuesta... estuve revisando sobre CDIV, descargue todo e intente ejecutar y me tiraba errores que no los pude encontrar. Revise por internet e intente reinstalar todo pero no pude lograr que compilara ni siquiera el "hola mundo". Creo que el error que tiraba es que no encontraba el archivo srt2.o o algo así. intente buscarlo y encontre uno pero tampoco solucionaba mi error. Así que seguire investigando y viendo si puedo solucionarlo....


mientras tanto, tome el dato que me pasó Julen26 y comence a investigar SFML, por ahora recien lo descargo y estoy en proceso de configuración. En cuanto avance un poco mas y tenga problemas seguramente volvere a consutlar jaja.

Muchas gracias por esforzarse a contestar. Espero en algun momento devolverles el favor ;)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.