Saltearse al contenido

Juego de Mazmorra con IA

Módulo 1: Configuración del monorepo

Comenzaremos creando un nuevo monorepo. Desde el directorio deseado, ejecuta el siguiente comando:

Terminal window
npx create-nx-workspace@~20.6.3 dungeon-adventure --pm=pnpm --preset=ts --ci=skip --formatter=prettier

Esto configurará un monorepo NX en el directorio dungeon-adventure que podrás abrir en VSCode. Debería verse así:

  • Directory.nx/
  • Directory.vscode/
  • Directorynode_modules/
  • Directorypackages/ aquí residirán tus subproyectos
  • .gitignore
  • .npmrc
  • .prettierignore
  • .prettierrc
  • nx.json configura los valores predeterminados de CLI y monorepo de Nx
  • package.json todas las dependencias de node se definen aquí
  • pnpm-lock.yaml o bun.lock, yarn.lock, package-lock.json según el gestor de paquetes
  • pnpm-workspace.yaml si usas pnpm
  • README.md
  • tsconfig.base.json todos los subproyectos basados en node extienden este
  • tsconfig.json

Para empezar a agregar componentes del @aws/nx-plugin al monorepo, debemos instalarlo como dependencia de desarrollo ejecutando desde la raíz del monorepo dungeon-adventure:

Terminal window
pnpm add -Dw @aws/nx-plugin

Ahora estamos listos para crear nuestros diferentes subproyectos usando el @aws/nx-plugin.

API del Juego

Primero crearemos nuestra API del Juego. Para esto, crearemos una API tRPC llamada GameApi siguiendo estos pasos:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - ts#trpc-api
  5. Complete los parámetros requeridos
    • apiName: GameApi
  6. Haga clic en Generate

Deberías ver nuevos archivos en tu árbol de directorios.

Haz clic aquí para examinar estos archivos en detalle.

API de Historias

Ahora crearemos nuestra API de Historias. Para esto, crearemos una API Fast llamada StoryApi:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - py#fast-api
  5. Complete los parámetros requeridos
    • name: StoryApi
  6. Haga clic en Generate

Verás nuevos archivos en tu árbol de directorios.

Haz clic aquí para examinar estos archivos en detalle.

Interfaz del Juego: Sitio web

Crearemos la interfaz de usuario. Ejecuta:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - ts#cloudscape-website
  5. Complete los parámetros requeridos
    • name: GameUI
  6. Haga clic en Generate

Verás nuevos archivos en tu árbol.

Haz clic aquí para examinar en detalle.

Interfaz del Juego: Autenticación

Habilitamos autenticación con Cognito:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - ts#cloudscape-website#auth
  5. Complete los parámetros requeridos
    • cognitoDomain: game-ui
    • project: @dungeon-adventure/game-ui
    • allowSignup: true
  6. Haga clic en Generate

Cambios en el árbol de archivos.

Haz clic para detalles

Interfaz del Juego: Conexión a Story API

Conectamos la UI a Story API:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - api-connection
  5. Complete los parámetros requeridos
    • sourceProject: @dungeon-adventure/game-ui
    • targetProject: dungeon_adventure.story_api
  6. Haga clic en Generate

Cambios en el árbol.

Detalles aquí

Interfaz del Juego: Conexión a Game API

Conectamos UI a Game API:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - api-connection
  5. Complete los parámetros requeridos
    • sourceProject: @dungeon-adventure/game-ui
    • targetProject: @dungeon-adventure/game-api-backend
  6. Haga clic en Generate

Cambios en el árbol.

Detalles

Infraestructura del Juego

Creamos la infraestructura CDK:

  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - ts#infra
  5. Complete los parámetros requeridos
    • name: infra
  6. Haga clic en Generate

Cambios en el árbol.

Detalles

Actualizar infraestructura

Actualizamos application-stack.ts:

import {
GameApi,
GameUI,
StoryApi,
UserIdentity,
} from ':dungeon-adventure/common-constructs';
...
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const userIdentity = new UserIdentity(this, 'UserIdentity');
const gameApi = new GameApi(this, 'GameApi');
const storyApi = new StoryApi(this, 'StoryApi');
[storyApi, gameApi].forEach((api) =>
api.grantInvokeAccess(userIdentity.identityPool.authenticatedRole),
);
new GameUI(this, 'GameUI');
}

Construir el código

Ahora construiremos el código por primera vez
Terminal window
pnpm nx run-many --target build --all

Se te preguntará:

Ventana de terminal
NX The workspace is out of sync
[@nx/js:typescript-sync]: Faltan referencias en tsconfig.json
? ¿Quieres sincronizar los cambios?
Sí, sincronizar y ejecutar tareas
No, ejecutar sin sincronizar

Selecciona para resolver errores de importación.

Los artefactos construidos están en dist/. ¡Felicidades! Has creado todos los subproyectos necesarios. 🎉🎉🎉