[{"data":1,"prerenderedAt":142},["ShallowReactive",2],{"blog-llms-no-jogo-com-csharp-pt-BR":3},{"id":4,"title":5,"body":6,"date":131,"description":132,"extension":133,"lang":134,"meta":135,"navigation":136,"path":137,"seo":138,"stem":139,"translationKey":140,"__hash__":141},"blog\u002Fblog\u002Fllms-no-jogo-com-csharp.md","Construindo um Narrador com LLMs para The Sims 3",{"type":7,"value":8,"toc":125},"minimark",[9,14,23,27,47,70,74,91,95,110,121],[10,11,13],"h2",{"id":12},"o-problema","O problema",[15,16,17,18,22],"p",{},"The Sims 3 tem um sistema de pensamentos simples — balões com ícones. A ideia era substituir isso por ",[19,20,21],"strong",{},"narrativas geradas por IA"," em tempo real, usando o estado do jogo como contexto.",[10,24,26],{"id":25},"a-solução","A solução",[15,28,29,30,34,35,42,43,46],{},"O mod intercepta eventos do jogo (refeição, conversa, trabalho) via hooks de C# no ",[31,32,33],"code",{},".NET Framework 3.5",", formata um prompt e envia para uma API local do ",[36,37,41],"a",{"href":38,"rel":39},"https:\u002F\u002Follama.com",[40],"nofollow","Ollama"," rodando o modelo ",[19,44,45],{},"Gemma 2B",".",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-csharp shiki shiki-themes github-light github-dark","var prompt = $\"O personagem {sim.Name} acabou de {evento}. Gere um pensamento curto e em primeira pessoa.\";\nvar resposta = await OllamaClient.GenerateAsync(prompt);\n","csharp","",[31,55,56,64],{"__ignoreMap":53},[57,58,61],"span",{"class":59,"line":60},"line",1,[57,62,63],{},"var prompt = $\"O personagem {sim.Name} acabou de {evento}. Gere um pensamento curto e em primeira pessoa.\";\n",[57,65,67],{"class":59,"line":66},2,[57,68,69],{},"var resposta = await OllamaClient.GenerateAsync(prompt);\n",[10,71,73],{"id":72},"resultados","Resultados",[75,76,77,81,84],"ul",{},[78,79,80],"li",{},"Narrativas únicas por personagem com base em traits e humor",[78,82,83],{},"Latência aceitável (~800ms) com modelos quantizados",[78,85,86,87,90],{},"Arquitetura baseada no paper ",[19,88,89],{},"\"Generative Agents\""," da Stanford",[10,92,94],{"id":93},"aprendizados","Aprendizados",[15,96,97,98,101,102,105,106,109],{},"Trabalhar com LLMs em contexto restrito (jogos em tempo real) exige controle fino de ",[19,99,100],{},"tempo de inferência",", ",[19,103,104],{},"tamanho de contexto"," e ",[19,107,108],{},"fallback"," gracioso para quando o modelo demora demais.",[111,112,113],"blockquote",{},[15,114,115,116,46],{},"Código disponível no ",[36,117,120],{"href":118,"rel":119},"https:\u002F\u002Fgithub.com\u002Fitpzzi\u002FNarradorPorEventosSimsPensantes",[40],"GitHub",[122,123,124],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":53,"searchDepth":66,"depth":66,"links":126},[127,128,129,130],{"id":12,"depth":66,"text":13},{"id":25,"depth":66,"text":26},{"id":72,"depth":66,"text":73},{"id":93,"depth":66,"text":94},"2026-05-20","Como integrei modelos de linguagem locais (Ollama + Gemma) em um mod de C# para The Sims 3, gerando pensamentos e narrativas em tempo real.","md","pt-BR",{},true,"\u002Fblog\u002Fllms-no-jogo-com-csharp",{"title":5,"description":132},"blog\u002Fllms-no-jogo-com-csharp","sims3-llm-narrator","VYGghhmJ-D6WQE1VLQ-sSPtj0QvW_f7pWl4L4gQ9Kew",1779999660725]