Documentación

⚠️ Advertencia: Gameeky aún se encuentra en las primeras etapas de desarrollo y, por lo tanto, está sujeta a cambios.

📝 Nótese: Este documento no es un tutorial exhaustivo sobre todo lo que Gameeky puede hacer, pero debería proporcionar suficientes instrucciones para comenzar.

Temas

  1. Introducción
  2. Instalación
  3. Paquetes temáticos
  4. Descripción general
  5. El lanzador
  6. El reproductor
  7. Juego cooperativo
  8. El editor de escenas
  9. El editor de entidades
  10. El editor de código y código similar a LOGO
  11. Complementos

Introducción

Gameeky brinda experiencias de aprendizaje a estudiantes jóvenes y educadores, permitiéndoles crear y explorar con juegos cooperativos. Más específicamente:

📝 Nótese: Esta es una herramienta de aprendizaje en forma de motor de juego. No es un motor de juego profesional. Si está buscando una herramienta para crear videojuegos profesionales, considere el motor de juegos Godot.

Instalación

El método de instalación recomendado es a través del centro de software del sistema, por ejemplo, GNOME Software. Busque Gameeky y proceda a instalarlo. Alternativamente, también se puede instalar desde Flathub. De manera similar, busque Gameeky y siga las instrucciones del sitio web.

Por último, también se puede instalar desde la terminal:

flatpak --user install flathub dev.tchx84.Gameeky

Paquetes temáticos

Gameeky proporciona paquetes con bloques de construcción predefinidos para diferentes intereses, por ejemplo, un juego de rol agrícola ambientado en un mundo de fantasía medieval. Un paquete temático contiene:

Estos bloques de construcción se pueden reutilizar para crear escenas personalizadas, juegos nuevos y muchos materiales de aprendizaje.

El método de instalación recomendado es a través del centro de software del sistema, por ejemplo, Software GNOME. Los paquetes temáticos se ofrecen como complementos desde la página del centro de software. Alternativamente, también se puede instalar desde Flathub. Del mismo modo, los paquetes temáticos se ofrecen como complementos del sitio web. Seleccione el complemento y siga las instrucciones del sitio web.

Por último, los packs también se pueden instalar desde la terminal:

flatpak --user remote-ls flathub | grep dev.tchx84.Gameeky.ThematicPack
flatpak --user install flathub dev.tchx84.Gameeky.ThematicPack.FreedomValley

Descripción general

Gameeky proporciona cinco componentes principales:

  1. El lanzador es el componente principal donde se pueden encontrar y ejecutar todos los paquetes temáticos y proyectos.
  2. El reproductor es el lugar donde se puede jugar y unirse a juegos.
  3. El editor de escenas es donde se pueden crear y editar escenas.
  4. El editor de entidades es donde se pueden crear y editar entidades.
  5. El editor de código es donde se puede tener una experiencia similar a la de LOGO.

El lanzador

El lanzador sirve como punto de partida de Gameeky. Proporciona una manera fácil de administrar paquetes temáticos instalados como complementos y proyectos ubicados en el directorio ~/Gameeky. El administrador soporta todas las operaciones básicas de gestión:

Compartir proyectos

El lanzador proporciona una forma sencilla de compartir proyectos. Para exportar un proyecto, siga estos pasos:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Exportar.
  2. Siga las instrucciones del diálogo.

Para importar un proyecto, siga estos pasos:

  1. Desde el lanzador, vaya al menú y seleccione la opción Importar.
  2. Siga las instrucciones del diálogo.

El reproductor

El reproductor proporciona una representación visual del mundo del juego y los medios para interactuar con ese mundo.

Para iniciar un juego, haga clic en el botón Jugar del proyecto desde el lanzador. Esto iniciará la escena predeterminada para ese proyecto. Cada paquete temático y proyecto viene con una escena predeterminada. Para jugar otras escenas del mismo proyecto, siga estos pasos:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Jugar.
  2. Desde el reproductor, vaya al menú y seleccione la opción Nuevo.
  3. Desde el cuadro de diálogo de creación, seleccione el archivo de escena y haga clic en el botón Crear.

Elementos de la pantalla del juego

Una vez en el juego, la escena ocupa la mayor parte de la pantalla, pero también hay otros elementos.

El HUD es una interfaz ubicada en la parte inferior central de la pantalla. Este elemento se utiliza para visualizar las estadísticas del personaje del usuario. Está compuesto por las siguientes partes:

Otro elemento es el visor de diálogos. Este visor se coloca en la parte inferior de la pantalla y se utiliza para mostrar diálogos del juego, por ejemplo, un mensaje de un personaje del juego o del narrador. Está compuesto por las siguientes partes:

