Thanks for playing! To answer your question, spawning is very simple: it's an array that defines a spawn order. Each item in this array tells the game "after waiting X seconds, place enemy type Y on path Z, following this speed curve". We pre-calculated a list of paths enemies could take across the screen, and simply referred to this path list in this spawn order array via index. The speed curve dictates how each enemy moves along the path - so we could customize if an enemy simply moves along the path at a fixed speed or if it slows down a bit along the path. This system gave us a lot of control of which enemies appeared, how they moved on the screen, and the timing between enemies.