Guía de desarrollo de juegos Indie

GreyShock

#330 AS2 se parece a AS3 como el día a la noche. La sintaxis, la filosofía y el método de trabajo cambia drásticamente: a mejor. Al principio parece un mundo, pero luego el desarrollo lo agradece.

seguro que EnZo puede hablarte mucho mejor de AS3 :)

Jastro

#330 ok gracias! si, a ver si me disipa un poco las dudas, me ha animado saber esto, la verdad es que programe en flash hace mucho mucho, cuando me paso eso me ralle y lo deje e intente buscar otros medios, como xna y demas pero me cuesta mucho adaptarme, no se si es que soy un negado o que :/

EnZo

#328 Yo tambien me lo olia... xD Basicamente si sabes programar en as3 no hacer un juego con escenar. Por eso lo he deducio

#330 Sip, si sabes programar en as2 no sabes programar en as3. Hay cosas que se mantienen. Pero es mas potente mas estricto, mas flexible, es mas un lenguaje de programacion en definitiva.
No es obligatorio, puedes seguir usando flash para programar tu juego en as3. Pero su editor de codigo es una mierdaca. Sin embargo flash builder está basado en eclipse. Y es un gozo, programar con un IDE así.
Yo tambien era reacio a dar el salto, pero te lo recomiendo encarecidamente si quieres programar bien. Me lo agradeceras en un futuro :)

1 1 respuesta
Jastro

#333 muchas gracias :) ¿Me recomiendas alguna web o algun sitio en especial donde pueda enterarme del uso del builder o es intuitivo?

Si me animo y hago algo lo colgare aqui te lo agradecere tooooda la vida jajajajaj

1 respuesta
EnZo

#334 No sabria decirte una pagina en concreto. Realmente no tienes que aprender a usar IDE, tienes que aprender a programar as3. Pero si googleas un poco he contrao:
http://www.flashutvecklaren.se/info/en/first-actionscript-project.php

Busca algo como: flash builder actionscript project tutorial
Y podras trastear. Pero antes de eso leete por encima algun tutorial de as3. Alguno que explique la migracion de as2 a as3. Y que te andentre un poco en la programacion orientada a objetos.
Y esto tambien puede servirte: http://www.actionscriptcheatsheet.com/downloads/as3cs_migration.pdf
Aunque si hace mucho que no tocas as2 creo que te da igual.

2 respuestas
autlos

Pongo un librito gratis de conceptos básicos muy interesante que podéis leer en open libra:

http://books.openlibra.com/pdf/DesarrolloVideojuegos_ConceptosBasicos2D.pdf

#1

1 respuesta
Jastro

#335 y #336 muchisimas gracias a los dos, me pondre a ello entre hoy y semana santa, ya informare de mis resultados jeje a ver que tal me salio

GreyShock

Vuelvo con otro eureka :P

La semana de lecturas y aprendizaje ha dado sus frutos y ya soy capaz de componer clases propias incluyendo en su interior clases del framework del manejo de imágenes. Así que...

¡Mi personaje al fin puede disparar! He reservado un array de 100 objetos para almacenar las balas que van siendo disparadas, y al llegar al final del array se vuelve al principio. No sé si es la práctica habitual o si alguien puede recomendarme una mejor, pero es la solución que he encontrado a mantener acotada la memoria reservada a las balas.

http://www.mediafire.com/?gmbo5hay1b7yrie (fixed)

click para disparar :D

El siguiente obstáculo ha sido mantener una velocidad líneal constante para las balas y que se dirigieran hacia el punto de mira.. Ahí he tenido que tirar de trigonometría.

Ha quedado una fórmula tal que asín:

	//velocidad lineal
	mVh = 1200;
	
int correccion = 1;

if(pDirX<mX) correccion = -1;

float tangente = (pDirY - mY) / (pDirX - mX);
mVx = mVh * cos(atan(tangente)) * correccion;
mVy = mVh * sin(atan(tangente)) * correccion;

Basándome en las distancias que separan la posición del prota de la posición de la mira, obtengo distancias en X e Y.

Lo que yo sé es que la velocidad constante está en la hipotenusa del triángulo formado, por así decirlo. Así que la fijo en mVh. Para evitar que la bola vaya más rápido en función de lo lejos o cerca que esté la mira (que es lo que me pasaba al principio), calculo el ángulo de este triángulo imaginario a través de su tangente (y/x). Y luego eso, por trigonometría básica sabemos que x = h · cos a, y = h · sin a, así que ahí tenemos Vx e Vy.

La variable corrección que veis ahí, es simplemente por si la mira está en una posición X inferior a la del prota, significa que las balas tienen que ir hacia la izquierda, así que multiplico la velocidad resultando por -1 y listos :3

Creo que me he explicado como el puto ojete, pero no me apetecía dibujar, si alguien realmente le interesa, lo desarrollo un poco mejor xD

Próximo objetivo: Enemigos.

1 2 respuestas
Jastro

#338 Sigue asi :D en breve te veo haciendote un terraria 2 xDDD

Que putada, no puedo abrirlo porque no tengo visual 2008 tienes que pasarme la version publicada >.<

1 respuesta
GreyShock

#339 Oy! No hay un archivo .exe en la carpeta GAME? O es que te da algún error? A ver si la he vuelto a liar, creo que ya estaba todo bien configurado xD

Pues... todo lo que estoy descubriendo seguro que está más que estudiado y optimizado, pero soy un personaje que le gusta romperse la cabeza. Ayer ya me ves a mí consultando temario de física del instituto para los movimientos ocmpuestos y todo ese rollo xD

1 respuesta
Jastro

#340 a mi me paso esto cuando le pase el exe a un amigo, ese exe solo funciona si tienes instalado Visual Studio, yo tengo tengo el 2010, no el 2008, entonces no lo ejecuta, si quieres pasarlo para que todo el mundo lo vea, tienes que hacer un publish, es decir publicar el proyecto, que te genera un exe de instacion y ese si funciona :P

1 respuesta
GreyShock

#341 Me cago en la puta, estaba en modo debug, ya es la segunda vez que me pasa, me cagondios xD

Ahora sí: http://www.mediafire.com/?gmbo5hay1b7yrie versión release.

autlos

#338 "¡Mi personaje al fin puede disparar! He reservado un array de 100 objetos para almacenar las balas que van siendo disparadas, y al llegar al final del array se vuelve al principio. "

No me hagas mucho caso pero creo que sería mejor usar una variable a modo de contador, y cada vez que disparas, creas un objeto bala (usa un array dinámico para tener el control de las demás balas que haya en el escenario), y aumentas el contador. Crear un array de 100 objetos me parece una burrada de recursos.

El caso, luego pruebo lo que has hecho, ahora estoy ocupado ^.#338

2 respuestas
GreyShock

#343 Pues sí, es una puta mierda lo que he hecho xD, viendo lo que me dices, he bajado el máximo a 15 balas y en cuando sobrepaso el espacio peta...

Voy a ver como puedo aplicar lo del array dinámico que me comentas ;)

#343 arreglao :D Tengo un maximo de 15 balas por pantalla y en cuanto se dispara la nº15, la primera se destruye y permite cargar la nueva. El rendimiento ha mejorado notablemente.

1 respuesta
elkaoD

#343 #344 pues yo le aconsejo lo contrario.

100 balas a... 1kb por cada una (por exagerar) da 100Kb de memoria ocupada. Y CPU, si está bien implementado, no usa. Vamos, que no pasa nada.

Sin embargo, a la hora de crear y destruir las balas se ahora la reserva de memoria en el heap y por tanto eventuales tirones de FPS en caso de reservas masivas o porque se ponga a reservar en un mal momento.

De hecho para un número tan irrisorio sigue dando igual lo de reservar en el heap, pero para juegos con un mayor número de objetos sí es una buena costumbre (sobre todo programando para móviles o en VMs que el recolector de basura es la mierda.)

Yo no haría que se destruyera la primera bala al llegar al final de todas formas, sí tendría un array dinámico como comenta #343 pero sólo crearía objetos en caso de llegar al máximo (y NO los destruiría nunca, dejándolos reservados por si acaso.)

2 respuestas
Jastro

Bueno siguiendo el consejo de #335 me he puesto a programar en actionscript 3, y bueno como resultado he sacado esta puta mierda xD

http://megaswf.com/serve/2312000

con las flechas te mueves de izquierda a derecha, ahora a ponerle coches enemigos que se generen aleatoriamente y alguna chorrada mas xD

2 respuestas
aitorman

Yo tambien pondria el OpenGL Superbible 5th edition en #1 . Esta bastante bien para iniciarse, porque al principio usa unas librerías que ofrecen alternativas a las funcionalidades que se han quitado de OpenGL 3 para arriba, pero mas adelante tambien explica como funcionan y como independizarse de estas librerías.

1 respuesta
EnZo

#346 Como practica de iniciacion está cojonudo sigue así :)
Has usado Flash Builder o Flash Professional?

1 respuesta
GreyShock

#345 He seguido tu consejo al final y reservo un array de memoria para objetos antes del bucle y el juego va bastante fluido. No he hecho la redimension dinámica, puesto que ya controlo yo que nunca se exceda ese límite en la lógica de programación (nunca habrá más de 100 malos o balas en pantallas ni cosas así...)

#346 Joer, qué rápido te has puesto a ello. Me algero de ver movimiento por aquí :D Como consejo chorra, usar las flechas izq,der para subir y bajar es poco usable, sé que no es ni de lejos un juego completo pero... da mucha rabia eso xD

#347 Gracias :) ahora lo editaré y lo añadiré a los motores.

En fin, tras una semana de estudio y prácticas más o menos he conseguido componer objetos con las clases del engine, y heredar para generar diferentes tipos de enemigos y tal, resultando en esto:

http://www.mediafire.com/?w61rqo85fadfxqt
(creo que esta vez acertaré a la primera, está en modo release xD)

Los gráficos son prototipos todos, tengo ya a artistas colegas engañaos diseñando animaciones y tal :P

WASD para mover al prota, click para disparar. S+A o S+D para esquivar. Aunque ahora mismo el prota es inmortal para debuggar bien los enemigos.

MODO DIOS DEBUG xD: Z - invoca zombies, Q - Invoca Pirañas voladoras.

Los zombies tienen 3 de vida, y 1 en la cabeza. Las Pilomas tienen 1 de vida y mueren al chocar contra el suelo.

Poco a poco va moviéndose la cosa hacia un chupijuego, pero aún le queda mucho curro de jugabilidad. Se supone que terminará siendo un Action Tower Defense, ganando dinero al matar monstruos y pudiendo construir torretas y otras ayudas conforme progresas... el objetivo será: aguantar vivo el máximo tiempo posible.

2 respuestas
Jastro

#348 he usado flash normal, me baje el builder pero me dio terror jajajaja, asi que nada me quede con ese.

#349 siii, es que solo necesitaba sentirme agusto con un engine, ahora con este me ha costado pero ya lo pillo mejor, ahora le pongo lo que dijiste jeje :P

me bajo tu eso lo pruebo y ahora te digo que tal

Gracias a ambos por comentar :D

Edit: Esta muy guapo el juego, eso si, mete un pedazo salto que flipas, pero esta chulo :D

1 respuesta
aitorman

#349 Mola un rato xD. Una pregunta, que has usado para hacer el juego? OpenGL,Direct3D, algun engine? Y el sistema de colisiones lo has programado tu o has usado alguna librería?
Probablemente este respondido en alguna de las paginas, pero no se en cual y me da palo leermelas todas xD

1 respuesta
GreyShock

#350 Crees que debería saltar menos? Yo era por darle un poco de flipamiento de acción a la escena, y esquivar bien a los tipos del suelo.

#351 Está hecho con Indielib, es un framework que trabaja sobre C++ vínculado a DirectX
El sistema de colisiones viene implementado en el engine y es puro amor. Esos cuadraditos rojos que ves son las áreas de colisión, que ahora mismo las renderizo por motivos de debugging. Se pueden dibujar rectángulos, triángulos y círculos, y con eso compones tus zonas de colisión (que además los puedes dividir en plan "cabeza_zombie", "cuerpo_zombie" para diferenciar en qué zona del objeto 2D colisionan).

No puedo hablar mucho de si es la leche o no porque es el primer motor con el que trabajo, así que no sé cuantas patadas le darán los demás xD Básicamente lo elegí porque está orientado al 2D y me gustó como trataba los gráficos, colisiones y demás.

2 respuestas
aitorman

#352 Ok, me lo miraré. Yo ultimamente he estado haciendo cosas con OpenGL (estoy aprendiendo) sin usar nada mas excepto algunas librerías con funciones para manipular matrices y cosas así, pero se tarda mucho tiempo y no es que sea muy practico (hacer el sistema de colisiones sin saber mucho de mate es una verdadera mierda xD).

Jastro

#352 ná esta bien asi, solo me parecio curioso jajaja

Bueno añadi lo que me dijiste, que le dieras a la izquierda y acelerara y demas, esta controlado ademas que no se salga del escenario y poco mas. Creo que probare a cambiar de proyecto a ver si un plataformas o algo asi, me sale mejor :P

http://megaswf.com/serve/2312296

aitorman

Una pregunta, sabeis de alguna librería o algo que facilite cargar texturas en OpenGL? porque despues de hacer unas pruebas haciendolo todo yo mismo y ver como se hace y la teoría sobre como se guardan las imagenes y todo eso, casi que es mas practico usar algo ya hecho que facilite el tema antes de ponerme a hacer un cargador de texturas yo xD

1 respuesta
elkaoD

#355 qué lenguaje? Para Java yo uso Slick2D (slick-utils en realidad.)

Para C++, SFML está genial (es como un SDL dopado y orientado a objetos) aunque tienes que coger el snapshot 2.0 del repo (la 1.6 da un poco de pena ya de lo vieja que está.)

1 respuesta
aitorman

#356 Yo lo que uso es c++
EDIT: Ok acabo de leer tu edit sobre c++ xD Gracias

1 respuesta
elkaoD

#357 si sólo quieres la parte de cargar imágenes y pasas de todo el embrollo de SFML, prueba

http://www.nothings.org/stb_image.c

Y casi se me olvida DevIL:

http://openil.sourceforge.net/

1 respuesta
aitorman

#358 Ok muchas gracias. Ademas, de lo poco que me ha dado tiempo a ver de SFML parace que solo puedes cargar imagenes en un objeto propio de SFML (Image) que no se puede usar para OpenGL no?
Bueno, probare el stb_image

1 respuesta
elkaoD

#359 http://www.sfml-dev.org/documentation/2.0/classsf_1_1Texture.php

1 respuesta
Tema cerrado