jptrrs / SpeakUp

A conversation mod for RimWorld
4 stars 23 forks source link

Respostas dadas fora de hora. #7

Closed sergiodinapoli closed 3 years ago

sergiodinapoli commented 3 years ago

Tranquei todo mundo numa region. Ainda há comportamentos esquisitos, mas acho que consegui fotografar um especificamente. Anexei o log completo do jogo bem como F12. Um solta um chitchat, mas o outro responde com um Ensue oportuno, so que duas vezes. Pelo menos, nao estou observando aquela disparada maluca de baloes --- isso faz tempo que nao vejo. Mas estou vendo repetições indevidas e/ou Ensues que surgem do nada, sem aparente motivo. Como se:

Espero ter fornecido um buglog apropriado. Confesso que se sair um erro vermelho, ai é facil. Mas neste caso, nao sei bem e fico sem saber, ai vou "chutando" um modo de relatar bug. Estou bem pronto a ouvir suas dicas sobre como melhor "capturar" bugs "brancos" como este.

Em breve vou colocar meus XMLs mais recentes. Estou "reformando" os XMLs de modo a sempre ter uma opção válida e/ou uma opção default. Inclusive ajuda a produzir texto sem se perder.

buglog.txt F12log.txt image

sergiodinapoli commented 3 years ago

Testei mais. Até o momento, o padrão é: solta 1 chitchat, responde um numero aleatorio de Ensue. Esses ensues sao corretos, apenas o numero de ensue esta' errado. A novidade que vi agora é que uma mesma interaçao (usando mesmas linhas de XML) aconteceu tres vezes. Na primeira, houve 3 ensues de resposta. Na segunda, houve 2 ensues de resposta. Na terceira, houve 1 ensue de resposta.

Esse comportamento excluiria um problema de XML, pois usando o mesmo codigo XML (mesmas condiçoes iniciais de disparo), o C# reagiu com um numero random de Ensue. Pelo menos acho que podemos deduzir isso.

O padrao 3,2,1 agora visto acho que foi na sorte. O que observei é que o numero de ensue parece random. Antigamente, havia um disparo louco de ensues, agora o ensue é disparado um numero excessivo de vezes, mas sempre um numero finito.

sergiodinapoli commented 3 years ago

Para garantir que nao fosse correlato ao sagrado uso de wildcards (sem o qual, tudo cairia no nada), botei um default simplorio:

  • r_logentry(tag=test)->Bunda ambulante...
  • E depois no outro XML coloquei o equivalente com:

  • r_logentry->Coração pulsante!
  • Acabo de ver que - "do nada" - um pawn falou varias vezes "Coração pulsante!" sem ser solicitado. Ou pelo menos assim parece. Fiquei na duvida se te mandar log disso tudo.. mas de toda forma, acho que agora esse bug é tao pervasivo que so de voce começar qualquer teste, aparece. E' un bugzao facil de ver.

    O que consta em geral é que Ensue é disparado bem mais que chitchat, quando o previsto seria 1 ensue a cada 1 chitchat. Ah, to sempre botando todo mundo numa "gaiola" na mesma region.

    sergiodinapoli commented 3 years ago

    Mais uma obs. Parece que há uma sequencia frequente: fase 1) um Chitchat tem zero Ensues (todo mundo na mesma region, como sempre) fase 2) surge uma metralhada (finita) de Ensue indevida (com assunto errado, inclusive)

    sergiodinapoli commented 3 years ago

    uma sensaçao geral que tive é que ... até dar erro, ta tudo fino. Mas quando começa a descarrilhar, nunca mais volta a funcionar direito. Outra coisa: liberar distancia nao solucionou a coisa, se apresentou mesmo assim.

    sergiodinapoli commented 3 years ago

    Tenho uma certa percepção de que se o pawn previsto para o Ensue esteja ocupado em algum job, a chance de descarrilhar a conversa é maior.

    jptrrs commented 3 years ago

    Vamos lá.

    Primeiro, sobre as informações, os dois logs que vc anexou foram muito úteis! Mas são bem parecidos, sendo que o do F12 subtrai o rodapé de cada mensagem - que indica o caminho no código de onde aquilo saiu - mas inclui toda lista de mods e patches que estão ativos no seu sistema no momento. Normalmente só um deles já resolve, sendo que eu prefiro do HugsLib (F12). Agora, faltou você me mostrar o XML do "unskilled_in_construction" que estava na berlinda, de modo que eu só conheço a interpretação do C#, não a fonte original. E eu vou ter que dar uma olhada nisso.

    Por acaso outro dia esbarrei nas instruções que outro modder escreveu para ajudar as pessoas a relatar problemas. Pode ser uma boa leitura pra vc. Veja como muito do que eu te falei está lá também: https://steamcommunity.com/sharedfiles/filedetails/?id=725234314

    No mais, precisamos estabelecer um jeito de eu reproduzir esse bug. Resumindo o que entendi do contexto até agora (me corrija se eu estiver errado):

    1. Parece que é aleatório, mas se repete uma vez que tenha acontecido pela primeira vez. Precisa confirmar se é sempre assim.
    2. Parece acontecer quando o pawn está ocupado em alguma tarefa. Precisa confirmar também, e precisamos definir se trata-se do pawn que começou a conversa ou do que está repetindo.
    3. Não tem relação com a distância.

    Se o primeiro item for confirmado, pode ser que algum controle tenha falhado em um determinado ponto. Fique de olho se há algum erro no momento em que isso começa a acontecer. Eu procurei no seu log, mas ele tem uns 3 ou 4 pares de pawns conversando, e não dá pra saber exatamente se todas as conversas estava repetindo ou se foi só essa última fala. O item 2 pode ser relevante de alguma forma. Vale a pena checar o INITIATOR_jobDefName logado quando o erro acontecer.

    O que eu posso fazer, que talvez ajude, é dar um jeito de incluir no nosso relatório de resolução a contagem de respostas dadas. Isso talvez ajude a jogar uma luz.... Vou tentar isso da próxima vez que for mexer no código.

    sergiodinapoli commented 3 years ago

    Nao sei se ajuda, mas comecei a usar muito force interaction para focar os testes. E descobri que nao raramente o force interaction simplesmente nao leva a nada. Nada acontece. Nao tem nem o que mandar de log, pois absolutamente nada acontece nem mesmo no log.

    Forcei entre dois pawns relativamente proximos (outdoor) e que estavam à toa, forcei chitchats. Same region restriction ta' off.

    Edit: ja é tarde, mas... talvez teria sido bom te passar pelo menos o F12 e o savegame?

    jptrrs commented 3 years ago

    As interações só acontecem se o pawn estiver à toa. Notei isso com os logs: o CurrentJob é sempre o mesmo: wandering. Acho que é por isso.

    On Wed, Apr 28, 2021 at 11:06 AM sergiodinapoli @.***> wrote:

    Nao sei se ajuda, mas comecei a usar muito force interaction para focar os testes. E descobri que nao raramente o force interaction simplesmente nao leva a nada. Nada acontece. Nao tem nem o que mandar de log, pois absolutamente nada acontece nem mesmo no log.

    Forcei entre dois pawns relativamente proximos (outdoor) e que estavam à toa.

    — You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/jptrrs/SpeakUp/issues/7#issuecomment-828484504, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALHBNPTXKY2O6XCAK2R2T5DTLAI6TANCNFSM43MXEDSQ .

    sergiodinapoli commented 3 years ago

    Uai entao, talvez tenhamos uma pista?

    E aquelas Ensue nao solicitadas, talevz sejam "ecos do passado"? chitchat nao respondidos outrora (devido ao bugzao) e posteriormente recuperados?

    jptrrs commented 3 years ago

    Me ajuda a organizar a cabeça: com o issue #9 em separado, o que ficou para resolver aqui? Parece que tem duas coisas:

    1. respostas que não são dadas.
    2. repostas dadas fora de hora, muito tempo depois ou sem que tenha havido uma interação inicial.

    É isso, ou tem algo mais?

    sergiodinapoli commented 3 years ago

    Primeiramente, esse issue foi aberto antigamente - quando ainda eu era inocente e desinformado das coisas da vida. :-) Por isso que ficou um pouco caotico. Quanto às perguntas:

    1. isso vc ja esclareceu que nao tem muito o que fazer, pois depende do chitchat original; como a resposta é um chitchat, esta às vezes pode nao acontecer, ainda que os pawns se gostem. (falei certo? ou daria pra consertar de fato?)
    2. isso é 100% verdade; e talvez tenha muito a ver com o issue#9

    Além disso, nao tem demais itens problematicos.

    jptrrs commented 3 years ago

    Primeiramente, esse issue foi aberto antigamente - quando ainda eu era inocente e desinformado das coisas da vida. :-) Por isso que ficou um pouco caotico.

    Sem galho! É só para a gente peneirar o que restou mesmo.

    1. isso vc ja esclareceu que nao tem muito o que fazer, pois depende do chitchat original; como a resposta é um chitchat, esta às vezes pode nao acontecer, ainda que os pawns se gostem. (falei certo? ou daria pra consertar de fato?)

    Não é bem que depende do original, é que cada resposta é uma interação e o pawn tem condições para poder começar uma interação. Não dá pra "consertar" porque não é um erro. Daria para modificar o comportamento normal do jogo, mas aí foge do escopo da garantia do que já está feito (e, potencialmente, poderia causar outros problemas em outras partes do jogo. Seria algo para fazer com cuidado.)

    isso é 100% verdade; e talvez tenha muito a ver com o issue#9

    Ok, então no frigir dos ovos, esse é o issue remanescente!