Libros y Papers sobre C++

¿Querés aprender C/C++? Ahora no vas a tener excusa.

Les traigo una post del foro elhacker.net donde se encuentran, para descarga directa, una gran cantidad de libros y papers sobre programación en C y C++, tanto en plataformas Windows como Linux. Hay gran variedad de temas sobre programación en C/C++, como programación de videojuegos, de sockets, o de interfaces Qt4.

El link para ingresar al post: [Libros/Papers] Programación en C/C++.

Shove It! Mi juego ya está terminado

Después de una ausencia de unos días en el blog he vuelto. Y traigo conmigo mi nuevo juego. Está en face BETA, ya que aún me falta crear un editor de mapas y nuevos mapas. Pero el proyecto en sí ya está listo.

Ya he terminado de programar el juego, sólo me quedan aspectos exteriores.

Para los que lo quieran probar, la web del proyecto es: sourceforge.net/projects/shoveit.

Desde allí lo pueden descargar para probarlo. Ojo! Recién cuenta con un mapa que es de prueba, no tiene ninguna dificultad en su resolución, pero es para probar el sistema de colisiones y otros movimientos. La versión 0.2 implementará un editor de mapas y mapas para resolver.

En breve terminaré las modificaciones para subir la versión 0.2. Además compilaré una versión para Windows.

Para compilarlo necesitan poseer las bibliotecas SDL. Para instalarlas en una distribución basada en Debian (como Ubuntu) sólo debes ejecutar, como root, el siguiente comando:

apt-get install libsdl1.2-dev

El juego cuenta con una serie de clases programadas por mí para facilitar la programación del juego bastantes interesantes. Si tengo tiempo las voy a compilar como librerías para programar junto con SDL.

Un screenshot del juego:

El juego consiste en acomodar todas las cajas dentro de los casilleros marcados en el mapa. Como en el caso del screenshot, con la + tengo que empujar la caja hasta acomodarla en el cuadrado que tiene contorno blanco y el centro negro. Se gana una vez que todas las caja estén acomodadas en estos cuadrados.

Obviamente esto no tiene nada de dificultad porque es solo un mapa de pruebas. En la versión 0.2, como ya dije, habrán mapas para ya poder jugar y pensar :).

Categorías: C/C++, Programación

Descomprimir archivos en Linux desde consola

En modo gráfico tenemos el gestor de archivadores para facilitarnos la vida. Pero, ¿cómo tratar con archivos comprimidos o empaquetados como los tgz, tar, bz2 o rar en la consola?

TAR
Se trata de un archivo que combina varios archivos en uno, no hay compresión de datos. Para extraer el contenido usamos el comando tar con los flags x (extract, extraer) y f (file, desde un archivo), y opcionalmente v (verbose) para mostrar por pantalla el proceso o vv para mostrar no solo los archivos y carpetas creadas, sino información sobre estas.

tar xvf archivo.tar

GZ
Se trata de un archivo comprimido con gzip. Para descomprimir utilizamos el comando gzip con el flag -d (descomprimir) o bien el comando gunzip, que no es más que un enlace a gzip.

gunzip archivo.gz
gzip -d archivo.gz

TGZ, TAR.GZ
Un archivo empaquetado con tar y comprimido con gunzip. Se descomprime de la misma forma que los tar, añadiendo el flag z para indicarle que use gzip para descomprimir.

tar xvzf archivo.tar.gz

BZ2
Archivo comprimido con bzip2. Para descomprimir se usa el comando bzip2 con el flag -d (descomprimir) o bien el comando bunzip2, que no es más que un enlace a bzip2.

bunzip2 archivo.bz2
bzip2 -d archivo.bz2

TAR.BZ2
Similar a los archivos tar.gz, pero se usó bzip2 para comprimirlo. Para descomprimir se usa también tar, con el flag j en lugar de z:

tar xvjf archivo.tar.bz2

ZIP
Archivo comprimido con zip. Se descomprime usando el comando unzip:

unzip archivo.zip

RAR
Formato propietario de RarLab, creadores del famoso Winrar. Normalmente el comando rar no está instalado en el sistema

sudo aptitude install rar

Se descomprime con el flag -x (eXtract, extraer)

rar -x archivo.rar

Artículo sobre programación de un "Bong" con SDL

Navegando por la web encontré un artículo bastante interesante que explica cómo programar un «bong» con SDL, implementando un sistema de colisiones.

Enlace: http://acuv.webs.upv.es/index.php?option=com_content&view=article&id=199:tutorial-sdl-hagamos-un-qbongq&catid=8:general&Itemid=12

Primer juego SDL con sistema de colisiones

Amigos, luego de haberme terminado de leer 2 libros sobre programación con SDL 🙂 he creado una especie de librerías que facilitan mucho el trabajo a la hora de programar videojuegos, que nos ayudan a inciar el sistema gráfico más rápido ,y lo mejor es que incorpora un sistema de detección de colisiones que me tomó bastante trabajo hacerlo porque tuve que aplicar geometría a full.

Además, desarrollé un pequeño ejemplo llamado «game» donde muestra cómo una X colisiona contra una pared de ladrillos. Más adelante explicaré el sistema de colisiones.

Acá dejo los fuentes, donde viene el source del juego:

game_collision.tar

csprite.cpp/csprite.h y csurface.cpp/csurface.h y config.h conforman la librería en sí, o sea, son clases sencillas que me permiten simplificar el trabajo.

Antes que nada, para desarrollar un videojuego como este o compilar este mismo necesitas las librerías SDL(Simple DirectMedia Layer) que nos permiten el manejo del video, del audio, del joystick, eventos, étc. Para las distribuciones basadas en Debian puedes instalarlas con un simple «apt-get install libsdl1.2-dev». La página oficial de estas librerías es www.libsdl.org.

Una vez que descomprimas el archivo y entres a la carpeta tendrás que compilar los sources así:

g++ -o game game.cpp csprite.cpp csurface.cpp `sdl-config --cflags --libs`

El ejemplo que diseñé consta de una X que se puede mover a nuestro antojo a través de la pantalla, de una caja de madera que sólo se puede mover cuando es empujada por la X, y de una pared de ladrillos que está fija, y X no puede traspasarla, ya que topa contra esta.

Si quieres utilizar las «librerías» y necesitas más info, comunicate conmigo a mi mail.

En el próximo artículo explicaré todo lo relacionado con las colisiones de objetos 2D.

 

Categorías: C/C++, Programación

Manual sobre SDL en castellano

Tanto tiempo. Aquí les traigo un manual sobre SDL (Simple DirectMedia Layer), la librería por excelencia para trabajar con multimedia e imágenes, que nos facilitará el trabajo de la programación de videojugos 2D con imágenes.

Este libro enseña los conceptos de una forma «muuy» clara y concisa y además nos enseña cómo programar un simple juego.

Enlace: http://www.scribd.com/doc/8689046/eBookProgramacion-de-Videojuegos-Con-SDL.

Se encuentra alojado en Scribd.com. Este «gran tutorial» nos dará la base suficiente para comenzar a programar nuestr juego desde 0. Yo ahora estoy terminando el mío, en breve lo subiré :).

Compilar Kernel Linux con el método tradicional

Como muchos saben, hay muchas formas de compilar un Kernel de Linux. Cada distribución trae su propio método para hacerlo y sus propias herramientas, como en el caso de Debian que cuenta con las herramientas de «make-kpkg», y que este tema ya lo explique en un post anterior.

Ahora voy a escribir una pequeña explicación para compilar un kernel con el método tradicional, el más antiguo y el universal,o sea, en todas las distribuciones se compila igual.

Iré paso por paso, antes que nada hay que registrarse como root para realizar todas estas acciones como superusuario y así no tendremos problemas con los privilegios y esas cuestiones.

Paso a paso

1- Primero descargaremos el último kernel disponible en kernel.org: kernel 2.6.39.

2- Lo copiamos en la carpte /usr/src que es donde debe encontrarse el source del kernel y lo descomprimimos:

cp linux-2.6.39.tar.bz2 /usr/src/
tar xfv linux-2.6.39.tar.bz2

Si lo desean pueden crea run enlace simbóligo con «ln -s linux-2.6.39/ linux/» para que les sea más cómodo ingresar a la carpeta, pero yo siempre me salteo est epaso.

3- Entramos en la carpeta /usr/src que es donde está el source del kernel, e ingresamos en la carpeta del source:

