Would C3 be a good engine for a bullet hell game ? (compared to Phaser)

0 favourites
  • 12 posts
From the Asset Store
Setup and ready for your art, animations and story. Viral Storybook App Template.
  • Hi everyone,

    For those who know a bit Construct 3, I was wondering what you think about using it for a bullet hell game (with tons of sprites on the screen, and collision management) regarding the performance.

    I'm using Construct for more than a decade so I know very well (I think) the software.

    Since C3 automatically do a ton of basic things, I'm thinking (and I may be wrong) that it's using average optimisation for components so it can be useable for many different purposes. So that C3 is not the most optimized engine you can have for a specific kind of game.

    I was surprised to read that Vampire Survivors was made with Phaser, the game doesn't lag for me and I've never seen that much sprites exploding on screen in a game. So I figured that now JS/HTML5 and nowadays computers can manage this kind of sprite explosion hell game.

    But would C3 do ? Back in the days I did some test on C2 and it wasn't very good, even with me trying to optimize (disabling collisions and stuff like that). But these were old computers, old browsers and things may have changed. Also C2 is not C3.

    Is there a reason to think that today Construct 3 wouldn't be as optimised than a hand coded thing ? Or at least that kind of game is more difficult to optimize with C3 ? Should a pro better go Phaser instead ?

    Personnaly, I think I've made my choice and will use C3 for my game (I'm not a profesionnal), but I'm quite curious about the answer to that question.

    Thanks for any info about that.

  • I don't think construct would have a problem there considering modern hardware. Vampire survivors in some ways has little going on in terms of logic (enemy ai is extremely basic, they even walk over walls), and it's maybe 200-300ish sprites at once in terms of enemies. XP gems are also condensed into a single red gem when they go offscreen, and if you stand still not collecting, enemies eventually stop dropping them. So the game is using optimizations to prevent lags. I'm pretty confident that construct is perfectly capable of handling that as long as you take care to keep the amount of sprites and logic in check to a reasonable degree, as they did for vampire survivors.

  • I tried to create a vampire survivors like, and could not manage to replicate the enemies movement. =T

  • Let's do some benchmark: dropbox.com/s/4ahybqe3t0k758f/biters.c3p

    [arrow keys to move]

  • Thanks for replying guys !

    alextro : Thanks for this file ! Super nice for testing. You actually did it yourself ? Well I notice a little stuttering from time to time by my side, and I think we're still far from the Vampire Survivor's amount of ennemies, but I believe there's still have room for optimization ? However I'm afraid this is already showing that something coded with Phaser could be more efficient from that point of view ...

    Beside that, it looks like a nice starter for the project I think I'll try to tweak it and see what happens.

    KryptoPixel this file bring an enenmi movement and the beginning of the crowd pushing stuff, that could be a starter for you too.

  • Out of interest, is there a video or test file for Phasers performance similar to alextro 's test?

  • Well Vampire Survivors is the Phaser example for me here

  • We did a recent blog post that demonstrated that even years-old mobile devices can safely manage around 10000 sprites on-screen at 60 FPS. So I think C3 will be more than capable of handling an intensive bullet hell game.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Thanks for this file ! Super nice for testing. You actually did it yourself ? Well I notice a little stuttering from time to time by my side, and I think we're still far from the Vampire Survivor's amount of ennemies, but I believe there's still have room for optimization ? However I'm afraid this is already showing that something coded with Phaser could be more efficient from that point of view ...

    You are overestimating how many enemies are actually on screen. In fact I was exactly correct with my estimate. The game stops spawning enemies if more than 300 are alive at any given time. vampire-survivors.fandom.com/wiki/Enemy

    The posted example has 500 enemies. Enemies in vampire survivor also do not really exist offscreen as they do in the example project. Offscreen enemies simply get despawned, just bosses get teleported near you instead of despawning.

    The game does a good job of making it feel like there's 10x more enemies than there actually are.

    Also check this out. reddit.com/r/gamemaker/comments/sust5d/vampire_survivors_enemy_count_how

    If there is a bottleneck with games like this, it's rarely the GPU but rather the CPU. Specifically for web-based stuff you are limited to a single thread. Except you should theoretically be able to put the enemy logic into javascript and shove it into a webworker, which should help performance.

  • Okay thanks both Ashley and WackyToaster I think this is giving a clear answer and explanation to my question !

  • Hi everyone,

    For those who know a bit Construct 3, I was wondering what you think about using it for a bullet hell game (with tons of sprites on the screen, and collision management) regarding the performance.

    I'm using Construct for more than a decade so I know very well (I think) the software.

    Since C3 automatically do a ton of basic things, I'm thinking (and I may be wrong) that it's using average optimisation for components so it can be useable for many different purposes. So that C3 is not the most optimized engine you can have for a specific kind of game.

    I was surprised to read that Vampire Survivors was made with Phaser, the game doesn't lag for me and I've never seen that much sprites exploding on screen in a game. So I figured that now JS/HTML5 and nowadays computers can manage this kind of sprite explosion hell game.

    But would C3 do ? Back in the days I did some test on C2 and it wasn't very good, even with me trying to optimize (disabling collisions and stuff like that). But these were old computers, old browsers and things may have changed. Also C2 is not C3.

    Is there a reason to think that today Construct 3 wouldn't be as optimised than a hand coded thing ? Or at least that kind of game is more difficult to optimize with C3 ? Should a pro better go Phaser instead ?

    Personnaly, I think I've made my choice and will use C3 for my game (I'm not a profesionnal), but I'm quite curious about the answer to that question.

    Thanks for any info about that.

    Vampire survivors doesn't lag? You must have a great machine. My fps drops to 5 in the last minute before the reapers.

  • Initially the example serve as swarm test for beat 'em up prototyping. So they will be likely under 50 enemies at once on screen.

    Here another sample to test massive bullets (bullets only):

    dropbox.com/s/kxm2zk8wa05sxwk/Vershoote.capx

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)