Developing a shoot 'em up game???


I’ll put this thread in the output forum once people know about it.

For now though:

Does anyone know a good engine to make a shoot 'em up in? I’m thinking about making one with heavily destructible models. Talking about (almost?) every hit taking a piece off of enemy ships.

So, one way I could imagine doing this would be the pixel art/Metal Slug level sprites way. This is absolutely unrealistic because I’m not good enough of an artist, let alone a pixel artist. It sure would look cool to have massive sprite debris coming off of ships with every shot but that would mean I don’t know how many man hours of making different sprites. There’s probably a reason this has never been done before and I’m not the solution.

Another way would be polygon models with some sort of destruction… engine? I don’t know how to do that. Unless maybe there is something ready made to handle this problem I can’t do it. (As you can see I’m not really literate in gamin technology)

The third option I can think of would be voxels. They are good for terraforming and stuff like that, right? I could see myself creating voxel models. That’s more manageable than sculpting polygons in ZBrush (I have experience in ZBrush and that makes me very conscious of how difficult it is to create good 3D models).

So that would mean creating voxel models, that’s cool, I think I can use MagicaVoxel and do that. But what happens if I import those into Unity or something like that? Would they really make it any easier for me to destroy them? Does Unity have some way of dealing with Voxels or are they just converted into polygons? Am I making sense at all, I really don’t know

Look. I know I look like an idiot here and that’s my way of doing things – having no clue about anything at the start and figuring it out as I go. That made me create a Ren’Py visual novel, including pre-rendered 3D images that I’m pretty proud of (knew nothing about that at the start either), and I think it can get me to at least a prototype of a shoot 'em up. I just need some initial pointers and some help along the way. I can do it.

I hope someone can help me out with my questions/mullings.

Oh and I’m not planning to work full time on this yet, it’s just something I’ve been curious for a long time and have had many ideas for. My adult game still comes first, so this would be something to do when I’m burned out on that and need to do something different for a few hours or completely after my current project


I think if you are going for full 2D, Game Maker Studio should be fine enough, although in my experience there can be a fair amount of slowdown on lower spec PCs when there is a lot of stuff happening on screen. Not sure if performance has been improved much in GMS2.

For the destructable models, I had an enemy in a platform game I made that was basically one of those flying serpent type things that looks like a head with a string of balls attached behind, moving in a snakey fashion. Each ball segment could be destroyed indivdually, or killing the head would take out all of them at once. I did a similar thing with a giant squid that had individual tentacles that could be destroyed individually too.

I think you could do something similar, with a ‘core’ object of the ship that acts as the main controller for movement, then a bunch of extra sprites attached to it, which simply have their movement fixed to be relative to the core object. I imagine this would work the same in other engines like Unity too

Not sure if all this is super obvious, but hope it helps in some way


No, no, assume nothing’s obvious to me! haha

Thanks about the GMS info. And about the “core” object idea: the image I have in my head is something pretty ridiculous. Like imagine a world war 2 plane like the spitfire getting torn into with a machine gun from close range. The gun would roar and each bullet would make a hole or rip something off. So it’s supposed to be really frantic, not like shooting a thing with a gun for two seconds and then one piece breaking off. I’d love for every bullet to tear off one voxel-sized chunk. You see what I mean? This might be too complicated for me but it’s the whole core of the idea.

And thanks for your help, YESSS!


I’m trying to remember how Game Maker handles sprites.

You could definitely do the holes thing - pretty sure you can modify sprites in real time by…god how does this work…i think you can copy it to a surface, draw on the surface, then copy it back into the sprite. So each enemy would have its own sprite that would get modified in real time, then discarded once the enemy is totally destroyed. I think that would work??

I used something like this in reverse to make procedurally generated ships once - just draw on a surface then copy into a sprite. This was years ago though so I don’t remember the specifics.

As far as tearing pieces off…I mean, I’m sure it’s possible, but I can’t think of a way to do it to sprites and I have no experience with 3D whatsoever.

That said, you could probably define different areas of a sprite to represent different things, then if it takes enough damage, rip that part of the procedurally generated sprite off, so it would look different every time while still having the same gameplay effect. Maybe?



You might also be able to modify sprites directly without an intervening surface, I don’t actually know.