cd /usr/src/linux-2.6.39

4- Compilamos lo necesario para empezar a configurar el kernel y los módulos:

make menuconfig

La configuración varía según el hardware que tenga nuestra PC, por eso no puedo especificar nada sobre este punto ya que todas las PCs cuentan con dispositivos diferentes. Informate bien sobre tu hardware para poder configurar el kernel en relación a los dispositivos con que dispongas. Si lo deseas puedes activar todo (o la mayoría) para tener compatibilidad con todo, aunque no es nada recomendable porque te quedará un kernel inmenso. Lo que puedes hacer es usar la configuración del kernel con el que estás trabajando actualmente accediendo a /boot y copiando .config a la carpeta que contiene el source del kernel.

5- Una vez terminemos de configurarlo sólo nos queda compilarlo, instalar, compilar los módulos e instalarlos:

make
make modules
make modules_install
make install

6- Ya tendriamos todo listo. Solo queda configurar tu boot para que reconozca la imagen del kernel. Si estás usando grub debes crear la iamgen con mkinitramfs:

mkinitramfs -o /boot/initrd-2.6.39 .img /lib/modules/2.6.39
mkinitramfs -o /boot/initrd.img-2.6.39 /lib/modules/2.6.39

7- Solo tienes que actualizar grub para que te reconozca la imagen y listo:

update-grub

 

Ya tienes tu kernel funcionando perfectamente. En proximos artículos entrará más de lleno en lo que es la configuración del kernel.

Hasta luego.

Videotutoriales sobre Packet Injection (inyección de paquetes)

Vagando por el mundo HTTP llegué a un sitio donde se encuentran una serie de videotutoriales muy interesantes sobre Packet Injection. Explican desde el concepto, pasando por la estructura de los paquetes, hasta cómo armar nuestro propio inyector.

Muy interantes, aunque lamentablemente están en inglés.

La URL del sitio: www.security-freak.net/packet-injection/packet-injection.html.

Además en la sección videos de esa web pueden encontrar videos sobre seguridad informática bastantes interesantes.

Introducción a shellcodes en Linux

Aquí les traigo un videotutorial muy interesante sobre programación de shellcodes sobre Linux. Da una introducción muy buena para explicar los conceptos que abrcan este campo.

Recursos para la creación de videojuegos

