So I'm working through this game with a little different architecture than normal. Basically, my game is a collection of game objects, combined with a collection of rules, each implemented with a class. The rules themselves are objects, rather than a complicated Update method anywhere.
While I wouldn't say this is the right architecture for all games, so far in this game, it has been working really well. It makes it easy to add new rules, tweak parameters of rules, and swap rules in and out dynamically. One of the benefits I hope to get from it is an engine that can support lots of different gameplay modes. I haven't really gone in that direction yet, so it's value is yet to be proven.
Anyway, I had a rule that did gravity for ships. It worked well. Then I decided that I need gravity to work on my comets and asteroids as well, so I changed the rule with a really simple tweak to work on all objects with momentum. My comets and asteroids had gravity in an instant, and I was set to go.
Until I realized that bullets also had momentum, and suddenly were being affected by gravity! So… I just put a bunch of bullets in a stable orbit…. (Using the word "stable" loosely here because the screenshot shows them passing through the planet itself, which still needs to be fixed.)
This of course leads me to the idea that while I don't want bullets to be affected by gravity, I think I might make some secondary weapons that are.