Se la gente vuole bot, non penso che tu possa davvero fermarli.
Ovviamente puoi attuare molte misure che rendono il imbottigliamento più o meno doloroso. Ma puoi fare così tanto prima che la tua base di codice si trasformi in un pasticcio gigantesco che è un inferno da mantenere, soggetto a errori e che infastidisce gli utenti legittimi. Nel frattempo i botter troveranno sempre un modo per sconfiggere le tue contromisure:
- Ce ne sono più di te
- Hanno più tempo libero a disposizione (devi dividere il tempo tra lo sviluppo effettivo e la correzione dei bot, possono hackerare il loro codice per tutto il giorno)
- Man mano che crei strabilianti salvaguardie, gli autori dei bot saranno ulteriormente incoraggiati perché è divertente rompere la protezione dei bot
- Se esiste un mercato nero di persone che traggono profitto commercialmente dai robot, più diventa difficile scrivere un bot, più i robot di lavoro diventano preziosi, quindi incentivi il botting
Fondamentalmente rimarrai intrappolato in una corsa agli armamenti con i botter e, basandoti sulla logica lungo i punti di cui sopra, così come sulla mia esperienza con tali giochi, non sarai in grado di tenere il passo.
Alcuni sviluppatori di giochi adottano misure anti-cheat estremamente aggressive: ad esempio, Steam eseguirà la scansione della memoria e del file system per cercare hack e i trasgressori possono essere puniti perdendo account del valore di centinaia di dollari. Eppure ci sono ancora robot e altri hack per i giochi Steam, e alcuni di loro funzionano anche metà del tempo. A differenza di loro, hai un'API che è completamente aperta all'utente e nessun controllo sul computer degli utenti. È una battaglia in salita dall'inizio.
Il problema che stai cercando di risolvere è essenzialmente un test di Turing: tranne che è un test di Turing molto semplice, perché non puoi imbrogliare richiedendo problemi di IA difficili come il linguaggio. Non importa quante euristiche crei, sarebbe banale per un botter aggiungere un po 'di casualità all'azione del bot per farlo imitare quasi esattamente un essere umano. Non sarebbe nemmeno molto difficile avere il robot che ti guarda per un po 'e imparare a programmare le azioni esattamente come te. Quindi quando bandisci il bot, il botter pubblica sul forum un enorme rantolo su come sia solo un giocatore dedicato (e forse in realtà è un falso positivo) e il tuo pubblico principale di giocatori hardcore si alzerà in braccio contro di te.
Rendi il gioco troppo divertente per il bot
Il motivo principale per cui qualcuno usa un bot è perché c'è una parte del gioco che vuole saltare. Se il gioco gli fosse piaciuto e lo trovasse divertente, non lo farebbero giocare al robot, lo farebbero da soli.
Ma se il gioco è così noioso, perché giocarci? Presumibilmente, alcune parti del gioco sono noiose e obbligatorie per arrivare a parti divertenti. Ad esempio, negli MMO a tutti piace salire di livello, ma nessuno vuole uccidere 42.324 topi velenosi non morti per ottenere l'XP. Così hanno permesso al robot di macinarsi e lasciarsi coinvolgere per interpretare la parte divertente.
Questa non è una critica a te o al tuo gioco, ma chiaramente almeno alcuni giocatori trovano noiose alcune parti del tuo gioco. Dovresti vedere se riesci a ridurre queste parti noiose e cercare di aggiungere decisioni più difficili e significative: i robot non sono bravi nella strategia profonda o nel pensiero laterale rispetto all'intelligenza umana, e oltre agli umani si divertono a prendere decisioni di gioco difficili.
Dalla tua descrizione, ho l'impressione che si tratti di un browser game simile a Travian, in cui esiste una coda di build con un singolo ordine di build migliore e alcune attività di "manutenzione" (come mantenere attive le incursioni agricole) che devono essere eseguite. Dici che non c'è conflitto, ma in ogni film drammatico MMO e la politica meschina è inevitabile (l'IMO è l'attrazione principale), quindi sono sicuro che i tuoi giocatori troveranno il modo di sfondare la testa. Con questo tipo di giochi, gran parte del tedio deriva da questi compiti di "manutenzione" - ciò che i giocatori vogliono davvero fare è stringere alleanze e giocare al gioco della diplomazia con clan rivali, la manutenzione diventa quindi una sorta di tassa in cui devi svegliarti fino a un allarme nelle ore dispari per poter entrare in quella divertente parte diplomatica. Quindi tagliare il tedio:
Questo approccio potrebbe non funzionare sempre, sfortunatamente. Non tutti i giocatori hanno la stessa tolleranza al tedio o lo stesso concetto di divertimento. Potresti avere una meccanica di spicco che piace al 99% dei tuoi giocatori, ma l'1% trova noioso. Cosa succede se l'1% inizia a scrivere bot, rovinando il divertimento al 99%? Ma alla fine, è una questione di laurea. Non è mai possibile rimuovere completamente l'imbottigliamento, ma è possibile ridurre al minimo il danno.
Botters sottosquadro
Molti degli effetti veramente negativi dei robot provengono da autori di bot che commercializzano il loro lavoro. Se questo è il tuo caso, potresti semplicemente competere con i robot. Molti giochi online basati in tempo reale dispongono già di funzionalità premium che consentono il time-skipping e l'automazione (come le code di build estese). Questi equivalgono a un bot ufficiale sanzionato dallo sviluppatore. Se li possiedi e li giudichi adeguatamente, i giocatori compreranno il tuo premio invece di comprare i robot. La buona notizia è che sei responsabile dell'API, quindi hai sempre un grande vantaggio nello sviluppo dell'automazione di qualità per il tuo gioco, quindi questa volta è una battaglia persa per i botter.
Questo non eliminerà i botter dilettanti o le persone che ritengono che il tuo premio non abbia un buon rapporto qualità-prezzo, quindi ancora una volta l'efficacia di questo approccio dipende dalla situazione.
Cercali manualmente
Come ho detto sopra, quello che stai facendo è essenzialmente un test di Turing. Poiché l'interazione con l'uomo è notoriamente considerata una difficile sfida del test di Turing, puoi provare a sfruttarla.
Ispeziona manualmente i giocatori di livello superiore e vedi se trovi qualcosa di sospetto. Potresti anche riuscire a cavarsela di tanto in tanto sondandoli in modi limitati solo alla tua immaginazione, per vedere se riesci a ingannare il robot nel fare qualcosa che non farebbe.
Sebbene sia difficile scrivere un algoritmo che rilevi i robot in modo affidabile, non è così difficile per un essere umano imparare a individuarli. Penso che molti giochi per browser utilizzino questa strategia e possa essere piuttosto efficace. Lo svantaggio è che o devi fare un sacco di lavoro noioso tutto il tempo, oppure devi pagare i maestri di gioco per fare pattuglie regolari.