Controles

Una vez en el juego, el personaje del usuario se puede controlar con dos métodos:

Acciones

El personaje del usuario puede realizar múltiples acciones para interactuar con el mundo del juego:

Guardar archivos

El estado del juego se puede guardar en cualquier momento y restaurar más tarde. Los archivos guardados son copias completas de la escena y, por lo tanto, archivos de escena normales.

  1. Para guardar el estado del juego, vaya al menú y seleccione la opción Guardar Como….
  2. Para restaurar el estado del juego, siga los mismos pasos descritos anteriormente para abrir una escena.

Juego cooperativo

Gameeky fue diseñado desde cero para crear y compartir experiencias cooperativas. Todos los juegos creados con él, se pueden jugar de forma cooperativa. No hay requisitos especiales. Aunque no existe un límite teórico en cuanto a cuántos usuarios pueden unirse a un juego cooperativo, existen limitaciones técnicas. Por ejemplo, recursos informáticos limitados.

Para iniciar un juego cooperativo, siga estos pasos:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Jugar.
  2. Desde el reproductor, vaya al menú y seleccione la opción Nuevo.
  3. Desde el cuadro de diálogo de creación, aumente el número de participantes y luego haga clic en el botón Crear.

Para unirse a un juego cooperativo:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Jugar.
  2. Desde el reproductor, vaya al menú y seleccione la opción Unirse.
  3. En el cuadro de diálogo para unirse, especifique la dirección IP del usuario que inició el juego cooperativo y haga clic en el botón Unirse.

📝 Nótese: Todos los usuarios que se unan a un juego cooperativo deben tener una copia del mismo paquete temático o proyecto.

📝 Nótese: No es necesario compartir las escenas personalizadas creadas a partir de paquetes temáticos. La escena se comparte automáticamente durante el juego, siempre que todos los usuarios compartan el mismo paquete temático.

📝 Nótese: Los usuarios pueden unirse a una sesión como cualquier entidad definida en el paquete temático, por ejemplo, como un árbol o una roca. Para hacer esto, expanda la sección Avanzado del diálogo de creación y seleccione un Tipo de Entidad diferente.

El editor de escenas

El editor de escenas permite a los usuarios crear y modificar mundos del juego. Sirve como la experiecia inicial y más sencilla de creación sin código en Gameeky.

Para editar una escena existente, haga clic en el botón Editar del proyecto desde el lanzador. Para crear una nueva escena, se recomienda comenzar con un proyecto existente, como un paquete temático. Siga estos pasos para agregar una nueva escena:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Editar.
  2. Desde el editor de escenas, vaya al menú y seleccione la opción Nuevo.

📝 Nótese: Los paquetes temáticos no se pueden modificar. Por lo tanto, se debe crear una copia editable. En el menú de opciones del paquete temático, seleccione la opción Copiar.

Conceptos

Una escena es una colección de entidades dispuestas en una cuadrícula de mosaicos. Las propiedades básicas de una escena son:

Flujo de trabajo

El flujo de trabajo de edición de escenas se parece al de una herramienta de diseño gráfico. Las entidades se pintan y se retiran de la escena. Los pasos básicos para editar una escena son los siguientes:

  1. Para agregar entidades a la escena, seleccione una entidad en el panel izquierdo y colóquela en la escena haciendo clic en un mosaico de la cuadrícula.
  2. Para eliminar entidades de la escena, seleccione la herramienta Eliminar de la izquierda y luego haga clic en el mosaico de la entidad en la cuadrícula.
  3. Aunque las entidades vienen con propiedades y comportamientos predefinidos, se pueden personalizar entidades particulares de la escena. Seleccione la herramienta Editar en el panel izquierdo y luego haga clic en el mosaico de entidad en la cuadrícula.
  4. Para probar la escena, vaya al menú y seleccione la opción Probar.

Además, el editor de escenas proporciona ayudas para facilitar las cosas, como por ejemplo:

Consejos y trucos

Para una mejor experiencia, siga estos consejos y trucos:

El editor de entidades

El editor de entidades permite a los usuarios crear y modificar criaturas y objetos del juego. Proporciona una experiencia de creación sin código más profunda, ya que requiere comprender los sistemas subyacentes de Gameeky.

Antes de crear una nueva entidad desde cero, se recomienda inspeccionar las entidades existentes de los paquetes temáticos. Entonces, para inspeccionar una entidad existente, siga estos pasos:

  1. Desde el editor de escenas, haga clic derecho en una entidad en el panel izquierdo.
  2. Seleccione la opción Editar del menú.

