Sono nuovo di questo stackechange di Gamedev ma ho già usato i siti di matematica e CS.
Quindi, sono in competizione per creare l'IA per un serpente che competerà con altri quattro serpenti in round di 5 minuti in cui le regole sono molto simili al tradizionale gioco del serpente Nokia, tranne per il fatto che ci sono cinque serpenti, il tabellone è 30x30 e ci sono una serie di piccoli ostacoli sul campo.
Come il gioco Nokia, il tuo serpente cresce quando arrivi alla frutta e se ti sbatti contro te stesso, un altro serpente o il muro muori. Il gioco viene eseguito con un ritardo di 30 ms tra le mosse e il server invia il nuovo stato di gioco ogni 50 ms che il codice deve analizzare e cosa no e genera la mossa successiva.
Il vincitore è il serpente che ha avuto la lunghezza più lunga in qualsiasi punto del gioco. I demolitori sono decisi dalle uccisioni.
Finora quello che ho fatto è stato implementare una ricerca del grafico A * da ciascun serpente per determinare se il mio serpente è il più vicino alla mela e se lo è, vale per la mela. Altrimenti, ho creato un piccolo algoritmo pulito per determinare l'area più vuota della tavola, che il mio serpente preferisce, per anticipare la prossima mela.
Oltre a questo, ho alcuni piccoli controlli di sopravvivenza per assicurarmi che il mio serpente non stia camminando in una trappola che non può uscire e se si blocca, ho qualcosa per dargli una migliore possibilità di uscire.
...
Ad ogni modo, ho testato il mio serpente su un server di prova e funziona abbastanza bene. In generale, la mia strategia di andare per la mela solo quando è una cosa certa e trovare spazio quando non la fa crescere più velocemente di qualsiasi altro serpente (alcuni serpenti fanno una cosa simile ma spesso vanno solo nel mezzo o in un angolo) a volte vince questi giochi di prova, ma il più delle volte è battuto dallo stesso serpente che sembra avere un vantaggio in termini di sopravvivenza (il mio serpente cresce più velocemente ma poi muore in qualche modo e quest'altro serpente avanza lentamente e vince sulla coerenza.
Quindi mi chiedevo quali idee qualcuno dovesse provare a migliorare il mio serpente. O forse idee su un nuovo approccio da adottare. Le mie funzioni e classi sono buone, quindi i cambiamenti che potrebbero sembrare drastici non dovrebbero essere così male. Incoraggio tutte le idee.
qualche idea?