Rendere equi i punti di spawn casuali?

inappropriateCode 08/22/2017. 9 answers, 4.496 views
game-design level-design

Se tutti i giocatori vengono generati in posizioni casuali alla stessa distanza dai giocatori adiacenti, il numero di giocatori sarà proporzionale alla probabilità che le loro posizioni di spawn siano ingiuste. I giocatori più vicini si ritrovano al centro della mappa, più è probabile che incontrino altri giocatori e meno probabilità di sopravvivere, rispetto ai giocatori sul bordo della mappa. Supponiamo che tutti i giocatori vengano generati nello stesso momento.

C'è un modo per modellare i punti di spawn o cambiare la mappa, in modo che:

  1. Tutti i giocatori hanno un numero limitato di nemici adiacenti.
  2. Tutti i giocatori hanno le stesse probabilità di incontrare nemici adiacenti.
  3. Le dimensioni della mappa non devono aumentare proporzionalmente al numero di giocatori.
  4. Queste limitazioni non sono applicate con spazi arbitrari invalicabili.

La risposta non deve essere perfetta, ma ovviamente migliore dell'alternativa. Fuori dagli schemi pensando benvenuto.

5 Comments
10 Zibelas 07/28/2017
Spawn in un cerchio?
1 inappropriateCode 07/28/2017
@Zibelas Approccio tradizionale, ma viola il requisito 3, e con molti giocatori questo crea una mappa enorme e un interno vuoto.
4 Zibelas 07/28/2017
Dipende dal tuo tipo di gioco. (2D / 3D, respawn / ultimo uomo in piedi, ecc.) Le spawn perfette sono in questo caso possibili solo su un mondo a forma di palla (più giocatore, spawn più vicino ma puoi garantire che hanno tutte la stessa distanza). In un mondo 2D con bordi fissi hai sempre meno giocatori confinanti poiché non hai spazio per generarli. Se è un gioco 3D, puoi avere più livelli.
1 RothX 07/28/2017
Penso che sarebbe d'aiuto sapere che tipo di gioco stai facendo. Sembra una specie di gioco di guerra, ma quali sono i dettagli? È uno sparatutto? Inizi con tutte le tue armi o devi esplorare e trovare le cose? Qual è la condizione di vittoria? Quanto dura una partita che dovrebbe durare?
3 Jan 'splite' K. 07/28/2017
Non per una risposta completa, ma penso che tutti stiano cercando "spawn equilibrato" che ... non è divertente. Guarda la generosa generazione di PUBG (e altri Battle Royale): i giocatori possono "spawnare" (bene, saltare e atterrare ...) quasi ovunque vogliono - se vuoi conflitti e drammi, scegli il luogo dove la maggior parte dei giocatori atterra / genera. Hight risk hight reward, ma solo se il giocatore lo vuole. Puoi atterrare da qualche parte nei boschi, hai tempo per prepararti - basso rischio basso ma alcuni giocatori potrebbero preferirlo (come me, per esempio;)). NON è casuale, è per scelta dei giocatori.

9 Answers


Philipp 07/28/2017.

Lascia che i giocatori scelgano da soli le loro posizioni di partenza.

All'inizio del gioco, genera tutti i giocatori al centro della mappa, ma senza alcun mezzo per danneggiare gli altri giocatori. Dovranno quindi sciamare e acquisire i mezzi per impegnarsi l'un l'altro (costruire una base, raccogliere un'arma, raccogliere risorse, ecc.)

C'è un po 'di fortuna o conoscenza della mappa coinvolti nel trovare una buona posizione di partenza in anticipo (a seconda che si utilizzino mappe procedurali o fatte a mano). Ma quando e dove stabilirsi è principalmente una decisione strategica. La distribuzione anticipata ti dà un vantaggio in termini di tempo, ma ti mette in una posizione pericolosa. Scegliere la tua base ti rimette con attenzione all'inizio, ma può essere un vantaggio decisivo nel gioco a metà e in ritardo.

