Atualização do The Sims 4 base muda como mods lidam com parentesco, e a Árvore Genealógica passa a cuidar do resto
Olá meu povo!
O perfil @EA_Cade, da equipe da EA, publicou no fórum oficial de The Sims 4 um aviso importante para quem cria mods. O post explica as principais mudanças que vão chegar na atualização do The Sims 4 base do dia 3 de fevereiro, focadas no código em Python que controla as relações de família entre Sims. A ideia é ajudar os criadores a se prepararem com antecedência, atualizarem seus mods e evitarem problemas para a galera que joga com eles.
Olá, simmers,
para a próxima atualização do The Sims 4 base em 3 de fevereiro, a equipe modificou o código em Python usado para definir e verificar relações de família entre Sims. Algumas classes mudaram o comportamento para combinar melhor com os novos objetivos de genealogia, alguns métodos mudaram de nome e de “formato”, e alguns campos configuráveis (tunables) mudaram de tipo para ficar alinhados com a nova arquitetura.
Isso não é uma lista completa de todas as mudanças de código, mas sim as mudanças que têm mais chance de impactar bastante o funcionamento de mods.
Como é uma mudança grande em vários sistemas, a equipe quis dar o máximo de detalhes com antecedência para ajudar você a atualizar seus mods e diminuir a dor de cabeça para os simmers que usam eles. Eles também disseram que o feedback é bem-vindo pelos comentários. E lembraram que dá para ver a Política de Mods do The Sims 4 no link oficial.
Mudanças de lógica
Pontos principais:
- O objeto SimInfo continua expondo a interface principal em Python para definir as relações familiares existentes do Sim com outros Sims (existentes e também Sims que já foram removidos do save). A interface mudou um pouco, veja abaixo.
- O objeto GenealogyTracker dentro do SimInfo continua expondo a interface principal em Python para verificar as relações familiares existentes do Sim com outros Sims (existentes e também Sims que já foram removidos do save). A interface mudou um pouco, veja abaixo.
- A partir da atualização do The Sims 4 base ligada ao pacote Royalty & Legacy, não vai ser possível definir em Python nenhuma relação familiar além de pais diretos e relações de parceiro/cônjuge para objetos SimInfo existentes. Qualquer outro tipo de relação familiar (indireta), como irmãos, avós, primos, parentes por casamento, sogros, padrastos/madrastas, enteados etc, vai ser deduzida automaticamente e gerenciada pela nova Family Tree Service, e não vai mais poder ser definida diretamente, nem por código e nem por tuning (loots, modelos de casa, etc).
- A Family Tree Service mantém um grafo de árvore genealógica persistente, que sempre cresce, para todos os Sims no save. Ela mantém os dados de Sims mortos mesmo depois que eles são removidos do save (a menos que tenham sido deletados manualmente no CAS). Ela substituiu totalmente o genealogy_cache. Cada “nó” do grafo é um Sim vivo ou que já viveu, e cada “ligação” do grafo é ou uma relação pai/filho ou um casamento.
- Em todo carregamento, o jogo sincroniza o estado dos SimInfos com o grafo da árvore genealógica no save e com os relbits de família entre todos os Sims relacionados.
- A ordem da sincronização é a seguinte:
- Quaisquer relações familiares antigas registradas no GenealogyTracker, que não sejam relações diretas de pais, vão ser usadas só para “portabilidade” entre Python e o cliente do jogo. Apenas relações diretas de pais vão ser usadas como fonte de verdade para o grafo da Árvore Genealógica durante a sincronização no carregamento.
- Quaisquer relbits de família que não tenham uma relação correspondente representada no grafo da árvore genealógica durante o carregamento vão ser arquivados e removidos do jogo.
- Para dar compatibilidade melhor com saves antigos, que podem ter sido alterados por cheats e mods, o jogo tenta reconstruir pais “desconhecidos” no grafo da árvore genealógica para irmãos sem pais e para netos sem pais, usando apenas os relbits, para manter válidas as relações com esses irmãos e avós depois da atualização do The Sims 4 base ligada ao Royalty & Legacy. Isso sempre prioriza segurança, então não vai rodar em todos os casos.

Mudanças na API Python
O código abaixo deve realizar as operações descritas mantendo SimInfo, o grafo da Árvore Genealógica e os relbits sincronizados, se for aplicado corretamente. Quaisquer outras formas de modificar e obter relações familiares provavelmente vão dar resultados inesperados e aumentam as chances de quebrar saves.
Definindo um pai/mãe
Você só pode definir um pai/mãe para um SimInfo novo, que não tenha nenhuma relação familiar ainda. Você pode fazer isso duas vezes para definir os dois pais.

AVISO: Definir pais do jeito acima não faz nenhuma checagem de idade apropriada e nem de diferença de idade entre pai/mãe e filho. Isso é responsabilidade de quem está chamando o método. Definir um pai/mãe mais novo do que o filho não é recomendado e pode causar vários problemas inesperados.
Pegando/Definindo cônjuge (parceiro)

AVISO: Definir cônjuge do jeito acima não faz nenhuma checagem de idade e nem de restrições de romance inadequado. Isso é responsabilidade de quem está chamando o método, para identificar um par de Sims apropriado para casamento.
Obtendo parentes
Os métodos de genealogia a seguir retornam “geradores” de IDs para os grupos de Sims relacionados ao sim_info. Só que você precisa ter um sim_info válido para rodar esses métodos, então isso não vai funcionar se você só tiver o ID de um Sim que já foi removido do save (veja “Navegando na Árvore Genealógica” abaixo).

Navegando na Árvore Genealógica (somente leitura)
O método traverse() do grafo da Árvore Genealógica permite que o código navegue pela árvore inteira começando pelo ID do Sim passado como primeiro parâmetro. Por padrão, ele atravessa todos os nós ligados, incluindo os que correspondem a Sims que já foram removidos do save (que não têm sim_info nesse save).
Cada nó visitado é um Sim vivo ou que já viveu, e cada ligação do grafo é ou uma relação pai/filho ou um casamento. Quem chama pode ajustar a profundidade máxima da navegação com o parâmetro opcional max_depth (por padrão é 10). Também dá para escolher quais ligações não atravessar usando uma função passada no parâmetro edge_filter_function.
O acesso aos dados do nó acontece na função “visitante” passada pelo chamador no parâmetro visitor_function. Veja abaixo os campos do FamilyTreeNode disponíveis para leitura.
AVISO: visited_node e analyzed_edge são referências aos dados reais do grafo da Árvore Genealógica na memória. Em nenhuma circunstância mude dados dentro desses objetos. Se mexer, isso quebra a sincronização entre o grafo e o resto do save, e pode corromper o save.
Quem chama também pode escolher a ordem da navegação, DEPTH_FIRST ou BREADTH_FIRST, usando o parâmetro traversal_mode.

Na função de filtro de ligações, as seguintes “flags” de bits vão aparecer combinadas na máscara analyzed_edge.edge_data:

Mudanças relacionadas a tuning (configurações)
Não é permitido usar relationship loots em tunings para definir relbits de família além de pais.
Não é permitido usar Relationship Map no tuning premade_sim_relationships para montar relações de família entre Sims pré-criados. Em vez disso, deve ser usado o novo Family Relations Fixup se relações de família precisarem ser criadas entre casas. Para relações dentro da mesma casa entre premades, o tuning de household template continua sendo usado como antes.
Os seguintes tunables (campos) mudaram nos seguintes tipos de tuning:
- whims.whim_set.GeneTargetFactory: “relationship” agora é RelationshipType em vez de FamilyRelationshipIndex.
- filters.tunable.GenealogyFilterTerm: “family_relationship” agora é RelationshipType em vez de FamilyRelationshipIndex.
- aspirations.aspiration_tuning.AspirationFamilialTrigger: “target_family_relationships” agora é RelationshipType em vez de FamilyRelationshipIndex.
…
No fim das contas, essa mudança deve deixar a árvore genealógica do The Sims 4 base mais “arrumada” e confiável, porque o jogo vai cuidar sozinho de parentescos como irmãos, avós e primos. Para quem joga, isso pode significar menos bugs esquisitos de família e mais consistência no save. Mas, para quem cria mods, a tendência é ter um impacto grande no começo, já que vários mods que mexem com relações familiares vão precisar de atualização e podem quebrar logo depois do patch.
E aí, você curtiu essas mudanças?
Para não perder novidades do mundo Simmer, siga @cidadedossims e acompanhe @elvisplaylive nas lives e gameplays. Ou participe do nosso Discord, Facebook e WhatsApp.
💡 Apoie o Cidade dos Sims! Se você for comprar o The Sims 4 Trono e Glória - Bundle Grandioso, considere usar nosso código na EA App: elvisplaylive