Para crear una nueva entidad:

  1. Desde el editor de escenas, haga clic derecho en cualquier parte del panel izquierdo.
  2. Seleccione la opción Agregar del menú.

Conceptos

Las entidades representan todo lo que puede existir en el juego, por ejemplo, la hierba, el personaje del usuario, una fuente de luz, la música de fondo e incluso la lógica del juego. Una entidad se compone de tres partes:

  1. Propiedades de la lógica del juego.
  2. Gráficos.
  3. Sonidos.

Propiedades de la lógica del juego

Estas propiedades determinan cómo las entidades se comportan e interactúan con otras entidades; por ejemplo, diferentes combinaciones de estas propiedades determinarán si una entidad actúa como una piedra estática o como un enemigo vivo.

Aunque hay dos docenas de propiedades, algunas de ellas requieren atención especial aquí:

📝 Nótese: Al crear un nuevo paquete temático, asuma que la entidad con el número de identificador 1 se asignará al personaje del usuario en el juego.

Gráficos

Las entidades se representan en pantalla a través de gráficos 2D, que pueden ser estáticos o animados.

Estos gráficos se asignan a combinaciones específicas de estado y dirección, por ejemplo, se representará una animación específica cuando una entidad se Mueva hacia el Oeste, mientras que se representará otra animación cuando la misma entidad esté Quieta hacia el Sur.

Todas las entidades deben proporcionar un gráfico Predeterminado, por ejemplo, para visualizarlo en el editor de escenas o al depurar complementos.

Sonidos

De manera similar a los gráficos, las entidades pueden emitir sonidos cuando se encuentran en estados específicos, por ejemplo, el sonido de pasos se reproduce cuando la entidad se está Moviendo. Las direcciones no importan aquí.

No hay sonidos Predeterminados, ya que los sonidos son opcionales.

Flujo de trabajo

El flujo de trabajo de creación de entidades es similar a completar un formulario o una plantilla. La entidad más básica se crea con los siguientes pasos:

  1. En la pestaña Juego, comience a configurar los valores de arriba a abajo. Tenga en cuenta que todas las propiedades proporcionan sus propios valores predeterminados. Únicamente el identificador es obligatorio. Se recomienda establecer un nombre para que sea más fácil encontrar la entidad en el editor de escenas.
  2. En la pestaña Gráficos, haga clic en el botón Agregar para crear la primera animación predeterminada. Deje Estado y Dirección en Predeterminado. Expanda la sección Detalles de la animación predeterminada para seleccionar una imagen. Haga clic en el botón Ver para inspeccionar la imagen seleccionada.
  3. Guarde la entidad y úsela desde el editor de escenas.

Consejos y trucos

Para una mejor experiencia, siga estos consejos y trucos:

Tener soporte para juegos cooperativos abre la puerta a cooperadores que pueden controlarse con código. Para lograr esto, Gameeky proporciona una pequeña biblioteca que permite a los usuarios controlar una única entidad usando Python, en una experiencia similar a LOGO.

Flujo de trabajo

Siga estos pasos para iniciar un juego cooperativo:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Jugar.
  2. Desde el reproductor, vaya al menú y seleccione la opción Nuevo.
  3. Desde el cuadro de diálogo de creación, aumente el número de participantes y luego haga clic en el botón Crear.

Para unirse al juego con código se deben seguir estos pasos:

  1. Desde el lanzador, haga clic en el botón Opciones del proyecto y seleccione la opción Jugar.
  2. Desde el reproductor, vaya al menú y seleccione la opción Unirse Con Código.
  3. Escriba código Python que utilice la biblioteca Gameeky. Consulte los ejemplos a continuación.
  4. Haga clic en el botón Jugar.

Ejemplos

Unirse y abandonar un juego:

from gameeky.library import Game

game = Game()
game.join()
game.quit()

Realizar acciones:

from gameeky.library import Game, Direction

game = Game()
game.join()
game.update()

game.idle(time=1000)
game.move(Direction.EAST, time=1000)
game.move(Direction.WEST, time=1000)
game.take(time=1000)
game.use(time=1000)
game.drop(time=1000)
game.interact(time=1000)

game.quit()

Inspeccionar la posición y las propiedades básicas del personaje del usuario entidad:

from gameeky.library import Game

game = Game()
game.join()
game.update()

print(game.entity.position.x, game.entity.position.y)

game.quit()

Inspeccione el estado de la escena:

from gameeky.library import Game

game = Game()
game.join()
game.update()