5 comments
14 Shashimee 07/28/2017
+1 per l'utilizzo del sistema di generazione di film Hunger Games 1.
3 Philipp 07/28/2017
@Shashimee In realtà credo di aver visto questo metodo prima in Anno 1602. Credo anche che alcuni dei primi giochi di C & C avessero quell'opzione di gioco multiplayer opzionale (ma non sono sicuro se lo ricordo correttamente).
3 Zibelas 07/28/2017
@Philipp MULE per il commodore 64 circa 15 anni più vecchio e ti consente di scegliere anche le tue posizioni :)
Dent7777 07/28/2017
Quindi ti imbatti nel problema in cui sei seguito al punto di spawn. Questo potrebbe, ovviamente, essere la meccanica di gioco desiderata, ma potrebbe anche essere estremamente frustrante e non qualcosa che decidi tu voglia nel tuo gioco. Una buona idea sarebbe quella di far apparire i personaggi invisibili e privi di collisione, e trovare la loro base prima di iniziare il gioco.
Kroltan 07/28/2017
Questo è il metodo utilizzato dalla linea di gamemodi personalizzati "Vampirism" e "Tree Tag" su Warcraft 3. Funziona meglio poiché tutti i giocatori sono alleati (almeno inizialmente) e la squadra avversaria viene rilasciata più tardi.

Theraot 07/28/2017.

Comprensione dei requisiti

  1. Tutti i giocatori hanno un numero limitato di nemici adiacenti.

Prima di tutto, stiamo parlando dei punti di spawn dei giocatori, non della posizione attuale dei giocatori in un determinato punto del gioco. Just getting that out of the way.

Adiacente è ben definito quando parliamo di un grafico. Possiamo pensare a una mappa che rappresenti la navigabilità sulla mappa - da ora in avanti "il grafico".

Se il nodo può avere al massimo un punto di spawn, allora parlare di loro "adiacenti" ha senso. Nota: non costringerò i nodi ad avere un singolo punto di spawn al massimo, per ragioni che appariranno più tardi.

Per costruire il grafico dovremo considerare cose come muri, ponti, scale, punti di teletrasporto o prendere in considerazione lo spazio del volo se ci potrebbe essere un giocatore che può volare. Ogni nodo rappresenta una posizione attraversabile; ogni connessione rappresenta un possibile movimento.

Nota: conoscere le dimensioni e la forma dei nodi e lavorare con nodi effettivamente adiacenti. Non considerare i nodi un punto. Non considerare le connessioni come aventi lunghezza. Inoltre, usa i nodi convessi.

Il grafico potrebbe essere stato precompilato (la mappa è stata creata da un designer); altrimenti, può essere creato al volo se la mappa viene generata casualmente.

  1. Tutti i giocatori hanno le stesse probabilità di incontrare nemici adiacenti.

Assumerò che i nemici sono altri giocatori. Again, just getting that out of the way.

Supponendo che ogni giocatore effettui una passeggiata casuale, la probabilità di trovare un giocatore in un dato punto - in uno spazio piatto, privo di ostacoli - sarà data da una funzione (gaussiana) della distanza dal punto di spawn - da ora in avanti "il funzione".

Dato che stiamo lavorando sul grafico, annoteremo invece i valori sul grafico.

  1. Le dimensioni della mappa non devono aumentare proporzionalmente al numero di giocatori.

Se avessimo il vincolo di avere un singolo punto di spawn per nodo, allora per aggiungere più giocatori avremmo bisogno di nodi più piccoli. Se decidiamo il grafico prima di sapere quanti giocatori avremo, potremmo dover suddividere i nodi per il particolare gioco.

  1. Queste limitazioni non sono applicate con spazi arbitrari invalicabili.

Non intendo aggiungere ostacoli per risolvere il problema. Au contraire , ho bisogno di lavorare intorno agli ostacoli. Se non fossero lì, l'implementazione sarebbe più semplice.


Soluzione

Stiamo provando a piazzare N punti di spawn in modo tale che la possibilità di incontrare un altro giocatore in tutti quei punti di spawn sia uguale.

Possiamo ottenere una misura dell'errore come somma delle differenze tra le probabilità e la media delle probabilità. Stiamo cercando di minimizzarlo (in effetti, vogliamo farlo 0).

Per fare ciò, dobbiamo conoscere la possibilità di incontrare un giocatore su ciascun nodo del grafico.

Per calcolare questa possibilità, inizia con zero. Poiché la possibilità di trovare un giocatore su un dato nodo, quando non ci sono giocatori, è zero. E poi, per ogni punto di spawn, cammina sul grafico aggiungendo al caso annotato il valore della funzione per il punto di spawn corrente.

Nota 1: l'aggiunta o lo spostamento di un punto di spawn influirà sulla possibilità di incontrare un giocatore per tutta la mappa.

Nota 2: Tenere traccia di quanto ciascun punto di spawn influenza la possibilità, renderà le cose più facili.

Nota 3: Poiché i nodi hanno dimensioni, quanto vicino è possibile arrivare a error = zero dipende dalla dimensione dei nodi. Puoi essere più preciso lavorando con intervalli di valori (possibilità minima e massima, a seconda della particolare posizione dei punti di spawn all'interno del nodo).

Posiziona i punti di spawn in modo casuale, quindi inizia a muoverli in modo tale che l'errore diventi più piccolo (considera un possibile movimento, e se l'errore diminuisce, tenerlo, altrimenti ripristinalo). E continua a farlo finché non possiamo migliorare ulteriormente (troppe iterazioni senza miglioramento o errore zero).

Nota 4: quando sposti un punto di spawn, puoi usare la possibilità di incontrare un giocatore (escluso il punto di spawn che muovi) per selezionare casualmente una nuova posizione per un punto di spawn in modo tale che la posizione che ha la possibilità di incontrare un giocatore più vicino a la media è più probabile. Ti ricordo che spostare il punto di spawn influirà sulla media.

Il comportamento previsto è che i punti di spawn che sono troppo vicini si allontanano e i punti di spawn che sono troppo distanti si avvicinano. Fino a quando raggiungono l'equilibrio.

Se in una determinata iterazione si hanno più punti di spawn su un nodo (il che è improbabile, poiché dovrebbero tendere a separarsi, ma è possibile se si hanno nodi sufficientemente grandi), dividere il nodo e continuare a risolverlo. Qualsiasi divisione del nodo è valida.


La soluzione sopra descritta si avvicina a error = zero, ma non è garantito il raggiungimento dello zero. È possibile eseguirlo fino a quando non raggiunge un minimo locale ... In teoria, puoi dividere i nodi per renderlo esattamente pari a zero ... Eppure, è equivalente a modificare le coordinate del punto di spawn!

Prova la ricottura simulata per spostare il punto di spawn all'interno del nodo. Anche se, onestamente, probabilmente non vale la pena di preoccuparsi di un tale livello di dettaglio.


Voglio chiarire che il risultato di una mappa piana priva di ostacoli non sarà distribuita uniformemente in punti. Invece, se la mappa ha dei bordi (cioè, se non si avvolge), allora ci sarà più punto di spawn più vicino ai bordi, questo perché i punti al centro possono essere raggiunti da più direzioni, aumentando la possibilità di incontrare altri giocatori lì. Quindi, punta più lontano vicino al centro per compensare.


Zibelas 07/28/2017.

Dipende dal tipo di gioco che si desidera creare e dalla velocità con cui viene eseguito. La distribuzione perfetta e uniforme è possibile su un mondo di sfere (ad esempio Annientamento Planetario). Ma è un'opzione giusta nel tuo gioco? Anche se tutte le persone si riproducono alla stessa distanza, alcuni spawn potrebbero comunque avere un vantaggio migliore.

  • Armi più vicine / migliori nella gamma / più risorse
  • Copertura migliore / più nascosto / panoramica
  • il "flusso" dei giocatori, alcuni posti sono più attraenti di altri (si pensi a una mappa forestale completa con una sola casa in un posto, indipendentemente da dove si trova quella casa, buone probabilità che la gente la stia verificando)

La tua mappa è fissa o generata da una procedura? E mai provato a giocare a Age of Empires con 8 persone su una mappa di 2 persone? Non è possibile ridimensionare i giocatori senza fare modifiche alle dimensioni della mappa. Anche una posizione di partenza scorretta può portare molta dinamica nel gioco (vedi la serie Worms). Nessuno si è lamentato se si è generato in un grosso ammasso, purché la tua unica alleanza con un altro giocatore sia durata o non avessi i vermi più sopravvissuti dopo il primo round.

(Aggiungerò qualche altro esempio se saprò di più sul tuo tipo di gioco)


Aric Fowler 07/28/2017.

Andando per qualcosa non suggerito finora: fallo in modo che non ci sia il centro della mappa. Ciò che intendo è che i bordi della mappa si uniscono sui lati opposti. Ciò richiederebbe un sacco di lavoro di programmazione, ma in pratica può rendere il livello stesso ripetersi all'infinito se si cammina in una direzione. Ciò significa che non esiste un centro e una posizione di spawn casuale non presenta vantaggi o svantaggi.

Puoi farlo creando una mappa piatta che è quadrata e unendo ciascun bordo a una copia del bordo opposto. Quando un giocatore si allontana, vengono teletrasportati senza la conoscenza del giocatore sul lato opposto. Ovviamente, in teoria, non saresti in grado di vedere giocatori dall'altra parte del confine. Per risolvere questo problema, crea dei cloni di quel giocatore che sembrano camminare sull'altro lato del confine in modo che tu possa vederli, e quando corri verso di loro ti teletrasporti e il giocatore reale si trova dove si trovava il manichino.

In alternativa, l'intera mappa potrebbe esistere all'esterno di una sfera, tuttavia ciò rende le coordinate difficili per la generazione delle uova.

1 comments
2 Avery 07/29/2017
Oppure fai una mappa che, beh, in centro, puoi cacciare o cacciare molto più facilmente, e puoi anche trovare bottino più facile, ma di nuovo, è molto più possibile essere cacciati in questo modo, e in aree non centrali, fare è così che i giocatori hanno meno probabilità di trovare altri utenti e bottino, quindi se vogliono più bottino dovranno andare al centro, se vogliono sopravvivere più a lungo, dovranno rimanere dove sono. Quindi, fondamentalmente, lo svantaggio degli spawn casuali è un vantaggio.

dnk drone.vs.drones 07/28/2017.

Ecco alcune possibili soluzioni:

  • Genera casualmente sulla circonferenza del cerchio
  • Genera in modo casuale sui raggi (non generando spawn per chiudere il centro)
  • Aggiungi un componente orario di spawn casuale

Diagramma dei meccanismi di spawning

2 comments
Zanon 07/28/2017
La seconda immagine è un'ottima opzione. Risolve il problema della prima opzione in cui il giocatore sa esattamente dove si trovano tutti gli altri giocatori.
Avery 07/29/2017
@Zanon però con i primi giocatori di immagini può (e probabilmente lo farà) allontanarsi prima che qualcuno arrivi lì. Il secondo causerà spawn ingiusti, alcuni vicini ad altri. Forse qualcosa di simile in cui ci sono 2 cerchi e la differenza tra uno più piccolo e uno più grande è il punto in cui si generano, così come la seconda immagine, ma meno al centro.

MrCranky 07/28/2017.

Fondamentalmente credo che questo sia un problema di distribuzione del grafico. Supponendo una situazione di deathmatch (ogni altro giocatore è un nemico), è necessario modellare le mappe come un grafico interconnesso e tracciare il nodo sul grafico a cui ciascun giocatore è più vicino. Non tutti i nodi devono essere un punto di spawn, ma è necessario il grafico complesso per modellare le distanze tra i punti di spawn. Al momento dello spawn, stai quindi iterando il grafico e segnando ogni nodo spawnable in base al fatto che i nodi vicini abbiano giocatori.

Il nodo ideale ha quindi:

  • Nessun giocatore al momento presente
  • Più di zero giocatori nei nodi vicini (qualche piccolo numero di link)

Immagina che il tuo grafico sia stato regolarizzato e stai disegnando zone concentriche attorno a ciascun nodo. Si penalizza il nodo se le zone interne hanno già giocatori in esse e premiano i nodi che hanno giocatori alla giusta distanza. Vuoi incoraggiare lo spawning abbastanza vicino agli altri giocatori da poterlo trovare rapidamente, ma non così vicino da farli saltare prima che abbiano la possibilità di orientarsi.

Dovrai aumentare le dimensioni della mappa man mano che il numero di giocatori aumenta, ma il k non deve essere 1 o maggiore. Il tuo caso peggiore è che ogni nodo sul grafico abbia almeno un giocatore - nel qual caso non ci sono nodi validi da usare, e dovrai subire quel caso e generare un giocatore sapendo che lo faranno atterrare sopra l'altro. L'algoritmo di punteggio dovrebbe comunque ponderare i nodi in modo che si generino nel nodo con il minor numero di altri giocatori.

Ricorda che il grafico della tua mappa dovrà essere costruito con cura, con conoscenza della mappa, dei suoi percorsi, di tutti gli strozzatori e della distanza effective tra i punti del nodo, non della distanza actual . Come in, usa qualcosa come il tempo misurato per attraversare tra i nodi piuttosto che la distanza, per tenere conto di un terreno più difficile. Inoltre devi rendere conto della cover open-ness vs; due nodi potrebbero essere fisicamente distanti, ma poiché sono molto aperti, generare un giocatore su ciascun nodo potrebbe significare che sono ugualmente vulnerabili come se li avessi generati uno accanto all'altro.

perfezionamenti:

  • Aggiungi una penalità temporanea per segnare se un giocatore si è appena deposto in quel nodo, per fermare la formazione di chokepoint (un flusso infinito di giocatori che provengono dalla stessa direzione e vengono prelevati)
  • Aggiungi casualità in un intervallo (ad esempio, scegli i 3 nodi migliori e poi scegli a caso tra loro con uguale probabilità) per ottenere più variazioni.
  • Aggiungi un peso iniziale al centro della mappa (o ai punti più interessanti) quando nessuno ha ancora generato spawn, in modo da spawnare in luoghi noti, anche quando ogni nodo ha un punteggio pari a zero perché nessun altro giocatore è presente.

Aaron 07/28/2017.

Alcuni altri hanno già discusso i limiti delle vostre esigenze (la mappa dovrà ridimensionare ad un certo punto per prevenire il sovraffollamento, ecc.) E alla fine sono sfuggiti al fatto che probabilmente non esiste un algoritmo di posizionamento "perfetto". Quando probabilmente non esiste un algoritmo "perfetto", guardo sempre all'euristica. Hai diversi criteri che sono direttamente o indirettamente in disaccordo l'uno con l'altro, insieme a uno spazio di ricerca molto complicato. Trovare una soluzione ottimale potrebbe non essere fattibile o pratico, ma con un po 'di sintonia, un approccio statistico può funzionare molto bene la maggior parte delle volte.

Affrontare il terzo e il quarto criterio: "The map shouldn't have to expand."

Mi assicurerei che all'inizio avessi una sovrabbondanza di nodi (cioè: denso come una maglia di navigazione per trovare il percorso). Questo rende il calcolo della distanza dagli altri giocatori più costoso (non direttamente i nodi vicini), ma questo non è un processo che si verificherà più di una volta per round (presumo). Un bonus di questo è che è possibile utilizzare una libreria di navigazione pre-rolled per la maggior parte delle operazioni. Inoltre, questo rispetterà la traversata attorno agli ostacoli in maniera equa dove la distanza euclidea non può (i giocatori in un labirinto potrebbero essere messi più vicini che in un campo aperto)

Calcola l'euristica per le caratteristiche di spawn desiderate:

Dopo aver piazzato casualmente tutti i giocatori, calcola le prestazioni dei nodi circostanti in base ai tuoi criteri (distanza dagli altri giocatori, distanza dallo spawn, ecc.) I pesi dei tuoi valori possono essere ottimizzati e manipolati per essere non lineari per accordare esattamente le prestazioni vuoi in un caso ideale sterilizzato (griglia rettangolare piatta senza ostacoli) e le prestazioni dovrebbero essere simili quando aggiungi di nuovo il mondo. Da lì puoi decidere quanti nodi cercare, qual è la soglia per spostare un punto di partenza e quante iterazioni vuoi eseguire prima di finalizzare lo spawn e iniziare il gioco.


Anton Sherwood 07/29/2017.

Se il campo di gioco è un toro topologico (cioè un rettangolo in cui andare "fuori limite" significa entrare dal lato opposto), è probabile che questa sia una buona risposta: il giocatore j spawn a x = (pjW/N) mod W, y = (qjH/N) mod H , dove W,H sono le dimensioni del rettangolo, N è il numero di giocatori, e p,q sono numeri interi da determinare; sono distinti, (probabilmente) relativamente primi, e non troppo lontani da sqrt(N) . I punti di spawn formano uno schema obliquo 'carta da parati'.

Supponiamo che i giocatori si generino solo all'inizio del gioco. Se generano dopo, immagino che vorrai metterli il più lontano possibile dalla posizione attuale di qualsiasi giocatore - a un vertice del diagramma di Voronoi definito dagli altri giocatori.


NotThatGuy 07/31/2017.

Che ne dite di:

Ogni giocatore è circondato da una casella (o un cerchio) non di generazione .

Come in, c'è un quadrato di una certa dimensione che genera attorno a ogni giocatore e segue quel giocatore in giro - nessun altro giocatore può spawnare all'interno di quel quadrato.

Questi quadrati influenzano solo la deposizione delle uova e non altri movimenti durante il gioco.

Funziona con spawning solo iniziale o spawning continuo.

(I punti indicano i giocatori e il verde indica l'area di spawn possibile per i nuovi giocatori)

Le dimensioni della mappa non devono aumentare proporzionalmente al numero di giocatori

Per far fronte a questo, puoi fare una delle due cose: (o entrambe)

  • Diminuisci la dimensione delle caselle non di generazione in base al numero di giocatori.
  • Permetti fino a X giocatori nemici di deporre le uova in ogni scatola.
    • Questo numero può aumentare man mano che vai (a partire da 0).
    • Variante 1: avere una casella senza spawn più piccola e una casella spawn più grande.
    • Variante 2: le probabilità di peso in base alla vicinanza del nuovo spawn a questo giocatore (se all'interno della scatola) potrebbero essere difficili da implementare in modo efficiente.

HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
3 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
4 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
5 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
6 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
7 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
8 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
9 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
10 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
11 Little Mix

Told You So flac

Little Mix. 2018. Writer: Eyelar;MNEK;Raye.
12 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
13 Cher Lloyd

None Of My Business flac

Cher Lloyd. 2018. Writer: ​iamBADDLUCK;Alexsej Vlasenko;Kate Morgan;Henrik Meinke;Jonas Kalisch;Jeremy Chacon.
14 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
15 Calum Scott

No Matter What flac

Calum Scott. 2018. Writer: Toby Gad;Calum Scott.
16 Ashley Tisdale

Voices In My Head flac

Ashley Tisdale. 2018. Writer: John Feldmann;Ashley Tisdale.
17 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
18 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
19 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.
20 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.

Related questions

Hot questions

Language

Popular Tags