Due to popular demand the thumbnail has been changed to the proper grammar (you're instead of your). So, you're welcome! Also, thanks for the support, guys!
This would make for an interesting multi-player game pitting snakes against the food People playing as snakes compete to become the biggest, whereas the food tries to stay alive as long as possible or kill all the snakes
@@kayagorzan I assume it would be more like an .io game where there are no definite rounds and when you die you just go back to the bottom of the leaderboard
Here some suggestions Gives the snakes different colours and a different shade for the head Make the snakes always target the nearest piece of food, so that you can trick a snake into another piece of food, rather than following you, or start hunting you if you pass too close Snakes increase their speed every time they eat a piece of food
You could also give certain snakes different behaviors. Ex. One snake goes after the closest piece of food it sees, and will not stop chasing until they disappear. One snake always chases the player but has the slowest speed of the snakes. Another snake could puppy guard an area and chases any food that's close to it radius.
I would also suggest a visual cue for where the player is after moving through a portal. Like a growing/blinking, fading ring centred on the player's new location.
@@ryleygriggs9840 what about a snake that rather than wanting to eat you, instead simply wants to get you cornered (like imagine you're escaping from a snake and sneaky snake gets on front of you therefore you die)
It would be funny to have a "reverse" snake, where you start with a relatively long snake that shits at frequent, but random times and you have to avoid the ever growing number of permanent shitpiles. Difficulty settings could affect the length of the snake. Or this feature could be combined with the original game.
Oh hey, finally something I've actually done before :D In university I coded a snake game for fun in JS. Looking at how you did the snake, food, and collision... There are a few ways you could optimise that, definitely. Firstly, you don't need any collision stuff. Just have a grid that is either occupied by food, a snake segment, or air, and then when the snake moves you check the tile it's going into for whether that's A) food, or B) snake. If it's food, you increase the snake's length. If it's snake, the snake dies and it's game over. For moving the snake, you don't have to move all the segments forward. Just remove the last segment and put it in front. To increase the snake's length when eating food, do the same as above without removing the tail segment.
so; here's an idea give snakes their own """"personalities"""", like in pacman where the ghosts have different behavior one might be persistent on chasing you, while one might try and wall you off once it realizes you're moving also, another thing you might want to add: some way to deter or even flat out kill one of the snakes temporarily, perhaps a poison apple you have to bait the snake into?
3 things: 1. You should hace a portal respawn cooldown when you go through the portal to discourage camping the portals and going through last second. 2. What happens if you go through the food? 3. If you want to make sure the snakes dont go straight for you you should make it so that they redirect to the closest food every 2ish seconds. Obviously i dont expect you to add these (ive taken some coding classes and i hate going back to a finished product and changing my code) but it is some solutions/questions i thought of when i was watching
Imagine if you could eat the food, too, and get longer, increasing your length, making it harder to dodge enemies. Extra hazard of lesser importance, but enough to be worth avoiding when possible.
Yeah, that diagonal walk was so weird. A real uncanny valley experience. There could be a cost associated with the choice of movement. A string up North-South + East-West movements would have a much larger cost vs a string of only North-South or East-West movements.
I thought the same thing. Maybe tie it to the difficulty? Have the snakes move only in straight lines on easy difficulty, occasionally diagonally on normal, and always take the most efficient route on hard
"It's not an AI" Yes it is. Though hand-coded, it makes intelligent decisions based on its environment. You find these kinds of search algorithms at the start of every intro to AI course. Machine learning isn't the only subfield of AI
I really love it! Few tips for actual game: 1. You should make snakes different colours so they don't blend together 2. You could add some massive point boost after killing the snake so it would be more profitable to outsurvive them all in a short game than to simply survive the longest time possible. And for 2.0: Powerups. Players love powerups let it be brief invulnerability, repelent, bonus points, speed up, slow for snakes, freeze time, even extra life!
Here's a good idea for the game: make it, so that if a snake dies, it responds as only the head. This makes it so it's impossible for the snakes to all kill themselves, leaving you with an open field with no enemies. This will make the game more infinite.
I have a few suggestions for making the game more interesting. Have the score be based on how many fruits you can collect yourself. Collecting fruits give you some amount of score, and that score has a bonus for each fruit you've gotten without using a portal. If you take a fruit that a snake was after, it aggros you. Using a portal resets your multiplier, but it also resets the aggro on any snakes that had you targeted. This gives you an objective that intersects with the snakes objective, and instead of standing next to a portal and waiting on snakes to get close, you are constantly moving into danger.
This is very good quality for such a small channel! One suggestion I'd have is give the snakes a random offset from their base colour. Not enough to make them wildly different, but just enough that you can tell two of them apart when they're adjacent.
Excellent point! This isn't actually my first time doing crazy things with snake because one time I did exactly what your describing. Thanks for the support!
This actually seems terrifying in the fruits pov. Imagine an entire zoo's worth of snakes getting bigger with each of your brethren they eat and when they see you they relentlessly chase after you until you're eaten 3:13 also anime moment
I am just beginning my python journey. I initially didn't understand how making games would apply to real life tasks but your video helped me connect those dots. Thank you so much for including some of the work for the game.
I would probably rotate one set of portals 45 degrees for easier identification and have each food a different color and have the head of the snake match the color of the food it's navigating to.
This is neat! I think it'd be cool if you gave the snakes the Pac Man ghost treatment, honestly. Give them different colors and different "personalities." One could always be hunting you regardless, one could more or less ignore you and only go after stationary food, one could just go after whatever food was closest, one could randomly switch targets every few seconds, etc.
Your code is super clean! 💯 Structured logically, formatted nicely, and easy to follow. Having managed dev teams for many years, my code review senses got all excited watching this… 😆 Great vid!
@@CodeNoodles and well deserved! It’s rare to see code of this standard on TH-cam... I really appreciated your consistent naming conventions (“isX()” for functions returning booleans, or “getX()” for methods returning calculated properties). Your static Snake::isSafe() method used reference calling cleverly across multiple Snake instances… And I liked how you used ternary operators to make your code shorter, but not at the expense of readability :) I’m guessing you do this professionally? If you don’t mind me asking, for how many years? Keep it up dude. Your code is poetry 🙌🏻
@@CodeNoodles 5:08 Hate to be mean, but this fails both clean (5 indents, lines 13 to 23 should most likely be a separate function) and it sounds like you did not fully understand it (basically can you describe it to a none DEV). Just one example, most of it looks good and I can understand the function at 5:08 in context.
I know almost nothing about coding, but this is fascinating... I appreciate that I could still follow things too. Thanks for sharing your work. It's a good reminder of how complex creations that seem deceptively simple can be. Impressive!
I love this idea. It’s such a simple to grasp gamemode with quite a nice layering of that paradoxical meta that “primitive” games like this are known for. “Aim is to avoid the snakes but if all snakes die you lose out on points,” is such an intrinsically satisfying predicament. I’m telling you, people would’ve gone crazy for this in the 80s and 90s.
Damn I wish I could come up with ideas like this! This is really cool. I saw a lot of people suggest to make the snakes movements more natural, and I think I have an idea for that. Each snake calculates the distance to its target on the x and y axis and then generates a random number to see which direction it should go in, so for example if it's 3 units away in a direction and 7 in the other, it'll have a 3/10 chance of going in the first direction and a 7/10 chance of going in the other, this way the movement looks more natural.
I killed all the snakes and the you won screen didnt pop up, Factors: - Easy mode - 1 Hp remaining - 3 final snakes all died in the same move Beyond that im not sure what would affect the function youre presumably using to detect this victory condition
I would’ve never come up with an idea like this that’s actually amazing! I wish I could be creative like that and not lazy enough to start learning code cause coding looks interesting
Aside from the "controlling the food" part, this reminds me of an old pc game called Snake Arena. I've always wanted a new version of that game, and an inverse mode would be pretty cool, especially if other people's "food vs. snake" mode idea is incorporated.
So apparently this video super blew up and you went up from maybe 500 subscribers to over 10 thousand? That's impressive, I personally can't wait to see if this gets a V2. You have my sub.
That is impressive when it's been years since anyone played snake a very long time and came back with you coding being Food instead of snake that is impressive
Note to self: make clone of this and make the player only move the first frame you press the button but you move every time you start pressing so if you want to really run away you have to really MASH
I love this! Another idea: make the "AI" track the nearest food instead. Then if you go too close to the snake it will go after you, but if you go close to a piece of food the snake might get temporarily distracted and go get the food before going back to get whatever food is closest from there.
code at 5:12 "don't even ask me to explain any of it", dw i will explain it this is what i interpret of the code i might be wrong, this is what i think though lets say we want to check if a particular snake, lets say his name is gustav, is safe, i.e gustav isnt colliding with another snake i have the function Snake::isSafe for just that, and i pass in the arguement is snakeIndex, and right now i am passing gustav as an input to the function, so for now, gustav = snakeIndex now i go through each and every snake in a list of snakes, the list of snakes is called "snakes" now while checking through the list of snakes, i want to check if gustav collides with any of them, but remember gustav is also in that list, i dont want to check if gustav is colliding against himself, so if(gustav==current_Snake_That_We_Are_Checking_Against_In_The_List), skip over gustav now i make a new "imaginary" snake called currentSnake, lets call him bob, since i like making names up now bob is made in such a way that his position is overlapping over the snake that we are currently checking, lets say we are checking the 3rd snake on the list, bob's position is overlapping over the 3rd snake on the list (the ternary operator is not even needed, unecessary complication, could have just done const Snake* currentSnake = &snakes[currentSnakeIndex]; or maybe i am just dumb and there is a reason behind it, idk) now we will go through every body part of bob, which in the code he calls it a "segment" of a snake this part is kinda long to explain and i have other things to do, so i will just tell the gist of what happens we go through every segment of bob, and check if that body part collides with any of gustav's body part, if yes, well gustav isnt safe, since he collided with bob my idea to reduce the code, i think the efficiency of the code is O(m*n) since you are using a nested loop for every part of gustav and every part of bob, essentially multiplying the time, now to check for collision, just check if gustav's head (i.e the 0th segment of the list that stores gustav's segments) is colliding with any part of bob, this is because no snake can physically move their whole body to the left or right all at once, yes snakes can TURN sideways but it cant fully move sideways or upwards or downwards all at once, so there is no need to check for every part of gustav, neither can snakes go backwards so the new algorithm should be O(m) , m = length of bob good job on the game
Dang that was a really good quality video I'm surprised you only have like 100 subs with videos like this you should get 1k in no time best of luck keep it up
4:50 at line 4, you were always setting currentSnake to the snake at snakeIndex, which doesn't change at any point during the method. So each snake was only trying to avoid one particular snake many times, instead of trying to avoid every snake one time. If you had snakes[currentSnakeIndex] instead, it should have worked, and wouldn't need the snakeIndex parameter at all (I'm guessing that's the index of the snake the method is called on?)
“Yk what you do when you have god awfull code that would take hours more to fix then to just restart? You double down” now if that’s not a coder quote idk what is
I think the portals should have a set distance, so they’re not too close to each other which makes the portals kind of useless. I also think screen wraps will be a great addition as well so there’s a secondary option to escape other than portals
Problem with that is you could just stand at the edge and repeatedly go back and forth, so long as you were fast I'm pretty sure it would make you nearly immortal.
@@proloycodes Would likely be even more complicated to code and would completely invalidate the usefulness of the mechanic but would fix the issues I provided. (Probably)
If you can, I think the snakes would look nicer if the body of the snakes was slightly smaller than the head, to make it a little easier to tell orientation when they’re next to eachother.
Adding onto this suggestion, actual snake like body could be cool! Head is the biggest, segment behind it slightly smaller, another smaller again, then another behind it even smaller and so on.
There's a strategy you can maybe employ which is to wait for the snakes to get to a certain length and then trapping them in a self death loop before hopping into a portal and escaping being eaten. That way you're not waiting for them to make a mistake but actively killing the snakes.
I think it'd be pretty cool if going through a portal caused any snakes currently chasing you to re-assess which piece of food they're chasing (randomly select a piece of food again, there's a chance they'll still be chasing you). This gives the player a chance to properly escape from the snakes. Pretty cool project!
ngl, I felt pretty validated when you said "this code is a mess and doesn't work. I made it work by making it even messier. Don't even ask". That's my life as a programmer lol
It would be interesting if the snakes gained a temporary speed boost when eating food, then slowed down. That way they can chase you faster without being perma-inescapable
Probably won't make a noticeable difference, but you can make the push 1:38 more efficient: only move the head to its next position and then push the tail segment to the position where the head was previously. Efficiency goes from O(n) -> O(1) This way the snake's lengths won't affect their push speed.
This is pretty neat, I do think it would be cool if the different snakes were different colors so you could tell them apart when they go right next to each other
@@CodeNoodles people like you go Skyrocket! You are gonna grow your channel in no time! This coding has been popular for so long but keep getting even more!
Due to popular demand the thumbnail has been changed to the proper grammar (you're instead of your). So, you're welcome! Also, thanks for the support, guys!
i found this video after the change and im really nitpicky so i probably would have ignored this video if the thumbnail grammar was wrong, thank you
I actually ignored the video because of that, now watching it
Good save
@@wertyjax your spelling, sir.
Change it to your’re
This would make for an interesting multi-player game pitting snakes against the food
People playing as snakes compete to become the biggest, whereas the food tries to stay alive as long as possible or kill all the snakes
So many good ideas!
Like a weird battle royale I presume
@@kayagorzan I assume it would be more like an .io game where there are no definite rounds and when you die you just go back to the bottom of the leaderboard
Reminds me of Pac-Man VS
Snakes and Voles! 😁
Could you use Inverse Snake to make a local multiplayer VS mode Snake? One person is the food the other is the Snake.
Brilliant idea!
@@CodeNoodles what if 2 people could be food and 2 people be snakes?
@@totoisayal5045 Snakr battle royale
rcrlicu
All people as food sounds good too, elimination battle royale
Here some suggestions
Gives the snakes different colours and a different shade for the head
Make the snakes always target the nearest piece of food, so that you can trick a snake into another piece of food, rather than following you, or start hunting you if you pass too close
Snakes increase their speed every time they eat a piece of food
I suggest a speed cap, if the bottom suggestion is added
You could also give certain snakes different behaviors. Ex. One snake goes after the closest piece of food it sees, and will not stop chasing until they disappear. One snake always chases the player but has the slowest speed of the snakes. Another snake could puppy guard an area and chases any food that's close to it radius.
This would be cool, like ghost in pacman
I would also suggest a visual cue for where the player is after moving through a portal. Like a growing/blinking, fading ring centred on the player's new location.
@@ryleygriggs9840 what about a snake that rather than wanting to eat you, instead simply wants to get you cornered (like imagine you're escaping from a snake and sneaky snake gets on front of you therefore you die)
It would be funny to have a "reverse" snake, where you start with a relatively long snake that shits at frequent, but random times and you have to avoid the ever growing number of permanent shitpiles. Difficulty settings could affect the length of the snake. Or this feature could be combined with the original game.
Pretty easy to win I think, keep the tip of the tail at the edge :)
@@umanglunia2194 add food which extends the snake length, and give the feces a timer. Get to small you lose, to large and you get yourself killed.
😂
Dude wtf that's perfect I'll take it
I feel like this type of content is too smart for my tiny little brain.
I you admit it, then that mean you have a bigger brain than you thougth
The pain from learning is just your brain getting bigger
@@placeholdername3907No pain no gain they say
“After picking fights with the standard library for a while”
Pretty much sums up my coding experience lol
got a feeling this is gonna blow up real soon. Great display of content in coding and game creation.
Same, I thought this was a viral coding video or something, but just a random suggestion, hope it blows up :)
Here before 300 subs lol. But I do feel the same
I forgor to subscribe but you reminded me
yea
It blew up. TH-cam recommended it to me and the only reasonable connection is one Code Bullet video I skimmed through a couple weeks ago
Oh hey, finally something I've actually done before :D
In university I coded a snake game for fun in JS. Looking at how you did the snake, food, and collision... There are a few ways you could optimise that, definitely.
Firstly, you don't need any collision stuff. Just have a grid that is either occupied by food, a snake segment, or air, and then when the snake moves you check the tile it's going into for whether that's A) food, or B) snake.
If it's food, you increase the snake's length. If it's snake, the snake dies and it's game over.
For moving the snake, you don't have to move all the segments forward. Just remove the last segment and put it in front.
To increase the snake's length when eating food, do the same as above without removing the tail segment.
So why don't you need collision prevention
@@waldoman7 I already explained why,
That's quite elegant.
@@waldoman7 Because you're not building a physics engine, just applying some very basic boolean logic.
I made one in JS too! I didn’t even think about moving the last segment to the front though 😂 that’s a much better solution
To the people who can code... I salute to you
3:21 I think your heart rate monitor is broken
Lol
"When your wife says your in laws are comigo over
“Yo nurse get on this i got a highscore”
You should've given each snake a different color so when they're all in a clump you can still differentiate them
Pacman
@@VortXMusic enemies being colored doesn't mean it's pacman
Tetris
@@testerwulf3357 Legend Of Zelda
@@Wm7forthewin King's Quest
so; here's an idea
give snakes their own """"personalities"""", like in pacman where the ghosts have different behavior
one might be persistent on chasing you, while one might try and wall you off once it realizes you're moving
also, another thing you might want to add: some way to deter or even flat out kill one of the snakes temporarily, perhaps a poison apple you have to bait the snake into?
Next, we give them names like the ghosts
@@Techy404 meh, but them it’s basically pacman
@@alinac.7919 it was a joke but yeah true, although the main diference would be that there is no maze
@@Techy404 true true
@@Techy404 you're wrong - the snakes ARE the maze >:D
3 things:
1. You should hace a portal respawn cooldown when you go through the portal to discourage camping the portals and going through last second.
2. What happens if you go through the food?
3. If you want to make sure the snakes dont go straight for you you should make it so that they redirect to the closest food every 2ish seconds.
Obviously i dont expect you to add these (ive taken some coding classes and i hate going back to a finished product and changing my code) but it is some solutions/questions i thought of when i was watching
Imagine if you could eat the food, too, and get longer, increasing your length, making it harder to dodge enemies. Extra hazard of lesser importance, but enough to be worth avoiding when possible.
Dude made a whole new game. Mad respect. Interesting concept.
maybe a cool thing could be that the snakes prefer walking in straight lines like a player would do in snake only sometimes going diagonal
Yeah, that diagonal walk was so weird. A real uncanny valley experience.
There could be a cost associated with the choice of movement. A string up North-South + East-West movements would have a much larger cost vs a string of only North-South or East-West movements.
I thought the same thing. Maybe tie it to the difficulty? Have the snakes move only in straight lines on easy difficulty, occasionally diagonally on normal, and always take the most efficient route on hard
I made that in my program, there’s 2 snake AIs: one that chases you diagonally and one that goes parallel to you but only spawns 15% of the time
"It's not an AI"
Yes it is. Though hand-coded, it makes intelligent decisions based on its environment. You find these kinds of search algorithms at the start of every intro to AI course. Machine learning isn't the only subfield of AI
Yes thank you it annoys me so much
Still technically not AI.
I like your funny words, magic man
@@ManiGzz87 its a fkin AI bcz it makes DESICIONS between 2 or more status
@@bravebeatT Still TECHNICALLY not an AI
I really love it!
Few tips for actual game:
1. You should make snakes different colours so they don't blend together
2. You could add some massive point boost after killing the snake so it would be more profitable to outsurvive them all in a short game than to simply survive the longest time possible.
And for 2.0:
Powerups. Players love powerups let it be brief invulnerability, repelent, bonus points, speed up, slow for snakes, freeze time, even extra life!
Cool suggestions, I hope we will something like this implemented in the game :)
You can add them yourself. The source code is available.
@@mamathama8923 hara hara hara ha ha harararararara
Here's a good idea for the game: make it, so that if a snake dies, it responds as only the head. This makes it so it's impossible for the snakes to all kill themselves, leaving you with an open field with no enemies. This will make the game more infinite.
He could add an endless mode using this idea
congrats, you've invented pacman.
I have a few suggestions for making the game more interesting. Have the score be based on how many fruits you can collect yourself. Collecting fruits give you some amount of score, and that score has a bonus for each fruit you've gotten without using a portal. If you take a fruit that a snake was after, it aggros you. Using a portal resets your multiplier, but it also resets the aggro on any snakes that had you targeted. This gives you an objective that intersects with the snakes objective, and instead of standing next to a portal and waiting on snakes to get close, you are constantly moving into danger.
snake pacman
This is very good quality for such a small channel! One suggestion I'd have is give the snakes a random offset from their base colour. Not enough to make them wildly different, but just enough that you can tell two of them apart when they're adjacent.
Excellent point! This isn't actually my first time doing crazy things with snake because one time I did exactly what your describing. Thanks for the support!
This actually seems terrifying in the fruits pov. Imagine an entire zoo's worth of snakes getting bigger with each of your brethren they eat and when they see you they relentlessly chase after you until you're eaten
3:13 also anime moment
I imagine due to being a different color, your a mouse not a fruit.
You do not understand the level of disgust I felt throughout this whole video watching the snakes move diagonally like that.
I am just beginning my python journey. I initially didn't understand how making games would apply to real life tasks but your video helped me connect those dots. Thank you so much for including some of the work for the game.
I would probably rotate one set of portals 45 degrees for easier identification and have each food a different color and have the head of the snake match the color of the food it's navigating to.
This is neat! I think it'd be cool if you gave the snakes the Pac Man ghost treatment, honestly. Give them different colors and different "personalities." One could always be hunting you regardless, one could more or less ignore you and only go after stationary food, one could just go after whatever food was closest, one could randomly switch targets every few seconds, etc.
Your code is super clean! 💯 Structured logically, formatted nicely, and easy to follow. Having managed dev teams for many years, my code review senses got all excited watching this… 😆 Great vid!
Lol thanks! Most people are quick to point out problems/flaws with code so thanks for the positive feedback!
@@CodeNoodles and well deserved! It’s rare to see code of this standard on TH-cam... I really appreciated your consistent naming conventions (“isX()” for functions returning booleans, or “getX()” for methods returning calculated properties). Your static Snake::isSafe() method used reference calling cleverly across multiple Snake instances… And I liked how you used ternary operators to make your code shorter, but not at the expense of readability :)
I’m guessing you do this professionally? If you don’t mind me asking, for how many years? Keep it up dude. Your code is poetry 🙌🏻
@@CodeNoodles the reason they can even POINT out flaws is cuz you code is clean as hell
Wear it as a badge of honor my g
@@CodeNoodles 5:08
Hate to be mean, but this fails both clean (5 indents, lines 13 to 23 should most likely be a separate function) and it sounds like you did not fully understand it (basically can you describe it to a none DEV).
Just one example, most of it looks good and I can understand the function at 5:08 in context.
Love the music! And the game looks really good, the UI and all the art blends well together 👍🏼👏🏼
I know almost nothing about coding, but this is fascinating... I appreciate that I could still follow things too. Thanks for sharing your work. It's a good reminder of how complex creations that seem deceptively simple can be. Impressive!
noodles: "This total abomination" 2:11
me: this is fine! what do you mean?
snake tail: becomes hydra
me: oh...
I love this idea. It’s such a simple to grasp gamemode with quite a nice layering of that paradoxical meta that “primitive” games like this are known for. “Aim is to avoid the snakes but if all snakes die you lose out on points,” is such an intrinsically satisfying predicament. I’m telling you, people would’ve gone crazy for this in the 80s and 90s.
Damn I wish I could come up with ideas like this! This is really cool. I saw a lot of people suggest to make the snakes movements more natural, and I think I have an idea for that.
Each snake calculates the distance to its target on the x and y axis and then generates a random number to see which direction it should go in, so for example if it's 3 units away in a direction and 7 in the other, it'll have a 3/10 chance of going in the first direction and a 7/10 chance of going in the other, this way the movement looks more natural.
You are a very gifted teacher. I've been teacNice tutorialng soft for over 50 years and really appreciate your video being a beginner in soft soft.
This is so underrated, I am definitely subbed
I killed all the snakes and the you won screen didnt pop up,
Factors:
- Easy mode
- 1 Hp remaining
- 3 final snakes all died in the same move
Beyond that im not sure what would affect the function youre presumably using to detect this victory condition
*you're
@@piegames-em2sv thanks for letting me know I missed a single '
I would’ve never come up with an idea like this that’s actually amazing! I wish I could be creative like that and not lazy enough to start learning code cause coding looks interesting
Coding can be hard but infinitely rewarding. If you have the means to do so trust your gut and go for it. Thanks for the support!
Aside from the "controlling the food" part, this reminds me of an old pc game called Snake Arena. I've always wanted a new version of that game, and an inverse mode would be pretty cool, especially if other people's "food vs. snake" mode idea is incorporated.
So apparently this video super blew up and you went up from maybe 500 subscribers to over 10 thousand? That's impressive, I personally can't wait to see if this gets a V2. You have my sub.
That is impressive when it's been years since anyone played snake a very long time and came back with you coding being Food instead of snake that is impressive
:0 this is so well made! u deserve way more subs
Thanks so much!
Wow this is really well made content, I can feel you are gonna make it big time
This is some of the best stuff I've seen recently 😂
Honestly tho every time you complained about programing I just died with how relatable it is
POV: you visit your grandma in the hospital
the heart monitor: 3:30
You should be able to eat food yourself in order to charge a bar and gain life back
THIS IS SO UNDERRATED. Love the idea of a reverse snake game.
8:19 Casually just portal into the body of a snake.
Lol, um pretend you didn't see that
@@CodeNoodles see what?
This is great! You’re going to be the next CodeBullet :)
so he becomes non existent for a couple of months and comes back with a banger? works for me!
Note to self: make clone of this and make the player only move the first frame you press the button but you move every time you start pressing so if you want to really run away you have to really MASH
I love this! Another idea: make the "AI" track the nearest food instead. Then if you go too close to the snake it will go after you, but if you go close to a piece of food the snake might get temporarily distracted and go get the food before going back to get whatever food is closest from there.
code at 5:12 "don't even ask me to explain any of it", dw i will explain it
this is what i interpret of the code
i might be wrong, this is what i think though
lets say we want to check if a particular snake, lets say his name is gustav, is safe, i.e gustav isnt colliding with another snake
i have the function Snake::isSafe for just that, and i pass in the arguement is snakeIndex, and right now i am passing gustav as an input to the function, so for now, gustav = snakeIndex
now i go through each and every snake in a list of snakes, the list of snakes is called "snakes"
now while checking through the list of snakes, i want to check if gustav collides with any of them, but remember gustav is also in that list, i dont want to check if gustav is colliding against himself, so if(gustav==current_Snake_That_We_Are_Checking_Against_In_The_List), skip over gustav
now i make a new "imaginary" snake called currentSnake, lets call him bob, since i like making names up
now bob is made in such a way that his position is overlapping over the snake that we are currently checking, lets say we are checking the 3rd snake on the list, bob's position is overlapping over the 3rd snake on the list
(the ternary operator is not even needed, unecessary complication, could have just done const Snake* currentSnake = &snakes[currentSnakeIndex]; or maybe i am just dumb and there is a reason behind it, idk)
now we will go through every body part of bob, which in the code he calls it a "segment" of a snake
this part is kinda long to explain and i have other things to do, so i will just tell the gist of what happens
we go through every segment of bob, and check if that body part collides with any of gustav's body part, if yes, well gustav isnt safe, since he collided with bob
my idea to reduce the code, i think the efficiency of the code is O(m*n) since you are using a nested loop for every part of gustav and every part of bob, essentially multiplying the time, now to check for collision, just check if gustav's head (i.e the 0th segment of the list that stores gustav's segments) is colliding with any part of bob, this is because no snake can physically move their whole body to the left or right all at once, yes snakes can TURN sideways but it cant fully move sideways or upwards or downwards all at once, so there is no need to check for every part of gustav, neither can snakes go backwards
so the new algorithm should be O(m) , m = length of bob
good job on the game
Yes. You are correct!
Dang that was a really good quality video I'm surprised you only have like 100 subs with videos like this you should get 1k in no time best of luck keep it up
Thanks I will!
4:50 at line 4, you were always setting currentSnake to the snake at snakeIndex, which doesn't change at any point during the method. So each snake was only trying to avoid one particular snake many times, instead of trying to avoid every snake one time. If you had snakes[currentSnakeIndex] instead, it should have worked, and wouldn't need the snakeIndex parameter at all (I'm guessing that's the index of the snake the method is called on?)
and also the perpendicularity of the bisector was interfering with the vortex
@@Smooth_Brainskeppy moment not really funny
@@HiddenBush64 how did u know
@@Smooth_Brain I could recognise that phrase ‘perpendicularity of the bisector’ from a light year away
@@HiddenBush64 perpendicularity moment
missed opportunity to name it "inversnake"
“Yk what you do when you have god awfull code that would take hours more to fix then to just restart? You double down” now if that’s not a coder quote idk what is
I think the portals should have a set distance, so they’re not too close to each other which makes the portals kind of useless.
I also think screen wraps will be a great addition as well so there’s a secondary option to escape other than portals
Problem with that is you could just stand at the edge and repeatedly go back and forth, so long as you were fast I'm pretty sure it would make you nearly immortal.
@@pineappleudh6561 what if the snake could screen wrap as well?
@@proloycodes
Would likely be even more complicated to code and would completely invalidate the usefulness of the mechanic but would fix the issues I provided. (Probably)
It could be done in certain areas only, much like PacMan does
@@pineappleudh6561 maybe add a cooldown?
I can't even code, I'm just here cause this is cool as hell
youre channel is so underated
5:53 and that's when he realized he was actually building pacman.
He just made the snake play with itself 😊
If you can, I think the snakes would look nicer if the body of the snakes was slightly smaller than the head, to make it a little easier to tell orientation when they’re next to eachother.
Adding onto this suggestion, actual snake like body could be cool! Head is the biggest, segment behind it slightly smaller, another smaller again, then another behind it even smaller and so on.
9:16 Hey, that‘s me. 😁 Good video and an interesting idea.
I already saw the video when it had 38 views.
Thanks for the support!
You are welcome!
There's a strategy you can maybe employ which is to wait for the snakes to get to a certain length and then trapping them in a self death loop before hopping into a portal and escaping being eaten. That way you're not waiting for them to make a mistake but actively killing the snakes.
I think it'd be pretty cool if going through a portal caused any snakes currently chasing you to re-assess which piece of food they're chasing (randomly select a piece of food again, there's a chance they'll still be chasing you). This gives the player a chance to properly escape from the snakes.
Pretty cool project!
ngl, I felt pretty validated when you said "this code is a mess and doesn't work. I made it work by making it even messier. Don't even ask". That's my life as a programmer lol
1:18 made me laugh way harder than it should😂
It would be interesting if the snakes gained a temporary speed boost when eating food, then slowed down. That way they can chase you faster without being perma-inescapable
Probably won't make a noticeable difference, but you can make the push 1:38 more efficient: only move the head to its next position and then push the tail segment to the position where the head was previously. Efficiency goes from O(n) -> O(1)
This way the snake's lengths won't affect their push speed.
Could snake size also be another variable that is kept elsewhere, kind of like a pascal string?
Or he could make tiles with snake non-walkable for the purpose of pathfinding. Seems like a sensible solution
Mkay I am just IMPRESSED that you know how to code alllll of that in like what a week? That’s just… wow
I may not be looking in the right areas but I don’t know that I’ve ever seen someone make there game available and I love that, thank you
This is pretty neat, I do think it would be cool if the different snakes were different colors so you could tell them apart when they go right next to each other
0:30 today im gonna be eating a whole jar of sauce while listening to classical music
Do it again
Make it where the snakes slow down for a second when they eat food so you can lead them to food to give you a chance to escape
that was a tasty code noodle bro!
Subscribed :)
He is on the way to get a lot of subs. I absolutely love all this coding stuff and I hope to see even more soon. Good luck on your TH-cam journey!
Thanks so much! I've only been doing TH-cam for a bit now and already have an awesome community to encourage me! More stuff will be coming soon.
@@CodeNoodles people like you go Skyrocket! You are gonna grow your channel in no time! This coding has been popular for so long but keep getting even more!
Snake Dance 🐍 2:42
0:50 ah random bullshit to make one of the simplist and most iconic games in history
You mad?
Try to make it yourself
@@Small_Schlonng_9000 I’d do in scratch Junior
Get ratioed stewie
4:41 NOPE
CodeNoodles : So how long are you gonna go on for?
The Algorithm : Yes!
Knowing how to code could be the most impressive and amazing things ever
Well technically the snake does have an AI it's just not self learning or anything
Thank you, that was annoying
Did you code this with
Python?
C++
So basically Pac Man?
Congrats! Your video is on TH-cam recommendations.
damn, only your second video and already millions of views, I hope you keep that momentum from here on out!
Thanks!
3:40 amogus
No
You're
Truly inspired ,i study c++ and I thought it has no future in programming games but u proved how ignorant I was .
nice vid by the way
I only started to watch you 1 hour ago and Im already addicted.
Coding an entire game from scratch without using a game engine is not an easy job. Well done!
Congratulations dude! Enjoyed the content
I love the choice of background music for this vid.
wow! this was posted on my birthday lol great video you inspire me!
"I was almost ready to quit."
"Yeah, I had a ton of fun making it."
me in 3am: INTRESTING
I love how, when you finally understand c#, and see some game making video. You actually get to understand it 🙂
New sub bro is literally so underrated
Now you just need to programm an Algorithem that controles the food and makes it stay alive as long as possible :)
For those of you wondering out there.
The music in the background at 0:40 is bach suite no.1 (cello)
This is a really fun game concept. Super simple yet it looks very fun.