[botta & risposta]Potenziare i controlli del joystick

Tutorial, videotutorials ed esempi creati da noi
Rispondi
Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

[botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Mentre facevo una classica schermata di configurazione tasti(da parte dell'utente) mi è capitato di dover gestire anche il joystick. Per facilitarmi la creazione del gioco ho pensato di creare degli script per usare facilmente un tasto identificato dall'azione che fa in modo da evitare di controllarmi ogni volta il tasto selezionato eccetera. In parole più semplici è molto più facile usare uno script che ti dici se è premuto il tasto pungo indipendentemente da quali bottoni ha scelto l'utente. Mi è dunque capitato di dover gestire anche il joystick allo stesso modo ma ho notato che il joystick non ha molti controlli come quelli della tastiera, ad esempio non è possibile controllare se il pulsante è appena stato premuto o è stato rilasciato, inoltre le freccette non sono considerate come pulsanti separati, si può solo sapere la direzione che indicano e ciò non favorisce il tutto perchè come per i pulsanti non cè il controllo pressione/rilascio e non vi è nemmeno alcun rilevamento su quale delle freccette è stata premuta attualmente.

Per risolvere questo problema ho fatto una serie di script con cui è possibile avere dei controlli più avanzati rispetto a quelli normali.
Ho fatto in totale 7 script ottimizzati al meglio per la velocità:

joystick_buttons_control_init()
Questo serve ad inizializzare il tutto

joystick_buttons_control_update()
Questo refresha il controllo del joystick, è cosigliabile usarlo in ogni step

joystick_check_button_pressed(joystick_id,button_id)
vi dice se il pulsante scelto del joystick scelto è appena stato premuto

joystick_check_button_released(joystick_id,button_id)
vi dice se il pulsante scelto del joystick scelto è appena stato rilasciato

joystick_check_arrow_pressed(joystick_id,arrow_id)
vi dice se la freccia scelta del joystick scelto è appena stata premuta
maggiori dettagli sull'utilizzo all'interno dello script

joystick_check_arrow_released(joystick_id,arrow_id)
vi dice se la freccia scelta del joystick scelto è appena stata rilasciata
maggiori dettagli sull'utilizzo all'interno dello script

joystick_check_arrow_released(joystick_id,arrow_id)
vi dice se la freccia scelta del joystick scelto è attualmente premuta
maggiori dettagli sull'utilizzo all'interno dello script


Qui il download:
http://www.megaupload.com/?d=ZUY4WYW0
E' un file di script, entrate in gm ed usate il comando "import scripts"

A breve un'editabile dimostrativo. :sisisi:
Ultima modifica di Jak il 26/02/2011, 21:45, modificato 3 volte in totale.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Doppioposto per richiamare l'attenzione. Ho testato i miei script su un controller della play 2 con l'adattatore(controllati da un'altro utente di GMI).
Lo script dell'update avera un'errore che ho fatto quando ho ottimizzato il codice. Ora comunque ho risolto e qui trovate il file corretto:
http://www.megaupload.com/?d=ZUY4WYW0
A breve un editabile dimostrativo sul suo semplice funzionamento ;)
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Sla
GMI VIP
Messaggi: 3618
Iscritto il: 21/07/2008, 10:11
Specialità: Titanismo
Località: (gm) Italia
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Sla »

utile,grazie ;D
eppure mi sembra tutto giusto...

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Mi fa piacere che qualcuno li trova utili. Tra testing vario e realizzazione ci ho perso una giornata e mezza. Quello è niente in confronto a tutto il resto che ho fatto per la configurazione dei tasti ma comunque mi sembravano troppo utili per non metterli su gmi.
Esiste una sezione appostita del sito dove mettere il tutto? Snippet se non sbaglio è solo per uno script singolo.

Già che ci sono propongo una sezione dedicata ai botta e risposta.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da CaMpIoN »

Mi sembra interessante ci voleva qualche controllo in piu per il joystick, fin'ora simulavo quel release con variabili ecc..
Giochi da me creati:
Spoiler
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

CaMpIoN ha scritto:Mi sembra interessante ci voleva qualche controllo in piu per il joystick, fin'ora simulavo quel release con variabili ecc..
Infatti uso quel sistema solo che il tutto è ottimizzato al meglio per essere più veloce possibile e si gestisce praticamente da solo. La cosa più impegnativa è stato il controllo delle freccette poichè si sa solo la direzione(la quale oltretutto non è un valore angolare). Con i miei script ho reso le freccette un tasto a parte, ciò è a mio parere utilissimo perchè la tastiera ha le freccette dunque si può fare lo stesso identico controllo sia per il joystick che per la tastiera e facilitare lo sviluppo. Quello script esegue i controllo solo ed esclusivamente per i tasti che ha il joystick in modo da non fare calcoli inutili ed il tutto chiaramente solo se esiste un joystick, le variabili vengono comunque inizializzate in modo che se checkate un tasto che non esiste vi da "0" e non errore per variabile non esistente comunque non ho messo molti controlli quindi se per esempio checkate tasti non esistenti, che so il -1 è possibile che vi venga fuori errore, provvederò a fare anche questi controlli ora che faccio l'esempio di utilizzo così non verrà mai fuori un'errore. :sisisi:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Fatto questo piccolo editabile di esempio sul semplice funzionamento di quelle poche ma utilissime funzioni.
http://www.megaupload.com/?d=0UTZA6SQ
Praticamente vi aumenterà la variabile appostita di 1 ogni volta che premete/rilasciate il tasto opportuno. ho messo il controllo delle freccette e dei tasti 1 2 3 4 che nel joystick della play 2 sono rispettivamente triangolo,cerchio,X,quadrato. Se attivate le levette analogiche GM le interpreta come freccette direzionali.
Ho aggiustato gli script ed ora non daranno mai errore(al massimo vi daranno strani risultati se ad esempio controllate un terzo joystick che GM non supporta), se vi dimenticate di inizializzare non fa niente perchè gli script inizializzano(solo se non è già stato fatto) automaticamente, è comunque buona norma inizializzare sempre. L'update vi consiglio di eseguirlo sull'evento begin_step dell'oggetto con l'id minore, se eseguirete dei controlli prima di updatare questi non saranno aggiornati e quindi i controlli saranno in ritardo di uno step.
Infine l'update fa tutto il lavoro sporco, quando checkate un tasto non farete altro che eseguire un controllo ad una variabile quindi potete usare quelle funzioni quante volte volete senza rischio di rallentare il gioco(chiaro che se lo fate millemila volte anche il più semplice controllo può rallentare)

Spero che il tutto vi sia utile, come ho già detto l'ho testato completamente quindi il funzionamento è assicurato(lo dico perchè non fa male mettere anche il supporto del joystick ad un gioco quindi potete usare queste funzioni senza avere un joystick per provare, se il gioco vi funziona con la tastiera vi funzionerà anche col joystick alla stessa maniera ;) )
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Tizzio »

Jak ha scritto:Fatto questo piccolo editabile di esempio sul semplice funzionamento di quelle poche ma utilissime funzioni.
http://www.megaupload.com/?d=0UTZA6SQ
Praticamente vi aumenterà la variabile appostita di 1 ogni volta che premete/rilasciate il tasto opportuno. ho messo il controllo delle freccette e dei tasti 1 2 3 4 che nel joystick della play 2 sono rispettivamente triangolo,cerchio,X,quadrato. Se attivate le levette analogiche GM le interpreta come freccette direzionali.
Ho aggiustato gli script ed ora non daranno mai errore(al massimo vi daranno strani risultati se ad esempio controllate un terzo joystick che GM non supporta), se vi dimenticate di inizializzare non fa niente perchè gli script inizializzano(solo se non è già stato fatto) automaticamente, è comunque buona norma inizializzare sempre. L'update vi consiglio di eseguirlo sull'evento begin_step dell'oggetto con l'id minore, se eseguirete dei controlli prima di updatare questi non saranno aggiornati e quindi i controlli saranno in ritardo di uno step.
Infine l'update fa tutto il lavoro sporco, quando checkate un tasto non farete altro che eseguire un controllo ad una variabile quindi potete usare quelle funzioni quante volte volete senza rischio di rallentare il gioco(chiaro che se lo fate millemila volte anche il più semplice controllo può rallentare)

Spero che il tutto vi sia utile, come ho già detto l'ho testato completamente quindi il funzionamento è assicurato(lo dico perchè non fa male mettere anche il supporto del joystick ad un gioco quindi potete usare queste funzioni senza avere un joystick per provare, se il gioco vi funziona con la tastiera vi funzionerà anche col joystick alla stessa maniera ;) )
a sto punto potevi fare una gex per semplificare il tutto ;)

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Tizzio ha scritto:a sto punto potevi fare una gex per semplificare il tutto ;)
Vero ma le mie vecchie esperienze nella creazione di gex non hanno avuto molto successo. Penso che ora ci riproverò e farò questa gex.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Tizzio »

