Ninite — El mejor software gratuito reunido en un sólo lugar

[singlepic=710,120,,,left]

Si, uso Ubuntu, pero a veces no falta el amigo o familiar que te pide le formatees la máquina, le pongas Windows y le instales el software básico para funcionar.

Para esos casos existe una solución muy buena, se llama Ninite.

Lo único que debes hacer es ir al sitio de Ninite, seleccionar de la lista el software que desees y se te generará un instalador que podrás usar en tu máquina con Windows. No más vueltas por toda la red para conseguir lo mejor de lo mejor.

Todo en un mismo lugar.

Desde la cima del mundo

…civilizado, en Dubai, Emiratos Árabes para ser exactos.

Así es, aquí se encuentra la torre más alta construida por el hombre, la Burj Dubai Spire con 818 metros de altura. El proyecto ha tenido un costo de 4.100 millones de dólares. El arquitecto a cargo es Adrian Smith.

Cómo mostrar las sentencias SQL en la consola de Rails

Al operar la consola de Rails, muchas veces quisieramos que al usar nuestros modelos se nos mostrara el SQL que se está generando.

Sólo agrega las siguientes líneas a tu archivo ~/.irbrc

  1. if ENV['RAILS_ENV']
  2.   # Called after the irb session is initialized and Rails has been loaded
  3.   IRB.conf[:IRB_RC] = Proc.new do
  4.     logger = Logger.new(STDOUT)
  5.     ActiveRecord::Base.logger = logger
  6.     ActiveResource::Base.logger = logger
  7.   end
  8. end

Ahora, cuando interactúes con la base de datos verás algo como esto:

  1. >> Oficina.find 1
  2.   Oficina Load (1.2ms)   SELECT * FROM "oficinas" WHERE ("oficinas"."id" = 1) 
  3. => #<Oficina id: 1, nombre: "CAMPECHE BCMR", organizacion_id: 2, activa: true>

Referencia

Showing SQL statements in the Rails console

Programando un PBBG en Ruby & Rails

[singlepic=610,90,,,left]

Después de mi corto regreso a la programación de videojuegos, y de haber visto por ahí y leído acerca de algunos PBBGs, finalmente he decido darme a la tarea de desarrollar uno.

PBBGs

Seguramente se preguntarán ¿qué es y cómo se juega un PBBG?

PBBG == Persistent Browser Based Game
Eso básicamente quiere decir: juego persistente para navegador.

La infraestructura y herramientas necesarias para desarrollar videojuegos en el ámbito del desarrollo web no son ni remotamente cercanas a las que existen para el desarrollo de escritorio.

Así, esto se convierte básicamente en un arte, hay que diseñar y desarrollar un videojuego alrededor de una estructura de operación ya establecida como lo es el protocolo HTTP, el modelo cliente-servidor y los tiempos de respuesta acostumbrados de una página web.

Por esta razón, la gran mayoría de los PBBGs se inclinan por uno de estos dos géneros:

  • Juegos de rol
  • Juegos de estrategia

O alguna mezcla rara entre ellos.

El modelo de participación preferido y más fácil de implementar es por turnos, aunque algunos de los PBBGs más modernos están incorporando un modelo de participación en tiempo real.

Si no conoces aún algún PBBG, aquí te dejo unos enlaces para que te des una idea de cómo son y cómo se juegan:

Los juegos de estrategia tradicionalmente se dividen en: por turno (TBS) [turn based strategy] y en tiempo real (RTS) [real time strategy]. En los PBBG he visto mucho el uso de tiempo instantáneo (ITS) [instant time strategy].

Instant Time Strategy (ITS)

Por lo que he visto la estrategia en tiempo instantáneo es muy popular entre los desarrolladores de PBBGs.

Modelan combates enteros con ecuaciones y obtienen de manera inmediata el resultado de las peleas.

Aunque adecuado a la situación, este nivel de abstracción se me antoja demasiado alto para mi proyecto. Me llama la atención el implementar algo más cercano al tiempo real (o una mezcla de tiempo real y turnos).

Ahora con tecnologías como Ajax, lenguajes como Ruby y frameworks como Rails, no es tan complicado hacer un PBBG.

Ya que andamos hablando de tecnologías, les presento mi stack de desarrollo.

Mi development stack

Aquí pongo la lista de las herramientas que estoy utilizando para llevar a cabo este proyecto:

  • Linux (nada mejor para el desarrollo en general)
  • PostgreSQL (una robusta base de datos)
  • Ruby (sigo enamorado de este lenguaje)
  • Rails (web development framework)
  • jQuery (javascript framework)
  • Formtastic (excelente para lidiar con formas)
  • Authlogic (para implementar la autenticación de usuarios)
  • Haml (lenguaje para escribir las vistas HTML de la aplicación)
  • Sass (lenguaje para escribir el CSS de la aplicación)
  • Compass (framework CSS para hacer el layout de la aplicación)
  • git (version control system)
  • emacs (editor de código)

Tengo grandes planes para este PBBG: misiones, peleas entre clanes, clases variadas, habilidades especiales, mercado, subastas y una vibrante comunidad a su alrededor.

Pero como todo: debe empezar por algún lado.

Modelando los combates

Veamos un elemento que considero fundamental para este PBBG: El sistema de batallas.

En mi caso particular, si algo deseo ver funcionando primero son los combates.

Había comentado antes que quiero mis batallas en tiempo real (o algo que se le acerque). El tiempo real que puedes conseguir en una aplicación web no es el común de 60 fps de los videojuegos tradicionales.

Aquí tienes que pensar en término de peticiones por segundo a tu servidor web. GET, POST, params, sesiones, etc.

A continuación pongo una lista con algunas de las características que me gustaría ver en el sistema de batallas:

Representar y llevar a cabo un combate entre varios participantes

  • Duelos entre jugadores
  • Duelos entre NPC y jugadores
  • Duelos entre grupos de jugadores

Durante el combate los personajes podrán hacer uso de habilidades especiales, objetos y armas

  • Un guerrero puede dar un golpe especial con su arma
  • Un brujo puede hacer uso de alguna magia
  • Un guerrero puede hacer uso de una poción para curarse

En la pelea, los jugadores podrán seleccionar un objetivo para atacar

  • Un guerrero puede seleccionar al enemigo de su preferencia para recibir sus ataques

En el próximo artículo pondré algo de código del sistema de batallas, las decisiones de diseño que se tomaron y una breve explicación de cómo funciona.

Suena bien para comenzar, ¿no?

Cómo cambiar el editor por defecto que usa git

[singlepic=522,120,,,left]

Si usas git en Ubuntu te habrás dado cuenta que al hacer un commit, éste invoca al poderoso editor vi para introducir el texto del mensaje (si es que no lo haces en la misma línea de comandos con -m).

Si no estás acostumbrado a usar vi, puede ser frustrante.

El editor usado para editar el mensaje del commit será elegido de la variable de ambiente GIT_EDITOR, de la variable de configuración core.editor, de la variable de ambiente VISUAL o de la variable de ambiente EDITOR (en ese orden).

Así que si quieres por ejemplo que mejor se dispare el nano, necesitas definir la variable de ambiente en tu ~/.bashrc de la siguiente manera:

  1. export EDITOR=nano

Referencias

replace vim with mate as default text editor