Hi, I'm a game dev interested in all sorts of action games but primarily shmups and beat 'em ups right now.

Working on Armed Decobot, beat 'em up/shmup hybrid atm. Was the game designer on Gunvein & Mechanical Star Astra (on hold).

This is my blog, a low-stakes space where I can sort out messy thoughts without worrying too much about verifying anything. You shouldn't trust me about statistical claims or even specific examples, in fact don't trust me about anything, take it in and think for yourself ๐Ÿ˜Ž

Most posts are general but if I'm posting about something, it probably relates to my own gamedev in one way or another.


๐Ÿ•น๏ธ My Games
boghog.itch.io/
๐ŸŽ™๏ธ Game Design Vids & Streams
www.youtube.com/@boghogSTG
โ˜ ๏ธ Small Updates + Dumb Takes
twitter.com/boghogooo

In shmups, bullet logic/movement can either be contained to the world space, or the screen space.

Bullets that exist in the screen space will always exist relative to the screen's location no matter what's going on with the game's scrolling. So let's say an enemy shoots an unmoving bullet that just stays there - it will always stay at the exact same spot of the screen, for the entire stage, no matter what the stages or players do.

World space bullets are a bit different, they move around together with the game's scrolling logic. So if that same enemy shot a stationary bullet, it would move down, or maybe left, or even backwards, depending on how the game's stage scrolls.

Both styles of bullets have their pros & cons. Because world space bullets scroll, it means that their aiming gets completely fucked - they're only able to shoot at the spot the player was a bunch of frames ago, and as a result they can never hit the player unless they lead their shots, or the bullet speed/player hitbox ratios are unforgiving enough. Screen space bullets have an issue called bullet wobble - the disconnect between bullets and world scrolling can be really unintuitive, especially when playing co-op.

Because of the fucked up aiming, world space bullets are a lot more risky and should be handled with care. Importantly, beginners often default to world space because scrolling the player/camera through the level feels more intuitive to them, rather than because it's a conscious choice they make after weighing the pros & cons.

CAVE use both styles of bullets in their games - bullets fired by most ground targets will exist in the world space, bullets fired by air target will exist in the screen space. Not only does this create a subtle enemy distinction, but it also helps create more consistent looking patterns for ground enemies. If you've ever wondered how CAVE do those straight lines that tanks shoot - this is it. It's not actually any sorta predictive math or anything, they are just world-space objects. Because the enemies can only shoot in a preset number of directions, the fact that they can't aim precisely at the player doesn't matter all that much, if anything sometimes it helps them compensate for the inherent imprecision of the directional lock.


You must log in to comment.

in reply to @boghog's post:

A game that I've always felt like has weird scrolling (which I think relates to this topic?) was Truxton. There are enemies and bullets which fly back and forth horizontally, and when you also scroll horizontally their speed increases or decreases. I think this is due to them trying to keep everything on screen, but it causes things to sometimes be disorienting.

You probably already know this, but to clarify for people that are interested. The only difference between doing your calculations in screen space or world space in this case is if the camera moves or not. All the behaviours can be simulated in all cases. For example if you do your bullet calculations in screen space you can still do the "world space" bullets you just apply the scroll speed to them and they will appear as if the are in world space. Same goes for doing calculations in world space, but the reverse in this case you have to apply the scroll speed to all "screen space bullets". Since most game engines and frameworks are set up to do worlds it is probably easier in most cases to just let the camera scroll and apply that speed to all bullets that you want in "screen space". What we essentially do when we shoot bullets in screen space is we are faking the fact that the motion of the bullet is dependent on the velocity of the shooter.

Hell yeah, good clarification! I'd def suggest devs to scroll camera instead of scrolling the level as long as they understand how to correct for it, it just makes a lot of stuff easier cause the x/y/z coordinates will be stable. Won't have an enemy's path or something get completely messed cause "x/y/z" mean something completely different a few frames later