A.G.E.S. Live - Arcade Machine SystemA.G.E.S. Live - Arcade Machine System Arcade Genuine Entertainment System (A.G.E.S.) es un pequeño pero potente Live de Ubuntu, enfocado a un uso exclusivo en máquinas arcade. El objetivo es tener un sistema mínimo pero usable que permita...

Leer más

OpenPPJoy Actualizado!OpenPPJoy Actualizado! Con todo esto de recuperar AGES anoche me quité un par de horas de sueño para actualizar OpenPPJoy a su versión 0.4z que soporta por fin el Kernel 2.6.38, las gracias a VeS que además corrigió la...

Leer más

IrisManager v1.2IrisManager v1.2 "Hermes is a messenger from the gods to humans, sharing this role with Iris." - Wikipedia IrisManager is a port of HermesManager based on PSLIGHT, Tiny3D, PS3Soundlib and OpenPS3FTP, is a completly...

Leer más

Ultracargas en Amstrad CPCUltracargas en Amstrad CPC Todo empezó este puente con la visita del viejo amigo de Dantoine, Vampire. Nos dedicamos una tarde a cacharrear (+) y probando juegos en el MSX, apareció una rom de Ghostbusters que rápidamente pusimos...

Leer más

ene
20
2012

Como modificar Minecraft para una LanParty / Servidor Privado

Artículos, Envios al blog

Que también lo podía haber llamado “como crakear minecraft”, pero hubiera sido algo amarillista, ya que las herramientas y todo el sistema son libres y está muy simplificado. Evidentemente no es que Mojang lo soporte pero tampoco creo que sea algo que realmente les moleste. De hecho las protecciones son MUY simples.

Yo inicié todo este pequeño proyecto de servidor privado para una mini-party en una casa rural y como era imposible tener internet, pues lo monté para que todos pudiéramos disfrutarlo allí :)

Minecraft Cliente 1.1 - Para la Party

Mis objetivos con este proyecto eran:
Sistema de Login de Usuarios para una LAN, Sistema de Skins/Cloaks para la LAN y multiplayer desde LAN con todo esto funcionando…

Modificar el cliente de Minecraft

Lo primero que necesitamos es descargar el Coder Pack correspondiente a nuestra versión de Minecraft (ej: para la 1.1 usaremos el MCP 5.6), este pack de utilidades nos permitirá extraer/modificar/recompilar el código fuente de Minecraft. Una vez bajado debemos copiar la carpeta [bin] de Minecraft a la carpeta [jars] de MCP y descargar de la página oficial minecraft_server.jar para tenerlo también en [jars] por si queréis echarle un ojo luego ;)

Ahora desde un terminal entramos en el directorio del MPC y ejecutamos: decompile (en ubuntu sería ./decompile.sh)
Este proceso extraerá todos los ficheros del paquete oficial y los parcheará para que sus funciones sean comprensibles para los humanos XD
Una vez terminado todos los fuentes los tendréis disponibles en la carpeta [src]. Ahora tenéis todo el juego disponible para modificar cualquier cosa que no os guste o ampliar, logros, armas, etc…

Pero nosotros vamos a algo mucho más sencillo permitirnos jugar sin internet, para ello necesitamos editar 4 ficheros.

EntityOtherPlayerMP.java

Este fichero sirve para mostrar las propiedades de los otros jugadores durante la partida multijugador (de ahí el MP). Buscad esta cadena casi al inicio del fichero:

skinUrl = (new StringBuilder()).append("http://s3.amazonaws.com/MinecraftSkins/").append(s).append(".png").toString();

Esto lo que hace es bajar el png de tu skin, y nosotros queremos que las skins las use de nuestra LAN asi que nada más facil que por ejemplo si la ip de nuestro server (con apache montado y demás) fuera 192.168.0.1 …

skinUrl = (new StringBuilder()).append("http://192.168.0.1/MinecraftSkins/").append(s).append(".png").toString();

EntityPlayer.java

De aquí vamos a buscar las cloacks y hacer que la url apunte a nuestra LAN:

playerCloakUrl = (new StringBuilder()).append("http://s3.amazonaws.com/MinecraftCloaks/").append(username).append(".png").toString();

Igual que antes usamos la ip de nuestro server:

playerCloakUrl = (new StringBuilder()).append("http://192.168.0.1/MinecraftCloaks/").append(username).append(".png").toString();

También podríamos modificar EntityPlayerSP.java pero sólo vale para el solitario, así que para este tutorial no nos interesa, si quisierais modificarlo sería lo mismo que el MP, no hay pérdida ;)

NetClientHandler.java

Este componente se encarga de comprobar que nuestro usuario y nuestra sesión son correctas, al hacer login contra el servidor oficial se nos da un identificador si no es correcto, pues no podemos entrar, lo que vamos a hacer es que esa comprobación la haga contra nuestro server (que dirá que sí a todo XD)

Buscad la cadena de iniciar la sesión del cliente:

URL url = new URL((new StringBuilder()).append("http://session.minecraft.net/game/joinserver.jsp?user=").append(mc.session.username).append("&sessionId=").append(mc.session.sessionId).append("&serverId=").append(packet2handshake.username).toString());

Y modificadla como antes a vuestra LAN:

URL url = new URL((new StringBuilder()).append("http://192.168.0.1/game/joinserver.jsp?user=").append(mc.session.username).append("&sessionId=").append(mc.session.sessionId).append("&serverId=").append(packet2handshake.username).toString());

Luego crearemos todos estos ficheros y directorios en el server, pero por el momento simplemente modifiquemos el cliente.

ThreadCheckHasPaid.java

Este fichero genera un hilo que cada cierto tiempo conecta al servidor oficial y comprueba que tus datos de login son correctos, es un hilo que está ahí consumiendo y que sólo vale para eso.

HttpURLConnection httpurlconnection = (HttpURLConnection)(new URL((new StringBuilder()).append("https://login.minecraft.net/session?name=").append(mc.session.username).append("&session=").append(mc.session.sessionId).toString())).openConnection();
httpurlconnection.connect();
if(httpurlconnection.getResponseCode() == 400 && this == null)
{
    Minecraft.hasPaidCheckTime = System.currentTimeMillis();
}
httpurlconnection.disconnect();

Yo al principio no quería tocarlo y simplemente usar mi server y añadirle un certificado SSL a apache, pero el problema es que java requiere que ese certificado sea correcto y un montón de tonterías más… total, un trabajazo para simplemente comentar esas líneas y dejar activa la línea que establece el valor de la variable Minecraft.hasPaidCheckTime para que el cliente inicie correctamente.

Y ya hemos terminado, sólo queda llamar a recompile y aunque podríamos iniciar el juego con starclient no lo hagáis aun ya que necesitamos montar la parte del servidor y luego ya comprobaremos que todo funciona correctamente.

Vamos a por el Server!

Preparar el servidor para Minecraft SMP

Damos por supuesto que tenéis un servidor apache y mysql funcionando, sois root y que tenéis acceso al directorio del servicio web. Simplemente vamos a configurar el sistema para que nos permita loguearnos contra el servidor y usar nuestras Skins. Se podría también preparar un sistema de registros (yo de hecho monté uno sencillito que nos permite subir nuestras Skins) pero como el artículo va dirigido a montar una lan-party realmente cuesta poquito dar las cuenta de alta a mano y copiar las skins.

Login del Panel de control de Dantoine

Bajad la carpetilla del servidor web, descomprimidla y comprobad con cualquier navegador que el servidor os las muestra (aunque en algunas al no enviar vuestro user/pass dará “bad login” o “cannot select DB”, claro). Explico que contiene cada carpeta:

  • [game] Contiene las comprobaciones cuando conectamos al servidor, simplemente son un par de ficheros que no comprueban nada y simplemente contestan “adelante!” XDD checkserver.jsp lo usará el servidor y joinserver.jsp como vimos lo usaba el cliente.
  • [loginusr] Un pequeño PHP  que permite a los usuarios loguear en el sistema. Nada del otro mundo, usad el SQL que encontraréis en la carpeta para instalar la tabla de usuarios. La información del mysql los coge del config.inc.php del principal. Con este fichero podríamos jugar con muchas cosas incluso obligar a los jugadores a actualizarse, la verdad que es bastante ampliable pero para nuestros cometidos es suficiente ;)
  • [MinecraftCloacks] y [MinecraftSkins] son directorios que contienen las capas y las skins de los usuarios, simplemente hay que poner ahí la skin con el nombre exacto de usuario y ya al loguear aparecerá keko con la apariencia que deseaba el usuario. Vendría bien que bajaráis unas cuantas por que si no tenéis internet, poco podréis bajar en la lan-party ;)
  • [webinfo] Es el HTML que verán los usuarios al introducir sus datos. Puedes editarlo y poner lo que quieras :)

Pues eso sería todo metéis la tabla de usuarios con phpmyadmin y dáis de alta vuestros usuarios!

Panel de control de Dantoine

Una vez logueado en el panel de Dantoine esto es lo que se veía...

MinecraftLauncher

Ya tenemos el cliente y el servidor configurados aun no podemos loguear con nuestros usuarios ya que el MCP sólo permite entrar con una cuenta por así decir anónima, sin usuario ni contraseña. Para poder loguearnos debemos usar un launcher que inicie el cliente con nuestros datos de usuario. Para eso vamos a usar una versión viejuna del lanzador de Minecraft, no podemos usar las nuevas por que requieren servidor con https y meternos con SSL, certificados y demás como dije está fuera de este artículo.

Esta versión que yo modifiqué sólo tiene un pequeño bug, que cuando pulsamos en un enlace no abre el navegador, pero vamos nada grave ;)

Launcher Modificado para Servidores no SLL

El lanzador de Minecraft viene configurado para el servidor de todo este artículo 192.168.0.1 si tu servidor estará en una ip diferente modificaremos con un editor hexadecimal los ficheros: LauncherFrame.class y LoginForm$8.class, buscad la cadena de de la ip y cambiadla a la ip que deseeis, tened en cuenta que no podéis añadir caracteres, respetad la cadena original. Si ahora la ip es tiene más caracteres os comeréis parte del directorio de apache asi que renombradlo después en el server para que coincidan.

Os veo un poco perplejos, así que pongo un ejemplo para LoginForm$8.class la cadena que encontraréis será:

http://192.168.0.1/webinfo/ (carpeta webinfo en el server)
http://192.168.0.100/winfo/ (renombramos la carpeta a winfo en el server)

El nombre me los he inventado yo, podéis poner el nombre a la carpeta que queráis siempre que mantengáis el tamaño de la cadena exactamente igual.

Una vez hemos modificado los dos ficheros con cualquier compresor podemos abrir minecraft_launcher-1.5-dantoine.jar (no es más que un zip) y actualizar ambos ficheros con las nuevas versiones.

Finalmente para iniciar el lanzador debemos indicar que inicie la clase “net.minecraft.LauncherFrame“, en windows hay utilidades que permiten generar un ejecutable que por defecto use esa clase pero en ubuntu debemos indicarla, pero nada más simple que montarnos un pequeño script que haga el trabajo por nosotros. Os dejo un simple ejemplo suponiendo que el lanzador lo metierais dentro de [.minecraft] en una nueva carpeta llamada [LauncherDantoine]:

cd ~/.minecraft/LauncherDantoine
java -Xmx1024M -Xms512M -cp minecraft_launcher-1.5-dantoine.jar net.minecraft.LauncherFrame

Ya tenemos casi todo listo volvemos al cliente para finalizar todo el proceso…

Ajustes en el Servidor Multiplayer

Para simplificarlo ya que el minecraft_server.jar intenta loguear contra session.minecraft.net, yo lo que hice fue añadir en el /etc/hosts (supongo que en windows andará por el system) la ip del server:

192.168.0.1    session.minecraft.net

 Retoques finales del Cliente de Minecraft

Antes os dejé la miel en los labios de comprobar si todo funcionaba, bueno no si se aguantasteis sin lanzar el cliente XD
Pues ya vamos a lo último, actualizar el cliente oficial para que use nuestra party-modificación ^_^’

Sencillo volvemos al terminal y desde el directorio principal del MCP lanzamos reobfuscate (siendo esta llamada en linux ./reobfuscate.sh), nos aparecerá algo como esto:

== Reobfuscating client ==
> Gathering md5 checksums
> Compacting client bin directory
> Reobfuscating client jar
> Extracting modified classes
> Modified class found : net/minecraft/src/EntityOtherPlayerMP
> Modified class found : net/minecraft/src/EntityPlayer
> Modified class found : net/minecraft/src/NetClientHandler
> Modified class found : net/minecraft/src/ThreadCheckHasPaid
> Outputted net/minecraft/src/EntityOtherPlayerMP to reobf/minecraft as qx.class
> Outputted net/minecraft/src/EntityPlayer      to reobf/minecraft as xb.class
> Outputted net/minecraft/src/NetClientHandler  to reobf/minecraft as abm.class
> Outputted net/minecraft/src/ThreadCheckHasPaid to reobf/minecraft as hc.class

Ahora como véis se han creado cuatro nuevos ficheros compilados y cifrados con nuestras modificaciones, pues ahora como hicimos con el launcher, vamos al jar oficial de minecraft que tendréis en vuestra carpeta bin del juego y sobrescribid cada uno de ellos para que ahora el cliente contenga nuestras modificaciones :D

Y por último borramos completamente la carpeta [META-INF] que contiene el jar para que el cliente no proteste por haberlo modificado.

Yo también modifiqué la carpeta de title y añadir un splash personalizado, jejej apañado que es uno :P

Disclaimer final…

Evidentemente aunque se necesita al menos alguien con el juego original, todo esto puede usarse para jugar de gratis, pero nada de mal hace a nadie usarlo para montarte tu pequeña LAN y me consta que gracias a todo esto que monté para esa pequeña reunión se han vendido un par de Minecraft más y a quien no le gustó, tampoco lo llegó luego a jugar más ;)

Aviso: Este tutorial no se actualizará, si algún día Mojang decide cambiar los ficheros, la forma de funcionar, etc… este tutorial yo lo hice para la versión 1.0 (aunque me consta que sigue siendo válido para la 1.1) y ahí se quedará, ignorando si más adelante seguirá siendo efectivo o no.

Un Saludo y espero que lo disfrutéis con vuestros colegas, nosotros lo pasamos pipa… hoguerita, minecraft y todos alrededor con nuestras mantitas ^_^

Minecraft Login - Apache Files (4.73 kB)

Subido: 20-01-2012 [Descargas: 19]

Ficheros para el servidor apache.

Minecraft Login - Launcher (76.68 kB)

Subido: 20-01-2012 [Descargas: 20]

Launcher modificado por mi para permitir usar cualquier servidor HTTP.

nov
01
2011

A.G.E.S. Live – Arcade Machine System

Destacado, Proyectos

Arcade Genuine Entertainment System (A.G.E.S.) es un pequeño pero potente Live de Ubuntu, enfocado a un uso exclusivo en máquinas arcade. El objetivo es tener un sistema mínimo pero usable que permita jugar fácilmente a emuladores y juegos OpenSource.

A.G.E.S. Pantalla de Arranque

Características principales

  • Incluye pyRetro un FrontEnd pequeño, muy rápido y de uso sencillo.
  • Ahora funciona con las xorg en lugar de la consola de la vieja versión (0.00.1e), que permitirá nuevos emuladores y aprovecharemos la aceleración OpenGL de las tarjetas modernas.
  • Mame 0.143 + hiscore y groovy patches (incluye switchres para generar los modos nativos como antiguamente se hacía con advmame)
  • Kernel 2.6.38.8 + ArcadeVGA parches de groovy (permite tener desde el arranque 15Khz).
  • xorg-radeon 6.14.99~git 20110811 + ArcadeVGA ages-fix (permite resoluciones menores de 320×240 en las xorg)
  • libsdl-1.2 + switchres patch.
  • OpenPPJoy 0.4z preconfigurado (Controles Arcade Usando LPT).
  • Modos Entrelazados totalmente operativos (en la anterior versión desde consola no funcionaban correctamente).

Leer más

oct
05
2011

OpenPPJoy Actualizado!

Destacado, Envios al blog

Con todo esto de recuperar AGES anoche me quité un par de horas de sueño para actualizar OpenPPJoy a su versión 0.4z que soporta por fin el Kernel 2.6.38, las gracias a VeS que además corrigió la configuración base de las teclas para adaptarse perfectamente a la configuración por defecto de MAME :)

Panel ejemplo OpenPPJoy

Esquema realizado con las herramientas de diseño más sofisticadas para mostrar como montar un pequeño panel a modo de ejemplo para OpenPPJoy. Tecnología punta HOIGAN!

Los cambios los tenéis en el repositorio ya disponible y listo para ser compilado:
http://code.google.com/p/openppjoy/source/list

Los pasos son tan sencillos como siempre:

svn checkout http://openppjoy.googlecode.com/svn/trunk/ openppjoy
cd openppjoy/arcade-modulo
make
make modules_install

Igualmente voy a preparar una versión debian del módulo usando DKMS, que es un pequeño pero potente programa (patrocinado por Dell) que permite mantener un driver que no está disponible en la rama oficial del kernel de forma sencilla para el usuario, ya que se encarga de vigilar que tengamos nuestro módulo actualizado cada vez que renovemos nuestro kernel. Si tenéis alguna tarjeta NVIDIA, ATI o alguna Webcam rara ya os sonará haberlo visto ;)

El siguiente paso será hacer el driver configurable, me gustaría usar /proc pero quiero no alargar demasiado la nueva rama 0.5, haré unas pruebas con la beta que me envió hace ya más de un año Pakito (mil gracias tio) y veré que se puede construir a partir de ahí que sea estable y demás :)

Un Saludo!

dic
18
2008

Navida! Navidaaa!

Envios al blog

Me quedan pocos días para tomarme mis vacaciones de Navidad, y ya ando haciendo cábalas de que “tejemaje” montar estas minivacaciones, tengo un montón de cosas pendientes pero lo más seguro es que me ponga a escribir (ando escribiendo un guioncito para un futuro videojuego rolero) y a jugar a la Wii (Paper Mario, Wii Music, Algunos niveles del Wario y el Sky Crawlers de Namco me esperan).

Por otra parte esta navidad espero visita de los viejos amigos, así que las borrachinas al SingStar estarán a la orden del día y no, no habrá videos Smiley: burla

Un par de recomendaciones finales, la primera y más importante el nuevo proyecto retro-enciclopedia que ha nacido hace unas semanas y en las que se lleva trabajando muchos meses para tenerlo listo para estas fechas: PixelGordo, un proyecto muy prometedor y a buen seguro que no le quitaré ojo! La otra es un pequeño y desconocido hallazgo en los repositorios de Ubuntu OpenArena, que usa el engine de Quake3 (liberado hace tiempo por ID) pero usando texturas y mapas propios y por tanto haciéndolo completamente libre y gratuito, bueno pues nos estamos echando estos días unos vicios de aúpa Smiley: Muy contento!

Imagen del articulo

Un Saludo y lo dicho, feliz frikinavidad Smiley: guiño

sep
01
2008

Dantoine: Final de un proyecto, final de una etapa.

Proyectos

Para que se entienda el por que del final de esta época, quizás tenga que empezar explicando como empezó todo, mi afición por los clásicos y los compañeros que me ayudaron a empezar esta aventura a principios del año 2000. Leer más

jul
15
2008

Dantoine Down Temporalmente :?

Envios al blog

Por alguna razón (que por el momento desconozco) Dantoine está sin poder ofrecer información espero que el problema se solucione lo más rápido posible. Marcianitos, que es la otra web con la que compartimos host, también esta OFF así que será algo del server que estarán cambiando.

Cuando sepa algo más actualizaré esta entrada…

UPDATE 16:30

Parece que el server se quedó tostado y no hay forma de resetearlo remotamente, el hosting tiene un sistema de reseteo físico remoto, a ver si durante la tarde snopes puede acceder al panel y resetearlo para mirar los logs.

Una vez resetado el server todo ha vuelto a la normalidad ^^_

Un Saludo!

may
25
2008

Dantoine: Fully Working!!!

Envios al blog

Pues eso, que Dantoine sale a la luz totalmente operativa, con muchos juegos y muchas sorpresas en pocas horas.

Más información en: http://www.dantoine.org

Llevamos unas semanas el grupo trabajando muy duro para tener la web lo más comunitaria posible y creo que el objetivo se ha cumplido, espero que la sorpresa os guste por que hemos puesto todo el empeño en ello.

Un Saludo y feliz día del orgullo friki!!!

nov
28
2007

AGES Live (Instalador)

Envios al blog

Bueno, llevo muchos meses preparando una Ubuntu (Gnu/Linux) especialmente modificada para máquinas Arcade, se que existen otros proyectos parecidos que incluyen MAME por defecto, pero AGES intenta ir poco más allá incluyendo más emuladores y una configuración/instalación a prueba de membrillos Smiley: HA HA HA ...

Como decía, el instalador he intentado que sea lo más simple posible -aunque no he leído demasiado de interfaces-, la idea es que con los mandos de la máquina puedas configurar absolutamente todo. Aunque el trabajo está aún dividido, los emuladores funcionan a mano, el instalador lo hace por otro lado, etc…

Ahora estoy dándole los últimos retoques al programa de configuración (ages-setup) para -por fin- unificar todo el trabajo que he ido haciendo a ratitos Smiley: contento! Os dejo unas imágenes de él, que como veréis es feote (xD) pero funciona de vicio y espero añadirle -para una próxima versión-, la opción de que sea “themeable”, si me permitís la patada al diccionario Smiley: guiño

Imagen del articulo
Imagen del articulo
Imagen del articulo
Imagen del articulo
Imagen del articulo
Imagen del articulo
Imagen del articulo
Imagen del articulo

Sus principales características son:
- Funciona indiferentemente en Consola o X11 (Python/SDL)
- Configuración automática de controles (USB/MIDI/LPT).
- Configura el modo de video más correcto a la pantalla actual (15Khz – Arcade / 35Khz – Pc).
- Instalación completa del sistema con sólo pulsar un botón… del joystick Smiley: guiño

Dejo este enlace a la página oficial que gentilmente RedIris dona al proyecto, por si alguien quiere probar la anterior versión del Live 0.00.1e

Un Saludo y en las imágenes se ven más o menos las opciones que tendrá!
Pd: El blog, va necesitando un paginador xDDD