Combate mortal con Nexuiz

Hace unos días la mara del trabajo me ha enviciado con el juego Unreal Tournament, así que era mi obligación encontrar algún juego similar de combate en primera persona, de buena calidad y sobre todo que fuera software libre.

Pues googleando por alli me tope con Nexuiz que practimente parece una copia de Unreal, pero que es lo mas importante que nos ofrece Nexuiz?
  • Esta disponible para Windows, GNU/Linux y Mac OS X.
  • Es multijugador soporta hasta 64 jugadores simultaneamente.
  • Puede realizarse batallas con bots.

¿Como obtenerlo?

Si utilizan sistemas basados en Debian así como Ubuntu, el juego esta disponible desde los mismos repositorios y se intala haciendo nada mas:

# apt-get install nexuiz

Solo hay un detalle, que la versión que esta en los repositorios es la 2.4.2, pero si lo descargamos directamente desde la página tendremos la versión 2.5.2, al descargarlo directamente desde la página tendremos una archivo que pesa aproximadamente casi 1 GB pero allí viene incluidas los ejecutables para las diferentes plataformas anteriormente mencionadas, nomas consiste en descomprimir y jugar eso es todo.

Así que invito a que descarguen el juego para darnos riata, adjunto un video para que se entusiasmen.

Comentarios (11)

EJB: Usando consultas SQL nativas

Cuando hablamos de EJB (Enterprise JavaBeans) indudablemente tenemos que hablar sobre JPA.

Siempre me ha parecido algo rigido el hecho de tener que usar consultas JPQL para generar mis Entity Class, aunque estar este tipo de consultar resulta beneficioso a la hora de cambiar de base de datos completamente ya que para la base de datos es transparente el JPQL. y aporta mucho a a la portabilidad del código con respecto a la base de datos.

Pero en ocasiones necesitamos hacer uso de caracteristicas propias de la base datos para crear consultas mas complejas y nos vemos limitados por el JPQL entonces vemos la necesidad de utilizar consultas SQL nativas y a la vez son mucho más rapidas que las JPQL.

¿Como se utilizan?

Se podría decir que la sintaxis es la siguiente:

Query createNativeQuery(String sql, Class entityClass)

Donde:

Parametro uno: String sql
Es la consulta SQL nativa en el cual deben de ir los campos que conformaran nuestra Entity Class.

Parametro dos: Class entityClass
Es la Entity Class resultante de la consulta nativa SQL.

Ahora como siempre recalco, es tipico de este blog desarrollar un pequeño ejemplito de uso.

Asumiendo, ya tenemos generadas nuestra Entity Class llamada Persona procedremos a generar una lista de "personas".

EntityManagerFactory emf=Persistence.createEntityManagerFactory("nombreUnidadPersistencia");

EntityManager em=em.createEntityManager();
String consulta="select * from persona";
Query q=em.createNativeQuery(consulta,com.paquete.modelo.Persona.class);
Persona[] personas=(Persona[])q.getResultList().toArray(new Persona[0]);

for(Persona p:personas)
System.out.println(p.getPropiedad());

A veces no queremos tener un array de Entity Class sino que queremos obtener un valor escalar proveniente de una función sum, avg, max, etc...

EntityManagerFactory emf=Persistence.createEntityManagerFactory("nombreUnidadPersistencia");
EntityManager em=em.createEntityManager();
String consulta="select sum(campo) from tabla";
Query q=em.createNativeQuery(consulta);
double total=((BigDecimal)((List)q.getSingleResult()).get(0)).doubleValue();

De esta forma podemos trabajar con consultas SQL nativas y poder hacer uso de las capacidades de nuestra base de datos.

Comentarios (5)

JSF y la clase AbstractPageBean

Hace poco un compa me comentaba que al desarrollar algunos de los ejemplos que he realizado con JSF e ICEfaces no sabía que librería era necesaria para utilizar la clase AbstractPageBean, esta clase la uso para efectos de poder utilizar el método getBean(String) y obtener ya sea managed bean instanciados o el valor actual en un recorrido por una dataTable entre otros usos mas.

Pues para resolver esta duda la librería que se utiliza es llamada "JSF 1.1 Design-Time Support - Deprecated" que esta incluida en Netbeans.

Como es de fijarse como bien dice el nombre de esta libreria es de uso obsoleto es por esa razón que ultimamente no la he estado utilizando así que implemento mi propio método getBean de esta forma:


Así puedo hacer llamadas incluso a SessionBeans y ApplicationBeans.

Comentarios (1)opiniones, ¿cual es la tuya?