I ended up using the muzzle flash to time whether or not the player could fire again or not along with using BTN() instead of BTNP(). Only when the muzzle flash had finished playing could a new bullet be created gave me a tempo I really enjoyed. My blink code I ended up not using a new variable, but just rode off of Time() like this: flr(sin(time()*4))==0 Unfortunately/Fortunately I already implemented everything in this video, including additional things like saving/loading high scores and a really rudimentary schedule system for spawning enemies (instead of relying on randomness) and giving the enemy ships hit points since my shot type was four bullets and that turned the whole game into an interesting score attack mode since there are more enemies than you can hit at once and you have to not only prioritize the higher score value enemies (who also have more HP) but also try and aim your shots so the most bullets hit the enemy and destroy them faster. Explosions and sounds for enemies dying I added as well, which I just made an fx/effects array to handle anything that needs to animate on the screen that isn't affected by game logic. Still going to continue watching the series though. Adapting sine waves to make enemy movement (and boss shot) patterns is something I'm looking forward to as well as seeing what sort of stage scheduler you implement. I'll continue trying my own hand at things in the meantime! One thing I noticed, too, at about 41:46 is your first kill actually gives you two points instead of one. I had this issue too which iirc I solved by making sure deleting the enemy was the last thing that occurred.
Looks like you got a lot of fun with making your game. If you want to put it on lex BBS I wouldn't mind to play ;) There's a WIP section in the BBS. Something I wanted to add about time(), I sometimes use something like flr(time()*blink_speed)%2==0 just an alternative way to do it.
I agree! Put your WIP on Lexaloffle or on our Discord. I'd be happy to check it out. Sounds like you have good ideas! Oh weird haven't noticed that bug! Thanks for letting me know.
@@LazyDevs I slowed the footage way down and it doesn't look like there's actually a problem; there were two bullets, two enemies, the second just as it's coming onto the screen.
I tried to get ahead of you and see if my invulnerability workaround was the same as yours. Pretty much exactly, except I assigned mine as player.inv. Thank you for these resources!
Aw shucks. And here I spend some 10 hours thinking through an elaborate timer mechanism using 3 functions, some 200 tokens, two separate 2D arrays one for automatically resolving timers and one for manual checks. And then you show me a solution that takes two lines and is arguably more versatile in several ways XD. Great use of the sine function, I thought you could just as well use rnd() but the vertical shifting is indeed very useful.
I just added my own logic for a lot of stuff ahead of time and did these crazy long workarounds. I also added screen shake and lots of animations. I also added a little story screen with typewriter RPG text that took a lot of tokens. Lol
I thought it might be not as flexible in letting us control frequency. Also, % can be as difficult to wrap your head around. But we‘ll deal with % at some point.
Around the 17:40 mark, when an enemy leaves the screen, and it generates one more... whatever I have done it has caused multiple enemies to spawn and generate exponentially more when they leave the screen. I have reviewed the code and even compared it with the code in the link of the next video and I can't for the life of me see where I have gone wrong... Can anyone help or suggest possible causes?
A tip to comment code, select it with mouse or shift and press Ctrl+b and it will comment or uncomment all selected lines
I ended up using the muzzle flash to time whether or not the player could fire again or not along with using BTN() instead of BTNP(). Only when the muzzle flash had finished playing could a new bullet be created gave me a tempo I really enjoyed. My blink code I ended up not using a new variable, but just rode off of Time() like this: flr(sin(time()*4))==0
Unfortunately/Fortunately I already implemented everything in this video, including additional things like saving/loading high scores and a really rudimentary schedule system for spawning enemies (instead of relying on randomness) and giving the enemy ships hit points since my shot type was four bullets and that turned the whole game into an interesting score attack mode since there are more enemies than you can hit at once and you have to not only prioritize the higher score value enemies (who also have more HP) but also try and aim your shots so the most bullets hit the enemy and destroy them faster. Explosions and sounds for enemies dying I added as well, which I just made an fx/effects array to handle anything that needs to animate on the screen that isn't affected by game logic. Still going to continue watching the series though. Adapting sine waves to make enemy movement (and boss shot) patterns is something I'm looking forward to as well as seeing what sort of stage scheduler you implement. I'll continue trying my own hand at things in the meantime!
One thing I noticed, too, at about 41:46 is your first kill actually gives you two points instead of one. I had this issue too which iirc I solved by making sure deleting the enemy was the last thing that occurred.
Looks like you got a lot of fun with making your game. If you want to put it on lex BBS I wouldn't mind to play ;)
There's a WIP section in the BBS.
Something I wanted to add about time(), I sometimes use something like flr(time()*blink_speed)%2==0 just an alternative way to do it.
I agree! Put your WIP on Lexaloffle or on our Discord. I'd be happy to check it out. Sounds like you have good ideas!
Oh weird haven't noticed that bug! Thanks for letting me know.
@@LazyDevs I slowed the footage way down and it doesn't look like there's actually a problem; there were two bullets, two enemies, the second just as it's coming onto the screen.
@@AlexFalkenberg Phew, I was getting worried there. Thanks for investigating!
I did the same thing!
That shift-click tip on the wave forms is super useful - never knew that before.
There are some mind-blowing secrets hidden in the sound editor. Every time I watch Gruber Music videos I find something new.
I tried to get ahead of you and see if my invulnerability workaround was the same as yours. Pretty much exactly, except I assigned mine as player.inv. Thank you for these resources!
Ha! When you suggested changing the enemy sprite when it gets hit by a bullet I imagined changing it to a skeleton of its former self.
5:38 I'm going to be calling them noisy notes from now on
Aw shucks. And here I spend some 10 hours thinking through an elaborate timer mechanism using 3 functions, some 200 tokens, two separate 2D arrays one for automatically resolving timers and one for manual checks. And then you show me a solution that takes two lines and is arguably more versatile in several ways XD.
Great use of the sine function, I thought you could just as well use rnd() but the vertical shifting is indeed very useful.
I have spend well over 1500 tokens already to accomplish what you did in like, four.
Hahaha, what did you do?!
I just added my own logic for a lot of stuff ahead of time and did these crazy long workarounds. I also added screen shake and lots of animations. I also added a little story screen with typewriter RPG text that took a lot of tokens. Lol
Why not use t % 2 for blinking rather than sin(t) ?
I thought it might be not as flexible in letting us control frequency. Also, % can be as difficult to wrap your head around. But we‘ll deal with % at some point.
And a big shout out to YOU! Thank you!
Around the 17:40 mark, when an enemy leaves the screen, and it generates one more... whatever I have done it has caused multiple enemies to spawn and generate exponentially more when they leave the screen. I have reviewed the code and even compared it with the code in the link of the next video and I can't for the life of me see where I have gone wrong... Can anyone help or suggest possible causes?
Post the code in the Discord!
[12:32] Here is a man who is serious about his explosions!!
So serious! Just rationalizing the next 3 episodes. ;)
31:30 "I like that" and changes it right away... xd
I liked that but then I changed it to 0.1 just to check and I liked THAT ever more. XD
39:47 "mmmmm, weiß ich nicht digga" XD
my enemy blinks why