Buenas,
Motivado después de ver yensdesign.com (http://yensdesign.com), me he animado yo también a esto de los tutoriales. He echado unas cuantas horas este fin de semana y he hecho un tutorial que explica paso a paso la creación de un clon del Tetris usando c++. El render está separado de la lógica del juego y usé simplemente primitivas de SDL (rectángulos). La idea es explicar la lógica y dejar de lado los detalles o efectos visuales.
Está en inglés, y fijo que con bastantes errores:
http://gametuto.com/tetris-tutorial-in-c-render-independent/
Espero que me echeis un cable. Echadle un vistazo y decidme si tengo muchos "english-gazaping" o si he cometido alguna locura en el código fuente. El código en sencillito, tienen algunas redundancias, pero hay que recordar que está dirigido a gente que empieza.
Me ayudaría muchísimo si linkarais el tutorial desde vuestros blogs, a ver si así llega a cuanta más gente mejor. ¡Gracias!
¡Espero que lo disfruteis!
(http://pixelartgames.com/temporal/tetris_tutorial_01.jpg) (http://gametuto.com/tetris-tutorial-in-c-render-independent/)
Algunas locuras que podeis hacer modificando los defines:
#define BLOCK_SIZE 5 // Width and Height of each block of a
#define BOARD_WIDTH 90 // Board width in blocks
#define BOARD_HEIGHT 90 // Board height in blocks
Para el que quiera echarse una laaaaaaaaaaaaaarga partida :)
(http://pixelartgames.com/temporal/tetris_tutorial_03.jpg)
lo primero de todo: impresionante el tutorial y el trabajo que te ha debido llevar.
Segundo, me parece igualmente impresionante como de limpio tienes el código =)
Gracias Buffon!
Es que los españoles siempre me mirais con buenos ojos. Si vieras las críticas que he recibido en gamedev :) http://www.gamedev.net/community/forums/topic.asp?topic_id=517905
Me han pillado usando 0 y 1 en vez de true / false y casi me cuelgan. ¡Pardiez que quisquillosos!
Por cierto, ¿podeis echarme un cable votándolo en las cajas de "Digg", "Reddit" y "Dzone" que aparecen al lado del título del tutorial? ¡Gracias!
Me parece cojonudo el tutorial, enhorabuena. Menudas pasiones se pillan en gamedev xDDD si es que les tocaste la moral tio... a quien se le ocurre usar 1 y 0 cuando tienes los bool.... y declararte las variables de un for fuera del for... a la hoguera!!! :P :P
Coñas aparte, imagino que te habra llevado tu tiempo montar este tutorial, seguro que a mas de uno le sirves de inspiracion, enhorabuena de nuevo!!
A ver malditos, ¡¡si poneis los tutoriales también en español!!
¡Gracias por los comentarios!
He actualizado el tutorial con varias mejoras de las que me fueron diciendo en gamedev, a ver si así se callan esos anglosajones canallas.
Cita de: Loover en 15 de Diciembre de 2008, 10:09:13 PM
¡Gracias por los comentarios!
He actualizado el tutorial con varias mejoras de las que me fueron diciendo en gamedev, a ver si así se callan esos anglosajones canallas.
Una cosa, cuando te hacen el comentario del const-correct se refieren a los defines o a usar const en los parámetros de los métodos? (es que a mi me suena más que es lo segundo, pero tampoco sé mucho del tema...).
Por lo demás nada, enhorabuena por el curro! :)
Vicente
Pues esa misma pregunta me hago yo. Creo como tú que a lo segundo.
Creo que ya es tarde para mi acostumbrame a poner los const, aunque admito que tienen su valor.
Cita de: Loover en 16 de Diciembre de 2008, 12:09:00 AM
Pues esa misma pregunta me hago yo. Creo como tú que a lo segundo.
Creo que ya es tarde para mi acostumbrame a poner los const, aunque admito que tienen su valor.
cuando defines un contrato normalmente se define que parámetros son de entrada y cuales de entrada i/o salida, los que son de entrada sólo normalmente se usa const.
tmb puedes hacerlo más comodo y definirte unas macros
#define IN const
#define OUT
y luego en la declaración del contrato (que poco me gusta hablar desde el lado de un ingeniero <.<) usar IN y OUT.
----
Por otra parte, realmente tu código, a pesar de ser de los más limpios que he visto, no es eficiente 100%, pero tampoco es la finalidad del tutorial que creo que pasan por alto, se intenta enseñar una forma más que correcta de programar un tetris, que luego cada uno se lo depure como quiera.
Así que tampoco hagas mucho casos de comentarios de gente que ni se molesta en gastar 2 horas de su tiempo en enseñar al resto =)
Buen trabajo !
Buen tutorial, siempre es honorable que la gente comparta conocimientos, por que hay quien sabe mucho y no publica nada
Haver cuando subo mi Web ...
Saludos
Cita de: dinamic en 16 de Diciembre de 2008, 10:25:31 AM
Haver cuando subo mi Web ...
sin connotación negativa has de entenderme, pero a ver o haber, has de aprender !!!!
Me alegro que os guste. Y sí, siempre puede ser más eficiente. Hay muchas aproximaciones al problema. En cuanto a las rotaciones, intenté hacerlas lo más fáciles posibles, evitando el tener que rotar mediante alguna fución algebraica. De este modo, teniendo las rotaciones guardadas, es más rápido y sencillo de entender.
El Main Loop, lo habría hecho menos redundante. Y en algunas secciones habría escrito alguna línea de código acortada. Pero lo he hecho aposta para que sea más legible.
El resto de cosas de eficiencia que no haya visto... pues no las he visto :)
Veo tu tetris se menea (http://meneame.net/story/tutorial-para-programar-clon-tetris-c-hora-para-linux-windows-ing) un poco :P
Salu2...
¡Cazado! Jejeje. Ale, a votarlo :) http://meneame.net/story/tutorial-para-programar-clon-tetris-c-hora-para-linux-windows-ing
También he puesto cajas de Digg, Reddit y Dzone si podeis votarlo (http://gametuto.com/tetris-tutorial-in-c-render-independent/) me haríais un favor. Y reseñas en todos vuestros blogs. Y poneros camisetas con la url. Mejor aún, salid a la calle en pelotas con "Gametuto.com" tatuado en el pecho.
¡Gracias!
Cita de: Loover en 16 de Diciembre de 2008, 01:50:27 PM
Y poneros camisetas con la url. Mejor aún, salid a la calle en pelotas con "Gametuto.com" tatuado en el pecho.
Conformate con el meneo jajaja :P ;)
Salu2...
Muy bueno, la verdad es que el tetris siempre me ha parecido un juego muy chungo de programar, gracias por publicarlo :)
*pd: La unica pega es que está en english, y así los que mas lo disfrutaran serán los anglosajones de los.... -- luego los novatos nos quejamos de no encontrar documentacion en castellano >:D :D, pero aún así muchas gracias.
Cita de: zunou en 16 de Diciembre de 2008, 03:45:16 PM
Muy bueno, la verdad es que el tetris siempre me ha parecido un juego muy chungo de programar, gracias por publicarlo :)
*pd: La unica pega es que está en english, y así los que mas lo disfrutaran serán los anglosajones de los.... -- luego los novatos nos quejamos de no encontrar documentacion en castellano >:D :D, pero aún así muchas gracias.
Discrepo! Inglés siempre es mejor para todos y además... ser novato programando no implica no tener ni papa de inglés :P
A mi me da mucha pereza leer inglés... si no queda otra se hace, pero ufff...
Hacerlo en inglés hace que esté disponible para todo el mundo, en cambio en español "sólo" para latinoamérica y Ejpaña, que igual es una cantidad considerable de gente también deseosa de contenidos y tutoriales en español.
Cita de: yEnS en 16 de Diciembre de 2008, 04:19:22 PM
Cita de: zunou en 16 de Diciembre de 2008, 03:45:16 PM
Muy bueno, la verdad es que el tetris siempre me ha parecido un juego muy chungo de programar, gracias por publicarlo :)
*pd: La unica pega es que está en english, y así los que mas lo disfrutaran serán los anglosajones de los.... -- luego los novatos nos quejamos de no encontrar documentacion en castellano >:D :D, pero aún así muchas gracias.
Discrepo! Inglés siempre es mejor para todos y además... ser novato programando no implica no tener ni papa de inglés :P
si, pero como no domines bien el inglés te va a resultar el doble de dificil si estas empezando a programar, entiendo que así se llega a mas gente, lo triste se que si buscas documentacion en español, la encuentras antes en francés, y eso que el español es uno de los idiomas mas hablados. --
Cita de: zunou en 16 de Diciembre de 2008, 04:53:59 PM
Cita de: yEnS en 16 de Diciembre de 2008, 04:19:22 PM
Cita de: zunou en 16 de Diciembre de 2008, 03:45:16 PM
Muy bueno, la verdad es que el tetris siempre me ha parecido un juego muy chungo de programar, gracias por publicarlo :)
*pd: La unica pega es que está en english, y así los que mas lo disfrutaran serán los anglosajones de los.... -- luego los novatos nos quejamos de no encontrar documentacion en castellano >:D :D, pero aún así muchas gracias.
Discrepo! Inglés siempre es mejor para todos y además... ser novato programando no implica no tener ni papa de inglés :P
si, pero como no domines bien el inglés te va a resultar el doble de dificil si estas empezando a programar, entiendo que así se llega a mas gente, lo triste se que si buscas documentacion en español, la encuentras antes en francés, y eso que el español es uno de los idiomas mas hablados. --
Que no se me malinterprete pero me parece más triste todavía no saber leer un par de párrafos en inglés acompañados del código fuente. A mí me es más cómodo leer en español, pero si tengo que elegir entre que todo el mundo me pueda entender o sólo los hispanohablantes creo que estaré ayudando a más gente en inglis pitinglis ;)
Lo ideal sería hacerlo en español también.
Y en chino, que son muchos.
Cómo no puedo hacerlo en todos, y aunque el esfuerzo de escribirlo sea mucho mayor, si quiero llegar a más gente, el Inglés es el mejor idioma para ello. Puede que pierda algunos españoles, pero así llega a más gente en general.
Y lo que quiero es llegar a cuanta más gente mejor.
Por ejemplo hoy he tenido 20 visitas desde Polonia :)
Pues ponlo en un wiki y pide ayuda para que alguien te lo traduzca.
ojo, yo entiendo inglés, es mas mi juego tiene la ocion de poner los textos en inglés :D, obiamente puesto que por suerte o por desgracia el inglés es el idioma que se ha tomado como universal consigues llegar a mucha gente, pero bueno siempre me molestó el tener que aprender ese idioma a la fuerza :D eso es todo.
loover, no quiero que pienses que no agradezco tu trabajo ¿eh? :D es muy de agradecer que alguien comparta sus conocimientos de manera altruista, y se que a muchos (entre los que me incluyo) nos va a ser de mucha utilidad, no se a los demas, pero a mi el mecanismo del tetris siempre me ha parecido algo muy chungo de programar.
lo dicho muchas gracias.
Hombre, en español sería mucho más universal, donde va a parar, por lo menos a este lado de los Pirineos, pero huelga decir la importancia que tiene lo de ser políglota así que ajo y agua, al grano que me disperso, el código está muy claro, personalmente lo veo perfecto para un tutorial, no sé porque se quejan tanto los guiris, enhorabuena por tan buen trabajo.
Le pongo como única y pequeñisima pega a la mecánica de juego que cuando las piezas se colocan próximas al borde de tal forma que la distancia al bloque pivote no da para el giro, no gira... Oomira tú!, no recuerdo si en el tetris original esto funcionaba así, me pregunto si no sería más conveniente que pudiera variar el centro de giro para evitarlo.
Lo dicho, enhorabuena y gracias que a mi me viene de vicio.
Gracias zunou, echale un vistazo y verás que la lógica es bastante sencilla. Si tienes cualquier duda con el idioma o con el código en sí, no dudes en usar el foro o comentar directamente en el blog. Puedes usar el idioma que prefieras entre los que soy capaz de responderte: inglés, castellano y panocho.
CitarOomira tú!, no recuerdo si en el tetris original esto funcionaba así, me pregunto si no sería más conveniente que pudiera variar el centro de giro para evitarlo.
Cierto. Ese sería un caso especial.
Hay varios detalles no implementados, que vendrían a ser "mejoras" del juego, y que por lo menos en mi versión de Tetris DS están.
- Que tras un tiempo pulsando una tecla, la pieza se desplace sin tener que pulsar más dicha tecla.
- Que al dar el giro si la ficha está pegada a los bordes, permita hacerlo, con el consiguiente desplazamiento. (Lo que has dicho).
- Que durante un intervalo de tiempo tras pulsar la tecla de "giro" esta no pueda "caer", aunque esté tocando el "suelo" u a otra ficha. Y que si pulsas las teclas de izquierda / derecha la la ficha trate de "escalar" las fichas. => No sé si me explico en esta última, pero en el Tetris que juego en la DS, aunque tenga la ficha ya sobre otras, si sigo pulsando la tecla de rotar no la pierdo, y encima puedo moverla para los lados escalando sobre las otras piezas. Tengo que mirar mejor esto a ver como se comporta realmente para tratar de reproducirlo.
- En el tetris original, al crearse la ficha, es creada enteramente fuera, y no un bloque dentro como hago yo (sería cuestión de variar el desplazamiento y listo).
- No se puede rotar más que en una dirección. Se puede añadir con un par de líneas de código.
Estos detalles me los dejo para un posible segundo tutorial, que incluiría dichas mejoras, gráficos, fondos, sonido, etc. Y estaría más enfocado a los detalles y los efectos que a la lógica.
Pues fumando espero :)_. Lo de escalar las piezas lo desconocía, pero parece innovador, incluso me sugiere un juego totalmente distinto en el que no haya que colocar los bloques que caen desde arriba, sino que consista en hacerlos rodar sobre los demás con el fin de coronar el montículo que se va formando, cuyo "hándicap" consistiría en evitar que el montículo se derrumbe por efecto de la gravedad, el roce con la pieza actual o una mala colocación de los demás bloques, sería una especie de antitetris ;). A ver si tengo un momento y puedo revisar el tutorial más despacio. Saludos.
Existia ya un tetris con fisica real, no? (pregunto por que no lo se con seguridad) La verdad que tu idea del antitetris tiene buena pinta :D
Salu2...
Cita de: HarvesterOfAcorns en 19 de Diciembre de 2008, 01:40:05 AM
Pues fumando espero :)_. Lo de escalar las piezas lo desconocía, pero parece innovador, incluso me sugiere un juego totalmente distinto en el que no haya que colocar los bloques que caen desde arriba, sino que consista en hacerlos rodar sobre los demás con el fin de coronar el montículo que se va formando, cuyo “hándicap” consistiría en evitar que el montículo se derrumbe por efecto de la gravedad, el roce con la pieza actual o una mala colocación de los demás bloques, sería una especie de antitetris ;). A ver si tengo un momento y puedo revisar el tutorial más despacio. Saludos.
Me suena que existe algo parecido para el iphone en el que los bloques se te caen por los lados si no tienes el telefono quieto.
Cita de: Marci en 19 de Diciembre de 2008, 09:16:19 PM
Cita de: HarvesterOfAcorns en 19 de Diciembre de 2008, 01:40:05 AM
Pues fumando espero :)_. Lo de escalar las piezas lo desconocía, pero parece innovador, incluso me sugiere un juego totalmente distinto en el que no haya que colocar los bloques que caen desde arriba, sino que consista en hacerlos rodar sobre los demás con el fin de coronar el montículo que se va formando, cuyo "hándicap" consistiría en evitar que el montículo se derrumbe por efecto de la gravedad, el roce con la pieza actual o una mala colocación de los demás bloques, sería una especie de antitetris ;). A ver si tengo un momento y puedo revisar el tutorial más despacio. Saludos.
Me suena que existe algo parecido para el iphone en el que los bloques se te caen por los lados si no tienes el telefono quieto.
Aqui esta:
http://topple.ngmoco.com/
Se llama Topple y es de la compañia "ng:moco: ) " XDDD
Saludos.
Si es que cada vez es más difícil encontrar una idea original y no lo digo por mi sugerencia que ni siquiera es brillante, supongo que debe haber alguna fórmula matemática que exprese como disminuyen, yo diría que de forma exponencial, las posibilidades de crear algo original a medida que el tiempo pasa. Cierto es que en los primeros tiempos de los videojuegos los recursos de desarrollo eran muy limitados, probablemente inexistentes en la mayoría de los casos, pero por otro lado las posibilidades de de hacer algo nuevo estaban prácticamente intactas. ¿Habrá que ponderarle el mérito a los padres de todo esto?
Reto a alguno de los moderadores, que posea vasto conocimiento de juegos, para que cree un foro que se llame "Expón tu idea original para un juego y te apuesto lo que quieras a que no es original"... ah, que además de vasto conocimiento también tenga pasta vasta, por si acaso. ^_^'
Joe, que yo venía a propósito del tutorial y se me fue la bola, aunque mi cuestión es bastante general y quizás debería plantearla en el foro de programación, pero por no andar buscando la ubicación correcta la dejo aquí y si después hay que cambiarla pues espero me disculpe por las molestia a quien corresponda hacerlo. El caso es que veo que para el "Main Loop" usas un bucle while, como es lógico pues parece que es la forma más usada de repetir los procesos que intervienen en un juego, pero me he dado cuenta que este tipo de soluciones consumen muchos recursos de la CPU, uso portátil modesto y lo canta sin necesidad de recurrir al medidor de rendimiento del sistema, yo voy tras un tetris en javascript como iniciación a este mundo y me pasaba lo mismo con el bucle while así que decidí hacerlo llamando en primera instancia a la función que procesa el juego para que luego ésta se llame a si misma mediante el método setTimeout del objeto window, en una especie de llamada recursiva, aunque me da que no tienen mucho que ver con la recursividad. Mi cuestión es si esto se puede hacer en C++ o povocaría problemas más graves que los que trato de solucionar.
Cita de: HarvesterOfAcorns en 21 de Diciembre de 2008, 01:28:39 AM
Si es que cada vez es más difícil encontrar una idea original y no lo digo por mi sugerencia que ni siquiera es brillante, supongo que debe haber alguna fórmula matemática que exprese como disminuyen, yo diría que de forma exponencial, las posibilidades de crear algo original a medida que el tiempo pasa. Cierto es que en los primeros tiempos de los videojuegos los recursos de desarrollo eran muy limitados, probablemente inexistentes en la mayoría de los casos, pero por otro lado las posibilidades de de hacer algo nuevo estaban prácticamente intactas. ¿Habrá que ponderarle el mérito a los padres de todo esto?
Reto a alguno de los moderadores, que posea vasto conocimiento de juegos, para que cree un foro que se llame "Expón tu idea original para un juego y te apuesto lo que quieras a que no es original"... ah, que además de vasto conocimiento también tenga pasta vasta, por si acaso. ^_^'
Pues si, pero creo que es practicamente imposible que cada juego sea unico y original, es mas nuca lo ha siado, siempre ha pasado lo mismo, alguien tenia una idea original, y al poco tiempo todos los juegos tenian esa idea, ligeramente modificada, lo mismo que pasa ahora, tambien lo que creo que pasa es que la tecnologia actual es la misma que la de hace 16 años, no me refiero a los procesadores, memoria, etc... sino a la manera de jugar, a la experiencia de juego, cuando las 2d ya casi no aportaban nada nuevo, apareció el 3d que tenia un monton de posibilidades por explotar,
hoy en dia lo unico nuevo que puede aportar el 3d es mejores gráficos, y en cuanto a originalidad, se ve que cada vez tarda mas en aparecer algo nuevo, asi que tal vez lo que hace falta otro salto como el de el 2d al 3d, yo pienso que será la realidad virtual la que lo cambie todo :D ¿os imaginais las posibilidades que tiene?
aun así un juego puede ser bueno sin ser original, si no mira metal gear, es lo mismo de siempre con otro guión, pero es uno de los juegos mas exitosos, al gta4 le pasa lo mismo, o peor, porque tene menos posibilidades que el anterior, lo unico que aporta son mejores gráficos, y fisica, peeero es un superventas ^_^, al final lo que importa es que tenga lo que la gente pide..... una locura ¿eh?....
Cita de: HarvesterOfAcorns en 21 de Diciembre de 2008, 01:49:39 AM
Joe, que yo venía a propósito del tutorial y se me fue la bola, aunque mi cuestión es bastante general y quizás debería plantearla en el foro de programación, pero por no andar buscando la ubicación correcta la dejo aquí y si después hay que cambiarla pues espero me disculpe por las molestia a quien corresponda hacerlo. El caso es que veo que para el "Main Loop" usas un bucle while, como es lógico pues parece que es la forma más usada de repetir los procesos que intervienen en un juego, pero me he dado cuenta que este tipo de soluciones consumen muchos recursos de la CPU, uso portátil modesto y lo canta sin necesidad de recurrir al medidor de rendimiento del sistema, yo voy tras un tetris en javascript como iniciación a este mundo y me pasaba lo mismo con el bucle while así que decidí hacerlo llamando en primera instancia a la función que procesa el juego para que luego ésta se llame a si misma mediante el método setTimeout del objeto window, en una especie de llamada recursiva, aunque me da que no tienen mucho que ver con la recursividad. Mi cuestión es si esto se puede hacer en C++ o povocaría problemas más graves que los que trato de solucionar.
Usar setTimeOut es el unico metodo en javascript para hacer un bucle de render de juego, por llamarlo de alguna manera. Bueno, tienes la funcion setInterval o algo asi, pero es mas o menos lo mismo. En C++ podrias hacer algo asi y de hecho se hace, ya que se tiene un bucle que esta constantemente mirando si hay mensajes del SO y en caso negativo se procesa el juego (en el caso positivo se procesan estos mensajes). Te recomiendo que sigas usando javascript y hagas varios juegos pequeños para empezar a familiarizarte con las estructuras de datos y demas cosas que son habituales a la hora de programar un juego. Luego si quieres algo mas potente puedes tirar de python + cocos2D. De esta forma te dedicas a hacer juegos y no a pelearte con los detalles de C++. Una vez que tengas los conceptos perfectamente claros, aprender C++ (que no es obligatorio) te sera mucho mas facil y seguro (en el sentido que la parta de los algoritmos ya lo tendras aprendido).
Vaya rollo que he soltado! ^_^
De cocos2d nada, los machotes usan IndieLib (http://www.indielib.com/). :)
PD: Muy bueno el cocos2d este por lo que veo.
Gracias a Ethernet ahora el tuto es aún más multiplataforma, ya no hace falta cambiar líneas de código para que funcione en Linux. Los ifdefs son mano de santo, oye.
Si hay algún guru de Mac por aquí y quiere intentar compilarlo y crear un archivo de proyecto, se lo agradecería eternamente :D
Una locura zunou, sin duda lo es acertar con lo que la gente quiere. Oo
Gracias Ak47, en parte seguiré tu consejo, aunque tengo que decir que javascript no es la panacea a la falta de experiencia, es bastante puñetero el jodio y a la larga creo que más problemático que C++ con el que ya tenía alguna relación.
Loover, por lo que intuyo de los mensajes en el foro creo que estás implicado en el desarrollo de IndieLib, no tenéis documentación en español? Porque no la utilizaste para el tutorial, hubiera sido interesante, no?
CitarLoover, por lo que intuyo de los mensajes en el foro creo que estás implicado en el desarrollo de IndieLib,
Sí, somos 156 monos amaestrados en un programa de realidad virtual y yo. Todo a mi alrededor son pieles de banana.
Citarno tenéis documentación en español?
Los monos fueron entrenados en una base militar americana. Sólo hablan Inglés, y yo soy muy vago para traducir lo que escriben al español.
CitarPorque no la utilizaste para el tutorial, hubiera sido interesante, no?
Tutorial de lógica para principiantes = tutorial que debe ser sencillo, sin implicar engines, etc, usé SDL por usar algo conocido y multiplataforma, pero tan sólo dibujo rectángulos.
Planeo hacer un tutorial más adelante, añadiéndole gráficos y efectos al tetris. Para ese sí que usaré IndieLib.
Aparte estoy preparando un nuevo tutorial sobre como hacer un editor de pantallas tipo el del juego Aquaria o Braid, usando IndieLib también.
Cita de: HarvesterOfAcorns en 23 de Diciembre de 2008, 11:36:27 PM
Una locura zunou, sin duda lo es acertar con lo que la gente quiere. Oo
Gracias Ak47, en parte seguiré tu consejo, aunque tengo que decir que javascript no es la panacea a la falta de experiencia, es bastante puñetero el jodio y a la larga creo que más problemático que C++ con el que ya tenía alguna relación.
Loover, por lo que intuyo de los mensajes en el foro creo que estás implicado en el desarrollo de IndieLib, no tenéis documentación en español? Porque no la utilizaste para el tutorial, hubiera sido interesante, no?
HarvesterOfAcorns, tienes esta libreria para js: http://www.tommysmind.com/gamejs/ (http://www.tommysmind.com/gamejs/) Aun asi tirar de python con cocos2D tambien es un buen camino, o sino C# y XNA. Basicamente lo que te quiero decir es que ahora mismo yo aprenderia las bases de la programacion de juegos con un entorno que sea facil, y luego si ves alguna necesidad aprendes C++ pero con el bagaje de conceptos basicos bien asentado :)
Y si quieres resultados rápidos, también puedes probar con Game Maker (http://www.yoyogames.com/make).
Cita de: Loover en 23 de Diciembre de 2008, 11:46:16 PM
Sí, somos 156 monos amaestrados en un programa de realidad virtual y yo. Todo a mi alrededor son pieles de banana.
Ooooh! ^_^ que monería!
Cita de: Loover en 23 de Diciembre de 2008, 11:46:16 PM
Los monos fueron entrenados en una base militar americana. Sólo hablan Inglés, y yo soy muy vago para traducir lo que escriben al español.
Por fin los militares americanos hacen algo útil
Cita de: Loover en 23 de Diciembre de 2008, 11:46:16 PM
Planeo hacer un tutorial más adelante, añadiéndole gráficos y efectos al tetris. Para ese sí que usaré IndieLib.
Aparte estoy preparando un nuevo tutorial sobre como hacer un editor de pantallas tipo el del juego Aquaria o Braid, usando IndieLib también.
Es un lujo tenerte por aquí
Muy buena la librería, AK47, muy agradecido.
Gran tutorial :)
Me ha gustado mucho, pero hay algo que no entiendo (aunque no he revisado el codigo aun, soy un huevon :P), y no tiene que ver con el juego en si, si no con unos de los comentarios de gamedev, mas concretamente con este (http://www.gamedev.net/community/forums/viewreply.asp?ID=3365493).
Pregunta de novato: cual es el problema con eso que comenta?
Y un poco quisquillos si, porque hay cosas como lo que te comentan del return 1; else return 0; que en mi opinion, aunque la segunda forma es mas corta y rapida, es menos legible para un novato. Seran pasos innecesarios los dos return's, pero un novato lo entendera muchisimo mejor ;)
PD: Lo publicare en mi blog, aunque este tenga 0 visitas y este medio muerto :-[
Cita de: Pitxardo en 30 de Diciembre de 2008, 01:43:45 PMMe ha gustado mucho, pero hay algo que no entiendo (aunque no he revisado el codigo aun, soy un huevon :P), y no tiene que ver con el juego en si, si no con unos de los comentarios de gamedev, mas concretamente con este (http://www.gamedev.net/community/forums/viewreply.asp?ID=3365493).
Pregunta de novato: cual es el problema con eso que comenta?
El mismo usuario lo dice: no reserves memoria dinámicamente si no existe la necesidad de hacerlo. Reservar memoria dinámicamente introduce tres problemas: el coste de la reserva, la fragmentación de la memoria y la posibilidad de acceder a zonas de memoria inválidas u olvidarse de liberar la memoria cuando corresponde.
Inconvenientes que pueden resolverse todos ellos mezclando los dos enfoques de reserva de memoria (estática y dinámica): punteros inteligentes, "pools" de memoria, etc...
En realidad el guiri no tenía nada más que hacer que tocar las narices :). Tendrá razón, pero es un detalle bastante poco importante y mucho menos cuando el tutorial no pretendía tratar ese tema.
En general, casi todos los post de ese hilo se podrían tirar a la basura.
CitarLo publicare en mi blog, aunque este tenga 0 visitas y este medio muerto
Se agradece un montón!
...
De todos modos el guiri tenía razón :) Al final cambié esa parte. No recuerdo porqué usé news la primera vez, pero bueno, ya no hay un solo new en todo el tutorial. Realmente no hacían falta.
Pero sí, son bastante tocapelotas estos guiris. Bueno, en general la gente es tocapelotas en un foro donde no te conocen. Aquí son más buenos :)
Miedo me da lo que van a decir del nuevo, porque estoy liando un tinglado gordo con el editor. Y fijo que bastantes cosas no las habré hecho de la manera más adecuada.
No creo que sea cuestión de "tocar las pelotas". He leído todo el hilo, y la enorme mayoría de respuestas (por no decir todas) son constructivas y tienen más razón que un santo. Creo que, tanto como tomarse el esfuerzo de redactar un tutorial es un acto muy generoso y de agradecer, el exponerlo en un foro como GameDev y obtener ese tipo de respuestas (que no hacen sino mejorar aún más el tutorial original) también es de agradecer.
Y lo digo porque hay personas que son especialmente puntillosas con los tutoriales destinados a principiantes (entre las que me encuentro). Entre enseñar buenas prácticas desde un primer momento y forzar al estudiante a pasar por un proceso traumático hasta descubrir que lo que le enseñaron era de todo menos adecuado media una distancia considerable.
No discuto que lo que dicen esté bien, pero no lo considero importante para el tutorial.
Esas pequeñas cosas que dicen, en realidad, son de agradecer. Aunque algunas veces hay algunas realmente estúpidas...
Ya que os hace risa el tema de si me tocaron o no las pelotas ::), leed lo que me pusieron en IndieGamer:
He elegido este comentario como el que mejor me han hecho a un post mio en todo el año :D: http://forums.indiegamer.com/showthread.php?t=15254
CitarCitarQuote:
Originally Posted by tolik View Post
Defines are evil, you should be able to change size of the field on the runtime.
CitarQuote:
Originally Posted by Applewood
I'd certainly expect to see them as static const given that this is a C++ tutorial
I'd ignore both of the above if I were you. Whatever you do, you will find someone whining about little things like that.
What? Ever heard of BOOST? You don't use polish notation? Where's all the templates? No, don't use enumerations, they are evil! That could be solved by using template specialization instead! You didn't override any operators, what kind of c++ is that? Don't ever use global variables! Use STL instead, don't reinvent the wheel! That would be a good place for a bit field instead! That should be a class! No, a struct! No, don't ever consider using BOOST, it doesn't compile on my system! Don't use templates, they're evil! You've put spaces in the wrong place, it should be if( a ), not if (a) !!
Who cares? The tutorial is about how to write tetris, and that's what it does. There's no One True Way of C++, and I think that's a good thing.
Pues sigo sin entenderlo. Que el tutorial se centre en la programación de un Tetris no debería servir de excusa para no ser idiomático.
Hay detalles y detalles. Y maneras de decir las cosas, por supuesto. Pero es que no he leído ningún comentario sobre el código que sea realmente pedante o esté fuera de lugar.
Me gustaría saber cuál es la ventaja de utilizar #define en lugar de una constante en este caso en particular.
No, no, si yo estoy de cachondeo. Todo lo que dijeron tiene su razón de ser. Y me lo tomo de puta madre todo, faltaría más.
Aunque estas dos últimas que os he puesto, y la contestación me hicieron muchísima risa. Por eso quería ponerlas :)
El único comentario que yo sí ví fuera de lugar fué este:
CitarDefines are evil, you should be able to change size of the field on the runtime.
Que me digan que es preferible usar "const" a "defines", les doy la razón. Pero de ahí a que tenga que usar memoria dinámica para cambiar en tiempo de ejecución el tablero, simplemente porque a este chico le gusta más así, me parece una chorrada monumental :)
Pasando de los comentarios de ese tipo. Ni te calientes más la cabeza: ¡Que hubieran hecho ellos el tutorial! :..
Cita de: Loover en 31 de Diciembre de 2008, 01:20:21 PMPero de ahí a que tenga que usar memoria dinámica para cambiar en tiempo de ejecución el tablero, simplemente porque a este chico le gusta más así, me parece una chorrada monumental :)
Y de hecho, lo es. :)
Pero a que molaría un tetris en el que el tablero cambiase de tamaño (de ancho sobretodo). Te faltan cojones loover :P
¿Pero cómo? ¿En tiempo real? ¿Para qué? :)
Haz un pequeño diseño en el que relaciones el cambio de tamaño del tablero con una mecánica de juego. Para ver la gracia que tendría y si se puede crear así una mecánica con fundamento :)
¡Faltan huevos! :D
Puesss... cuando te lo doblas, el tablero se hace el doble de grande ;) Ale, ya está.