GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Como o GMS reconhece o controle do OUYA.

4 participantes

Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Como o GMS reconhece o controle do OUYA.

Mensagem por CRP-Max Qua 04 Set 2013, 09:30

Eu consegui instalar o controle do OUYA no pc, via Bluetooth, fiz toda a calibragem, esta tudo ok, porem o GMS não reconhece ele, nenhum comando de gamepad, funciona, usei este comando para verificar a detecção de um controle no windows, porem ele sempre retorna "Nenhum controle detectado".

Código:
var gp_num = gamepad_get_device_count(); // Isso retorna quantos controles posso ter ao mesmo tempo neste dispositivo, no Windows são 4
 for (var i = 0; i < gp_num; i++;)
    {
    if gamepad_is_connected(i) // Caso algum controle seja detectado
       {
       draw_text(32, 32 + (i * 32), gamepad_get_description(i)); // Aqui deveria aparecer a descrição do controle algo como: OUYA Game Controller
       }
    else
       {
       draw_text(32, 32 + (i * 32), "Nenhum controle detectado");
       }
    }
É mais pratico eu testar o jogo no Windows, para depois passar para o Android, do que ter que compilar só pra teste...
CRP-Max
CRP-Max

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 28/10/2008
Reputação : 29
Número de Mensagens : 822
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por PedroX Qua 04 Set 2013, 12:17

Parece que você precisa selecionar a opção de controle:

Global Game Settings -> Android -> General -> Bluetooth / iCade

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por CRP-Max Qua 04 Set 2013, 17:47

PedroX escreveu:Parece que você precisa selecionar a opção de controle:

Global Game Settings -> Android -> General -> Bluetooth / iCade
Na verdade eu já tinha visto isso, mas estas funções são somente para o Android, não fazem efeito no Windows, e o controle do PS3 também é Bluetooth e funciona normalmente, porém eu queria testar direto no controle do OUYA...
CRP-Max
CRP-Max

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 28/10/2008
Reputação : 29
Número de Mensagens : 822
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por saim Qui 12 Set 2013, 11:16

Posso aproveitar o tópico? Estou com o mesmo problema. Conectei o gamepad na porta USB, os testes do windows funcionam (mostram o botão apertado e tudo), mas o GMS parece não reconhecer o controle como conectado. Coloquei alguns debug messages no create, pra testar, e veja o que resultou:

create:
Código:
var i; for(i := 0; i < 4; i += 1){
    desenhaBot[i] := false;
    }

botao[0] := gp_face1;
botao[1] := gp_face2;
botao[2] := gp_face3;
botao[3] := gp_face4;

if (gamepad_is_supported()){
    show_debug_message("gamepad suportado!");
    }
    else {
        show_debug_message("gamepad não suportado...");
        }

controle := -1;
var gp_num = gamepad_get_device_count();
for (i := 0; i < gp_num; i++;)
    {
    if gamepad_is_connected(i){
        show_debug_message("o gamepad conectado é o " + string(i));
        show_debug_message(gamepad_get_description(i));
        controle := i;
        }
    }
show_debug_message("nControles = " + string(gp_num));
show_debug_message("controle = " + string(controle));
E as mensagens:
debug escreveu:**********************************.
Entering main loop.
**********************************.
Total memory used = 1641266(0x004776fd) bytes
StartGame() - DONE
controle = -1
nControles = 4
gamepad suportado!
Quer dizer, suporta controle, mas não encontra nenhum conectado. Lembrando: o controle está conectado e funcionando no windows, eu testei o jogo como se fosse lançado no windows.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por Kabeção Sex 13 Set 2013, 19:56

Meu gamepad oficial Xbox 360 não é reconhecido também mas, funciona com as funções joystick_.
Como o Windows tem uma infinidade de modelos diferentes de controles eu uso tanto as funções joystick_ quanto gamepad_ para garantir que a maioria funcione.

Um exemplo:
Código:
globalvar gpad;
gpad = gamepad_is_supported();
gpad_id = -1;   // device id

