#VS2017 – #Minecraft missions options in Xml format #ProjectMalmo

Hi!

In this post I will explain some of the configurations and options we can define in the mission files. The sample file is at the end of the post.

  • Line 21 defines the name of the Agent
  • The <AgentStart /> element defines the initial position of the agent.

The following image shows how to define a high value on the Y axis,
because our agent dies a few seconds later

 

2017 11 14 Malmo 02

Another interesting element is [ServerSection // ServerInitialCondition] where we can define the climate of the mod (line 12). The supported values ​​are normal, clear, rain and thunder.

My advice is to dedicate some time to understand Mission definition schema (see references) and know a little about the options offered by Minecraft.

For example, in the section [Mission // ServerSection // ServerInitialConditions // Time // StartTime] it is possible to define the time of the day in which the mission will start.

The possible values ​​are measured based on this table

 

  • 0 = dawn
  • 6000 = noon
  • 18000 = midnight

Sample Project en GitHub link

Greetings @ Toronto

El Bruno

References

 

#VS2017 – Algunas opciones para misiones en #Minecraft en formato Xml #ProjectMalmo

Buenas!

Hoy voy a explicar algunas de las configuraciones que Podemos definir en los archivos de mision. El ejemplo de archivo esta al final. Por ejemplo:

  • La línea 21 define el nombre del Agente
  • El elemento <AgentStart/> define la posición inicial del agente.

La siguiente imagen muestra como al definir un valor alto en el eje Y, pues nuestro agente muere a los pocos segundos

2017 11 14 Malmo 02

Otro elemento interesante es [ServerSection // ServerInitialCondition] donde podemos definir el clima del mod (línea 12). Los valores soportados son normal, clear, rain y thunder.

Las opciones son muchas, lo mejor es dedicarle un poco de tiempo a la definición de Mission (ver referencias) y conocer un poco las opciones que nos ofrece Minecraft.

Por ejemplo, en la sección [Mission // ServerSection // ServerInitialConditions // Time // StartTime] es posible definir la hora del dia en la que se iniciara la misión.

Los posibles valores se miden en base a esta tabla

  • 0 = dawn
  • 6000 = noon
  • 18000 = midnight

Sample Project en GitHub link

Saludos @ Toronto

El Bruno

References

 

#VS2017 – Sample ConsoleApp to initialize missions in #Minecraft with Xml #ProjectMalmo

Good!

Before continuing to analyze the sections that have an xml file with the definition of a mission in Minecraft, I will share a small ConsoleApp sample project which creates from scratch the necessary elements to interact in a Minecraft mission.

The function that initializes the mission from a file is

In line 4 we can see the definition in plain xml mode can be used in the MissionSpec() constructor. From this moment, the mission is created with the parameters of the file.

It is possible, once created about writing some values, as for example in line 5 where I define the video quality with which the mission will be executed.

 

Sample Project en GitHub link

Greetings @ Toronto

El Bruno

References

 

#VS2017 – ConsoleApp de ejemplo para inicializar misiones en #Minecraft en formato Xml #ProjectMalmo

Buenas!

Antes de seguir analizando las secciones que posee un archivo xml con la definición de una misión en Minecraft, voy a compartir una pequeña ConsoleApp que crea desde cero los elementos necesarios para interactuar en una misión de Minecraft.

La función que inicializa la misión desde un archivo es la siguiente

En la línea 4 podemos ver la definición en modo xml plano se puede utilizar en el constructor de MissionSpec(). A partir de este momento, la misión se crea con los parámetros del archivo.

Es posible, una vez creado sobre escribir algunos valores, como por ejemplo en la línea 5 donde defino la calidad de video con la que se ejecutara la misión.

Sample Project en GitHub link

Saludos @ Toronto

El Bruno

References

 

#VS2017 – Definition of #Minecraft missions in Xml format #ProjectMalmo

Hi!

In yesterday’s post I wrote on how to create a mission in Minecraft using code. Now, if we need to create a world with special characteristics, one of the options we can consider is to define these options in a mission definition file, in XML format.

The definition scheme of the mission is quite broad, however, we can start with some basic attributes. For example, the definition of the terrain. For this we use the <FlatWorldGenerator /> element and in the generatorString attribute, we define some attributes to create a world in Minecraft.

There are pages such as Superflat Preset Generator, that allow us to create these definitions, for example, let’s use the definition shown in the following image

 

I01

And in a few seconds we will be dead, since the 1st level that this definition creates is a floor of LAVA.

I0

If we change the layers of our floor so that the lava is in the lower level

I1

We can see that the world is more player friendly. Another important point is that as in the definition I have added the ability to have lakes, when the world is created, lakes will be added randomly in it.
In the following image we can see how after digging a bit we started to see the defined layers and also the random lakes in the landscape

I2

At the end of the post I will leave the definition file, and in future posts I will explain how to load it and how to define attributes such as the name of the agent (Valentino), the name of the mission, etc.

I3

Sample Xml Mission Definition code

Greetings @ Toronto

El Bruno

References

 

#VS2017 – Definición de misiones para #Minecraft en formato Xml #ProjectMalmo

Buenas!

En el post de ayer comente como crear una misión en Minecraft utilizando código. Ahora bien, si necesitamos crear un mundo con características especiales, una de las opciones que podemos considerar es definir estas opciones en un archivo de definición de misiones, en formato XML.

El esquema de definición de la misión es bastante amplio, sin embargo, podemos comenzar con algunos atributos básicos. Por ejemplo, la definición del terreno. Para esto utilizamos el elemento <FlatWorldGenerator /> y en el atributo generatorString, definimos algunos atributos para crear un mundo en Minecraft.

Hay paginas como por ejemplo Superflat Preset Generator, que nos permiten crear estas definiciones, por ejemplo, utilicemos la definición que se muestra en la siguiente imagen

I01

Y en pocos segundos estaremos muertos, ya que el 1er nivel que crea esta definición es un piso de LAVA.

I0

Si cambiamos los layers de nuestro piso para que la lava este en el nivel inferior

I1

Podremos ver que el mundo ya es más habitable. Otro punto importante, es que como en la definición he agregado la capacidad de tener lagos, cuando se cree el mundo, se agregaran lagos de forma aleatoria en el mismo. En la siguiente imagen podemos ver como después de cavar un poco comenzamos a ver las capas definidas y además los lagos aleatorios en el paisaje

I2

Al final del post dejare el archivo de definición, y en próximos posts explicare como cargar el mismo y como definir atributos como el nombre del agente (Valentino), el nombre de la misión, etc.

I3

El codigo de definicion de la mision

Saludos @ Toronto

El Bruno

References

 

#VS2017 – #Minecraft game interaction agents, missions definitions and recording with #ProjectMalmo

Hi!

I am going to write some posts about Project Malmo, Minecraft and Visual Studio 2017. I still do not have very clear the order in which I will do them, so I will write and update them as I go along with my learning process.

Once we have installed all the necessary prerequisites and Apps to be able to work with Visual Studio 2017 and Minecraft, it is time to begin to understand some basic concepts about how to program against the game.

It all starts with the creation of an AgentHost(), that is the main object to perform the command communication between a .Net App and Minecraft. The next thing we must do is define the environment in which we want to interact, we define this as a mission with the MissionSpec() object. A couple of important details here is that we can define the duration of the same and the resolution with which we want to work (lines 17 and 18).

If we also want to have a recording of each of the steps that are made in our game, in addition to several execution logs, we can use an object of the MissionRecordSpec() type for this. The only necessary step at this point is to start the mission (lines 21 to 27) where we can see something similar to the following

 

2017 11 08 Malmo 01

A couple of details to keep in mind when the game is running

  • Minecraft must load the game environment, so we must wait for it to be up and running before we add and run some game logic. An example on how to do this can be seen on lines 29 to 38
  • It is also important to control the time in which the mission is running. Missions are usually time based, so mission start and end time are important. Lines 41 to 48

Sample Source Code

Greetings @ Toronto

El Bruno

References

 

#VS2017 – Agentes de interacción con el juego, misiones y grabación en #Minecraft con #ProjectMalmo

Buenas!

Voy a escribir algunos posts sobre Project Malmo, Minecraft y Visual Studio 2017. Como todavía no tengo muy en claro el orden en el que hare los mismos, los iré escribiendo y actualizando sobre la marcha.

Pues bien, una vez que tenemos instalados todos los prerrequisitos y Apps necesarias para poder trabajar con Visual Studio 2017 y Minecraft, es momento de comenzar a comprender algunos conceptos básicos sobre como programar contra el juego.

Todo comienza con la creación de un AgentHost() que es el objeto principal para realizar la comunicación de comandos entre una .Net App y Minecraft. Lo siguiente que debemos realizar es definir el entorno en el que queremos interactuar, a esto lo definimos como una misión con el objeto MissionSpec(). Un par de detalles importantes aquí es que podemos definir la duración de la misma y la resolución con la que queremos trabajar (líneas 17 y 18).

Si además queremos tener una grabación de cada uno de los pasos que se realizan en nuestro juego, además de varios logs de ejecución, podemos utilizar un objeto del tipo MissionRecordSpec() para esto. El único paso necesario en este punto es comenzar la misión (líneas 21 a 27) donde podremos ver algo similar a lo siguiente

2017 11 08 Malmo 01

Un par de detalles a tener en cuenta cuando el juego está en ejecución

  • Minecraft debe cargar el entorno de juego, con lo que debemos esperar a que el mismo este habilitado. Un ejemplo sobre cómo hacer esto se puede ver en las líneas 29 a 38
  • También es importante controlar el tiempo en el que la misión este en ejecución. Líneas 41 a 48

Sample Source Code

Saludos @ Toronto

El Bruno

References

 

#Personal – Learning to code with #Minecraft? start with Hour of Code, #MakeCode and Project Malmo

chickenrain-002

Hello!

December arrives and it’s time for one of my best moments of the year: Hour of Code. I have already written about this type of activities, and once again I recommend joining the community if you want to have a good time with children learning to program.

As always, Minecraft is an almost mandatory topic among the materials that have been created in recent years. As a parent, I can attest that all children have a special connection with the game and that when they see the possibilities of extending it, some people see a special shine in their eyes and want to begin to try this.

This year, I researched a little more and I’ve found a couple of other interesting options for this. In addition to the options we have on the Hour of Code page, we also have the possibility to use the materials created by the Microsoft MakeCode team. There is a special Minecraft mod in which we can interact with the Minecraft environment using visual tools such as Scratch.

I1

Note: Scratch is the flow definition environment created and shared by a team in MIT. I’ve already wrote a little about this.

In this flavor, the editor has the pixelated Minecraft look and feel, and allows coding with visual blocks, dragging and dropping them into a blank canvas to create special Minecraft activities flows. This type of tools are ideal to start learning basic programming notions including variables, control flow, if statements, loops and functions.

 

I2

We can also switch to some real and light programming scenarios using … Javascript !!! (yes, Javascript everywhere). IMHO it’s a nice option to describe how a visual flow will be written later in real source code (even if is Javascript)

I3

And this are kids tools, if you are looking for a real development environment in top of Minecraft, Project Malmo is one of the best ways to start. You can do some serious coding using real programming languages like C#, C++ or Python. In their official website, Project Malmo is described as

The Malmo platform is a sophisticated AI experimentation platform built on top of Minecraft, and designed to support fundamental research in artificial intelligence..

And that’s it for today, I’ll wrote more about Project Malmo and this tools during the next couple of days, so be ready for fun stuff !!!Greetings @ Burlington

El Bruno

References

 

#Personal – #HourOfCode, #Minecraft, #MakeCode y Project Malmo

chickenrain-002

Hola!

Llega diciembre y llega una vez más uno de los momentos que más espero del año: Hour of Code. Ya he escrito sobre este tipo de actividades, y una vez más recomiendo apuntarse a la comunidad si quieres pasar un buen rato con niños aprendiendo a programar.

Pues bien, Minecraft es un tópico casi obligatorio entre los materiales que se han creado en estos últimos años. Yo como padre, puedo atestiguar que todos los niños crean una conexión especial con el juego y que cuando ven las posibilidades de extensión del mismo, a algunos se les ve un brillo especial en los ojos y quieren comenzar a probar esto.

Pues bien, además de las opciones que tenemos en la página de Hour of Code, también tenemos la posibilidad de utiliza los materiales que crea el equipo de Microsoft MakeCode. Existe un mod especial en el que podemos interactuar con el entorno de Minecraft utilizando herramientas visuales como Scratch.

I1

Nota: Scratch es el entorno de definición de flujos que ha creado y compartido el MIT.

El editor tiene el aspecto pixelado de Minecraft y permite la codificación con bloques visuales, haciendo drag and drop de los mismos. Este tipo de herramientas son ideales para comenzar a aprender nociones básicas de programación incluyendo variables, flujo de control, sentencias if, bucles y funciones.

I2

Ademas podemos ir un paso mas adelante y comenzar a programar estos bloques de codigo o scripts completos con Javascript! (Javascript everywhere!)

I3

Si lo que quieres es algo más potente, donde se pueda interactuar con un mundo de Minecraft con lenguajes como C#, C++ o Python, lo ideal es probar Project Malmo. Aquí la definición oficial:

Project Malmo es una plataforma para la experimentación e investigación de Inteligencia Artificial construida sobre Minecraft.

Y hasta aquí el post, porque escribiré un poco sobre Project Malmo en los próximos días.

Saludos @ Burlington

El Bruno

References