{"author_link":"\/users\/christina-antoinette-neofotistou","author_name":"christina-antoinette-neofotistou","author_uid":"christina-antoinette-neofotistou","comments":[],"epoch":1502573263,"event":"LD39","format":"md","ldjam_node_id":48781,"likes":16,"metadata":{"p_key":"100711","p_author":"christina-antoinette-neofotistou","p_authorkey":"1010726","p_urlkey":"316421","p_title":"How to make a bullet-hell SHMUP in 3 days","p_cat":"LDJam ","p_event":"LD39","p_time":"1502573263","p_likes":"16","p_comments":"0","p_status":"WAYBACK","us_key":"1010726","us_name":"christina-antoinette-neofotistou","us_username":"christina-antoinette-neofotistou","event_start":"1501200000","event_key":"74","event_name":"LD 39"},"node":{"_collation":{"body_sanitizer":"TextUtils::SanitizeHTML via existing importer","event":"LD39","removed_author":false},"_superparent":32802,"_trust":6,"author":10726,"body":"![screen.png](\/\/\/raw\/6e9\/2\/z\/8dbb.png)\n### This is a post-mortem for my Ludum Dare game \u201cFuse Cell\u201d made in 3 days with a competition theme of \u201cRunning out of Power\u201d\n\n# Play the game [HERE](https:\/\/ldjam.com\/events\/ludum-dare\/39\/fuse-cell)\n\n## Getting Inspired\nAs soon as the theme \u201cRunning out of Power\u201d was announced, I knew I wanted the experience my players get to not be one of limitations. Running out of power can be interpreted to mean a timer, a finite time window for the player to do something and then the game ends abruptly (figure 1, left). \nThat didn't appeal to me at all, so I immediately felt I needed to give players the ability to re-supply on power so that the game doesn't stop. I also thought passively bleeding energy is one less degree of freedom, so why not give the player control over when they want to spend her energy (figure 1, right). That was the basic shape of interaction I wanted for my main mechanic.\n\n![Untitled Diagram.png](\/\/\/raw\/6e9\/2\/z\/8dba.png)\n**Figure 1**\n\nThe thought of a recharge mechanic reminded me of Ikaruga with its rule of absorbing same-color bullets to fill up the special gauge. I decided a recharge mechanic would be a kick-ass power to have in a shmup. Bullet hell shmups are always letting players use powerful experimental weapons, plus working within an established genre cuts down on design times, which is ideal for a jam. So, taking the theme and running with it, I determined shooting could be my energy discharge mechanic, and absorbing energy from enemy ships could be my recharge mechanic.\n\n![ikaruga-12.jpg](\/\/\/raw\/6e9\/2\/z\/8dbc.jpg)\n**Ikaruga**\n\n## Crafting the main game mechanic\n\nVeteran game designer and absolute sweetie [Dene Carter] (https:\/\/twitter.com\/Fluttermind) and the book \u201cClockwork Game Design\u201d he recommended, have tried hard to impress upon me that fun game design is about:\nOne main mechanic per game (or one per task, for more complex games), which all other mechanics should both reinforce *and* not contradict\nA choice, at any given time, between an easy, low-risk action, and a risky but high reward action.\nAsking what you want the player to feel, and tailoring the rules of the game to create that feeling and experience in the player.\nMy primary game mechanic was established : *I wanted the player to feel very limited by her energy supply (figure 2), but also badass because of her ability to recharge.*\n\n![shooting.gif](\/\/\/raw\/6e9\/2\/z\/8dbd.gif)\n**Figure 2:** shooting expends your energy bar\n\nTo reinforce the risk of the primary mechanic, I thought I should add a radius to the recharge ability. The direct consequence is that if the player decides to recharge, she will have to get up close to the enemy and suffer the consequences (which were not yet determined).\nAt this point (end of day 1, I think, and still working with abstract graphics) I had made the player\u2019s ship (the black square) extend up to 4 energy tendrils when an enemy (circle) is near. The tendrils follow the enemies until they\u2019re out of the sphere of influence (the semi-transparent circle). This is indication that the player can absorb those 4 enemies as long as they\u2019re connected via energy tendril to the ship (figure 3)\n\n![tendrils.png](\/\/\/raw\/6e9\/2\/z\/8dbe.png)  \n**Figure 3** Refining the behavior of the energy tendrils\n\nAt that point I hadn\u2019t coded any collision with the player, no way for the player to be damaged, no consequences to using the absorb ability. To further drive the point of risk\/reward home, and inspired by my favorite and excellent horizontal shmup ProGear, I decided to implement two things\n\n- Single-hit death from bullets (pretty much a standard for shmups)\n- Single-hit death from impact with airborne enemies\n\nTherefore enemy types became:\n\n1. Airborne enemies which kill you on impact\n    Type that shoots bullets \n    Type that doesn\u2019t shoot bullets \n2. Land-based enemies (tanks) which do not kill you on impact (because they\u2019re on the ground, away from your ship)\n    These all shoot bullets \n\n![enemies.png](\/\/\/raw\/6e9\/2\/z\/8dbf.png)\n\nHere is the thinking behind this design decision:\n\nLand-based enemies don\u2019t kill you on impact, but also can\u2019t be absorbed to replenish your energy. This means the only way to kill them is by shooting at them, which is the action that depletes your energy. The pieces of the puzzle were starting to fall into place. You\u2019re motivated to kill the tanks because of the deadly bullet spray they unleash otherwise. But in order to kill them, you need to master the absorb ability.\n\nAirborne enemies are the ones you need to absorb energy from. However that poses a risk because you have to go near them. Even those that don\u2019t shoot at you can kill you on impact, so you need to choose your timing and position (more decision-making can mean more involved and more fun gameplay). You can always kill them by shooting at them, but then you\u2019re expending energy *and* wasting your recharge sources. \n\nNext I decided that a nice visual way to display the absorb ability is to tractor-beam the enemies toward the player\u2019s ship (figure 4). With a \u201cglomp\u201d sound effect. I know, super silly. It\u2019s the reason why I like cartoony art direction: it lets you get away with more experimentation.\n\n![glomp.gif](\/\/\/raw\/6e9\/2\/z\/8dc0.gif) ![absorb3.gif](\/\/\/raw\/6e9\/2\/z\/8dc1.gif)\n**Figure 4**: Glomp!\n\n\n\n# Refining the main game mechanic\n\nNext up: the recharge mechanic was working fine, however it felt a bit overpowered. There were no consequences in using it. I wanted to give it something extra to keep it grounded in reality, so to speak. Up to now it was mainly the game design informing the theme. Now it was time for the theme to inform game design: What would be the limits of a super powerful experimental energy-leeching aircraft? How about overloading? Yes, if I could make the absorb mechanic into an \u201cactive gun-reloading\u201d minigame that would totally do! \n\n![recharge.gif](\/\/\/raw\/6e9\/2\/z\/8dc3.gif)\n**Figure 5**: the charge bar!\n\nSo enter the charge bar and the rules I made up for this minigame (figure 5):\n\n- Whenever one or more airborne enemies are in range, pressing Action Button 2 makes a charge bar appear. The longer you press, the more the bar fills up. Whenever you release, you get three outcomes depending on its length:\n \n![charge bar.png](\/\/\/raw\/6e9\/2\/z\/8dc2.png)\n\n- **Teal**: you gain a fraction of your energy bar back (less than 100\/100). The fuller the bar, the closer to 100 you get\n- **Orange**: you get MAX energy (100\/100). Enjoy your feeling of safety!\n- **Red**: you overload, your energy bar becomes red and you can\u2019t shoot for 1.5 seconds. On top of that, your energy becomes 10\/100, regardless of what you had before. Ouch!\n\n![energy bar.png](\/\/\/raw\/6e9\/2\/z\/8dc4.png)\n\nOn top of that, again guided by the shmup genre, I thought I\u2019d implement a super-bomb. Building on the existing mechanic, I guesstimated that a successful MAX recharge twice in a row - which means the player has mastered the absorb ability- would feel good and further the risk\/reward. Remember, you have two chances to mess it up. If you successfully make a bomb, this fireball appears, clearing all the bullets on screen and dealing constant damage to all the enemies it touches for 2 seconds (figure 6) When the fireball is done, you\u2019re left with half your energy (50\/100) so that you can\u2019t repeat the super-bomb immediately without recharging first.\n\n![fireball.gif](\/\/\/raw\/6e9\/2\/z\/8dc5.gif)\n**Figure 6**: yes, I wasted an hour making this 3-frame fireball. It still didn\u2019t look destructive enough, but it gives you the general idea\n\n# AI\n\nEnemy patterns in bullet hell shmups are an integral part of level design. Up to this point, I had managed to pixel some rough enemies, give them a tiny bit of animation and personality, and had placed them in the level like so:\n\n![level placement.png](\/\/\/raw\/6e9\/2\/z\/8dc6.png)\n\nThis is one of the things the Construct 2 editor does brilliantly. I gave the level a passive scroll speed, so it auto-scrolls to the left, and every enemy that enters the screen becomes \u201cActivated\u201d. From then on, it\u2019s about simple trigonometry:\n\nThe **frog enemies** just do a sine up-and-down wave movement. No shooting.\n\nThe **flying cannons** start moving horizontally but every second their angle of motion increases by 8 degrees, which means they eventually leave the screen while moving diagonally and to the left, in a nice arc. They shoot one bullet in the direction of the player every now and then.\n\nI thought, for variety, I\u2019d make some of the **flying cannons red**, and give them a much more circular path to follow (i.e. an 8 degree increase in their movement angle every 0.1 seconds). I also made them faster. The end result is they appear to aggressively sweep the screen, shoot three bullets, and then retreat.\n\nThe **tanks** are static, moving with the level, but produce a circular bullet barrage (using a loop that runs 36 times, increasing the angle of each bullet by 10 for each loopindex) \n\n![tank.png](\/\/\/raw\/6e9\/2\/z\/8dc7.png)\n\n\nI thought enemy **hot air balloons** would be a nice touch. I made them big and impressive, but their hitbox is limited to only the cannon they carry. Their behavior is straightforward: they go up and fire a three-way shot, regardless of the player\u2019s position. To illustrate this, I used a quick and dirty trick, and just added a second frame with a target on it to the sprite.\n\n![balloon.gif](\/\/\/raw\/6e9\/2\/z\/8dc8.gif)\n\n# BOSS\n\n![rook.png](\/\/\/raw\/6e9\/2\/z\/8dc9.png)\n\nAgain, silliness. I made the rook body invulnerable. You need to shoot its head. I thought the boss could spawn smaller airborne enemies to both kill you and provide a source of energy for your ship, but then I thought I could do one better: I made the Rook shoot huge, slow cannonballs that can kill you and that you can either shoot at or absorb. Problem solved.\nAfter you\u2019ve depleted the head\u2019s hefty HP count, you get to the second boss form, a silly tank turret that shoots the same circular barrage as the ground tanks. Once you\u2019re done, there\u2019s a semi-satisfying explosion and you\u2019ve won the game.\n\n# Art\n\nI focused on making enemy and friendly fire super visible (fuchsia and yellow respectively) and it seems to have worked well.\nThe few concessions I made to graphics were that I took the time to make:\n1. a passable 10-frame explosion. Explosions are super important in shmups. \n![explo.gif](\/\/\/raw\/6e9\/2\/z\/8dca.gif)\n\n2. A passable stage background \n![bg.png](\/\/\/raw\/6e9\/2\/z\/8dcb.png)\n\n3. A passable lightning effect animation plus a square wave driving its opacity from 50% to 100% every few milliseconds, so it would flash slightly. \n![lightning.gif](\/\/\/raw\/6e9\/2\/z\/8dcc.gif)\n\n\n# Scoring System:\n\nIn support of the main mechanic, I wanted a scoring system that provides for individual players to show some self-expression. Therefore I implemented some hard and fast rules:\n\n- Destroying an enemy by shooting at it or by smart-bomb gives you 10 points.\n- Using your absorb ability to destroy a ship gives you twice the score. I.e. you get 20 points per ship you absorb. This is to encourage using the absorb ability *and* at the same time discourage overusing the smart bomb. Smart bombs are good for dodging hard situations, but bad for scoring.\n- Ground enemies can\u2019t be absorbed, so they leave coins instead. If you manage to catch them before they disappear they provide a nice bonus. \n\nThese rules might need some tweaking. And probably adding a few zeroes at the end ^-^\n\n\n# Music\n\nI composed in FL studio. I wanted something uplifting and heroic, but not grimdark. Airship themes, marching bands and disco string sections all sort of mashed-up in my head while I lay it out in a hurry. EMU\u2019s old +Symphony.sf2 soundfont is fun for prototyping large ensembles\n\n# Sfx\n\nBFXR is an amazing piece of software, due to its presets and customization. But it\u2019s also a fantastic exploration space: if you know how to edit your results a little bit, pressing the \u201crandomize\u201d button a bunch of times can really yield sfx you didn\u2019t even know you needed. It\u2019s like sailing a sea of possibilities and encountering new treasures.\n\nA trick I learnt from Klik and Play (currently Multimedia Fusion) back in the day is: whenever I have a lot of similar sounds going off concurrently, I silence them all before starting a new one.\nI.e. whenever I sound an explosion, I completely cut off any other explosion sounds (stop all sounds with a tag \u201cexplosion\u201d) and then play \u201cexplosion.wav\u201d with a tag \u201cexplosion\u201d (that\u2019s the way Construct 2 handles sound events)\n.\n\n# Couldn\u2019t implement\n1. AZERTY-friendly controls. I know, my friends who use AZERTY keyboards always get the short end of the stick, because I never plan ahead\n2. Two player support - during the Jam I fired up MAME and played Detana Twinbee (for research and to unwind). I remembered how awesome the two-player co-op mechanic is in this game. If the two players can manage to position their ships properly, their combined weapon is a lot stronger than the sum of their individual weapons. Sadly I had no time to even think about adding controls for a second player, and my code was spaghetti at this point ^-^\u2019\n\n![twinbee.png](\/\/\/raw\/6e9\/2\/z\/8dce.png)\n\n3. Saving the high-score so you\u2019ll be tempted to try again\n4. Advanced bullet patterns. I.e. bullets that slow down, speed up, change course after being fired, etc. \n5. A second level. I was completely exhausted and also finished in the nick of time, so one level would have to suffice as a proof-of-concept at least.\n\nThanks for reading this far.\n\n# Play the game [HERE](https:\/\/ldjam.com\/events\/ludum-dare\/39\/fuse-cell)\n\n\n\n\n\n\n\n\n","comments":0,"created":"2017-08-12T20:59:35Z","files":[],"files-timestamp":0,"id":48781,"love":16,"love-timestamp":"2017-08-22T18:43:27Z","meta":[],"modified":"2017-08-22T18:43:27Z","name":"How to make a bullet-hell SHMUP in 3 days","node-timestamp":"2017-08-12T21:31:34Z","parent":39905,"parents":[1,5,9,32802,39905],"path":"\/events\/ludum-dare\/39\/fuse-cell\/how-to-make-a-bullet-hell-shmup-in-3-days","published":"2017-08-12T21:27:43Z","scope":"public","slug":"how-to-make-a-bullet-hell-shmup-in-3-days","subsubtype":"","subtype":"","type":"post","version":139484},"node_metadata":{"n_key":"48781","n_urlkey":"316421","n_parent":"39905","n_path":"\/events\/ludum-dare\/39\/fuse-cell\/how-to-make-a-bullet-hell-shmup-in-3-days","n_slug":"how-to-make-a-bullet-hell-shmup-","n_type":"post","n_subtype":"","n_subsubtype":"","n_author":"10726","n_created":"1502571575","n_modified":"1503427407","n_version":"139484","n_status":"WAYBACK"},"source_url":"https:\/\/ldjam.com\/events\/ludum-dare\/39\/fuse-cell\/how-to-make-a-bullet-hell-shmup-in-3-days","text":"![screen.png](\/\/\/raw\/6e9\/2\/z\/8dbb.png)\n### This is a post-mortem for my Ludum Dare game \u201cFuse Cell\u201d made in 3 days with a competition theme of \u201cRunning out of Power\u201d\n\n# Play the game [HERE](https:\/\/ldjam.com\/events\/ludum-dare\/39\/fuse-cell)\n\n## Getting Inspired\nAs soon as the theme \u201cRunning out of Power\u201d was announced, I knew I wanted the experience my players get to not be one of limitations. Running out of power can be interpreted to mean a timer, a finite time window for the player to do something and then the game ends abruptly (figure 1, left). \nThat didn't appeal to me at all, so I immediately felt I needed to give players the ability to re-supply on power so that the game doesn't stop. I also thought passively bleeding energy is one less degree of freedom, so why not give the player control over when they want to spend her energy (figure 1, right). That was the basic shape of interaction I wanted for my main mechanic.\n\n![Untitled Diagram.png](\/\/\/raw\/6e9\/2\/z\/8dba.png)\n**Figure 1**\n\nThe thought of a recharge mechanic reminded me of Ikaruga with its rule of absorbing same-color bullets to fill up the special gauge. I decided a recharge mechanic would be a kick-ass power to have in a shmup. Bullet hell shmups are always letting players use powerful experimental weapons, plus working within an established genre cuts down on design times, which is ideal for a jam. So, taking the theme and running with it, I determined shooting could be my energy discharge mechanic, and absorbing energy from enemy ships could be my recharge mechanic.\n\n![ikaruga-12.jpg](\/\/\/raw\/6e9\/2\/z\/8dbc.jpg)\n**Ikaruga**\n\n## Crafting the main game mechanic\n\nVeteran game designer and absolute sweetie [Dene Carter] (https:\/\/twitter.com\/Fluttermind) and the book \u201cClockwork Game Design\u201d he recommended, have tried hard to impress upon me that fun game design is about:\nOne main mechanic per game (or one per task, for more complex games), which all other mechanics should both reinforce *and* not contradict\nA choice, at any given time, between an easy, low-risk action, and a risky but high reward action.\nAsking what you want the player to feel, and tailoring the rules of the game to create that feeling and experience in the player.\nMy primary game mechanic was established : *I wanted the player to feel very limited by her energy supply (figure 2), but also badass because of her ability to recharge.*\n\n![shooting.gif](\/\/\/raw\/6e9\/2\/z\/8dbd.gif)\n**Figure 2:** shooting expends your energy bar\n\nTo reinforce the risk of the primary mechanic, I thought I should add a radius to the recharge ability. The direct consequence is that if the player decides to recharge, she will have to get up close to the enemy and suffer the consequences (which were not yet determined).\nAt this point (end of day 1, I think, and still working with abstract graphics) I had made the player\u2019s ship (the black square) extend up to 4 energy tendrils when an enemy (circle) is near. The tendrils follow the enemies until they\u2019re out of the sphere of influence (the semi-transparent circle). This is indication that the player can absorb those 4 enemies as long as they\u2019re connected via energy tendril to the ship (figure 3)\n\n![tendrils.png](\/\/\/raw\/6e9\/2\/z\/8dbe.png)  \n**Figure 3** Refining the behavior of the energy tendrils\n\nAt that point I hadn\u2019t coded any collision with the player, no way for the player to be damaged, no consequences to using the absorb ability. To further drive the point of risk\/reward home, and inspired by my favorite and excellent horizontal shmup ProGear, I decided to implement two things\n\n- Single-hit death from bullets (pretty much a standard for shmups)\n- Single-hit death from impact with airborne enemies\n\nTherefore enemy types became:\n\n1. Airborne enemies which kill you on impact\n    Type that shoots bullets \n    Type that doesn\u2019t shoot bullets \n2. Land-based enemies (tanks) which do not kill you on impact (because they\u2019re on the ground, away from your ship)\n    These all shoot bullets \n\n![enemies.png](\/\/\/raw\/6e9\/2\/z\/8dbf.png)\n\nHere is the thinking behind this design decision:\n\nLand-based enemies don\u2019t kill you on impact, but also can\u2019t be absorbed to replenish your energy. This means the only way to kill them is by shooting at them, which is the action that depletes your energy. The pieces of the puzzle were starting to fall into place. You\u2019re motivated to kill the tanks because of the deadly bullet spray they unleash otherwise. But in order to kill them, you need to master the absorb ability.\n\nAirborne enemies are the ones you need to absorb energy from. However that poses a risk because you have to go near them. Even those that don\u2019t shoot at you can kill you on impact, so you need to choose your timing and position (more decision-making can mean more involved and more fun gameplay). You can always kill them by shooting at them, but then you\u2019re expending energy *and* wasting your recharge sources. \n\nNext I decided that a nice visual way to display the absorb ability is to tractor-beam the enemies toward the player\u2019s ship (figure 4). With a \u201cglomp\u201d sound effect. I know, super silly. It\u2019s the reason why I like cartoony art direction: it lets you get away with more experimentation.\n\n![glomp.gif](\/\/\/raw\/6e9\/2\/z\/8dc0.gif) ![absorb3.gif](\/\/\/raw\/6e9\/2\/z\/8dc1.gif)\n**Figure 4**: Glomp!\n\n\n\n# Refining the main game mechanic\n\nNext up: the recharge mechanic was working fine, however it felt a bit overpowered. There were no consequences in using it. I wanted to give it something extra to keep it grounded in reality, so to speak. Up to now it was mainly the game design informing the theme. Now it was time for the theme to inform game design: What would be the limits of a super powerful experimental energy-leeching aircraft? How about overloading? Yes, if I could make the absorb mechanic into an \u201cactive gun-reloading\u201d minigame that would totally do! \n\n![recharge.gif](\/\/\/raw\/6e9\/2\/z\/8dc3.gif)\n**Figure 5**: the charge bar!\n\nSo enter the charge bar and the rules I made up for this minigame (figure 5):\n\n- Whenever one or more airborne enemies are in range, pressing Action Button 2 makes a charge bar appear. The longer you press, the more the bar fills up. Whenever you release, you get three outcomes depending on its length:\n \n![charge bar.png](\/\/\/raw\/6e9\/2\/z\/8dc2.png)\n\n- **Teal**: you gain a fraction of your energy bar back (less than 100\/100). The fuller the bar, the closer to 100 you get\n- **Orange**: you get MAX energy (100\/100). Enjoy your feeling of safety!\n- **Red**: you overload, your energy bar becomes red and you can\u2019t shoot for 1.5 seconds. On top of that, your energy becomes 10\/100, regardless of what you had before. Ouch!\n\n![energy bar.png](\/\/\/raw\/6e9\/2\/z\/8dc4.png)\n\nOn top of that, again guided by the shmup genre, I thought I\u2019d implement a super-bomb. Building on the existing mechanic, I guesstimated that a successful MAX recharge twice in a row - which means the player has mastered the absorb ability- would feel good and further the risk\/reward. Remember, you have two chances to mess it up. If you successfully make a bomb, this fireball appears, clearing all the bullets on screen and dealing constant damage to all the enemies it touches for 2 seconds (figure 6) When the fireball is done, you\u2019re left with half your energy (50\/100) so that you can\u2019t repeat the super-bomb immediately without recharging first.\n\n![fireball.gif](\/\/\/raw\/6e9\/2\/z\/8dc5.gif)\n**Figure 6**: yes, I wasted an hour making this 3-frame fireball. It still didn\u2019t look destructive enough, but it gives you the general idea\n\n# AI\n\nEnemy patterns in bullet hell shmups are an integral part of level design. Up to this point, I had managed to pixel some rough enemies, give them a tiny bit of animation and personality, and had placed them in the level like so:\n\n![level placement.png](\/\/\/raw\/6e9\/2\/z\/8dc6.png)\n\nThis is one of the things the Construct 2 editor does brilliantly. I gave the level a passive scroll speed, so it auto-scrolls to the left, and every enemy that enters the screen becomes \u201cActivated\u201d. From then on, it\u2019s about simple trigonometry:\n\nThe **frog enemies** just do a sine up-and-down wave movement. No shooting.\n\nThe **flying cannons** start moving horizontally but every second their angle of motion increases by 8 degrees, which means they eventually leave the screen while moving diagonally and to the left, in a nice arc. They shoot one bullet in the direction of the player every now and then.\n\nI thought, for variety, I\u2019d make some of the **flying cannons red**, and give them a much more circular path to follow (i.e. an 8 degree increase in their movement angle every 0.1 seconds). I also made them faster. The end result is they appear to aggressively sweep the screen, shoot three bullets, and then retreat.\n\nThe **tanks** are static, moving with the level, but produce a circular bullet barrage (using a loop that runs 36 times, increasing the angle of each bullet by 10 for each loopindex) \n\n![tank.png](\/\/\/raw\/6e9\/2\/z\/8dc7.png)\n\n\nI thought enemy **hot air balloons** would be a nice touch. I made them big and impressive, but their hitbox is limited to only the cannon they carry. Their behavior is straightforward: they go up and fire a three-way shot, regardless of the player\u2019s position. To illustrate this, I used a quick and dirty trick, and just added a second frame with a target on it to the sprite.\n\n![balloon.gif](\/\/\/raw\/6e9\/2\/z\/8dc8.gif)\n\n# BOSS\n\n![rook.png](\/\/\/raw\/6e9\/2\/z\/8dc9.png)\n\nAgain, silliness. I made the rook body invulnerable. You need to shoot its head. I thought the boss could spawn smaller airborne enemies to both kill you and provide a source of energy for your ship, but then I thought I could do one better: I made the Rook shoot huge, slow cannonballs that can kill you and that you can either shoot at or absorb. Problem solved.\nAfter you\u2019ve depleted the head\u2019s hefty HP count, you get to the second boss form, a silly tank turret that shoots the same circular barrage as the ground tanks. Once you\u2019re done, there\u2019s a semi-satisfying explosion and you\u2019ve won the game.\n\n# Art\n\nI focused on making enemy and friendly fire super visible (fuchsia and yellow respectively) and it seems to have worked well.\nThe few concessions I made to graphics were that I took the time to make:\n1. a passable 10-frame explosion. Explosions are super important in shmups. \n![explo.gif](\/\/\/raw\/6e9\/2\/z\/8dca.gif)\n\n2. A passable stage background \n![bg.png](\/\/\/raw\/6e9\/2\/z\/8dcb.png)\n\n3. A passable lightning effect animation plus a square wave driving its opacity from 50% to 100% every few milliseconds, so it would flash slightly. \n![lightning.gif](\/\/\/raw\/6e9\/2\/z\/8dcc.gif)\n\n\n# Scoring System:\n\nIn support of the main mechanic, I wanted a scoring system that provides for individual players to show some self-expression. Therefore I implemented some hard and fast rules:\n\n- Destroying an enemy by shooting at it or by smart-bomb gives you 10 points.\n- Using your absorb ability to destroy a ship gives you twice the score. I.e. you get 20 points per ship you absorb. This is to encourage using the absorb ability *and* at the same time discourage overusing the smart bomb. Smart bombs are good for dodging hard situations, but bad for scoring.\n- Ground enemies can\u2019t be absorbed, so they leave coins instead. If you manage to catch them before they disappear they provide a nice bonus. \n\nThese rules might need some tweaking. And probably adding a few zeroes at the end ^-^\n\n\n# Music\n\nI composed in FL studio. I wanted something uplifting and heroic, but not grimdark. Airship themes, marching bands and disco string sections all sort of mashed-up in my head while I lay it out in a hurry. EMU\u2019s old +Symphony.sf2 soundfont is fun for prototyping large ensembles\n\n# Sfx\n\nBFXR is an amazing piece of software, due to its presets and customization. But it\u2019s also a fantastic exploration space: if you know how to edit your results a little bit, pressing the \u201crandomize\u201d button a bunch of times can really yield sfx you didn\u2019t even know you needed. It\u2019s like sailing a sea of possibilities and encountering new treasures.\n\nA trick I learnt from Klik and Play (currently Multimedia Fusion) back in the day is: whenever I have a lot of similar sounds going off concurrently, I silence them all before starting a new one.\nI.e. whenever I sound an explosion, I completely cut off any other explosion sounds (stop all sounds with a tag \u201cexplosion\u201d) and then play \u201cexplosion.wav\u201d with a tag \u201cexplosion\u201d (that\u2019s the way Construct 2 handles sound events)\n.\n\n# Couldn\u2019t implement\n1. AZERTY-friendly controls. I know, my friends who use AZERTY keyboards always get the short end of the stick, because I never plan ahead\n2. Two player support - during the Jam I fired up MAME and played Detana Twinbee (for research and to unwind). I remembered how awesome the two-player co-op mechanic is in this game. If the two players can manage to position their ships properly, their combined weapon is a lot stronger than the sum of their individual weapons. Sadly I had no time to even think about adding controls for a second player, and my code was spaghetti at this point ^-^\u2019\n\n![twinbee.png](\/\/\/raw\/6e9\/2\/z\/8dce.png)\n\n3. Saving the high-score so you\u2019ll be tempted to try again\n4. Advanced bullet patterns. I.e. bullets that slow down, speed up, change course after being fired, etc. \n5. A second level. I was completely exhausted and also finished in the nick of time, so one level would have to suffice as a proof-of-concept at least.\n\nThanks for reading this far.\n\n# Play the game [HERE](https:\/\/ldjam.com\/events\/ludum-dare\/39\/fuse-cell)\n\n\n\n\n\n\n\n\n","title":"How to make a bullet-hell SHMUP in 3 days","wayback_source":[]}