Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Que programar y que no?

Iniciado por 16BITBoy, 12 de Marzo de 2009, 05:55:00 PM

« anterior - próximo »

16BITBoy

Buenas.
Esto que me planteo tiene que ver con que programar a la hora de realizar un juego y que no, por el tema de "no reinventar la rueda" o esa frase que lei por aqui que decia "o haces engines, o haces videojuegos".

Yo ya he programado un pequeño videojuego, un simple pong, en C++ y allegro, y la verda analizando el tipo de juego te das cuenta que necesitas algoritmos muy basicos y muy pocos y que poco te importan programarlos, importandote poco si existen ya o no, yo los hice por mi cuenta.

La cosa es que me dispongo a dar el salto a otro genero, por ejemplo un plataformas, un juego de disparos tipo avioncitos(1941) o un RPG (bueno este ultimo puede k sea el 3er salto que dé, mejor un plataformas xD). Entonces me pongo a analizar que me hace falta para por ejemplo un plataformas, pues me hace falta codigo que sea capaz de cargar tiles de un archivo o varios, me hace falta codigo para generar mapas a partir de...¿archivos XML? o algun formato que me saque de la manga quizas.... en resumidas cuentas te das cuenta de que te hace falta muchisimas cosas que no tienes con una libreria o motor de juegos como algunos la llaman a allegro, entonces la pregunta es: ¿Estas cosas, si habria que programarlas, como un marco de trabajo para que sirva para siguientes desarrollos o por el contario, seria mejor buscarse un engine lo mas currado y completo posible, con editor de niveles, algoritmos basicos de fisica, con el generador de mapas etc etc?

Lo único que he encontrado como mas próximo a lo ultimo son programas como RPG Maker o GameMaker, que aunque los veo bien, a mi me gusta mas el C/C++, o cualquier otro lenguaje, la cosa es que me permita mas flexibilidad que esos dos programas, como por ejemplo que si algo le faltan se lo pueda añadir, o modificar algo a mi gusto, yo por ejemplo, no podria hacer que GameMaker por poner uan ejemplo supiese leer un paquete de datos (imaginense lo que sea que contenga da igual) el cual he programado yo su formato, cosa que con C++ seria solo ponerse a ello.

Creo que me he enrollao demasiado, en resumen ¿que creeis ustedes que se deberia programar a la hora de crear un juego y que no, si lo haces para aprender y como (por ahora) hobbie, gustandole a uno la programación?

Un Saludo!

Vicente

#1
Cita de: 16BITBoy en 12 de Marzo de 2009, 05:55:00 PM
Lo único que he encontrado como mas próximo a lo ultimo son programas como RPG Maker o GameMaker, que aunque los veo bien, a mi me gusta mas el C/C++, o cualquier otro lenguaje, la cosa es que me permita mas flexibilidad que esos dos programas, como por ejemplo que si algo le faltan se lo pueda añadir, o modificar algo a mi gusto, yo por ejemplo, no podria hacer que GameMaker por poner uan ejemplo supiese leer un paquete de datos (imaginense lo que sea que contenga da igual) el cual he programado yo su formato, cosa que con C++ seria solo ponerse a ello.

Has buscado de forma muy rara :p. Aquí en el foro tienes dos librerías (IndieLib y CRM32Pro) que seguro que te ayudan con ese tipo de problemas y además tienes a sus creadores bastante a mano (bueno, TheAzazel anda un poco más desaparecido, pero responde :p).

Yo las probaría un poco antes de ponerme a reinventar la rueda.

Un saludo!

Vicente

16BITBoy

Probaré ambas aver que tal. CRM32Pro la probé hace mucho mucho tiempo, no se si tendra algo mas ahora, pero hasta donde tenia desarrollado, te manejaba la velocidad del juego y la de dibujo por separado si mal no recuerdo, y clases de sprites y tal, pero aun ese seguia siendo una libreria bastante generica, osea como allegro, es el punto de partida a hacer un juego de cualquier tipo, que es a lo que me refiero, el decir que puede hacer cualquier tipo de videojuego suele implicar que carece de los generadores de mapas basados en tiles (por que puede que no quieras que se basen en esto), de los diferentes tipos de colisiones que pueden existir y tal, total que te obliga a crear ese "marco de trabajo" que es necesario, y luego el codigo del juego en si.

De todas formas las probare ambas aver si tienen lo que busco, gracias ;)

Un Saludo!

Vicente