don’t mind me but just wondering why they aren’t called 'shoot ‘em down’ games

maybe that’s what lightgun games should be called?


I would advise against procedural destruction systems like polygon cutting (Tiny & Big) or sprite modifying; they’re not trivial to implement and probably don’t line up with your design goals. You should be able to accomplish what you want by brute-forcing it with stacked sprites, parented to the unit core and moving relative to it, representing parts ablating off. Damage is dealt both to each individual piece and the whole, so the ship can die before the player rips every bulkhead off in exactly the same way. While it’s dying, you can break off some of the remaining pieces to send them flying away.

Voxels are pixels in 3D so just on the art side you’ve at least doubled your workload. Generally in an engine like Unity you’ll have an internal data representation of them as a 3-dimensional array but then convert that to a single polygon mesh to be rendered; disrupting the mesh at runtime is a heavy cost and requires a lot of optimization. Our student team pulled it off through multiple optimization passes by people who now work on the DX12 microcode and just ignoring performance cost on our beefy-ish 2010 45W CPUs but if you look at HouseMarque’s PS4 shooters (Resogun, Nex Machina) you’ll see most objects are nondestructable models arted to look like voxels.


Thanks so much for the feedback.

About what @BustedAstromech said about voxels in Unity: I found this and I think it might be useful from what demos and videos I have seen:

“PicaVoxel is an easy-to-use voxel editing toolset that allows you to create and manipulate vertex-colored voxel models directly inside the Unity editor.”

It comes with a particle system, which is the really exciting part, and from the comments it seems it runs fast (whatever that means, exactly). But I’m sure what you said still holds true. So I’ll look more into, as you said, “brute-forcing it with stacked sprites.” That already sounds like the kind of thing I would have done due to a lack of knowledge! Thanks for your wise words. They’re always appreciated!

Thanks for your description and help! I am sorry but I might come back to you and pester you with more questions about that exact sprite workflow. Maybe when I’ve figured out a bit I can show it to you and you can tell me if it jogs your memory.


btw I got quite hype when I saw what this game was trying to accomplish with its particle effects. It’s not what I want to do though, it looks too much like Knack or a Lego game but I felt like, uh oh, I guess I gotta move on this idea or someone else is going to do it. And basically I just want to do it because I want to do it and to give back to the world. Maybe just make it a free game or prototype/demo that could inspire someone to make more out of it. Because as Housemarque themselves learned, arcade is dead. (they work on a battle royale looking game atm, rip)


don’t use game maker for anything imo


that much of a piece of shit?


saying this as someone who loved game maker 8: yes


i’ve only barely skimmed this thread but if you want an accessible game engine you might try construct 3; i’ve only used 2 but it was enough to give me a lot of faith in the devs. i don’t know how well object pooling is optimized, which would matter for a shmup, but at the very least it’s the best program for prototyping i know: free version, runs in your browser, easy to pick up, no need to touch code, what i’m going to assume is still a healthy community for user-made extensions


we did this for our necrobombicon prototype iirc, it’s slow

yeah, also realistically in an action game things are moving fast enough that you can lean on particle effects for a lot of the work

when it comes to unity “easy” is extremely relative. not that it’s impossible but it has a serious learning curve to build pretty non-transferable skills


anyway i’m bored at work AMA


What do you mean by particle effects do a lot of the work? Like when a bullet strikes a part of the enemy plane you can have particle effects make it look like they’re the debris that came off?

So your advice would be to use Construct 3 for prototyping and then what would you use?


I guess transferable skills aren’t much of a priority to me because I don’t intend on working in the industry, really


yeah basically. you can get away with larger chunks for ships and use particle effects for bits of metal to give a sense of motion. smears are a principle of animation

if you find construct 3 is not giving you what you need you’ll probably already know what you’re looking for

sure but what happens when you put a couple months into unity and realize you hate it


Construct 3 actually looks pretty powerful, I didn’t know/expect that. That’s a super useful tip, thanks. So much of the work is just knowing what is out there that can already help you and already has solutions for your problems, I find

It’s not like I’m excited to go into Unity, I know it’s got its detractors and I don’t really know enough about it to judge it myself. So I am wary


So you’d tackle this with 2D sprites as well, instead of voxels, am I assuming that correctly?