Entrada de Eddie
Eddienput (pronuncia-se "edd-input") é um controlador virtual programável que visa principalmente aprimorar o modo de treinamento para todos os jogos de luta no PC.
Pré-requisitos:
Instale ViGEmBusSetup_x64.msi (fornecido com o programa)
Instruções de construção:
- Nota : Esta parte é principalmente para desenvolvedores, os usuários podem simplesmente obter a versão mais recente na página de lançamentos.
- Clone o repositório para alguma pasta local
- Instale Python 3.12
- Instale Poesia
-
cd
no diretório raiz do repositório clonado - Execute
poetry shell
- Execute
./build.bat
O diretório distribuível contendo o executável Eddienput deve ser encontrado em /dist/Eddienput
Uso:
O cenário de uso mais comum seria definir reproduções/mixagens em um arquivo de reproduções, carregar o arquivo e reproduzi-lo. Você pode fazer isso seguindo estas etapas:
- Inicie Eddienput.exe com seu próprio controlador já conectado (um segundo controlador virtual deve ser conectado quando o programa for iniciado)
- Defina playbacks/mixups em um arquivo de playbacks (formato txt) conforme sintaxe descrita abaixo, salve-o e carregue o arquivo de playbacks no programa (arrastar e soltar)
- Agora entre no modo de treinamento do seu jogo e selecione "controlador" como ação simulada. Se o jogo solicitar que pressione start no controle P2, pressione a tecla "home" no teclado para simular o pressionamento de start no controle virtual (obrigatório em alguns jogos)
- Agora você pode pressionar F3 no teclado ou um botão mapeado no controlador para reproduzir a reprodução simulando o pressionamento de botões no controlador P2
Você também pode compartilhar seus arquivos de reprodução com outros jogadores da sua comunidade para compartilhar combos, mixagens e muito mais. Você pode encontrar alguns exemplos de arquivos de reprodução na pasta playbacks.
Teclas de atalho:
- Lado do Jogador 1 - F1
- Lado do Jogador 2 - F2
- Sequência de reprodução - F3 / Personalizado
- Sequência de parada - F4
- Recarregar Script - F5
- Diminuir número de repetições - F6
- Aumentar o número de repetições - F7
- Alternar som de início/fim da sequência - F8
- Botão de reprodução do mapa - F9
- Pressione Iniciar no controlador P2 - tecla Home
- Pressione Selecionar no Controlador P2 - Tecla Finalizar
- Alternar controle manual P2 (para mapeamento) - tecla Inserir
Hoykeys podem ser suprimidos alternando Suppress Hotkeys
na janela da GUI.
Notação:
- # - Iniciar uma linha de comentários
- Número W - Aguarde um certo número de frames ( o número é um número inteiro positivo)
- X - Toque em X e solte o próximo quadro
- [ X ] - Segure X
- ] X [ - Liberar X
- Nota - Para direções, se você quiser mudar diretamente da direção retida para outra direção retida, não libere a direção retida no meio. Por exemplo, se você quiser ir de baixo para frente, basta fazer
[2] W10 [6]
em vez de [2] W10 ]2[+[6]
- **O acima não é válido se as instruções forem mapeadas para teclas do teclado (experimental)
- + - Adicione entrada ao mesmo quadro
Exemplo:
configsgg.json
# <- Indicates this line is a comment and is ignored by the parser
# The assumed game for this example is Guilty Gear XRD Rev2
# The first line (configgg.json) indicates that we use the symbols and mappings defined in that file (that fit Guilty Gear notation)
# In the next line, we tell the dummy to perform a Gunflame (Asumming Sol Badguy is selected as P2), and then wait 60 frames (one second)
2 3 6+P W60
# Now dash forward (tap forward, wait one frame, then hold forward) for 20 frames and then stop (release forward)
6 W1 [6] W20 ]6[
# Now enter IK mode
K+P+S+H
Confusões:
- Mixups consistem em diversas opções definidas pelo usuário, uma das quais é escolhida aleatoriamente com base nos pesos das opções
- Uma linha que consiste na palavra-chave startmix indica o início de uma definição de mixup
- As opções são definidas com uma linha que consiste na palavra-chave option opcionalmente seguida por um peso (número inteiro não negativo)
- O peso padrão de uma opção é 1
- As ações nas linhas seguintes à opção serão executadas se a opção for escolhida
- Feche a definição de mixup com uma linha que consiste na palavra-chave endmix
- Mixups aninhados não são suportados
Exemplo:
configsgg.json
# Classic Eddie high/low mixup (assuming Guilty Gear Accent Core +R)
# Fixed Mawaru setup (always performed)
2 3 6 H W4 [K] W11 ]K[ W20
# Start defining a mixup (Indentation is optional but recommended for readability)
startmix
# Now one of the following options will be performed:
# 1) dash 6K option (overhead) - 60% to be performed:
option 60
6 W1 [6] W10 K
# 2) dash 5K option (low) - 40% to be performed:
option 40
6 W1 [6] W10 ]6[ W9 K
endmix
# Can now add more actions to be performed after the initial mixup ended (including other mixups)
Looping:
- As ações podem ser repetidas várias vezes definindo um loop
- Uma linha que consiste na palavra-chave startloop seguida pelo número de repetições (um número inteiro positivo) indica o início de uma definição de loop
- As ações nas linhas seguintes à definição do loop serão repetidas pelo número de repetições definido
- Feche a definição do loop com uma linha que consiste na palavra-chave endloop
- As mixagens definidas dentro de um loop devem ser fechadas antes de sair do loop
- Loops podem ser definidos dentro de mixagens, desde que a mixagem não termine dentro do loop
- Loops aninhados não são suportados
Exemplo:
configssf.json
# The assumed game for this example is Street Fighter 5 with Ken as P2
# Perform heavy tatsu 5 times waiting 180 frames (3 seconds) between each:
# Indentation is optional (recommended for readability)
loop 5
2 1 4+HK W180
endloop
# End with an ex shoryuken
6 2 3+MP+HP
Arquivos de configuração:
Você pode definir símbolos, reatribuir símbolos a outros botões e configurar macros em um arquivo de configuração JSON (consulte configsgg.json para obter um exemplo).
A primeira linha de um arquivo de reprodução deve ser sempre o caminho (absoluto ou relativo) do arquivo de configuração a ser utilizado.
Símbolos reservados:
- Número W
- +
- start mix
- opção
- mistura final
- [
- ]
- laço
- loop final
Botões do controlador virtual suportados para mapear um símbolo para:
Clique para expandir
- "BtnA"
- "BtnB"
- "BtnX"
- "BtnY"
- "BtnOmbroR"
- "BtnOmbroL"
- "BtnVoltar"
- "BtnIniciar"
- "TriggerR"
- "GatilhoL"
- { "Dpad": "para baixo" }
- { "Dpad": "esquerda" }
- { "Dpad": "certo" }
- { "Dpad": "para cima" }
- { "Dpad": "down_left" }
- { "Dpad": "down_right" }
- { "Dpad": "up_left" }
- { "Dpad": "up_right" }
Botões do teclado virtual suportados para mapear um símbolo (experimental):
Clique para expandir
- 'mudança'
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '9'
- 'um'
- 'b'
- 'c'
- 'd'
- 'e'
- 'f'
- 'g'
- 'h'
- 'eu'
- 'j'
- 'k'
- 'eu'
- 'eu'
- 'e'
- 'o'
- 'p'
- 'q'
- 'r'
- 'é'
- 't'
- 'você'
- 'v'
- 'c'
- 'x'
- 'você'
- 'z'
- 'numpad_enter'
- 'teclado numérico_1'
- 'numpad_2'
- 'teclado numérico_3'
- 'numpad_4'
- 'teclado numérico_5'
- 'numpad_6'
- 'numpad_7'
- 'teclado numérico_8'
- 'numpad_9'
- 'numpad_0'
- '-'
- '+'
- 'esquerda'
- 'acima'
- 'certo'
- 'abaixo'
- 'espaço'
- 'digitar'
Gravação:
O programa pode ouvir as entradas do controlador e gerar arquivos de reprodução Eddienput. Um controlador deve estar conectado quando o programa é iniciado para ativar esse recurso.
A gravação é iniciada pressionando F10 no teclado. Uma vez interrompido pressionando o botão de seleção no controlador, as entradas gravadas serão gravadas em um arquivo de reprodução. O arquivo json de configuração de gravação carregado determina os símbolos para os quais cada botão será traduzido, que deve corresponder aos símbolos definidos no arquivo de configuração para o arquivo de reprodução gerado. Se o arquivo de configuração de gravação carregado não definir um mapeamento entre um botão e um símbolo, esse botão será ignorado. Consulte rec_configs/rec.json
ou rec_configs/rec_bb.json
para obter exemplos.
Outros:
Reproduzindo sons
- "beep" - Toca um sinal sonoro
Exemplo:
configsgg.json
# Assuming Guilty Gear Accent Core +R with Eddie as P2, Perform Eddie's reversal super and beep right when a slashback should be inputted
6 3 2 1 4 6+H W63 beep
Para associar um símbolo a alguma sugestão de áudio, no arquivo de configuração adicione um mapeamento do símbolo para seu respectivo arquivo .wav
(veja configsgg.json
para obter um exemplo).
Arquivo de configuração geral
Além do arquivo de configuração específico do plyaback, Eddienput também carrega algumas configurações de um arquivo de configuração geral em seu diretório config.json
quando é inicializado. As configurações que podem ser definidas são:
-
playback
: um caminho para um arquivo de reprodução a ser carregado quando o programa é iniciado. -
playback_start_end_sound
: definido como true
ou false
, define se um som deve ser reproduzido quando uma reprodução começa/termina. -
hot_reload
: definido como true
para false
, define se o arquivo de reprodução deve ser recarregado automaticamente durante a reprodução. -
side
: definido como P1
ou P2
, define qual lado do player usar quando o programa for inicializado. -
record_to
: Defina o local padrão para gravar. -
rec_config
: um caminho para a configuração padrão a ser usada para gravação.
Problemas conhecidos:
KOF2002UM:
- As entradas são inconsistentes quando os símbolos são mapeados para um controlador virtual. Eles são mais consistentes quando mapeados para teclas do teclado (use
configskof_keyboard.json
)
Núcleo de acento Guilty Gear +R:
- Teclas de movimento P2 não reconhecidas quando mapeadas para teclas do teclado (use
gg.json
). Se você é tecladista, execute duas instâncias do programa ao mesmo tempo (ou conecte algum controlador real, se tiver um) para que o segundo controlador virtual seja tratado como P2.
Touhou 7.5: Suimusou – Poder Imaterial e Ausente
- O mapeamento para as teclas de seta do teclado não funciona. Atribua as teclas de movimento do jogo para P2 a algumas outras teclas (consulte configsiamp_keyboard.json)
Mapeando o botão play para um botão do controlador
- Suportado apenas em controladores XInput. Se você usar um pad PS4, uma possível solução seria usar DS4Windows
Entradas inconsistentes:
- Recomenda-se desativar o suporte ao controlador Xbox do Steam, pois isso introduz inconsistências de entrada (isso provavelmente se aplica aos controladores XInput em geral)