Cita de: 16BITBoy en 12 de Marzo de 2009, 09:03:53 PM
Probaré ambas aver que tal. CRM32Pro la probé hace mucho mucho tiempo, no se si tendra algo mas ahora, pero hasta donde tenia desarrollado, te manejaba la velocidad del juego y la de dibujo por separado si mal no recuerdo, y clases de sprites y tal, pero aun ese seguia siendo una libreria bastante generica, osea como allegro, es el punto de partida a hacer un juego de cualquier tipo, que es a lo que me refiero, el decir que puede hacer cualquier tipo de videojuego suele implicar que carece de los generadores de mapas basados en tiles (por que puede que no quieras que se basen en esto), de los diferentes tipos de colisiones que pueden existir y tal, total que te obliga a crear ese "marco de trabajo" que es necesario, y luego el codigo del juego en si.

De todas formas las probare ambas aver si tienen lo que busco, gracias ;)

Un Saludo!

Creo que CRM32Pro tiene algo para los tileados y seguro que el tema de las colisiones está contemplado (e IndieLib tiene lo de las colisiones también, es más, había algun tutorial del tema).

De todas formas, luego cuando hagas tu propio juego seguramente necesitarás hacerte herramientas propias (un diseñador de niveles, etc) eso sí que no hay "salvación" a menos que te metas en un GameMaker o parecidos.

Un saludo!

Vicente

16BITBoy

Cita de: Gorkin en 12 de Marzo de 2009, 10:36:16 PM
Además hay que ver si realmente uno tiene nivel como para superar lo que podría hacer con una aplicación tipo gamemaker, porque muchas veces uno apunta a cosas para las que no está del todo preparado. De modo que al final, es una cuestión de conocerse a uno mismo y conocer bien el problema al que se enfrenta, y es algo que se obtiene con la experiencia (fallida o no).
Ya, pero, aver como te explico mi situacion. Con gamemaker, yo seria capaz de realizar o prototipar el juego, tengo imaginacion, no se cuanta, pero no estoy pensando en hacer el proximo juego nexgen para mañana osea que tampoco es el tema. Pero digamos que en gamemaker o, mas concretamente tal vez en rpgmaker, uno lo que hace es un guión del juego, no se si guion es la plalabra exacta, digamos que plasmas la idea de juego en el juego o sistema ya hecho,  el cual es [ponga el Maker que guste], lo cual para prototipar y plantearse temas de diseño de juegos y quien quiera ser game designer, pues de lujo, pero digamos que a mi me tira la programacion, y a la vez me gustaria tener una de mis ideas ejecutandose sobre mi trabajo, sobre mi aplicacion, algo entre la balanza de hacer un engine grafico, fisico..etc (que no me quiero meter por ahi) y hacer realidad la idea de videojuego que quiero hacer. Esto me permite, saber como hacer las cosas tanto a "alto" nivel(lo que tenga que ver realmente con el juego, como... una clase de enemigo?), como a "medio" nivel(la forma en la que funciona el juego) si consideramos a los engines como el nivel mas bajo(sin ver lo que aun pueda haber mas abajo xD). Para un juego como el pong, C++ y allegro me daba ese equilibrio de saber bien como lo hago y plasmar las ideas que se me podian ocurrir, ya para otro genero mas complejo no.

De todas formas, aparte de que sea por que me gusta la programación y por eso no me inclino hacia los makers (que algun dia probaré para llevar a cabo alguna que otra idea), seguro no llegaré a aprender realmente a hacer un juego de estos si no pico codigo, que yo sepa, y que me corrijan si me equivoco, no se usa gamemaker ni rpgmaker en ningun estudio de desarrollo, cosa que en un futuro me gustaria llegar a ser capaz de trabajar algun dia en ellos.

Bueno lo mismo estoy yo hablando de esto y resulta que me equivoco en el camino a seguir, pero enfin es lo que creo que necesito y no encuentro. Aver si pruebo esas librerias mañana aver que tal.

Un Saludo!

Hechelion

creo que si tienes claro lo que quieres entonces deberías ir por ese camino.

La rueda no se reinventa por el motivo de que el fin es crear un juego y estar reescribiendo el mismo código por cada aplicación se vuelve una perdida de tiempo y dinero. Si tu fin es aprender y te gusta la programación entonces reinventa lo que quieras aunque ya esté hecho.

16BITBoy

Gracias, de alguna forma me aclarais un poco las ideas.

Cita de: Gorkin en 13 de Marzo de 2009, 01:00:50 PM
Cuanto más grande es un proyecto, más diferente se vuelve el querer hacer un juego en serio, de querer aprender programación de videojuegos.
Te entiendo, bueno mas bien requiere de mas gente que uno solo para llevarlo a cabo, y sino que se lo digan a los de "Live For Speed" que son 1 programador, 1 grafista y otro mas. La cuestion es que si uno quiere hacer un juego ya pues si, se use la herramienta que mas facil te lo ponga por que sino requeriria de gente que te ayude y que dificilmente vas a encontrar. Pero bueno yo tengo ahora mismo muchisimo tiempo por delante para aprender, tengo 18 años y pienso aun me queda camino, con lo cual no me frustraré si mi juego tiene malos graficos o pinta como el de un Spectrum o algo mas antiguo, la cosa es que sepa acerlo, no importando los graficos o su vistosidad. Recuerdo que cuando hice mi primer pong en C fue hace casi 3 años a punto de cumplir los 16(era igual que el que hice reciente en C++, pero claro peor programado), los graficos estaban hechos a base de matrices no habia ningun mapa de bits, todo cuadriculado, y cuando lo enseñe en el instituto, sirvió de entretenimiento para la gente que pasaba de las clases de informática y se ponian a jugar, pues mira, logro conseguido ^^.
Cita de: Gorkin en 13 de Marzo de 2009, 01:00:50 PM
Lo cierto es que hay un sentimiento generalizado entre la gente que empieza, a escupir sobre aquello que de facilidades, como si fueran espartanos...
Hombre, no se de los demas, pero no creo que sea mi caso, yo no digo que sean una mierda, ni mucho menos, son útiles para crear juegos. En realidad ya los probé hace mucho tiempo, no a fondo muy por encima, de game maker sabia que tenia algo de codigo pero muy poco, pero aparte de eso, sabia que no era lo que buscaba y no es lo que busco por ahora. Que como tu dices, si se me ocurre "una idea de juego que es la hostia" y veo que lo puedo realizar mejor en uno de estos, y si además tengo ideas de lucrarme de el, pues oye no tendria sentido el hacerlo todo de cero, si se que lo puedo hacer mejor ahi, por que perderia tiempo invirtiendolo en cosas que no son en las que deberia de invertirlas.

Cita de: Gorkin en 13 de Marzo de 2009, 01:00:50 PM
Y por cierto, si vas a aprender a programar, que hayas aprendido C/C++ está bien, sí... pero un buen programador ha de conocer como mínimo las siguientes cosas (cuantas más mejor):

+ Los fundamentos de la programación estructurada, que más o menos es lo que aprendes cuando aprendes a programar en C, casi todos los libros de aprender a programar en C te enseñan programación estructurada con cierta coherencia.
+ La programación orientada a objetos, que no es simplemente aprender C++ y lleva bastante esfuerzo y práctica el saber orientar las cosas a objetos de forma coherente.
+ Estructuras de datos, que aunque luego uses la STL en C++ para ahorrarte el trabajo de crearte muchas de esas estructuras, es importante saber como están formadas esta clase de cosas.
+ Patrones de diseño, que dan solución a múltiples problemas que surgen a veces con la orientación a objetos.
+ Metodología de la programación, para aprender ciertos tipos de algoritmos útiles para saber enfrentarse a cierto tipo de problemas. De esos principalmente los que yo más destacaría (porque es los que he dado en la universidad XD) son: Divide y vencerás, Programación voraz, Programación dinámica, Backtracking, Ramificación y poda.
+ E ingeniería del software.

Y puede parecer mucho y lleva su tiempo, y hay que practicar un montón, pero es bastante útil para tener conceptos que te ayuden a resolver problemas en un futuro. Además recuerda que uno siempre ha de intentar en la medida de lo posible diseñar código lo más claro, sencillo, flexible, reutilizable y mantenible posible. Cuanto más sepas y hayas practicado, más sencillo te será conseguir lo que te acabo de decir y serás mejor programador. En fin, espero que esta información te pueda servir de algo ^_^
Se agradece este ultimo aporte  ;) realmente, las estructuras de datos, la programacion estructurada, modular, y orientada a objetos(si, se que no es solo C++, lo se de sobras sabiendo VB.NET y PHP), y recientemente la STL lo manejo. Me falta digamos todas las tecnicas de metodologia de programación, y todos esos metodos que deben enseñar en las universidades me imagino, para saber diseñar un programa antes de ponerse a picar codigo, cosa que yo hago a mi manera, con mis garabatos, apuntes y tal xD

Un Saludo!

seryu

Si quieres hacer un juego 2d con tiles, creo que te vendrá bien echar mano de algun editor de tiles, por ejemplo:

http://tilestudio.sourceforge.net/

http://www.tilemap.co.uk/mappy.php

Ambos con muchos ejemplos y utilizados con anterioridad por bastante gente.

Este me gusta menos, lo utilicé una vez que me dio por hacer un juego de móviles:

http://mapeditor.org

Prompt

Yo creo que sois todos una panda de flojos y comodones!  >:D
Hay que hablar de otras cosas, no de reinventar la rueda, o el camino mas facil...

Que quieres hacer y a que te quieres dedicar?
- Si quieres dedicarte a ser un programador-builder usa herramientas y motores
- Si quieres ser un buen programador-builder deberás comprender a lo mas bajo nivel posible que implica poner un objeto en la pantalla.
- Si quieres ser un programador de videojuegos como dios manda, estudia, haz demos, juegos desde 0, engines etc... Y ten la mente clara de optar por la productividad a la hora de hacer un videojuego. Es decir, q tu empresa si no es grande, compre un engine y sus herramientas para hacer videojuegos.

Es mi opinion personal, son las diferentes vertientes que creo que debe seguir un programador cuando se dedica a esta industria. De hecho son el puro reflejo de los puestos disponibles para un programador.

Tei


Creo que hace falta mucha gente para hacer un juego 3D.  No es un camino muy practico. Probablemente sea posible hacer algo interesante con 2D utilizando tiles y sprites, o vectorial.

Seguramente tienen razon los compañeros y puedes hacer unos juegos muy majos tirando de una libreria grafica de estas, mas un lenguaje de sistemas como C++. 

Y cuando tengas un prototipo con graficos chungos, encontrar grafista, musico..  es mucho curro.

Netto22

Cita de: Prompt en 14 de Abril de 2009, 05:08:11 PM
Yo creo que sois todos una panda de flojos y comodones!  >:D
Hay que hablar de otras cosas, no de reinventar la rueda, o el camino mas facil...

Que quieres hacer y a que te quieres dedicar?
- Si quieres dedicarte a ser un programador-builder usa herramientas y motores
- Si quieres ser un buen programador-builder deberás comprender a lo mas bajo nivel posible que implica poner un objeto en la pantalla.
- Si quieres ser un programador de videojuegos como dios manda, estudia, haz demos, juegos desde 0, engines etc... Y ten la mente clara de optar por la productividad a la hora de hacer un videojuego. Es decir, q tu empresa si no es grande, compre un engine y sus herramientas para hacer videojuegos.

Es mi opinion personal, son las diferentes vertientes que creo que debe seguir un programador cuando se dedica a esta industria. De hecho son el puro reflejo de los puestos disponibles para un programador.

Alomejor me equivoco pero, no es mejor hacer cosas aunque sean flojas desde 0 que una cosa que ya tienes X ayudas en algunas partes del codigo?

Tei

Cita de: Netto22 en 15 de Abril de 2009, 06:14:42 PM

Alomejor me equivoco pero, no es mejor hacer cosas aunque sean flojas desde 0 que una cosa que ya tienes X ayudas en algunas partes del codigo?

Si te pegas 10 años programando un motor 3D en cobol, sabras mucho cobol y te sera muy util si alguien quiere hacer un motor 3D en cobol.
Pero si en esos 10 años haces 200 juegos pequeñitos, con varias tecnologias, tendras mucha experiencia, y seguridad en ti mismo, y sabras que puedes hacer y que no, habras visto muchos proyecos fracasar y otros tener mucho exito.

De la experiencia cuenta tanto la cantidad que se tiene, como la variedad, interesa tener mucha experiencia, pero tambien que no sea de una unica cosa.  Por eso a lo mejor puede valer la pena hacer rapidamente muchos proyectos, y para eso es esencial apoyarse en librerias. 
Ademas que los programadores de librerias hacen librerias, y los programadores de videojuegos usan librerias. Y tu quieres programar videojuegos.

Por supuesto, si te pillas una libreria de cobol, y te pegas 10 años haciendo un juego con esta libreria. A lo mejor has aprendido incluso menos que el tio que en ese tiempo ha hecho un motor.  Mi idea, que igual es una idiotez de las mias, es que no hay que estancarse y hay que llegar muchas veces a la linea de meta.

Prompt

Yo creo que se puede hacer un motor desde 0, con claros objetivos a conseguir e ir haciendo muchos juegos a cada cual más complejo. Es factible y haces curriculum.

Puedes hacerte una libreria de matemática básica 2D y 3D y desde ahi ir haciendo cosas cada vez mas complejas. Hay 2 caminos claros, o programas el game play de un juego, o el motor. Eso son los trabajos que existen. Evidentemente si tienes o has hecho un motor y tienes pequeñas demos o juegos, serás un buen programador de game play o lo que te de la gana, porque sabes las implicaciones que tiene poner un objeto en pantalla y comprendes el impacto que puede tener. Y si te quieres dedicar a desarrollar partes mas hardcode, como tools, efectos, ampliar un motor... yo que se, pues te sirve la experiencia de tu desarrollo en motores.

Mi opinion personal, es que el camino que hay que seguir es hacerse un pequeño motor desde 0 e ir evolucionando con el y haciendo demos. Si te atreves una vez tengas ya varias cosas necesarias en tu motor, haces un pequeño juego.

Para gustos los colores, y el tema de reinventar la rueda aqui no existe, se trata de aprender las bases. Quien quiera hacer "solo" juegos optará por otras opciones.






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.