Por si tienes algún proyecto en mente, que tenga que ver con videojuegos, he aquí una gran recopilación de recursos:

  • KPL – Facilita la programación de videojuegos, con impresionantes gráficas y sonidos.
  • Basic4GL – Programacion en BASIC para windows con soporte OpenGL (2D y 3D)
  • Panda3D – Engine 3D gratuito usado en la creacion de ToonTown por Disney. (Python, C++)
  • Glest – Juego de estrategia (RTS) en 3D completamente personalizable y gratuito.
  • Kaneva – Sistema para la creacion de juegos multijugador en linea (MMO games). En estado Beta.
  • Blink 3D – Creador de escenas 3D para uso en internet (juegos, educacion, machinima). (Alpha)
  • FreeWorld3D – Programa para la creacion de terrenos y mundos 3D en tiempo real. (comercial)
  • JClic – Conjunto de aplicaciones informáticas para poder realizar rompecabezas, asociaciones,ejercicios de texto, palabras cruzadas, y muchas otras actividades educacionales (JAVA).
  • Quest Pro – Creador de aventuras de texto sin programacion. (comercial)
  • Indice de Paginas – Juegos pequeńos y gratuitos en espańol para nińos.
  • DIVnet – Informacion y taller de aprendizaje de Div y Fenix.
  • RPG Toolkit – Programa dedicado a la creacion de juegos en 2D del tipo ‘Role Playing Games’ (RPG’s).
  • The Nebula Device – Engine 3D multiplataforma para la programacion de juegos en C++ (Open Source)
  • PPTactical Engine – Pequeńo sistema para la creacion de juegos de estrategia en tiempo real (RTS).
  • VERGE – Este es un programa que te ayudara a crear juegos… especificamente de tipo RPG.
  • The Lost Realm of Anoria – Open source 3D engine para crear tu propio juego multiplayer RPG o juegos similares.
  • Game Editor – Sistema para el desarrollo de juegos 2D para windows, pocket pc y linux, sin programacion. (comercial)
  • Visionaire – Similar a AGS (adventure game studio). Te permite la creacion de aventuras graficas en 2D. (comercial)
  • Hephaestus – Kit para crear juegos de rol en 2D en JAVA (multiplataforma), el cual incluye un editor de mapas.
  • RPG Maker XP – Si lo que deseas es crear juegos de rol en 2D, esto es precisamente lo que buscas. (comercial)
  • 3D Adventure Studio – Editor y engine dedicados para la creacion de juegos de aventura en 3 dimensiones.
  • Virtools Dev – Herramientas y servidores para la creacion de aplicaciones y juegos 3D en tiempo real, y en muy poco tiempo. (comercial)
  • Platform Studio – Herramienta para crear juegos de plataforma en 2D sin programacion.
  • Adventure Maker – Set de herramientas para la creacion de juegos de aventura del tipo ‘point-and-click’.
  • Antiryad Gx – Creador de juegos 3D para diferentes plataformas, incluyendo win, linux, mac, PS2, Xbox, etc.
  • Explorations RPG System – Sistema para el desarrollo de juegos RPG multijugador. (comercial)
  • mad – adventure game engine – Engine para la creacion de aventuras graficas. (similar a ‘adventure game studio’)
  • PlayBasic – Lenguaje para la programacion de juegos basado en BASIC, pero mas simple todavia. (comercial)
  • Realm Crafter – Herramienta para la creacion de juegos tipo MMORPG. En desarrollo. (comercial)
  • Stagecast Creator – Sistema para la creacion de simulaciones y juegos simples.
  • Ray Game Designer 2 – Programa para crear juegos 3D sin programacion. Soporta OpenGL, D3D y software rendering.
  • The 3D Gamemaker – Podras crear juegos 3D basados en plantillas modificables sin programacion. (comercial)
  • FPS Creator – Si solamente deseas crear un FPS (1st person shooter) sin programacion, esta es tu solucion. (comercial)
  • Ren’Py – Sencillo lenguaje de programacion para la creacion de juegos con estilo de novelas visuales.
  • Text-World – Herramienta para crear aventuras en modo texto. Podras crear algo asi como ‘novelas interactivas’.
  • Cube 3D Engine – Open Source multiplayer y single player con opcion de editar la geometria, mapas y demas elementos interactivos
  • Entidad 3D – Completo sistema para el desarrollo de juegos 3D tipo Quake sin necesidad de programacion. En espańol!
  • Torque Game Engine – Poderoso engine 3D para la creacion de videojuegos (comercial)
  • Reality Factory GCS – Creador de juegos 3D basado en el engine Genesis 3D (open source)
  • Elysium – Creador de MMORPG gratuito y Open Source. Puedes crear enemigos, mundos, y jugar en ellos con tus amigos.
  • Pygame – Modulos de Python para escribir videojuegos en este lenguaje de programacion
  • gmax – Programa para modelar y animar personajes 3D especificamente para videojuegos
  • Genesis3D – Engine 3D open source para el desarrollo de juegos
  • Crystal Space – Sistema de desarrollo para juegos 3D escrito en C++
  • BYOND – Creador de juegos RPG, MUDs, etc con networking
  • Cosmos Creator – Engine 3D y modelador de videojuegos (comercial)
  • Hermes – Creador de aventuras gráficas para Windows
  • Blitz3D – Paquete para programar juegos 2D/3D. Basado en Basic. Recomendado! (comercial)
  • Darkbasic – Engine 3D con soporte 2D para juegos basados en DirectX (comercial)
  • 3D GameStudio – Muchos juegos 3D comerciales han sido realizados con este programa (comercial)
  • 3Impact – 3DRad evoluciono a este nuevo engine para la creacion de videojuegos.
  • 3D Rad Lite – Version completamente gratis de este programa para juegos 3D
  • Game Maker – Excelente programa para crear videojuegos de plataformas y muchos otros 2D
  • Adventure game Studio – Creador de aventuras graficas interactivas en 2D (al estilo ‘apunta y haz click’)
  • Scrolling Game Development Kit – Herramienta open source para el desarrollo de juegos 2D

 

Categorías: Programación