if gpad {
    var gp_num = gamepad_get_device_count();
    for (var i = 0; i < gp_num; i++;) {
        if gamepad_is_connected(i) {
            gpad_id = i;
            gpad = true;
            break;
        } else {
            gpad = false;
        }
    }
}

if !gpad && os_type = os_windows {
    if joystick_exists(1) {
        gpad = 2;
        gpad_id = 1;
    }
    if joystick_exists(2) {
        gpad = 2;
        gpad_id = 2;
    }
}
Resumindo, se gamepad_is_connected detecta um gamepad então gpad = 1, caso não eu uso joystick_exists, se existir gpad = 2.
Se os dois casos forem falsos, gpad = 0.

Na hora de controlar:
Código:
// eu uso key[constante_tecla] no lugar do usual keyboard_check...
// assim esse script me permitido usar o tecla e o joystick ao mesmo tempo sem dificuldades

var i;
for (i = 0; i < key_n; i += 1) {
    key[i]  = (keyboard_check(akey[i]));
    pkey[i] = (keyboard_check_pressed(akey[i]));
    rkey[i] = (keyboard_check_released(akey[i]));
    
    if gpad = 1 {
        key[i] = key[i] || gamepad_button_check(gpad_id,gp_map[i]);
        pkey[i] = pkey[i] || gamepad_button_check_pressed(gpad_id,gp_map[i]);
        rkey[i] = rkey[i] || gamepad_button_check_released(gpad_id,gp_map[i]);
    }
    if gpad = 2 {
        key[i] = key[i] || joystick_check_button(gpad_id,joy_map[i]);
        // ...
    }
}
Ou usa keyboard_key_press e keyboard_key_release para simular o teclado.

Mover para cima e para baixo
Código:
x += (key[right]-key[left]) * spd;
y += (key[down]-key[up]) * spd;
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por saim Dom 15 Set 2013, 21:07

Muito bom, Kabeção! Eu já estava pronto pra dar um double-post, dizendo que as funções obsoletas são as que funcionam. A propaganda das novas funções é tão forte que eu ainda não tinha testado as velhas.
MAS seu código termina justamente na parte interessante... As funções velhas não têm checagem de "pressed" e "released", só de "check_button".
Não esquenta, eu posso fazer um "last_situation" ou coisa do tipo e ver se está diferente da atual. Vai ficar um script volumoso, mas o bom dos scripts é que eles podem ser escritos e deixados num canto, sem incomodar com seu volume.

Acho que o problema está resolvido. Quer dizer, eu queria MESMO era fazer o jogo reconhecer meu joystick velho com as novas funções, mas parece que não vai ter jeito. Já que isso não dá pra fazer, o que dá está bem direcionado.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por Kabeção Dom 15 Set 2013, 21:44

Eu uso keyboard_key_press e keyboard_key_release para facilitar minha vida.

Código:
for (i = 0; i < key_n; i += 1) {
    if gpad = 2 {
    
        if i >= 4 && i <=13 {
            if joystick_check_button(gpad_id,ajoy[i]) {
                keyboard_key_press(akey[i]);
            } else {
                keyboard_key_release(akey[i]);
            }
        }
    }

    key[i]  = (keyboard_check(akey[i]) && tkey);
    pkey[i] = (keyboard_check_pressed(akey[i]) && tkey);
    rkey[i] = (keyboard_check_released(akey[i])  && tkey);

    if gpad = 1 {
        key[i] = key[i]   || (gamepad_button_check(gpad_id,ajoy[i]) && tkey);
        pkey[i] = pkey[i] || (gamepad_button_check_pressed(gpad_id,ajoy[i]) && tkey);
        rkey[i] = rkey[i] || (gamepad_button_check_released(gpad_id,ajoy[i]) && tkey);
    }

}
Em outras palavras, transformo o joystick em um teclado.
O interessante é que enquanto o jogo estiver rodando o joystick simula o teclado em qualquer programa.
Mas entre não me preocupar com isso e perder horas simulando as funções, escolhe não me preocupar, até mesmo porque o destino do jogo não é o computador.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por PedroX Dom 15 Set 2013, 22:01

