{"id":2568,"date":"2026-05-18T08:17:21","date_gmt":"2026-05-18T11:17:21","guid":{"rendered":"https:\/\/indiebrasilis.com.br\/?p=2568"},"modified":"2026-05-18T08:17:22","modified_gmt":"2026-05-18T11:17:22","slug":"colocando-a-mao-na-massa","status":"publish","type":"post","link":"https:\/\/indiebrasilis.com.br\/?p=2568","title":{"rendered":"Colocando A M\u00e3o Na Massa"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Integrar a IA a um <strong>adventure <\/strong>\u00e9, na pr\u00e1tica, transform\u00e1-la em um interpretador narrativo, entre o jogador e o motor do jogo. Em vez de trabalhar apenas com verbos fixos (<strong>PEGAR CHAVE<\/strong>, <strong>ABRIR PORTA<\/strong>), a IA interpreta a linguagem natural, entende inten\u00e7\u00e3o e devolve a\u00e7\u00f5es estruturadas ao sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A arquitetura mais eficiente hoje n\u00e3o \u00e9 deixar a IA controlar tudo, mas dividir responsabilidades. O jogo controla o mapa, o invent\u00e1rio, os estados, as regras, os puzzles e a progress\u00e3o. A IA controla a interpreta\u00e7\u00e3o do texto do jogador, o di\u00e1logo, a descri\u00e7\u00e3o din\u00e2mica, a narrativa contextual e as respostas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso evita que a IA invente itens, locais ou solu\u00e7\u00f5es fora da l\u00f3gica do jogo. Queremos uma integra\u00e7\u00e3o e n\u00e3o uma &#8220;entrega\u00e7\u00e3o&#8221;. Ainda precisamos ter um game designer comandando o processo, ainda que certas liberdades sejam concedidas \u00e0 IA. Neste esquema, um fluxo b\u00e1sico de gameplay seria o seguinte:<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-c0379704233f75c940646ae6cbcc7c06 wp-block-paragraph\" style=\"color:#045685\"><strong>:: Jogador digita: &#8220;eu tento abrir a porta com a barra de ferro&#8221;;<br>:: Adventure envia contexto para ChatGPT;<br>:: IA responde:<br>   &#8220;acao&#8221;: &#8220;usar_item&#8221;,<br>   &#8220;item&#8221;: &#8220;barra de ferro&#8221;,<br>    &#8220;alvo&#8221;: &#8220;porta enferrujada&#8221;<br>:: Motor do jogo processa;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O motor do jogo retorna o resultado: &#8220;<strong>A porta range violentamente e se abre.<\/strong>&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qual \u00e9 a pegadinha? A IA <strong>N\u00c3O<\/strong> deve decidir sobre o mundo e o erro mais comum \u00e9 perguntar &#8220;<strong>O que acontece agora?<\/strong>&#8220;. Isso faz a IA virar autora do jogo inteiro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O correto \u00e9 &#8220;<strong>Interprete a inten\u00e7\u00e3o do jogador usando SOMENTE os elementos dispon\u00edveis.<\/strong>&#8220;. A IA deve atuar como um <strong>parser <\/strong>inteligente, um mestre de narrativa e um sistema de NLP. Mas o estado real do jogo continua na engine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vou pular o detalhamento da estrutura codificada porque ela pode ser mudada completamente. Pode ser adaptada para diversos modelos funcionais e cada desenvolver pode ter a sua vis\u00e3o de como um <strong>parser <\/strong>tradicional deve parecer para o usu\u00e1rio. Mas vou fornecer aqui um fonte completo, para o experimento da mat\u00e9ria anterior, em html e (<strong>ATEN\u00c7\u00c3O<\/strong>) para uso e teste local, ou seja, no seu pr\u00f3prio computador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/tilt.net\/advents-IA\/arqs\/testeIA-01.txt\" target=\"_blank\" rel=\"noreferrer noopener\">Clique aqui<\/a><\/strong> e baixe o arquivo <strong><a href=\"https:\/\/tilt.net\/advents-IA\/arqs\/testeIA-01.txt\" target=\"_blank\" rel=\"noreferrer noopener\">testeIA-01.txt<\/a><\/strong> e em seguida mude a extens\u00e3o para <strong>.html<\/strong>, para que o arquivo rode localmente. Vai funcionar mas n\u00e3o vai processar nada e a raz\u00e3o para isso \u00e9 bem simples: para usar a app integrada do <strong>ChatGPT <\/strong>\u00e9 preciso ter uma chave ou <strong>OPENAI_API_KEY <\/strong>e isso custa algum dinheiro.<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-117aca46b732a17980bbc907d5ef8280 wp-block-paragraph\" style=\"color:#045685\"><strong>\/\/ SUA CHAVE OPENAI<br>const OPENAI_API_KEY = &#8220;COLOQUE_SUA_CHAVE_AQUI&#8221;;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Obter uma <strong>KEY <\/strong>\u00e9 relativamente simples e o gasto para experimentos \u00e9 irris\u00f3rio. A <strong>KEY <\/strong>do <strong>IndieLab<\/strong>, que \u00e9 livre dentro do nosso experimento e j\u00e1 teve mais de <strong>4.200<\/strong> inputs, gastou at\u00e9 aqui aproximadamente $0.01.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outro ponto interessante \u00e9 que podemos escolher qual vers\u00e3o do <strong>ChatGPT <\/strong>ser\u00e1 usada no nosso jogo e isso, na pr\u00e1tica, impacta o jogo com diferentes comportamentos e custos. Influencia diretamente a qualidade da narrativa, a velocidade, o custo, a coer\u00eancia, o tamanho das respostas e a capacidade de interpretar comandos. As principais vers\u00f5es s\u00e3o:<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-8d3743e319286f2dfcabd1af0d4d06fd wp-block-paragraph\" style=\"color:#045685\"><strong>body: JSON.stringify({<br>model:&#8221;gpt-4.1-mini&#8221;,<br>\u2026<br>temperature:0.2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GPT-4o-mini<\/strong> &#8211; muito r\u00e1pido, muito barato, leve, excelente para parser, respostas curtas e menos &#8220;liter\u00e1rio&#8221;. Ideal para interpretar comandos, identificar inten\u00e7\u00f5es e converter texto em JSON. Exemplo:<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-7098eb571aa5f8e80a611757b9a61fce wp-block-paragraph\" style=\"color:#045685\"><strong>&#8220;eu for\u00e7o a porta com a barra&#8221;<br>   &#8220;intent&#8221;:&#8221;usar&#8221;,<br>   &#8220;item&#8221;:&#8221;barra&#8221;,<br>   &#8220;target&#8221;:&#8221;porta&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pontos fracos: narrativa menos sofisticada &#8220;<strong>Voc\u00ea abre a porta<\/strong>&#8221; em vez de &#8220;<strong>A ferrugem estala enquanto a porta cede lentamente<\/strong>&#8220;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GPT-4.1-mini<\/strong> &#8211; mais inteligente e consistente que o <strong>4o-mini<\/strong>. Melhor compreens\u00e3o contextual e coer\u00eancia l\u00f3gica. Excelente para parser complexo, puzzles, interpreta\u00e7\u00e3o sem\u00e2ntica e di\u00e1logos controlados. Exemplo:<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-205e074dd670c0bf0bf39417ae02aa69 wp-block-paragraph\" style=\"color:#045685\"><strong>&#8220;amarro a toalha na ma\u00e7aneta para impedir barulho&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta vers\u00e3o entende melhor a inten\u00e7\u00e3o indireta, a a\u00e7\u00e3o contextual e o objetivo impl\u00edcito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GPT-4.1<\/strong> &#8211; primeira vers\u00e3o realmente narrativa, que destaca a boa escrita, a atmosfera, a emo\u00e7\u00e3o e o ritmo. Exemplo: em vez de &#8220;<strong>A sala est\u00e1 escura<\/strong>&#8221; ela pode gerar &#8220;<strong>A escurid\u00e3o parece engolir os cantos do laborat\u00f3rio<\/strong>&#8220;. Embora mais cara que as anteriores, \u00e9 ideal para narrativa cinematogr\u00e1fica, terror, fic\u00e7\u00e3o interativa e di\u00e1logos dram\u00e1ticos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GPT-5-mini<\/strong> &#8211; \u00e9 o melhor custo\/benef\u00edcio atual. Esta vers\u00e3o j\u00e1 escreve muito bem, entende contexto, \u00e9 r\u00e1pida e relativamente barata. Excelente para narrativa procedural, NPCs, texto din\u00e2mico, atmosfera e adventures modernos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GPT-5<\/strong> &#8211; \u00e9 a vers\u00e3o mais sofisticada e se parece mais com um escritor, diretor narrativo ou mestre de <strong>RPG<\/strong>. Exemplo: ao inv\u00e9s de &#8220;<strong>O corredor est\u00e1 escuro.<\/strong>&#8221; a resposta pode ser &#8220;<strong>O corredor estreito parece silencioso demais, como se o pr\u00e9dio estivesse prendendo a respira\u00e7\u00e3o.<\/strong>&#8220;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00f3 falta &#8220;calibrar&#8221; a IA escolhida e a instru\u00e7\u00e3o que far\u00e1 isso \u00e9 a &#8220;<strong>temperature<\/strong>&#8220;. Ela controla o grau de criatividade\/imprevisibilidade das respostas da IA. Ela n\u00e3o muda a intelig\u00eancia do modelo. Ela muda o quanto ele &#8220;arrisca&#8221;, varia frases, improvisa, repete padr\u00f5es e inventa associa\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De modo resumido, temperatura baixa indica texto mais t\u00e9cnico, previs\u00edvel, consistente, seco, repetitivo e l\u00f3gico. Temperatura alta resulta em texto criativo, atmosf\u00e9rico, variado, dram\u00e1tico e menos previs\u00edvel. Exemplo: prompt &#8220;<strong>Descreva um corredor escuro<\/strong>&#8220;. Temperatura 0.1 = &#8220;<strong>O corredor est\u00e1 escuro e silencioso.<\/strong>&#8220;. Temperatura 0.5 = &#8220;<strong>O corredor escuro parece abandonado h\u00e1 anos.<\/strong>&#8220;. Temperatura 1.5 (muito alta) a IA pode exagerar na resposta, viajar na maionese, perder coer\u00eancia ou criar frases estranhas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para o <strong>ChatGPT<\/strong>, o ranking das temperaturas seria:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>0.0<\/strong>         quase determin\u00edstico<br><strong>0.1\u20130.3<\/strong>   parser\/sistemas<br><strong>0.4\u20130.7<\/strong>  di\u00e1logo natural<br><strong>0.7\u20131.0<\/strong>    narrativa rica<br><strong>1.0\u20131.3<\/strong>     experimental<br><strong>1.4+<\/strong>         ca\u00f3tico<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Truquesinho maneiro: \u00e9 poss\u00edvel trocar a temperatura em modo de execu\u00e7\u00e3o e portanto criar &#8220;climas&#8221; diferentes na sua aventura.<\/p>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-892beedf60a02017e4a611408fa29abf wp-block-paragraph\" style=\"color:#045685\"><strong>if(cena == &#8220;terror&#8221;){ temperature = 0.9;<br>} else if(cena == &#8220;dialogo&#8221;){ temperature = 0.5;<br>} else{ temperature = 0.3; }<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quase <strong>45 <\/strong>anos depois de fazer meu primeiro <strong>adventure<\/strong>, usando <strong>VERBO+OBJETO<\/strong> no <strong>parser<\/strong>, n\u00e3o posso deixar de confessar uma coisa:  vou precisar de mais <strong>45 <\/strong>anos para testar tudo o que quero testar, nessas narrativas interativas by IA. <strong>Holodeck<\/strong>, te encontro j\u00e1 j\u00e1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Integrar a IA a um adventure \u00e9, na pr\u00e1tica, transform\u00e1-la em um interpretador narrativo, entre o jogador e o motor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2569,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[613],"class_list":["post-2568","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sem-categoria","tag-indielab"],"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2568"}],"version-history":[{"count":1,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2568\/revisions"}],"predecessor-version":[{"id":2571,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2568\/revisions\/2571"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=\/wp\/v2\/media\/2569"}],"wp:attachment":[{"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/indiebrasilis.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}