Jak ha scritto:
Tizzio ha scritto:a sto punto potevi fare una gex per semplificare il tutto ;)
Vero ma le mie vecchie esperienze nella creazione di gex non hanno avuto molto successo. Penso che ora ci riproverò e farò questa gex.
si.. all'inizio non si capisce molto.
Ma dopo qualche tentativo capisci che è una cagata...
potresti fare anche la collyx in gex almeno hai sempre gli argomenti degli script sott'occhio ;)

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Tizzio ha scritto:si.. all'inizio non si capisce molto.
Ma dopo qualche tentativo capisci che è una cagata...
potresti fare anche la collyx in gex almeno hai sempre gli argomenti degli script sott'occhio ;)
Infatti è da quella, dopo averla fatta tutta per 3 volte senza successo(ha più di 80 funzioni e la volevo fare per bene la gex che credi)che mi sono arreso completamente :lol:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Tizzio »

Jak ha scritto:
Tizzio ha scritto:si.. all'inizio non si capisce molto.
Ma dopo qualche tentativo capisci che è una cagata...
potresti fare anche la collyx in gex almeno hai sempre gli argomenti degli script sott'occhio ;)
Infatti è da quella, dopo averla fatta tutta per 3 volte senza successo(ha più di 80 funzioni e la volevo fare per bene la gex che credi)che mi sono arreso completamente :lol:
non ci credo riesci a fare una gex
è la cosa più semplice ...
inserisci lo script in gml;
inserisci la dll ;
definisci gli script e metti un info nella seconda e casella in basso a destra riguardante gli argument, del tipo: collyx_blah(pointx,pointy,blah,blah)...
non è per niente difficile magari non provare subito con 80 funzioni :lol:
prova appunto con questo del joystick

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

Non è difficile, ho anche se guito le istruzioni del gex creator che sono identiche alle tue, il fatto è che non funziona... :evil:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da CaMpIoN »

Jak ha scritto:Doppioposto per richiamare l'attenzione. Ho testato i miei script su un controller della play 2 con l'adattatore(controllati da un'altro utente di GMI).
Lo script dell'update avera un'errore che ho fatto quando ho ottimizzato il codice. Ora comunque ho risolto e qui trovate il file corretto:
http://www.megaupload.com/?d=ZUY4WYW0
A breve un editabile dimostrativo sul suo semplice funzionamento ;)
Forse un po' in ritardo :D , ma posso sapere cosa hai preso per adattare il joystick per PS2 al PC, poi un'altra cosa, quello della xBox ha bisogno degli infrarossi (o qualcosa del genere) per funzionare, sul mio PC penso che non ci sono, è possibile comprare uno a parte tipo chiavetta come quella bluetooth?
Giochi da me creati:
Spoiler
Immagine

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da BaronVsCorsar »

CaMpIoN ha scritto:Forse un po' in ritardo :D , ma posso sapere cosa hai preso per adattare il joystick per PS2 al PC, poi un'altra cosa, quello della xBox ha bisogno degli infrarossi (o qualcosa del genere) per funzionare, sul mio PC penso che non ci sono, è possibile comprare uno a parte tipo chiavetta come quella bluetooth?
un adattatore ps2-usb: costo variabile tra i 6 € fino ai 14€. Mediaworld in genere ha questi dispositivi.

da quello che so il joypad della Xbox va con bluetooth. Di sicuro non con infrarossi.
cmq sì, è possibile, ma costano relativamente tanto in quanto ormai è un dispositivo superato (e a dire il vero non si è mai diffuso molto, a parte sui portatili di inzii anni 2000).
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
CaMpIoN
Membro super
Messaggi: 684
Iscritto il: 17/11/2009, 16:20
Specialità: Programmatore
Uso: GM:Studio 1.4 Master
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da CaMpIoN »

Grazie mille, ma tu sei un bot?
Sai praticamente tutto xD (Prendila come un complimento ;))
Giochi da me creati:
Spoiler
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Jak »

CaMpIoN ha scritto:Forse un po' in ritardo :D , ma posso sapere cosa hai preso per adattare il joystick per PS2
Testing by Massimo. Ci avrò messo una giornata a fargli testare tutto per bene, non so dove l'ha pigliato poichè personalmente non l'ho mai visto(nemmeno al mediaworld)
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: [botta & risposta]Potenziare i controlli del joystick

Messaggio da Tizzio »

Jak ha scritto:
CaMpIoN ha scritto:Forse un po' in ritardo :D , ma posso sapere cosa hai preso per adattare il joystick per PS2
Testing by Massimo. Ci avrò messo una giornata a fargli testare tutto per bene, non so dove l'ha pigliato poichè personalmente non l'ho mai visto(nemmeno al mediaworld)
io cel'ho :sisisi: comprato alla comet

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti