Code, Freak and Videotape

Pongame 1/4 y mitad de clipping

     Siempre he sido un programador al cual le ha gustado mucho toquetear nuevas, o más bien desconocidas para mí, tecnologías, y desde unos años para acá siempre me han llamado mucho la atención los lenguajes de alto nivel; pero poco a poco y no se yo si es por la incipiente influencia de zalo en mi vida laboral, o simplemente por la tocada de bolas reiterativa de estos lenguajes que les estoy cogiendo tirría.

    Todo empezó cuando comenzé a trabajar hace ya bastante tiempo con j2me, la tocada de webos de los términales y sus nefastas implemenaciones de la máquina virtual hacían exasperar a cualquiera, métodos que funcionan mal, memoria que se desperdicia, works arounds al más estilo fulambulista, y un sinfin de problemas que dejaron más de una brecha en mi frente de tanto pegarme contra la pared. Pero bueno siempre te podias cagar en la necedad del menda que habia diseñado ese movil, y soñar con aparecer con un magnum algún día por las oficinas de NOKIA, y organizar una buena fiesta de sesos en finlandia. Más tarde descubrí el maravilloso mundo de Swing, esta vez con java standar, y su también maravillosas librerias de graphics 2D, librerías oscuras, q cuando quieres hacer algo sencillo son maravillosas, pero que como te salgas del guión establecido, te pueden suponer más de un dolor de cabeza o de un monitor volando por la ventana; mil duros al que me diga de memoría, cuando hay q usar setMinimunSize(),setMaximumSize() y setPerrefectedSize().

    Gracias a estas bonitas cosas y otras putadas más; comienzas a odiar ferventemente a sun y su maravillosa multiplataforma de los cojones (juaz multiplataforma juaz). Entonces decides volver al calor del hogar y a mama C++ la cual nunca tuviste q abandonar. Ahi era feliz, pero comenzó el visual studio a tocar las pelotas, pero levemente, nada q no se pudiera soportar y al final te haces colega suyo, y su millón de opciones de configuración se van haciendo gratas cuando tines q hacer un  makefile pa linux (juaaaaz he zalo a ver cuando nos cuentas tu esa). Cuando ya estas contento con c++, para ahorrar trabajo empiezas a utilizar algunas librerias bonitas, yo me decidí por SDL, y todos sus amigos, mixer, image, gfx... y ahí vuelve otra vez la tocada de pene, cosas q comienzan a funcionar como no deben, cosas q quieres hacer y no puedes, pero todo se soluciona fácilmente(nunca se si hay q acentuar o no los adverbios terminados en "mente", porq se dice acentuar y no tíldear), viendo el código fuente, y cambiando lo q no te gusta; ay q alivio poder hacer eso, no sabe la gente q maravilloso es eso, q ganas de pasarme por erikson y darle un par de sopapos al tio q dijo: " los de sun han dicho q tiene q existir el método no q tenga q estar implementao, tu dejalo vacio y devuelve un true como si hubiera funionao correctamente, ya verás lo q nos vamos a reir" y tu ahi lo ves vacio sin poder hacer na :S. Pero aun asi SDL tambien comienza a tocarte el pene y no te permite cargar aveces una imagen como quisieras, ya os lo explicaré un día más detenidamente, pero al final sales del paso.

 
    Un día alguien te dice, oye mira como mola XNA, además es c#, y tu dices uhmm c# es como java, pero dicen q bien hecho. PIIIIIIIIIIIIIIIII ERROR. Era feliz con XNA, trabajando y pensado en lo way q van a quedar mis juegos en la 360, y pensé estos tios son los de directx, y los de manager directx, ademas en las charlas parecen gente inteligente, y digo yo q para hacer un framework se lo habrán pensao varias veces, es más hiceron una beta de la cual ya solo queda el nombre y 3 conceptos y parece que la idea está way. Y ahí te pones tu to ilusionao y te das cuenta de q si de q está muy bien y q tiene cosas super chulas, q siempre había querido tener y un día descubres q si activas el depht layer te aguntas y el orden de pintado se va al carajo, cosa q al pensar como funciona dices bueno es normal, el renderiza al final, y ha saber dios cuando hace la ordenación de zbuffer, te haces tus pajas mentales porq no vas a poder ver como funciona (seguro q es el hijo de *** de erickson que ahora trabaja akí), pero bueno decides que solo vas a tener un spriteBatch y todos contentos, ya todo funciona bien eso si te ves que pintas en la z 0.00000124, pero da igual porq eso hace el código muy legible y convives con ello. Pero hay amigo, llega un día q quieres solo pintar un trozo de pantalla, lo q mis amigos llaman clipping y tacháaaaaaaaaaaan no puedes, te quedas medio memo, dices, uhmmm vale puedo coger un trozo de una imagen, q es lo contrario a un cliping, pero no puedo hacer un cliping. entonces piensas ya está lo que hago es crear un buffer, pero luego ves q no puede pintar en un buffer, xq no?? puedo copiar un trozo de imagen en otro, muy cuco, pero no puedo hacer un *** cliping, o yo soy tan gilipollas q no se hacerlo, y al final vuelves al truco del payaso que hace malabares, y te encuentras con un trozo de código ilegible para hacer lo q se haría en una linea. Señores diseñadores de lenguajes en alto nivel, me cago en vuestra *** madre, me parece muy way q deis herramientas para el alto nivel, pero acordaros de dar herramientas suficientes, porq no todo el mundo quiere hacer el *** juego de naves.

Bueno señores segiré trabajando con java, con xna, con sdl, con 1000 sarandajas más, pero siempre pensaré que nada mejor q como en casa. Apuntensen a la plataforma cemasmola (xq c++ siempre será tu amigo) 


Gracias, si algún alma caritativa me explica como hacer un clipping en xna, le invito a una birrita freskita. Sino segiré montando la de en dios y en cristo para hacerlo. Muchas gracias.


    Y q todavía tenga q aguntar a los capullos esos q me dicen :"eso de hacer videojuegos tiene q ser superdivertido, os lo teneis q pasar bomba". Si, si claro, programamos con el mando de la play 2, cogemos al muñeco del pro y le pasamos por "el diseña tu moda" y "cambio  radical" y ya tenemos un juego, ya ves, es tan divertido.

 
 

Posted: Jun 10 2007, 04:05 PM by flipper83 | with 12 comment(s)
Filed under:

Comments

Xamar said:

Claro, toda librería tiene sus complicaciones, lo bueno del software de código abierto es que al menos te puedes meter en el código y  arreglarlo.

¿Has probado alguna vez OpenGL? ;

# June 10, 2007 5:03 PM

flipper83 said:

no he trabajado lo suficiente como para q me parezca una mierda. XD esta frase podría ser de zalo trankilamente. Lo que quiero decir con este post es 2 cosas, q no existe un *** lenguaje q no tenga mil mierdas mal hechas y q no lo reconcen. Y lo segundo lo de clipping en xna, q me parece muy duro q algo q me parezca tan necesario no esté implementado.

# June 10, 2007 5:16 PM

Zalo said:

Jajajajajajaa!! Tío, pedazo de post que te has currado, te veo realmente encabronado XDDDDDDDDDDDD. No podía estar más de acuerdo con la mayoría de las cosas que cuentas en este post. Mi felicidad como programador ha ido siempre en aumente cuando más bajaba de nivel, eso lo tengo claro. A mi eso de que una cosa falle y no saber por qué cojones es, o que una cosa estúpida vaya lenta (o hiperlenta) y no haya explicaciones razonables me saca de mis casillas. Me alegro de haberte malinfluenciado de esa forma

" [...]y su millón de opciones de configuración se van haciendo gratas cuando tines q hacer un  makefile pa linux (juaaaaz he zalo a ver cuando nos cuentas tu esa). [...]"

Pues que te voy a contar, yo no me mosqueé con este asunto. Es cierto que hacer makefiles es un coñazo, pero es cuando realmente ves como se compila un proyecto de cemasmola y por qué muchas veces tienes problemas linkando librerías y todo eso. No es muy cómodo pero todo programador de C++ debería hacerlo alguna vez. Yo gracias a aquello ahora puedo trastear con la DS apañandome más o menos bien con el Visual.

En fin, en conclusión... que si, que Sun se meta a su Java por donde les quepa y deje paso a Microsoft :P Que para hacer utopías hace falta pasta y no soñar XDDD

PD: no hay fuentes de opengl para windows y que yo sepa para Linux ninguna compañía deja los sources tampoco para que veas como funciona su tarjeta. Así q  no sé yo si entraría esto dentro del código abierto. En cualquier caso, si la tarjeta está mal hecha, ya puedes tener el código poco vas a hacer :D

PD2: ahora venme con lo de las MESA y ya tengo mi respuesta preparada

# June 10, 2007 5:49 PM

chinovader said:

Pues yo, de hacer clipping en xna, na de na (aplausos...), pero te digo que la regla para acentuar es que si la palabra original tenía acento, entonces la acabada en mente también(fácil -> fácilmente);¿vale por una birrita freskita?

Y sí, esto es meterme donde no me llaman, pero al menos que yo sepa existe una implementación open source de openGL: MESA

http://www.mesa3d.org/

y se puede compilar para el windows ese...

hala, a codificar!

# June 11, 2007 12:41 PM

Vicente said:

Yo hablo desde la ignorancia: dado que XNA está pensado para hacer cosas en 3D (usemos las cosas para lo que son), ¿tan malo es porque no tiene clipping 2D?

Un saludo!

Vicente

# June 11, 2007 2:11 PM

Zalo said:

Jajaja, sabía que alguien iba a comentar lo de las MESA. Si, podéis trastear con la implementación de las MESA, pero no soñéis con que vuestra tarjeta aceleradora haga algo al respecto :)

# June 11, 2007 2:58 PM

diego said:

coño jorge !! si eso lo acabo de hacer yo !

tengo un par de funcioncitas que te van a ir bien

setclip y drawimage , que funcionan igual que el setclip y drawimage de j2me ( para portar a gus ) .

yo use el interfaz sprite , que te permite lo que dices , pintar en x,y el cacho de imagen que vade  x1 a x2 y de y1 a y2 .

esas cosas preguntamelas , que a lo mejor te puedo echar una mano .

Es codigo infernal , y le quedaran casos , pero es que gus lo he portado rapidito y sin complicarme .

void setClip(int x,int y,int w,int h){

      clip.left=x;

  clip.top=y;

  clip.right=x+w;

  clip.bottom=y+h;

  if (clip.right>sWidth){clip.right=sWidth;}

      if (clip.bottom>sHeight){clip.bottom=sHeight;}

}

y

void drawImage(LPDIRECT3DTEXTURE9 backImage,int x,int y,int top){

      RECT r1;

      int width,height;

  D3DSURFACE_DESC pDesc;

      backImage->GetLevelDesc(0,&pDesc);

  width=pDesc.Width;

      height=pDesc.Height;

  r1.left=clip.left-x;

  r1.right=r1.left+(clip.right-x);

  r1.top=clip.top-y;

  if (r1.top<0){r1.top=0;}

  r1.bottom=r1.top+(clip.bottom-y);

  if (r1.left<0){r1.left=0;}

if (r1.right<0){r1.right=0;}

if (r1.top<0){r1.top=0;}

if (r1.bottom<0){r1.bottom=0;}

      if (r1.right-r1.left>width){r1.right=r1.left+width;}

      if (r1.bottom-r1.top>height){r1.bottom=r1.top+height;}

  if (r1.right-r1.left>clip.right-clip.left){r1.right=r1.left+(clip.right-clip.left);}

      if (r1.bottom-r1.top>clip.bottom-clip.top){r1.bottom=r1.top+(clip.bottom-clip.top);}

 //hola jorge , a estas alturas tienes en el rectangulo r1 la informacion que necesitas para pintar un cacho de imagen en la x,y correspondiente

      sprite->Begin(D3DXSPRITE_ALPHABLEND );

  if ((clip.left==0)&&(clip.top==0)&&(clip.right>=sWidth)&&(clip.bottom>=sHeight)){

sprite->Draw(backImage,NULL,NULL,&D3DXVECTOR3((float)x,(float)y,0),0xffffffff);

  }else{

    sprite->Draw(backImage,&r1,NULL,&D3DXVECTOR3((float)x+r1.left,(float)y+r1.top,0),0xffffffff);

  }

  sprite->End();

}

