@mikefrey I really like breaking it out into amplitude, period, and angle — this will make it a ton easier to intelligently modify enemy paths (vs. trial and error with the numbers I had). This implementation has the side effect that the enemies will have one y position for each x position (each time they pass arbitrary horizontal location X, they'll always be at the same vertical location Y). I think it ends up looking kind of jerky when they collide with a wall and "rewind" their previous positions. I like having the height be dependent on the previous height and always moving smoothly through the sine wave.

another thing I realized, all the enemies are moving in sync with each other — they're all at the same point in their progress (all are +3 px off of the line they're traveling about). After we talk about what your thoughts are on my comment above we can talk about that too.