Quindi, c'è questo progetto là fuori chiamato BulletML che è un linguaggio di markup per la creazione di schemi complessi di particelle / proiettili. Avrai quasi sicuramente bisogno di trasferire il codice nella tua lingua, ma può fare cose davvero sorprendenti.
Ad esempio, questo boss è stato realizzato in un'estensione (fortemente modificata) di BulletML per Unity3D (l'autore di quel modello ha caricato quel video e Misery è pazzo, oltre che buono 1 ). È la variante più difficile di quel nemico e mostra ciò di cui BulletML è abbastanza capace (e controlla anche alcuni degli altri boss di Misery, come Wallmaster ).
Oppure posso mostrare questo esempio, che è uno schema che ho scritto mentre lavoravo ad un'espansione per The Last Federation , usando una versione precedente del sistema che è meno adatta alle mod e usa solo variabili AZ a carattere singolo:
I proiettili verdi che formano quegli anelli lì sono generati da un proiettile genitore che ruota ad alta velocità, ma essi stessi non hanno alcun movimento. Infliggono danni ingenti, mantenendo il giocatore a lungo raggio, limitandoli a ridurre le armi di danno e permettendo ai difensori mobili di molestare il giocatore (il giocatore ha vinto se la struttura immobile nel mezzo è stata distrutta).
Ecco una parte della sintassi XML che crea quelle bolle:
<bullet_pattern name="Barrier">
$WallShotAngle B=.3 A=90
$WallShotAngle B=.3 A=-90
$WallShotAngle B=.3 A=0
$WallShotAngle B=.375 A=180
</bullet_pattern>
<var name="WallShotAngle">
<bullet angle="[A]" speed="4000" interval_mult=".01" dumbfire="1" shot_type="GravityWavePurple">
<wait time="[B]" />
<change angle="0" speed="1000" time=".0001" />
<spawn>
<bullet_pattern>
<bullet angle="[A]" speed="0" shot_type="CurveBarGreen" damage_mult="8">
<wait time="12" />
<die />
</bullet>
</bullet_pattern>
</spawn>
<die />
</bullet>
</var>
Puoi vedere alcuni dei colpi viola "dell'onda di gravità" nello screenshot, che viaggiano quasi istantaneamente dalla sorgente (che ruota) al bordo della bolla, dopodiché genera il colpo verde della "barra curva", che rimane lì per 12 secondi prima despawning. Gli scatti blu e gialli che ho omesso, in quanto sono molto più complicati.
Uno degli altri modelli (un proiettile di artiglieria ) nell'espansione è stato effettivamente scritto da Misery, anche se ho apportato alcune modifiche ad esso. Inizialmente è un colpo penetrante a basso danno che vola a grande distanza e poi esplode in un enorme spettacolo pirotecnico, infliggendo tonnellate di danni. Il raggio massimo era molto più alto di quello che il giocatore poteva raggiungere, costringendo essenzialmente il giocatore a impegnarsi a corto raggio, il che era vantaggioso per gli altri tipi di unità NPC a causa dell'effetto del fucile da caccia (più proiettili raggruppati in una piccola zona).
BulletML è facile da lavorare, in generale, e può fare cose incredibili. I proiettili possono cambiare direzione, cambiare velocità, generare altri schemi, morire presto, ripetere la raccolta di comandi in un ciclo, usare ritardi, cambiare l'immagine di sprite dei proiettili, seguire i loro genitori (o meno) ... E tutto ciò che non ti supporta potrebbe scrivici dentro.
Lo consiglio vivamente se stai facendo un serio gioco sparatutto. Avresti ancora bisogno di elaborare la matematica delle coordinate per ottenere le forme desiderate, come Charanor parla nella sua risposta, ma un motore di proiettile come BulletML ti darà molta più flessibilità che passerai più tempo a progettare nuovi modelli che a capire come codificarli.
- Per spiegare quanto sia buona la miseria, quei video sono contro i boss del pavimento con l' attrezzatura di partenza : nessun modulo, nessun materiale di consumo e lo sparatutto di base. E xe subisce solo un colpo nonostante la natura allungata della lotta. Ok, 9 colpi contro Centrifuge (che non si presenta fino al terzo piano dopo che il giocatore avrà sicuramente degli aggiornamenti con almeno il doppio danno in confronto).