for entity in game.scene.entities:
    print(entity.position.x, entity.position.y)

game.quit()

📝 Nótese: Los cooperadores solo pueden ver su entorno inmediato en la escena, no la escena completa.

Inspeccionar las estadísticas avanzadas de la entidad del personaje del usuario:

from gameeky.library import Game

game = Game()
game.join()
game.update()

print(game.stats.durability, game.stats.stamina, game.stats.held)

game.quit()

Consejos y trucos

Para una mejor experiencia, siga estos consejos y trucos:

Complementos

Los actuadores pueden modificar el comportamiento de una entidad. Una sola entidad puede utilizar múltiples actuadores para modelar comportamientos más complejos. Aunque existe una amplia gama de actuadores predefinidos, el resultado final es limitado en comparación con el código real.

Por lo tanto, Gameeky proporciona soporte para actuadores creados por el usuario, e ir más allá de lo que pueden hacer los actuadores predefinidos.

Conceptos

Hay tres tipos de actuadores:

  1. Los actuadores regulares actúan en cada tic de la escena, por ejemplo, para mover la entidad a una ubicación aleatoria en cada tic.
  2. Los actuadores activables actúan solo en intervalos de tiempo fijos o cuando son activados explícitamente por otra entidad, por ejemplo, para agregar un nuevo enemigo a la escena cada cinco segundos.
  3. Los actuadores interactuables actúan cuando otras entidades interactúan con su entidad, por ejemplo, para teletransportar una entidad a una ubicación diferente cuando esa entidad interactúa con un portal.

Todos los actuadores utilizan las propiedades de juego de su entidad para modificar su comportamiento:

Flujo de trabajo

Para crear un nuevo actuador, siga los pasos:

  1. Abra un nuevo documento en un editor de texto.
  2. Escriba una clase de actuador; consulte los ejemplos a continuación.
  3. Guarde el nuevo documento en ~/Gameeky/NOMBRE_DEL_PROYECTO/actuators/NOMBRE_DEL_ACTUADOR.py
  4. Desde el editor de entidades, vaya a la pestaña Juego y a la sección de actuadores.
  5. Se mostrará una nueva opción llamada NOMBRE_DEL_ACTUADOR junto con los actuadores predefinidos.
  6. Selecciónelo y guarde la entidad en el disco.

📝 Nótese: También se puede acceder a los actuadores creados por el usuario desde el editor de escenas al personalizar entidades específicas.

Ejemplos

Una clase actuador mínima:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        pass

Inspeccionar la entidad:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        print(self.entity.name)

Realizar una acción sobre la entidad:

from gameeky.plugins import Actuator as Plugin
from gameeky.common.definitions import Action, Direction

class Actuator(Plugin):
    def tick(self) -> None:
        self.entity.perform(Action.MOVE, Direction.SOUTH)

Enviar un diálogo a la entidad:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        self.entity.tell("Hello...")

Inspeccionar todas las demás entidades que se encuentran en frente a la entidad:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        for entity in self.entity.obstacles:
            print(entity.name)

Inspeccionar todas las demás entidades que comparten la misma posición que la entidad:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        for entity in self.entity.surfaces:
            print(entity.name)

Inspeccionar todas las demás entidades que rodean la entidad:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        for entity in self.entity.surroundings:
            print(entity.name)

📝 Nótese: El método surroundings tiene en cuenta la propiedad Radio de la entidad.

Inspeccionar todas las entidades en la escena, que no sean estáticas:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        for entity in self.entity.scene.mutables:
            print(entity.name)

Inspeccionar todas las entidades controladas por usuarios:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    def tick(self) -> None:
        for entity in self.entity.scene.playables:
            print(entity.name)

Crear un actuador que actúa cada cinco segundos:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    activatable = True

    def tick(self) -> None:
        if not self.ready:
            return

        print("Activated...")

        super().tick()

📝 Nótese: La propiedad ready tiene en cuenta la propiedad Tasa de la entidad.

Crear un actuador que actúa solo cuando los usuarios interactúen con él:

from gameeky.plugins import Actuator as Plugin

class Actuator(Plugin):
    interactable = True

    def prepare(self, interactee: "Entity") -> bool:
        if interactee.playable is False:
            return False

        return super().prepare(interactee)

    def tick(self) -> None:
        if self.interactee is None:
            return

        print(f"Interacted with {self._interactee.name}")

        super().tick()

Para ver ejemplos más complejos, consulte el directorio actuadores predefinidos de Gameeky.

Consejos y trucos

Para una mejor experiencia, siga estos consejos y trucos: