Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - vib

#31
Principiantes / Re:sistemas de ordenacion
06 de Abril de 2013, 07:52:25 PM
Elegi merme sort en vez de quick sort por el tema que es estable y el caso mas malo es mucho mejor que quick sort.

   Merge sort    O(n log n) ..... y es estable
   Quicksort    Promedio: O(n log n),
                       peor caso: O(n²)                        y no es estable.

Claro mi vector generalmente estara bastante ordenada y usando quicksort ara casi siempre el peor caso...

Buscando se que hay muchisimos algoritmos de ordenacion, por eso me gustaria saber cual es para videojuegos el o los mas recomendados. :D
#32
Principiantes / sistemas de ordenacion
04 de Abril de 2013, 10:00:06 PM
Hola a todos de nuevo!
Abro el hilo viendo que con este tema no hay nada relacionado.

Acabe por fin mi motorcillo 2d para empezar hacer mis proyectos de juegos de forma ordenada y mas rapida...
La cosa es que ahora ordenando el codigo del motorcillo, he visto cosas que se pueden optimizar y me surgio la siguiente pregunta:

Para los videojuegos, cual es el mejor sistema de ordenacion?
Vale es una pregunta algo extensa y poco definida, me explico.
Tengo un sistema de ordenacion para controlar lo que se va a imprimir por pantalla...por capas " lo comente hace tiempo"
1r ordena, luego imprime.
1r ordena los de capa0, segun si la y es mayor o menor... luego capa1 etc
La cosa esque del programa es la parte que mas recursos y gasto genera y habia pensando reducirla a ser posible.

Ahora mismo, mi sistema de ordenacion es Mermeshort, lo que tengo fallo de codigo y en memoria se me va guardando todos las repeticiones, generandome una cantidad enorme de memoria que no es buena.

POR eso comentaba esto haber si podeis ayudarme en elegir el sistema adecuado.

Puntos a tener en cuenta:

El vector como mucho tendra unos 500 elementos, "por poner un numero" , los tiles del mapa y los elementos, objetos a mostrar.
el mapa estara ya ordenado, casi siempre
Los objetos no estaran ordenados
osea pongamos que necesito un sistema de ordecion para vectores pequeños..pero que si meto mas cantidad "500 o 1000" que tambien lo ordene con rapidez.

Yo elegi mermeshort porque es estable y rapidismo log n, pero al usar arrays auxiliares la memoria se me dispara, aparte de ese error de codigo que debo tener.

Aceptu sugerencias,
Mil gracias!
#33
Principiantes / Re:Como se estructura el codigo en un juego
15 de Enero de 2013, 11:02:35 PM
Vale me ha quedado bastante claro!
la web que me habeis puesto ya le hechare un ojo con calma.
Luego el ejemplo que has puesto es mas o menos lo que buscaba.

MI CLASE juego, la dejare mas simplificada para tener el vector de la clase en comun, y que se dedique ordenar,preparar,imprimir.

Lo que veo que en el contenedor, guardas las clases que se crean en el main...
osea creas la clase y la guardas en la otra clase pasandola como referencia
asi lo que se canvia de la clase tambien canviara al contenedor no?
pero entonces realmente se crean 2 clases iguales no?
Es un poco gasto o no tiene nada que ver?
IGUALmente ya he cojido la idea de como hacerlo!

OS AGRADEZCO QUE CONTESTARAIS!
GRACIAS :D
#34
Principiantes / Como se estructura el codigo en un juego
12 de Enero de 2013, 03:31:42 PM
Hola de nuevo, despues de llevar unas semanas parado, he querido continuar con mi motor de juegos 2d que estaba haciendo y repasando el codigo me surgio esta question.
Los juegos, en general como se estructuran?
Me explico.
Mi motor de momento es algo sencillo conta de estas clases. El codigo esta hecho en c++ sdl, nombrados tambien en otros post.
Clase fichero: para abrir ficheros .txt etc " correspondiente a la matriz mapa, matriz colision del mapa, alturas del mapa

Clase imagen: Es donde se guarda la imagen.
Clase scroll: contiene la clase fichero y se relaziciona en la creacion del mapa, herencia de imagen.

clase animacion: herencia de imagen, es donde le decidimos el perimetro que ocupara la imagen, en que posicion esta, si tiene alguna secuencia de imagenes, si colisiona.

clase personaje: herencia de animacion, es donde estan los atributos de la clase personaje, su movimiento,vida etc

Bien mi pequeño motor consta de esto, quiero ampliarlo pero 1r quiero resolver las pequeñas dudas.

A la hora de realizar la profundiad de la imagen "saber cuala se  imprime antes" tenia de poner todas las clases que creaba en un mismo lugar y que se ordenara segun ivan a salir por pantalla
Para esto cree una clase:
Juego y tuviera vectores de todas las clases anteriores, y que cada vez que se tuviera de crear una cosa se creara en ese vector asi ya tendria todas las clases dentro de vectores para luego ordenarlos e imprimirlos...
La cosa esque la clase juego, me esta dejando el codigo super feo, ya que tengo de repetir el mismo codigo para llamar a una clase, llamar a otra y todo sale de la clase juego...y nose si lo estoy haciendo bien.

La cosa es..como lo harias vosotros tener de manera practica, si por ejemplo quereis hacer un juego que las clases en ese nivel ya estan predefinidas...Por ejemplo 2 scroll, 3 animaciones, 10 personajes "9 npcs y el controlado por ti"

Como lo organizariais para saber quien es quien...porque me imagino que esto se debe hacer de forma automatica no creando todas las clases manualmente que es lo que no entiendo.

Otro nivel empezarian por ejemplo 5 personajes, pero se hiria incrementando infinitamente....claro aqui se tiene de crear de forma automatica y tenerlos controlados

Nose si me explico bien, me da la sensacion que no.
Las clases que las guardas todas en vectores o listas? o haceis eso de crear una clase que lo engloba todo ? porque yo tenia..


main()
{
    juego g;//clase juego que engloba todo
   g.crear_personaje();
   g.poner_imagen_personaje(g.obt_pos_personaje()-1, "ruta/imagen");//obt_pos_personaje es la que utilizo para saber en que //posicion del vector esta el personaje que acabo de crear
//y asi lo voy haciendo con todo..

nose no me gusta por eso quiero otros puntos de vista, quiero hacer el motor de juego para ya bonito para poder usarlo siempre...
Gracias
#35
Bueno de momento lo dejo como he dicho
Mas o menos lo he planteado de manera como he dicho
Lo envez de hacer una array para ordenar las prioridades a imprimir en pantalla
hacer N arrays, donde N es el valor maximo de prioridad siendo z por ejemplo va de 0 a 3
hare array de 3 posiciones quedandose en la posicion 0 las prioridades de 0 la de 1 de 1 i asi
luego ala hora de ordenare seran arrays con muchas menos posiciones y creo que resultara mas rapido.

Por cierto he implementado el algorismo de ordenacion merme sort, siempre he usado el quick short pèro veo que este es mas estable xD
Bueno a todo esto gracias la verdad esque me habeis dado las ideas que necesitaba para continuar gracias :D
#36
Lo de la clase animacion es por lo siguiente
tengo clase imagen " que guarda la imagen" clase animacion que hereda de imagen "guardando el rectangulo a imprimir, tamaño, posicion
Luego de animacion sale la clase objeto que es herencia de animacion, sale scroll que es lo mismo...
Luego sale tambien personaje que de hay sale herencia de principal, enemigos

Por eso decia de guardarlo en una array de animacion ya que  al ser herencias...animacion es lo que tienen en comun todo lo que hay en el juego.

Luego el tema de hacer array statica era un ejemplo..realmente lo estoy haciendo todo con vectores menos el mapa que utilizo un matriz de punteros **mapp

El lenguaje es c++ y la libreria aunque en esta duda no es importante,creo, es SDL.
La verdad esque le he dado varias vueltas y la manera mas "eficiente que se me ocurre" aunque no me gusta es la siguiente:
PD:no he recurrido a otra manera porque no acabo de entender bien lo que me deciis...creo.

Hago una clase Juego
private: vectores de: scroll,personaje,objeto,enemigos,escenario"complementos del mapa rollo arboles etc"
(todo esos vectores son las clases que estan en el juego creados, si aparece un nuevo enemigo se añadira a vector enemigo y asi...)
Luego la clase juego aparte de tener todo lo que hay en el juego en vectores, pondre tambien un:

vector <animacion>mostrar

Y lo que hago es: un metodo que gestione el orden

En la clase animacion terdra un
int prioridad que va de 0 a un max contante siendo por ejemplo 0 imprime abajo, 3 lo de mas arriba
mapa capa0=0
objeto=1
personaje=2
enemigo=2
escenario=2
mapa capa1=3

Teniendo esto, en el metodo gestor comprovare uno a uno todos los vectores que contiene todo el material que hay en el juego para comprovar si aparece en pantalla o no, siendo una variable de
bool visible=true/false

si es true, lo añadimos al vector mostrar

mientras haga esto, si añado un elemento al vector mostrar, si esta vacio añado sin comprobar si hay elemento entonces miro si es la prioridad mas alta i asi haciendolo con algun metodo como quick short o nuse
Luego teniendo el vector mostrar ordenado con el 1r valor es el de menos valor que sera el 1r a imprimir i asi..
Si veo 2 elementos con misma prioridad (personaje,escenario,enemigos) entonces compruebo que elemento esta mas abajo de la pantalla y ese entonces es quien tiene mas prioridad.

Luego una vez hecho esto, llamo al metodo de dibujar, donde dibujo todo lo del vector mostrar.

Esta es la manera que se me ha ocurrido dandole vueltas.
Nose si se entiende espero que si xD
Y nose...no me convence mucho esta manera asi que alguna opinion al respecto lo agradeceria :D
#37
Mas o menos ya voy haciendo...
A todas las clase animanacion " que es donde genero lo que se imprime" he creado una variable de prioridad.. que va de 0 asta un max puesto como constante.
Luego gerero en el loop la funcion de generar_prioridad que simplemente me comprueba que animaciones son visibles para imprimir en pantalla poniendome la prioridad las alta asta la mas baja en una array.
Si 2 prioridades son iguales que compruebe que y+h es mas grande y yata.

Vale el metodo de ordenacion ya buscare un algorismo que tengo por aqui de ordenacion rapida...

Luego me a surgido una duda
la ARRAY que contiene lo que se imprimira por pantalla como la genero?

hago un:

animacion orden[] ? y empaquetarle todas las animaciones? guardando su x,y,h,w i valores que no necesito guardar?
o sabeis alguna manera para guardar el orden de otra manera?

Nose tenia pensado hacer una array de animaciones
siendo por ejemplo scroll tiene numero 1, personaje numero 2, objeto1 numero 3 etc
y a la hora de ordenar simplemente tuviera de cojer el numero y no toda la clase.
#38
Si lo he ido pensando pero nose como plantearlo para hacerlo de forma automatica..
tengo la matriz que representa el mapa

1 1 2 1 3 1
1 1 (1 2) 2 2
2 2 1 3 2 2

Y el tema (1 2) tiene de estar por encima del personaje....

La unica manera que se me ocurre es:
Aparte de tener de ir a las posiciones de la matriz manualmente para decirle que esas son las de mas prioridad.. cosa que no me convence..
o es normal los tiles de mapa decir de forma manual la prioridad?
Luego las prioridades para mostrarlas se me ocurre  hacer una matriz que compruebe las imagenes que se muestran en pantalla i si es asi que se ordene en una matriz o array de manera que que se tiene de imprimir 1r...

Nose es lo que se me ocurre otra manera y nose esta manera me parece fea y lenta...
Podrias aconsejarme?:/
#39
Vale era lo que me he ido imaginando...mmm
Pero mas o menos como funciona de manera algoritmica? me imagino que los 2 debeis hablar de capas o de algo similar?

Ami de lo que me habeis hablando solo se me ocurre hacer una matriz que antes de imprimir por pantalla guarde todas las posiciones que se imprimiran y eso ordenar para que quede bien...pero claro me da ese problema que se menciona en el 2n mensaje... que dependiendo las grandarias podria darme problemas de ordenacion tardando mucho...

Quizas hay algo que no este haciendo bien... porque de momento uso 2 matrices, 1 del mapa para representarlo y otra de durezas con 1 o 0 para representar las colisiones con el mapa...nose si eso es lo correcto o tiene demasiado consumo?
Luego con el problema mencionado podriais horientarme para asignar prioridades


NOSE solo se me ocurre hacer un recorrido 1r para comprovar las prioridades y luego hacer otro para imprimir pero creo que es super chapuzero y gastoso
#40
Principiantes / mostrar sprite en pantalla de diferentes alturas
14 de Diciembre de 2012, 10:51:15 PM
Holas chicos! si el titulo es un poco raro pero nose me ha ocurrido nada mejor para resumirlo

El caso es que estoy viendo un problema que nose de que manera encararlo, os explico.

Tengo un juego 2d, vista desde arriba, estilo pokemon de la gameboy.

Tengo un scroll, donde aveces hay tiles que son el doble del tamaño normal para representar ciertas paredes,la duda que tengo esque al mostrar el personaje nose como hacerlo para que depende en que parte del mapa quede el mapa por encima del personaje y cuando al reves.

Nose si se entiende...
En mi bucle represento para mostrar en pantalla
matriz mapa
objetos
personaje

Claro siempre personaje queda por encima de todo...
Como se podria hacer?
validando cada tile del scroll para saber si esta el posicion para que quede por encima o por debajo?
y si es asi..y el personaje lo tengo en medio de 2 tiles 1 de estar encima y del otro de estar debajo.. que hago imprimo media matriz mapa
paro imprimo personaje
imprimo el resto de matriz?

Aparte de nose como encararlo..si lo encarara asi como he puesto al final nose como lo tendria de hacer porque solo se me ocurren chapuzas asquerosas...
Gracias
#41
Principiantes / Re:Como puede iniciarse uno?
07 de Diciembre de 2012, 01:32:51 AM
Gracias, me han quedado creo que bien aclaradas las duas

Por ahora seguire con mis pequeños proyectos en 2d que tengo para algun tiempo...
luego hare una pequeña introduccion en OpenGl mas que nada para saber un poco como funciona la programacion en 3d
y luego ya me metere en Unity3d...
Aunque tengo algun amigo que se anima hacer la parte grafica y quizas continue en OpenGl..depende de como se me dé
:P
#42
Principiantes / Re: Como puede iniciarse uno?
24 de Noviembre de 2012, 09:54:42 PM
agradezco vuestros comentarios.

Me estuve mirando asi por encima el unity3d.. y veo que por ejemplo..aspectos como sombras o posicion de la camara ya lo haces graficamente.
Con esto me a surgido una dudita..ese tipo de cosas es trabajo de los grafistas? me refiero a que en un sitio alla mas luz o menos luz, que el juego este desde una perspectiva...la camara y tal?
Porque pensaba que era cosa del programador controlar esos detalles y al ver que unity ya lo haces automatico me he quedado vaya quizas esto no necesite saber como se programa....
Que me deciis?

Luego una ultima cosa que no recorde mencionar.
Ahora con unos compañeros vamos a empezar a crear juntos alguna cosilla.... somos 3 un grafista un musico y yo como programador.. la duda que me ha surgido es...ver que asta los videojuegos asi simples suelen tener sobre todo mas  programadores
Entonces como se reparte el trabajo si hay mas de 1 programador?
1 se dedica a movimiento
otro a crear enemigos
otro crear objetos

y cosas asi? alguien podria decirme como lo hace para tener un ejemplo :D
#43
Principiantes / Como puede iniciarse uno?
20 de Noviembre de 2012, 08:51:12 PM
Hola buenas, escribo el post simplemente porque he visto algun post algo relacionado pero sin cumplir bien mis dudas.
Creo hace tiempo ver un post muy relacionado pero no he dado con el estos dias.
El caso esque el otro dia estuve en una conferencia sobre videojuegos...y el chico nos recomendo que para iniciarse en este mundillo aprendieramos a usar el UNITY3D el cual al llegar a casa me entraron unas duditas: ya que yo en este mundillo "tengo algo de experiencia"

Yo, de lenguajes conozco bennugd (6meses), c#(sin nada de videojuegos solo menus, mezcla con sql) y el que mas conozco es c++(3 años y pico largo).
He diseñados pequeños videojuegos en bennu pero sobretodo con c++ usando la libreria SDL.

Ahora estoy estudiendo diseño de videjuegos y en mis ratos libres programo usando SDL.

El caso es el siguiente:
Yo quiero llegar ha poder formar parte de alguna plantilla de trabajadores que desarrollen videojuegos..o que alguna de mis ideas llegara a ver la luz... el caso es.. que hago? y como lo hago?

Que es lo que me recomendais? que lenguaje, librerias, motor grafico..aprendo a usar? ya que seguro que hay algunas que se usan mas que otras y estan mas demandadas a la hora de hacer curriculum

Yo tenia pensado... de
acabar los 3 proyectos de c++ usando SDL para acabar de definir bien mi programacion en 2d.
Luego empezar a tocar OGREGL y junto con SDL entrometerme en el mundo del 3d.
y Luego ya el año que viene que en clase nos enseñaran JAVA..empezar a aprender android para moviles.

Como lo veis? Unity3d entonces que?
Hago proyectos buenos y curradisimos? o voy haciendo cosillas simples?
Me imagino que para tirar curriculum en empresas necesitare enseñar mis trabajos por eso digo si mejor cosas curradas en tema de programacion " de diseño tengo un 0" o voy haciendo muchas cosas sencillas pero que se vea que tengo imaginacion?

Me interesaria vuestra opinion ya que soys mas expertos que yo.. y no quiero perder el tiempo aprendiendo a programar con X o con Y para que luego vea que a nivel de trabajo no me sirve de demasiado.

Gracias!

PD:lamento mis faltas, creo haber dicho que tengo un poco de dislexia...que eso lo comenso con buenos conocimientos de mates os lo aseguro :D
#44
General Programadores / Re: SDL c++ dudas con scrolling
17 de Noviembre de 2012, 04:21:07 PM
Buenas de nueva;
me he mirado tu web, parece esta muy bien ya le hechare un ojo con mas calma...aunque ese lenguaje no lo he visto demasiadas veces me cuesta un poco entender algunas funciones pero eso ya es cosa mia.
Me he puesto hace unos dias con el codigo de nuevo y para la colision tengo mas problemas que pensaba que me daria esa funcion. Os dejo el codigo de lo que he hecho y bueno nose porque me falla.


bool colisio(int pos)//pos es la posicion para saber si es hacia arriba, derecha etc las demas variables de momento las tengo como uso general
{
   //yo colisiona con cada escroll
   ///yo posicon real.."siempre medio si pero para usarse en otro tipo de scroll
   /// camara para saber la posicion real de mapa
//camara indica el 1r numero de la matriz en la posicio 0,0
//yo es el personaje que en este "juego" esta en el centro del mapa
//para colocar el colx y coly encima del personaje pero teniendo en cuenta "creo" las posiciones de la matriz

   int colx=camara.x+(yo.x-TAMANO_W); //tamano es el tamano de la imagen del personaje
   int coly=camara.y+(yo.y-TAMANO_H);

///PARA SABER LA POSICION DEL MAPA YA QUE SE DIVIDDE POR EL SCROLL

   colx=colx/TILESIZE_x;//el tamano delos tiles del scroll
   coly=coly/TILESIZE_y;
   cout <<" col x " <<colx<<" col y "<<coly<<endl;


   ///col del jugador con los tiles de su alrededor " se da por exo que el esta sobre algo que no colisiona...

   ///derecha
   if(pos==1){
       if(map[coly][colx+1]==1 )return true;//or map[coly+1][colx+1]==1 or map[coly-1][colx+1]==1)return true;
       else return false;
   }
   ///zki
   if(pos==2){
       if(map[coly][colx-1]==1)return true;// or map[coly+1][colx-1]==1 or map[coly-1][colx-1]==1)return true;
       else return false;
   }
   ///ar
   if(pos==3){
       if(map[coly+1][colx]==1)return true;// or map[coly+1][colx-1]==1 or map[coly+1][colx+1]==1)return true;
       else return false;
   }
   ///abj
   if(pos==4){
       if(map[coly-1][colx]==1)return true;// or map[coly-1][colx-1]==1 or map[coly-1][colx+1]==1)return true;
       else return false;
   }
};
bueno gracias por vuestro tiempo :D
#45
General Programadores / Re: SDL c++ dudas con scrolling
11 de Noviembre de 2012, 09:37:55 PM
Soirry por contestar tan tarde

Si mas o menos eso es lo que queria buscar!
cuando tenga un rato seguire en ello de nuevo
gracias! :D





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.