Skip to content

Commit 6723f68

Browse files
authored
Merge pull request #232 from httpsphl/feat/catalog-games-roles
feat(catalog): seven game making roles
2 parents d156e4f + 7f4e07d commit 6723f68

24 files changed

Lines changed: 505 additions & 8 deletions

‎app/src/features/catalog/AgencyGrid.tsx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const CATEGORIES: Category[] = [
2929
"finance",
3030
"people",
3131
"security",
32+
"games",
3233
"legal",
3334
];
3435

‎app/src/features/catalog/agency.test.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("the Bot agency", () => {
3333

3434
fireEvent.click(within(invite).getByRole("button", { name: "See all bots" }));
3535
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
36-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(115);
36+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(122);
3737
});
3838

3939
test("a crew with only its chief invites the owner to pick bots, and a click adds one", async () => {
@@ -82,7 +82,7 @@ describe("the Bot agency", () => {
8282
await openCrewWithChief();
8383
fireEvent.click(screen.getByRole("button", { name: "Bot agency" }));
8484
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
85-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(115);
85+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(122);
8686

8787
fireEvent.click(within(dialog).getByRole("button", { name: "Marketing & sales" }));
8888
expect(within(dialog).getAllByRole("listitem")).toHaveLength(24);
@@ -129,7 +129,7 @@ describe("the Bot agency", () => {
129129
expect(addCalls(fake)[0]).toMatchObject({ templateId: "code-reviewer" });
130130

131131
fireEvent.click(within(dialog).getByRole("button", { name: "Back to all bots" }));
132-
expect(within(dialog).getAllByRole("listitem")).toHaveLength(115);
132+
expect(within(dialog).getAllByRole("listitem")).toHaveLength(122);
133133
});
134134

135135
test("the same role twice gets another name", async () => {

‎app/src/i18n/en/catalog.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { design } from "./catalogDesign";
44
import { engineering } from "./catalogEngineering";
55
import { engineeringMore } from "./catalogEngineeringMore";
66
import { finance } from "./catalogFinance";
7+
import { games } from "./catalogGames";
78
import { legal } from "./catalogLegal";
89
import { marketing } from "./catalogMarketing";
910
import { paidMedia } from "./catalogPaidMedia";
@@ -41,6 +42,7 @@ export const catalog = {
4142
finance: "Finance",
4243
people: "People & HR",
4344
security: "Security",
45+
games: "Games",
4446
legal: "Legal",
4547
},
4648
none: "No bot matches that.",
@@ -75,5 +77,6 @@ export const catalog = {
7577
...security,
7678
...sectors,
7779
...legal,
80+
...games,
7881
},
7982
};

‎app/src/i18n/en/catalogGames.ts‎

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Game making roles (spec 26.3): what the owner reads about each. All make
2+
// original work and none designs anything meant to trick players into
3+
// spending.
4+
5+
export const games = {
6+
"game-designer": {
7+
name: "Game Designer",
8+
role: "Turns a game idea into clear rules and a loop that is fun to repeat: the goal, the choices, the feedback and a first small version to test",
9+
summary:
10+
"Turns your game idea into clear rules and a fun loop, with a small first version to test",
11+
about:
12+
"Starts from the experience you want the player to have, finds the loop they repeat and writes the rules in short, exact sentences, checking them for loopholes. It plans the smallest playable version and a test, and when something is not fun it offers two changes to try. The game stays yours.",
13+
when: "When you have a game idea, digital or on a table, and want it to become something playable.",
14+
pairs: "Narrative Designer, for the story, and Game Economy Designer, for the numbers.",
15+
},
16+
"game-narrative-designer": {
17+
name: "Narrative Designer",
18+
role: "Builds the story, characters and world of a game, and writes the text so it fits how the game is played",
19+
summary:
20+
"Builds the story, characters and world of your game and writes the text so it fits the play",
21+
about:
22+
"Builds the world on one page, makes characters with a want, a flaw and a voice and plans the story around the player's choices and the length of play. It writes the text in short lines with their context, so a developer can place them. Everything is original, and it tells you which age the sensitive themes suit.",
23+
when: "When your game needs a world, a story, quests or characters that people remember.",
24+
pairs: "Game Designer, for the rules, and Translator, for other languages.",
25+
},
26+
"level-designer": {
27+
name: "Level Designer",
28+
role: "Designs the levels, maps or scenarios of a game so that they teach, challenge and surprise in the right order",
29+
summary:
30+
"Designs the levels, maps or scenarios of your game so they teach, challenge and surprise in order",
31+
about:
32+
"Plans the order in which a player learns each mechanic, one new thing at a time, then describes each level with a map in text: the start, the goal, the route, the challenges and the rewards. It checks for places where a player can get stuck or skip the point, and writes a playtest list for each level.",
33+
when: "When you have the rules of a game and need the levels or scenarios that use them.",
34+
pairs: "Game Designer, to check the rules, and Narrative Designer, for the story beats.",
35+
},
36+
"game-economy-designer": {
37+
name: "Game Economy Designer",
38+
role: "Balances the numbers of a game: costs, rewards, progress and prices, so that it stays fair and interesting, without tricking players into spending",
39+
summary:
40+
"Balances the numbers of your game: costs, rewards and progress, fairly and without tricks",
41+
about:
42+
"Draws the flows of coins, items and time, puts the numbers in a spreadsheet with formulas and simulates players at different speeds. It finds resources that pile up and paths that are always best. If your game earns money, it proposes fair ways, and never hidden costs, fake countdowns, pay-to-win or paid random rewards aimed at children.",
43+
when: "When your game has coins, items or progress and the numbers feel off, or you plan to earn money from it.",
44+
pairs: "Game Designer, for the goals, and Data Analyst, for the simulations.",
45+
},
46+
"playtest-analyst": {
47+
name: "Playtest Analyst",
48+
role: "Plans playtests and turns what players did and said into clear findings and the changes most worth making",
49+
summary:
50+
"Plans playtests and turns what players did and said into clear findings and changes worth making",
51+
about:
52+
"Plans the session so you do not explain or defend the game, then turns your notes into findings: the problem, how many players hit it, where and why. It trusts what players did over what they said, ranks the changes by effect for the effort and suggests the next test. It never contacts players.",
53+
when: "After people have tried your game and you are not sure what to change first.",
54+
pairs: "Game Designer, who acts on the findings, and Level Designer.",
55+
},
56+
"game-audio-director": {
57+
name: "Game Audio Brief Writer",
58+
role: "Plans the sound and music of a game and writes clear briefs for whoever makes them: the mood, the list of sounds and how they play",
59+
summary:
60+
"Plans the sound and music of your game and writes clear briefs for whoever makes them",
61+
about:
62+
"Plans the music and the list of sounds in a table: when each plays, how it should feel and what the player must understand from it. It plans the mix and visual cues for players who cannot hear well, and writes one brief per piece so a composer or sound designer can start. It does not make audio, and reminds you to check rights.",
63+
when: "When your game is playable and needs sound, or you hire a composer.",
64+
pairs:
65+
"Game Designer, for the moments that need sound, and Developer, for how sounds are triggered.",
66+
},
67+
"tabletop-game-master": {
68+
name: "Tabletop Game Master",
69+
role: "Helps run a tabletop role-playing game: prepares adventures, characters and rules answers, and keeps the story going at the table",
70+
summary:
71+
"Helps run a tabletop role-playing game: adventures, characters, rules answers and ideas for the table",
72+
about:
73+
"Asks about your system, your group and the tone, then prepares a short adventure with a hook, scenes with a choice each and several endings, plus quick characters. It answers rule questions from the book you have and says when it is not sure. During play it gives three options when you are stuck, and asks the group about limits.",
74+
when: "When you run or play a role-playing game and want help preparing or improvising.",
75+
pairs: "Narrative Designer, for deeper lore, and Designer, for maps and handouts.",
76+
},
77+
};

‎app/src/i18n/es/catalog.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { design } from "./catalogDesign";
55
import { engineering } from "./catalogEngineering";
66
import { engineeringMore } from "./catalogEngineeringMore";
77
import { finance } from "./catalogFinance";
8+
import { games } from "./catalogGames";
89
import { legal } from "./catalogLegal";
910
import { marketing } from "./catalogMarketing";
1011
import { paidMedia } from "./catalogPaidMedia";
@@ -38,6 +39,7 @@ export const catalog: Messages["catalog"] = {
3839
finance: "Finanzas",
3940
people: "Personas y RR. HH.",
4041
security: "Seguridad",
42+
games: "Juegos",
4143
legal: "Jurídico",
4244
},
4345
none: "Ningún bot coincide con eso.",
@@ -72,5 +74,6 @@ export const catalog: Messages["catalog"] = {
7274
...security,
7375
...sectors,
7476
...legal,
77+
...games,
7578
},
7679
};

‎app/src/i18n/es/catalogGames.ts‎

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import type { games as en } from "../en/catalogGames";
2+
3+
export const games: typeof en = {
4+
"game-designer": {
5+
name: "Diseñador de juegos",
6+
role: "Convierte una idea de juego en reglas claras y un ciclo divertido de repetir: el objetivo, las decisiones, la respuesta y una primera versión pequeña para probar",
7+
summary:
8+
"Convierte tu idea de juego en reglas claras y un ciclo divertido, con una primera versión pequeña para probar",
9+
about:
10+
"Parte de la experiencia que quieres que tenga el jugador, encuentra el ciclo que repite y escribe las reglas en frases cortas y exactas, comprobando si hay resquicios. Planifica la versión jugable más pequeña y una prueba, y cuando algo no es divertido ofrece dos cambios para intentar. El juego sigue siendo tuyo.",
11+
when: "Cuando tienes una idea de juego, digital o de mesa, y quieres que se convierta en algo jugable.",
12+
pairs:
13+
"Diseñador de narrativa, para la historia, y Diseñador de economía de juegos, para los números.",
14+
},
15+
"game-narrative-designer": {
16+
name: "Diseñador de narrativa",
17+
role: "Crea la historia, los personajes y el mundo de un juego, y escribe los textos para que encajen con la forma de jugar",
18+
summary:
19+
"Crea la historia, los personajes y el mundo de tu juego y escribe los textos para que encajen con el juego",
20+
about:
21+
"Arma el mundo en una página, crea personajes con un deseo, un defecto y una voz y planifica la historia en torno a las decisiones del jugador y la duración del juego. Escribe los textos en líneas cortas con su contexto, para que un desarrollador los coloque. Todo es original, y te dice para qué edad sirven los temas sensibles.",
22+
when: "Cuando tu juego necesita un mundo, una historia, misiones o personajes que la gente recuerde.",
23+
pairs: "Diseñador de juegos, para las reglas, y Traductor, para otros idiomas.",
24+
},
25+
"level-designer": {
26+
name: "Diseñador de niveles",
27+
role: "Diseña los niveles, mapas o escenarios de un juego para que enseñen, desafíen y sorprendan en el orden correcto",
28+
summary:
29+
"Diseña los niveles, mapas o escenarios de tu juego para que enseñen, desafíen y sorprendan en orden",
30+
about:
31+
"Planifica el orden en que el jugador aprende cada mecánica, una novedad a la vez, y describe cada nivel con un mapa en texto: el inicio, el objetivo, la ruta, los desafíos y las recompensas. Comprueba si hay sitios donde el jugador puede atascarse o saltarse el sentido del nivel, y escribe una lista de prueba para cada uno.",
32+
when: "Cuando tienes las reglas de un juego y necesitas los niveles o escenarios que las usan.",
33+
pairs:
34+
"Diseñador de juegos, para revisar las reglas, y Diseñador de narrativa, para los momentos de la historia.",
35+
},
36+
"game-economy-designer": {
37+
name: "Diseñador de economía de juegos",
38+
role: "Equilibra los números de un juego: costos, recompensas, progreso y precios, para que sea justo e interesante, sin engañar al jugador para que gaste",
39+
summary:
40+
"Equilibra los números de tu juego: costos, recompensas y progreso, de forma justa y sin trucos",
41+
about:
42+
"Dibuja los flujos de monedas, objetos y tiempo, pone los números en una hoja de cálculo con fórmulas y simula jugadores a distintos ritmos. Encuentra recursos que se acumulan y caminos que siempre son los mejores. Si tu juego gana dinero, propone formas justas, y nunca costos ocultos, cuentas atrás falsas, ventaja por pago ni premios aleatorios de pago dirigidos a niños.",
43+
when: "Cuando tu juego tiene monedas, objetos o progreso y los números parecen raros, o piensas ganar dinero con él.",
44+
pairs: "Diseñador de juegos, para los objetivos, y Analista de datos, para las simulaciones.",
45+
},
46+
"playtest-analyst": {
47+
name: "Analista de pruebas de juego",
48+
role: "Planifica pruebas con jugadores y convierte lo que hicieron y dijeron en hallazgos claros y en los cambios que más valen la pena",
49+
summary:
50+
"Planifica pruebas con jugadores y convierte lo que hicieron y dijeron en hallazgos y cambios que valen la pena",
51+
about:
52+
"Planifica la sesión para que no expliques ni defiendas el juego y luego convierte tus notas en hallazgos: el problema, cuántos jugadores lo encontraron, dónde y por qué. Se fía más de lo que hicieron los jugadores que de lo que dijeron, ordena los cambios por efecto frente al esfuerzo y sugiere la siguiente prueba. Nunca contacta a los jugadores.",
53+
when: "Después de que personas hayan probado tu juego y no sepas qué cambiar primero.",
54+
pairs: "Diseñador de juegos, que actúa sobre los hallazgos, y Diseñador de niveles.",
55+
},
56+
"game-audio-director": {
57+
name: "Redactor de guías de audio para juegos",
58+
role: "Planifica el sonido y la música de un juego y escribe guías claras para quien los hace: el ambiente, la lista de sonidos y cómo suenan",
59+
summary:
60+
"Planifica el sonido y la música de tu juego y escribe guías claras para quien los va a hacer",
61+
about:
62+
"Planifica la música y la lista de sonidos en una tabla: cuándo suena cada uno, cómo debe sentirse y qué debe entender el jugador con él. Planifica la mezcla y avisos visuales para quien no oye bien, y escribe una guía por pieza para que un compositor o diseñador de sonido empiece. No hace el audio y te recuerda comprobar los derechos.",
63+
when: "Cuando tu juego ya es jugable y necesita sonido, o vas a contratar a un compositor.",
64+
pairs:
65+
"Diseñador de juegos, para los momentos que piden sonido, y Desarrollador, para cómo se activan los sonidos.",
66+
},
67+
"tabletop-game-master": {
68+
name: "Director de juegos de rol de mesa",
69+
role: "Ayuda a dirigir un juego de rol de mesa: prepara aventuras, personajes y respuestas sobre reglas, y mantiene la historia en marcha en la mesa",
70+
summary:
71+
"Ayuda a dirigir un juego de rol de mesa: aventuras, personajes, respuestas sobre reglas e ideas para la mesa",
72+
about:
73+
"Pregunta por tu sistema, tu grupo y el tono, y prepara una aventura corta con un gancho, escenas con una decisión cada una y varios finales, además de personajes rápidos. Responde dudas de reglas con el libro que tienes y dice cuando no está seguro. Durante la partida da tres opciones cuando te atascas y pregunta al grupo por sus límites.",
74+
when: "Cuando diriges o juegas un juego de rol y quieres ayuda para preparar o improvisar.",
75+
pairs:
76+
"Diseñador de narrativa, para un trasfondo más profundo, y Diseñador, para mapas y materiales.",
77+
},
78+
};

‎app/src/i18n/pt-BR/catalog.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { design } from "./catalogDesign";
55
import { engineering } from "./catalogEngineering";
66
import { engineeringMore } from "./catalogEngineeringMore";
77
import { finance } from "./catalogFinance";
8+
import { games } from "./catalogGames";
89
import { legal } from "./catalogLegal";
910
import { marketing } from "./catalogMarketing";
1011
import { paidMedia } from "./catalogPaidMedia";
@@ -38,6 +39,7 @@ export const catalog: Messages["catalog"] = {
3839
finance: "Finanças",
3940
people: "Pessoas e RH",
4041
security: "Segurança",
42+
games: "Jogos",
4143
legal: "Jurídico",
4244
},
4345
none: "Nenhum bot combina com isso.",
@@ -72,5 +74,6 @@ export const catalog: Messages["catalog"] = {
7274
...security,
7375
...sectors,
7476
...legal,
77+
...games,
7578
},
7679
};

0 commit comments

Comments
 (0)