Ottieni vincoli dalla vita reale
Spesso la risposta su come trovare l'algoritmo giusto inizia osservando come accadono queste cose nella vita reale. Hai esaminato questo? Dalla parte superiore della mia testa, posso pensare a quanto segue:
- Le strade sono lì per collegare edifici e altri punti di interesse
- Gli edifici sono collocati lungo strade esistenti, se possibile
- Se non c'è strada, un edificio viene posto in un punto vuoto e collegato a una strada vicina tramite la propria strada
- Gli edifici sono collocati vicino ad altri edifici che sono di interesse per i loro abitanti: le persone si trasferiscono per vivere vicino ai loro luoghi di lavoro, negozi di alimentari e abbigliamento ecc
- Gli edifici sono collocati vicino a risorse necessarie per l'uso previsto. Ad esempio una segheria viene posizionata vicino a foreste o addirittura in una radura. le persone hanno bisogno di acqua e cibo (piante, animali) per vivere da qualche parte.
- Gli edifici sono collocati lontano da altri edifici che sono dannosi per l'uso previsto o ai quali sarebbero dannosi. Ad esempio, un negozio di tintorie ha un odore orribile, quindi di solito non è collocato in una zona residenziale. Allo stesso modo, le taverne e i ristoranti sono rumorosi, quindi i residenti non vogliono viverci sopra, ma hanno bisogno di clienti, quindi devono essere vicini alle aree residenziali.
- Alcuni paesi hanno leggi di zonizzazione che influenzano anche il posizionamento degli edifici. Di solito si tratta di un modo più formalizzato di anticipare quali tipi di edifici possono essere dannosi l'uno per l'altro o quali risorse sono uniche per l'area (come il terreno di alta qualità è per i campi, non per la costruzione di parcheggi).
- Gli edifici sono destinati agli abitanti e il loro stile personale e le loro preferenze si riflettono in essi. Ad esempio, se una popolazione è povera, è molto più probabile che condividano il terreno (grattacieli, condomini), se sono più benestanti, possono ottenere condomini, se sono ricchi, ottengono una villa indipendente. Se ad alcuni gruppi non piacciono altri gruppi, avranno meno probabilità di convivere. Se esiste un'affinità tra determinati gruppi, questi possono spostarsi in aree simili.
Applicali alla tua topografia
Una volta che hai questi vincoli, puoi provare a costruire un algoritmo attorno ad esso. Ad esempio, genera la tua topografia e distribuisci le risorse necessarie intorno alla mappa (magari tenendo d'occhio il posizionamento di piccoli depositi delle risorse più importanti nell'area di partenza, quindi depositi più grandi più distanti tra loro). È qui che entrano in gioco le esigenze e le meccaniche del tuo gioco, ma probabilmente aggiungerai anche un elemento casuale.
Quindi costruire attività commerciali (e i loro edifici residenziali) vicino alle risorse che le utilizzano. Ad esempio una cava accanto a una grande montagna. Quindi aggiungere l'infrastruttura necessaria da loro. Ad esempio una stazione commerciale con ufficio postale e taverna dove possono fare affari e vendere i loro prodotti, una fucina per fornire strumenti ecc.
Per decidere cosa va dove, dividi la mappa in tessere dove calcoli un numero per ogni tessera quanto è desiderabile per un certo scopo, usando una funzione di ponderazione. Metti gli edifici nelle piastrelle più desiderabili per quel tipo di edificio. Aggiungi regole come "una postazione commerciale può gestire 50 aziende o 100 case", aumentando la probabilità di aggiungere un'altra postazione commerciale se una città raggiunge una determinata dimensione.
Una volta che hai questo, dovresti ottenere alcune mappe abbastanza decenti. Se noti che le mappe finiscono tutte come forme innaturali, aggiungi penalità alle tue funzioni di ponderazione per quelle forme, come "se la mia strada finisce proprio accanto a un'altra strada, -100 desiderabilità", o "se la mia strada si incrocia, -100 desiderabilità "ecc. Puoi sempre aggiungere un elemento casuale per consentire una sensazione più eccentrica o aggiungere altri meccanismi come" se un incrocio ha più di N edifici collegati alle sue strade, trasformalo in una rotonda ".
Puoi anche usare questi vincoli per dare a diverse mappe un aspetto diverso, come fare in modo che un determinato paese abbia più montagne nella sua topografia, o che una certa cultura costruisca più strade tortuose, e un'altra preferisca strade diritte ecc. Tutto semplicemente modificando una delle tue funzioni di ponderazione.
Semplificare
Naturalmente, questo approccio è troppo complesso per i giochi che non sono simulazioni commerciali, ma risolvono comunque e vedi quali tipi di edifici hanno senso per il tuo gioco ed elimina quelli non necessari. Quindi elaborare regole semplificate come "posizionare le città vicino a un fiume, una montagna o un buon terreno. 1 edificio per 100 risorse, attività commerciali in base al tipo di risorsa, 10 edifici residenziali per ogni set completo di risorse alimentari / artigianali ... o semplicemente" 1m di fiume / 1mq di terreno può supportare 10 edifici residenziali ... qualunque cosa abbia senso per un gioco. Tuttavia, una volta che sai quanta area hai (ad es. Nessun edificio sui ripidi fianchi delle montagne) e quanti edifici la zona può supportare, posiziona solo gruppi di edifici in quella zona fino a quando non è piena (come, 1 edificio commerciale, 10 residenziali , 3 infrastrutture o altro) e collegarli alle strade.