# June 13, 2007 3:03 PM

diego said:

jaja ! acabo de ver el post de Alfredo , ¡ muy bueno ¡ . Me hace recordar viejos tiempos ...

Me arrepiento de todas las faltas de ortografía pasadas , presentes y futuras , sobre todo de las de mi anterior post .

Un saludo .

# June 13, 2007 3:07 PM

meneame.net said:

Aquí vemos como un &quot;programador&quot; tiene un día de ira y arremete contra varios lenguajes de alto nivel, sus comentarios de venganza dejan ver sus &quot;skins&quot; como director de cine. Como en la peli de &quot;trabajo basura&quot;...

# September 28, 2007 2:50 AM

KernelPanic said:

Que dice este tio?.. no tiene ni *** idea, confunde librerias con lenguajes de programación... y decir que SDL no es bueno!?!? Mira el 80% de los juegos de ID Software, todos con SDL, que diga que un lenguaje es malo por no tener ni idea de usarlo no significa que ese lenguaje sea malo, que se coja la API y se la estudie. Y si ese tio es programador de juegos yo soy windowsero xD

Que no existen librerias de OpenGL para windows... dios, que me descojono... Leed los comentarios que son la leche.

# September 28, 2007 3:09 AM

Zalo said:

Hombre, ya están aquí los linuxeros al poder inventándose las cosas que dice la gente XDDDDDDDDDDD.

Muchachooos, no me toquéis mi linux, que soy linuxero... como molo, *** windows... A VER SI POR LO MENOS OS PEINÁIS, GREÑAS!! XDDDDDDDDD

# September 28, 2007 4:00 AM

flipper83 said:

me sorprende la respuesta de KernelPanic, creo q se equivocó y respondió a otra entrada aki porq no tiene mucho sentido lo q dice. Primero q confundo lenguajes y librerias?? donde? creo q dejo bastante claro cuando hablo de lenguaje y cuando de libreria. vease "para ahorrar trabajo empiezas a utilizar algunas librerias bonitas, yo me decidí por SDL". Segundo donde digo q SDL no es bueno, solo digo q los lenguajes de alto nivel y las librerias tienen bugs, bugs q no arreglan y q tocan  bastante el pene, y si me dices q no es q creo q nunca has pasado de un "hola mundo". Y hay bastante cosas q se vuelven liosas simplemente por no permitirte un acceso a bajo nivel o sino diselo a alguien q utilice un engine comercial chaval.

Y lo que yo no soy programador de videojuegos diselo a mi jefe porq parece q me paga por ello y si no lo soy le sentará muy mal al enterarse.

de donde te sacas lo de q no existen librerias de opengl para windows, tu lees lo q quieres leer? eres de otro pais y tienes problemas con el idioma? o simplemente no dás para más.

Mira chaval si algun día trabajas como programador, me darás la razón, ya q verás muchas chapuzas echas y cuando pierdas un par de días porq no te dejan ver como está hecho el metodo q está llamando entederás ese post, por eso trabajo con SDL y por eso me cago en j2me. Ponte ha hacer algo complejo con swing ya verás q dibertido es.

q tengas feliz día windowsero.

# September 28, 2007 4:06 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: