domingo, 9 de octubre de 2016

Screeps, el primer juego Multiplayer Masivo Online (MMO) para programadores



Hoy os presentamos el primer juego Multiplayer Masivo Online (MMO) para programadores amig@s frikis. Se trata de un juego de estrategia muy completo, donde deberás hacerte cargo de las unidades (creeps), recolección de energía y minerales, control de territorio, economía, industria, transporte, logística y por supuesto milicia (ataque y defensa).

Screeps - MMO para programadores

La principal diferencia de éste peculiar MMO es que no puedes controlar directamente a tus unidades, no puedes interactuar con el ratón, tampoco puedes enviar ordenes a tus creeps... todo lo que quieras hacer lo tendrás que programar en JavaScript! Un video aclarará muchas cosas:



Poder programar directamente tu colonia ofrece muchas ventajas. Se trata de un MMO que requiere poco tiempo delante del juego, ya que tus creeps seguirán trabajando incluso con el ordenador apagado. Simplemente tendrás que dedicar tu esfuerzo en programar correctamente a tus creeps para luego dejar que tu colonia evolucione sola. Un buen jugador/programador de screeps solo necesitará echar un vistazo rápido al juego cada 1 o 2 días.

Información

El mapa del mundo es universal para todo los jugadores, se ha dividido el mapa en habitaciones (rooms). Inicialmente tu colonia será desplegada en una room, coexistiendo con rooms adyacentes (y sus jugadores). Durante las primeras 8 horas se despliega una defensa para evitar ser invadido, deberás recolectar energía y levantar tus defensas si quieres que tu colonia prospere. Empezarás ubicando un Spawn con energía suficiente para generar un creep.
El creep por si solo no hará nada, ni recolectará energía ni se moverá. Para ello tendrás que abrir la consola y empezar a programar, un sencillo ejemplo:
if(creep.carry.energy < creep.carryCapacity) {
    var sources = creep.room.find(FIND_SOURCES);
    if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) creep.moveTo(sources[0]);
} else {
    var targets = creep.room.find(FIND_STRUCTURES, {
        filter: (structure) => {
            return  (structure.structureType == STRUCTURE_SPAWN) &&
                    (structure.energy < structure.energyCapacity);
        }
    });
    if(targets.length > 0) {
        if(creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) creep.moveTo(targets[0]);
    }
}
Sencillo, verdad?  Hablemos un poco de nuestros creeps. A diferencia de un juego de estrategia estándar, aquí no tenemos diferentes tipos de unidades (trabajadores, soldados, civiles, etc...), en screeps solo tenemos una única unidad para hacer cualquier trabajo. Cada creep podrá ser generado con un número limitado de "partes", cada "parte" servirá para una acción, ejemplo:
Aquí vemos 4 unidades creep con partes diferentes:
  • El primero tiene 2 partes de trabajo y 2 de movimiento (trabajador, minero, etc...)
  • El segundo tiene 1 parte de trabajo, 2 de ataque y 1 de movimiento (un luchador)
  • El tercero tiene 3 partes de médico, 3 de movimiento y una de escudo (médico)
  • El cuarto tiene 5 partes de ataque a distancia, 1 de ataque melee y 2 de movimiento (arquero)
Éstos son solo 4 ejemplos, nuestra estrategia nos dirá cuantas partes dedicamos a cada trabajo para hacer nuestra colonia más eficiente. Los creeps crecen y mueren, alrededor de 1500 ticks en el juego. Así que es recomendable programar algún bucle que vaya comprobando cuantos creeps tenemos y genere nuevos cuando alguno muerda de viejo. Os dejo el listado de partes disponibles y su significado:
Para crear un creep nuevo, podemos usar una instrucción similar a la siguiente:
var newName = Game.spawns.Spawn1.createCreep([WORK,WORK,CARRY,MOVE], undefined, {role: 'miner'});
console.log('Ha nacido un nuevo creep! ' + newName);
En la instrucción de generar un creep indicaremos la cantidad y tipo de partes, así podremos designar un trabajador o un guardián.
Podría dedicar horas describiendo cada parte del juego, pero parte de la magia de screeps es meterse a leer su wiki y su API guide. Ahí encontraréis toda la información necesaria del juego y la descripción de cada objeto para poder programar

Como instalar y jugar a screeps

Web oficial www.screeps.com. Screeps ha sido lanzado a Steam. Antes de comprar el juego os recomiendo crear una cuenta gratuita para probarlo en un simulador. A partir de aquí podéis adquirir una subscripción de CPU y empezar a jugar online o realizar la compra en Steam. La gracia de Steam es que adquieres una subscripción de 10 CPU para siempre y 30 CPU durante 30 días:
Jugar online y dejar que tu colonia trabaje requiere tiempo de CPU sobre los servidores remotos, ese desgaste tiene un coste. Para poder jugar a screeps online necesitarás disponer de CPU en el servidor remoto, por eso es recomendable comprar en Steam el juego y tener siempre 10 CPU para tu colonia. El juego puede ser programado directamente en tu navegador web, podrás jugarlo desde cualquier PC sin instalar ni descargar nada. También es posible diseñar los scripts en tu IDE favorito, incluso lincar tu cuenta en GitHub y hacer commits directamente, tu colonia comprobará cualquier cambio y aplicará el nuevo script a la colonia!
El juego dispone de una demo/tutorial muy completo (recomendable hacer el tutorial). Gratis y sin necesidad de registrarse [AQUI]. Se te enseñará lo básico, como crear un creep y escribir tu primer código que permitirá moverlo y hacerlo auto suficiente.
A quien le llame la atención el juego, aviso que se requieren nociones de programación. Si no sabes programar en ningún lenguaje, screeps no es tu juego. No es necesario que seas un gurú de JavaScript (yo no lo soy!), si conoces y sabes programar en cualquier otro lenguaje similar (C#, Java, .Net, Python, etc...) no tendrás ningún problema en adaptarte al juego. Aquí el mejor jugador será el que mejor programe, así de simple! Lo bueno de screeps es que se trata de un juego evolutivo... Crea una colonia nueva y programa lo básico, luego deja a tus creeps moverse e interactuar, si finalmente mueres, coge el mismo código y mejora aquella parte que te ha fallado.
Imagina que en una de tus partidas, tu colonia ha terminado exterminada... quizás sería bueno revisar tu módulo de defensa y añadir más recursos o mejorar tus condiciones para atacar o defenderteantes... Si te quedas sin recursos en mitad de una partida sería bueno invertir tiempo en programar un sistema de control de energía más eficiente o mejorar los tiempos de desplazamiento utilizandocarreteras. Tus creeps podrían detectar si se desplazan por un mismo camino y designar ahí la construcción de una carretera, no? Pues a programar!!
Si estás muy perdido siempre puedes mirar los scripts de otros jugadores para tomar ideas, GitHub está lleno de scripts útiles!

Despedida

De momento me paro aquí, es una tontería que escriba un manual de screeps en el foro cuando tienes una documentación perfecta con su API guide disponible en la web oficial. Recordad, cread una cuenta gratuita y jugar en el simulador/tutorial. Completa los 5 tutoriales y tendrás suficiente información para decidir adentrarte en el mundo de screeps o mandar el juego al baúl... sinceramente éste juego no está pensado para casuals ni para gamers... solo un verdadero programador podrá soportarlo!

Visto en mediavida.com

No hay comentarios:

Publicar un comentario