Sono un principiante assoluto con lo sviluppo del gioco e tutto quello che so sull'evitamento / risoluzione delle collisioni, l'ho imparato su o attraverso questo sito la scorsa settimana ... quindi non esitate a correggermi se quello che sto chiedendo qui è sulla base di ipotesi / incomprensioni errate. Ho cercato del mio meglio per essere chiaro, ma detto questo, l'argomento è ancora nuovo per me.
veicoli
Nel mio gioco, ho veicoli che si muovono autonomamente. Sono posizionati in uno spazio 3D e il loro movimento è regolato da un numero di variabili che sono diverse per ciascun veicolo. Quello di interesse qui sono principalmente:
- Solo movimento in avanti .
- Una velocità che può variare tra min e max, ma il cui min non è (anche vicino a) zero.
- Un raggio di sterzata che dipende dalla velocità (maggiore è la velocità, maggiore è il raggio)
- Due accelerazioni massime (per diminuire e aumentare la velocità)
Obbiettivo
Il mio obiettivo è implementare una sorta di IA che eviterà accuratamente le collisioni al 100% (cioè sarò sicuro che i veicoli non si scontreranno mai ).
Design
- Anche se preferirei di più l'idea di avere l'IA "a bordo" (ovvero ogni veicolo con la sua "AI per evitare le collisioni", eventualmente interrogando e / o inviando messaggi ad altri veicoli), è anche possibile per me implementare la CA AI un livello centrale (invio comandi ai veicoli).
- Nella maggior parte dei casi, il veicolo dovrà semplicemente allontanarsi l'uno dall'altro in qualsiasi direzione, ma in determinate circostanze, dovrà evitare la collisione e andare verso lo stesso obiettivo
Quello che ho trovato finora e dove mi sono bloccato
All'interno dei numerosi link che ho trovato in altre domande su questo stesso sito, ho trovato di particolare utilità questi:
Mentre questi tre link "mi hanno aperto gli occhi" in molti modi, non mi è immediatamente chiaro come utilizzare tali informazioni nel mio caso. In particolare l'articolo n. 2 "cerca" solo di prevenire le collisioni (ma le collisioni si verificano di volta in volta). Mentre l'articolo n. 3 ha bisogno di fermare i veicoli a volte per prevenire le collisioni.
Quello che ho anche notato è che gli algoritmi per evitare le collisioni sopra menzionati usano una "proiezione istantanea" della velocità lineare per verificare se qualcosa è sulla strada del veicolo. Mi chiedevo se questo fosse abbastanza nel mio caso o se dovevo proiettare la mia posizione in un modo più realistico (ad esempio: se sono 60 ° in uno sterzo di 90 ° a destra, dovrei calcolare la mia posizione per il resto del 30 ° della curva, quindi assumendo un movimento lineare).
Infine, ho particolarmente paura dei deadlock . In altre parole: sebbene la densità dei veicoli nel mondo sarà abbastanza bassa, sono preoccupato che, dato che un certo numero di veicoli convergono verso lo stesso punto, una volta che si renderanno conto di essere in rotta di collisione, qualsiasi manovra evasiva sarà impossibile poiché porterebbe il veicolo su un percorso di collisione con alcuni altri.
Domanda
Come posso raggiungere il mio "obiettivo"? Una spiegazione approfondita è ovviamente molto apprezzata, ma anche i collegamenti a risorse esterne sarebbero di grande aiuto (sono sicuro di non essere il primo a questo problema, ma probabilmente ho usato parole chiave sbagliate per cercare nel web? )
Grazie in anticipo per il vostro aiuto!