Muito bom, Kabeção. Excelente ideia. Ainda estou fazendo meus testes e esse 'script' vai ser usado. Mas vou trocar por variáveis, para não interferir em outros programas e para evitar possíveis transtornos.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por Kabeção Seg 16 Set 2013, 00:18

Galera, notei o bug hoje enquanto desenvolvia meu jogo.
As funções funcionam depois de reiniciar com game_restart.
Vejam o exemplo que postei no bug tracker http://bugs.yoyogames.com/view.php?id=12351 e digam se acontece o mesmo com vocês.

....

Postando no GMC descobri o problema.
Parece que o GMS só reconhece a conexão do gamepad depois de alguns steps.
Use um alarm e cheque o gamepad depois de 3 steps.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por PedroX Seg 16 Set 2013, 14:54

Achei mais um pouco de informação no tópico: http://gmc.yoyogames.com/index.php?showtopic=574199

OK pessoal, Windows normalmente não trabalha com controles do PS3. Até aparece no Painel de Controle, mas simplesmente não funciona direito.

Para fazê-los funcionar, você usa MotionInJoy (ou talvez haja outro programa também). Então, nas configurações do MotionInJoy, você escolher diferentes métodos de emulação. Muitos deles são versões DInput, como as opções de controles de PS1/PS2, mas um deles, o XBOX360, torna-o um dispositivo XInput. Então, se configurar o controle como XBOX360, vai usar XInput, e poderá ser usado com as novas funções gamepad*. Mas se configurar o controle como qualquer outro dispositivo, vai usar DInput e só poderá ser usado com as funções de joystick.
Resumindo tudo: você pode usar um emulador no Windows e então usar gamepad_* ou então usar joystick_* no Windows e gamepad_* no Ouya (assim como fez o Kabeção).

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por saim Ter 17 Set 2013, 15:05

Kabeção escreveu:Galera, notei o bug hoje enquanto desenvolvia meu jogo.
As funções funcionam depois de reiniciar com game_restart.
Vejam o exemplo que postei no bug tracker http://bugs.yoyogames.com/view.php?id=12351 e digam se acontece o mesmo com vocês.

....

Postando no GMC descobri o problema.
Parece que o GMS só reconhece a conexão do gamepad depois de alguns steps.
Use um alarm e cheque o gamepad depois de 3 steps.
Nem. Deve ser o controle, como sugere o Pedro. O meu é o mais genérico do mundo, comprado pra jogar PS2, ele tem duas entradas, uma é usb. Uso o game_restart quantas vezes quiser e continua não encontrando o gamepad - embora o truque do joystick funcione! Ah, e eu procuro pelo gamepad 30 steps depois do jogo iniciado, acho que isso mais do que dá tempo pra qualquer delay.

Agora, deixa eu entender esse lance de transformar o joystick num teclado, enquanto faço meus testes aqui... são funções com as quais não estou familiarizado.
Você escolhe uma tecla e força o windows a apertar a tecla se o botão do joystick estiver apertado, isso a cada step. O jogo vai entender que essa situação mudou de um step pro outro? Tipo "ah, se a tecla estava apertada e não está mais, é na hora de disparar um evento de key_release". É isso? Bacaaana!
Eu me perdi no "tkey". Você chegou a explicar ele? O que é?
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por Kabeção Ter 17 Set 2013, 18:54

O jogo vai entender que essa situação mudou de um step pro outro?
Sim.
O programa não só simula, ele faz o Windows receber a tecla como se realmente fosse apertada, por isso, enquanto o jogo rodar se você for no bloco de notas e usar o joystick, ele vai funcionar como o teclado.

Eu me perdi no "tkey". Você chegou a explicar ele? O que é?
O que mostrei é apenas um pedaço dos scripts que criei para controlar teclado e joystick.
tkey serve para desativar os controles se for false.
Uso constantes com o nome dos botões (baseados no controle do Xbox360) para facilitar.
Código:
rt=15
lt=14
rs=13
rb=12
ls=11
lb=10
back=9
start=8
ba=7
bb=6
by=5
bx=4
down=3
right=2
up=1
left=0
Código:
akey[up]    = ord('W');
akey[down]  = ord('S');
akey[left]  = ord('A');
akey[right] = ord('D');
/*akey[up]    = vk_up;
akey[down]  = vk_down;
akey[left]  = vk_left;
akey[right] = vk_right;*/
akey[ba]    = vk_space;
akey[bb]    = ord('C');
akey[bx]    = ord('Z');
akey[by]    = ord('V');
akey[start] = vk_enter;
akey[back]  = vk_backspace;
akey[lb]    = ord('Q');
akey[ls]    = ord('E');
akey[rb]    = ord('R');
akey[rs]    = ord('T');
akey[lt]    = ord('Y');
akey[rt]    = ord('U');

// Gamepad
if gpad = 1 {
    ajoy[up]    = gp_padu;
    ajoy[down]  = gp_padd;
    ajoy[left]  = gp_padl;
    ajoy[right] = gp_padr;
    
    ajoy[ba]    = gp_face1;
    ajoy[bb]    = gp_face2;
    ajoy[bx]    = gp_face3;
    ajoy[by]    = gp_face4;
    ajoy[start] = gp_start;
    ajoy[back]  = gp_select;
    ajoy[lb]    = gp_shoulderl;
    ajoy[lt]    = gp_shoulderrb;
    ajoy[ls]    = gp_stickl;
    ajoy[rb]    = gp_shoulderr;
    ajoy[rt]    = gp_shoulderrb;
    ajoy[rs]    = gp_stickr;
}

// Joystick
if gpad = 2 {
    // o valor certo para cada botão é totalmente instável
    // de joystick para joystick então é praticamente obrigatório
    // dar a opção de configurar os controles para o jogador
    ajoy[ba]    = 1;
    ajoy[bb]    = 2;
    ajoy[bx]    = 3;
    ajoy[by]    = 4;
    ajoy[start] = 8;
    ajoy[back]  = 7;
    ajoy[lb]    = 5;
    ajoy[ls]    = 9;
    ajoy[rb]    = 6;
    ajoy[rs]    = 10;
}
E defino um objControle com um depth grande para executar primeiro que os outros objeto e uso o script no Step Begin.
Código:
// gpad_step()
// Definir keys e combo
var i,m,t2;
m = -1;

if gpad = 2 {
    // Dpad
    t2 = joystick_pov(gpad_id);
    
    if t2 != -1 {
        switch (t2) {
            case 0:     t2 = 90; break;
            case 90:    t2 = 0; break;
            case 135:   t2 = 315; break;
            case 180:   t2 = 270; break;
            case 315:   t2 = 135; break;
            case 270:   t2 = 180; break;
        }
    }
    
    // Analogico simula botões direcionais
    if t2 = -1 {
        switch (joystick_direction(gpad_id)) {
            case vk_numpad1: t2 = 225; break;
            case vk_numpad2: t2 = 270; break;
            case vk_numpad3: t2 = 315; break;
            case vk_numpad4: t2 = 180; break;
            case vk_numpad5: t2 = -1; break;
            case vk_numpad6: t2 = 0; break;
            case vk_numpad7: t2 = 135; break;
            case vk_numpad8: t2 = 90; break;
            case vk_numpad9: t2 = 45; break;
        }
    } else {
        //t2 += 90;
    }
    
    // Simular botões direcionais
    i = down;
    if (t2 > 180 && t2 < 360)  {
        keyboard_key_press(akey[i]);
    } else {
        keyboard_key_release(akey[i]);
    }
    
    i = left;
    if (t2 > 90 && t2 < 270) {
        keyboard_key_press(akey[i]);
    } else {
        keyboard_key_release(akey[i]);
    }
    
    i = up;
    if (t2 > 0 && t2 < 180) {
        keyboard_key_press(akey[i]);
    } else {
        keyboard_key_release(akey[i]);
    }
    
    i = right;
    if (t2 = 45 || t2 = 0 || t2 = 315) {
        keyboard_key_press(akey[i]);
    } else {
        keyboard_key_release(akey[i]);
    }
    
    // Gatinhos
    if (joystick_zpos(id) <= -0.5) {
        keyboard_key_press(akey[rt]);
    } else {
        keyboard_key_release(akey[rt]);
    }
    
    if (joystick_zpos(id) >= 0.5) {
        keyboard_key_press(akey[lt]);
    } else {
        keyboard_key_release(akey[lt]);
    }
}

for (i = 0; i < key_n; i += 1) {
    if gpad = 2 {
    
        if i >= 4 && i <=13 {
            if joystick_check_button(gpad_id,ajoy[i]) {
                keyboard_key_press(akey[i]);
            } else {
                keyboard_key_release(akey[i]);
            }
        }
    }

    key[i]  = (keyboard_check(akey[i]) && tkey);
    pkey[i] = (keyboard_check_pressed(akey[i]) && tkey);
    rkey[i] = (keyboard_check_released(akey[i])  && tkey);

    if gpad = 1 {
       key[i] = key[i]   || (gamepad_button_check(gpad_id,ajoy[i]) && tkey);
        pkey[i] = pkey[i] || (gamepad_button_check_pressed(gpad_id,ajoy[i]) && tkey);
        rkey[i] = rkey[i] || (gamepad_button_check_released(gpad_id,ajoy[i]) && tkey);
    }

}
E assim uso as variáveis key,rkey e pkey por todo o jogo.

Código:
x += (key[right]-key[left]) * spd;
y += (key[down]-key[up]) * spd;

if pkey[start] {
    pausar_game();
}

if rkey[bx] ataque_carregado();
É um método que uso já a anos e é sempre a base dos controles dos meus jogos.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por saim Ter 17 Set 2013, 21:47

Show de bola, Kabeção!

Tentei montar um sistema por conta própria aqui, acabei caindo num bocado de bugs, voltei nesse tópico um monte de vezes, consegui fazer os 4 botões principais funcionar. Amanhã (se tiver tempo), faço o resto dos botões.

Tem Parece ter um erro na sua lógica. Por algum motivo, rkey está sempre retornando true, a menos que a tecla esteja sendo apertada. Deve ser o tal "tkey", que eu não vi ainda como faz... envergonhado 
Mas sem o "tkey", eu fiquei com a impressão que as teclas estão sendo soltas a cada step.

Resolvi da seguinte forma:
Código:
var i;
for (i := 0; i < 4; i += 1) {
    if (gpad == 2) { // se é o joystick que está funcionando
        if joystick_check_button(gpad_id, ajoy[i]) { // se o botão está apertado
            keyboard_key_press(akey[i]); // faz a tecla estar apertada
            }
            else {
                keyboard_key_release(akey[i]); // faz a tecla não estar apertada
                }
        }

    key[i]  := keyboard_check(akey[i]);
    pkey[i] := key[i] && !prevkey[i] //keyboard_check_pressed(akey[i]); //
    rkey[i] := !key[i] && prevkey[i]; //keyboard_check_released(akey[i]); //

    if (gpad == 1) { // se é o gamepad que está funcionando
        key[i]  := gamepad_button_check(gpad_id, ajoy[i]) || key[i];
        pkey[i] := gamepad_button_check_pressed(gpad_id, ajoy[i]) || pkey[i];
        rkey[i] := gamepad_button_check_released(gpad_id, ajoy[i]) || rkey[i];
        }
    prevkey[i] := key[i];
    }
Outra coisa que talvez você não tenha parado pra pensar: dá pra transformar o joystick_pov em direção equivalente à do game maker, sem usar o switch:
Código:
t2 := joystick_pov(gpad_id);
transforma := (360 + 90 - (t2)) mod 360;
Isso pode te facilitar a vida, aí pra cima.

Nossa, é muito código. Depois eu termino de entender tudo (acho que consigo)... Boa noite!


Última edição por saim em Sex 20 Set 2013, 14:16, editado 1 vez(es)
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por PedroX Ter 17 Set 2013, 22:06

@saim, se você quer apenas testar o jogo no Windows (e não publicar para ele), use o MotionJoy. Você gastará menos tempo nessa parte. O programa é leve.

http://www.baixaki.com.br/download/motioninjoy.htm

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por saim Qua 18 Set 2013, 19:35

Ah, PedroX, agradeço muito e até estou instalando o programa, aqui, pra ver se funciona com qualquer controle (no primeiro round, continuo mexendo com joystick, não gamepad, mas ainda vou tentar reiniciar a máquina, aprender a mexer direito nisso aqui), mas já que o Kabeção disponibilizou o script completo, aí, acho bacana ter uma forma universal de trabalhar. Daí, eu gravo os scripts e fica o suporte pra controles pelo resto da vida.

Claro que testar os controles de gamepad funcionando como gamepad é primordial, também.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por Kabeção Qua 18 Set 2013, 22:38

Endendi, então é assim que posso inverter o ângulo em 90 graus.
Pelo visto, keyboard_release ativa o rkey mesmo se a tecla não foi apertada antes.
Antigamente usava variáveis ou invés dessas funções então nem tinha percebido o problema.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por saim Sex 20 Set 2013, 18:30

Caramba... Agora me caiu a ficha! Desse jeito, eu vou conseguir fazer funcionar o joystick e não sei se o gamepad funciona do jeito certo!

PedroX, testei o motionjoy aqui, ele abre mas não roda. Acaba dando gpad = 2 e o motionjoy trava. Sei lá porque. Talvez seja isso:
MotioninJoy drives your Playstation 3 controller (Sixaxis or Dualshock 3) on windows. By this way your Sixaxis or Dualshock 3 as a general game controller with motion sensor.
Meu controle é um... deixa eu procurar alguma indicação de marca aqui... um "bright games". Vou arrumar alguém com um controle de xbox ou ps3 sobrando.

Kabeção, seu código tem um pouco de erros de digitação. Fui personalizar, acabei alterando um monte de coisa. Eliminei a parte dos "Gatinhos" (suponho que fossem "gatilhos", mas não deu pra ter certeza, já explico porque).
É que ele muda o valor dos "triggers" (por isso acho que eram "gatilhos"), mas em função da posição de alguns eixos do analógico (por isso que eu não tenho certeza).
Como não vi sentido, como os triggers são botões como outros quaisquer, cortei fora.
Eu achava que o point of view era pro analógico. Do jeito que é, o switch até faz sentido (ah, eu mudei o cálculo de transformação, a equação estava errada - corrigi o post anterior, também).

Agora ficou assim:

Bom... Eu queria ver se alguém cujo controle é identificado como gamepad (gpad = 1, no exemplo) pudesse testar essa engine.
Eis aqui o link. A cor das bolinhas nos botões deve mudar ao apertar, manter apertado ou soltar algum deles. Como os eventos de apertar e soltar são muito rápidos, fiz uns alarmes; e pra ver a cor de soltar, tem que soltar o botão um tempinho depois de apertar (20 steps).
Ah, tem uma coisa que não está nos scripts: a posição das bolinhas dos direcionais deve variar de acordo com o que você mexer.

Se a engine funcionar toda como gamepad também, fico sossegado pra programar.

Valeu demais, moçada!
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Como o GMS reconhece o controle do OUYA. Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Como o GMS reconhece o controle do OUYA. Empty Re: Como o GMS reconhece o controle do OUYA.

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos