Hope you have fun with the projects! 😊 If you have any questions or have issues downloading the art assets let me know! Thanks FCC for sharing my course! ❤🙏
@kishoreramesh81102 жыл бұрын
I Love it
@kishoreramesh81102 жыл бұрын
You earned a new subscriber
@annm28552 жыл бұрын
You're a nice man, thanks for this project
@arsagor85062 жыл бұрын
Love it
@JM-de2gh2 жыл бұрын
Heh, you are spreading around the coding community Frank! Respect+. I always appreciate donations to the freeCodeCamp movement. In the past I actually dropped out of college, but was able to get a good job through educational and inspirational channels like these -- which of course includes yours.
@martapfahl9402 жыл бұрын
For everyone who is seeing this, if you want to practice your object oriented programming skills, this tutorial is really really good for that!
@TangiersIntrigue Жыл бұрын
I'm not a huge fan of OOP and I usually avoid it like the plague, but it was an interesting tutorial to dive deeper into it.
@102ayushkumar3 Жыл бұрын
Is this tutorial good for learning dom manipulation?
@3RR0RNULL Жыл бұрын
@@102ayushkumar3They have a separate video for that.
@3RR0RNULL Жыл бұрын
I came here to practice using JS, HTML, and CSS together, as I already know JavaScript, but not how to use it with HTML and CSS, or even those two alone.
@andreasfrederiksen3898 Жыл бұрын
I have not watched it just quickly scrolled through it, it seems to mostly work within the canvas element so I do not believe there is much if any DOM manipulation. @@102ayushkumar3
@norahyde57332 жыл бұрын
3 lessons in, after a miserably failed attempt a few years ago with Sprite sheets where I got completely lost halfway thru someone else's tutorial, so far every single thing here has worked and even though I don't fully understand 100% yet what everything is doing, you explain it in a way where I will get there as my knowledge grows. Thank you so much, this course is so fun!
@web3hQ0002 жыл бұрын
we're exactly in the same boat.. although i know some basics on .js, i still find it hard to understand some of what he did with dah dog sprite but as i kept watching and flowing along i came to get what he was talking about. Really great video..
@knight62272 жыл бұрын
This is pretty easy to understand, if you know all the web api's he's using. And this really wasn't the best way to make it, but it worked.
@codewithsoumik2 жыл бұрын
I have recently crossed my 30s and my life is very far from sorted, yet I am not giving up. These structured free videos give me hope and strength.
@blessyouunholy2 жыл бұрын
Hell yeah, keep fighting dude :D
@leonstone34432 жыл бұрын
hey im right there with ya, lets not let our 30s go to waste and make a better future!
@MrMathers19912 жыл бұрын
keep going bhai ! left retail industry to study web dev at age 30..anything is possible in life , go hard and win in life !
@randompop-up2 жыл бұрын
We are on the same page ✌
@yaredhaile93222 жыл бұрын
why would u give up in your 30s?? you still young as hell man!
@phillpeters2 жыл бұрын
1 hour in and the this keyword has been completely demystified!! Your one sentence did more to explain 'this' than other complete videos I've watched.
@fadwarezika90412 жыл бұрын
This video came at the right time, I've been curious about game development
@alex_chugaev2 жыл бұрын
Same for me, just perfect timing ❤️
@rcachampionnats67342 жыл бұрын
me too hh i wiil reskin this game what about you?
@alex_chugaev2 жыл бұрын
@Ort do you mean “learn 2D/3D rendering and canvas, but use it in other domains except for game dev?”
@loganmagnuson48132 жыл бұрын
Just finished the course from beginning to end. Had a blast the entire way through! This was a really fun way to learn some new stuff in JavaScript. Gonna take what I learned here and build a 2D game for my portfolio! Keep it up my friend and keep making great content! Thanks
@brothercaleb2 жыл бұрын
Good one! How long did it take you?
@web3hQ0002 жыл бұрын
@@brothercaleb like 3 months.. lol 😅
@demetriuslee72916 ай бұрын
😭 I just want a job one day. This shit’s so hard
@Gleb_Pastushenko2 жыл бұрын
At 5:09:55 the gap you see is a background defect (if you merge two backgrounds horizontally in Photoshop you will see the same gap due to the one pixel wide empty column on the left side of the image). So, when you try to compensate for this gap by subtracting the speed value, you shift the second background in such a way that it does not match the first one in the picture. So to get rid of this gap you just have to compensate 1px regardless of speed. And your background will move perfect an any speed. The only thing you have to do - is to compensate the same 1px when sliding background to the start position to avoid background jerking: draw(context) { context.drawImage(this.image, this.x, this.y, this.width, this.height); context.drawImage( this.image, this.x + this.width - 1,
@Frankslaboratory2 жыл бұрын
Yea you are right, nice, I wish I noticed when I was recording the video :D
@youarethecssformyhtml Жыл бұрын
JavaScript is love! You can literally do almost anything you think about with it from web apps to mobile, desktop apps, iot, game development...
@wallacesousuke1433 Жыл бұрын
If only Unreal Engine 5 used it instead of C++ :/
@sourtil715811 ай бұрын
just because you can doesn't mean you should.
@danser_theplayer01Ай бұрын
@@sourtil7158 You can tell that to well known applications. Besides, there's this popular game Balatro written in Lua (and all of the roblox games) that is a scripting language not very far from javascript.
@andrewllewellyn69372 жыл бұрын
There's my weekend gone 😂. I've been re-learning vanilla JavaScript, following a short period of learning it on a full-stack course. Being interested in game development also, this has come right at the right time. Thank you Frank and thank you FCC.
@Ebizzill2 жыл бұрын
lmaoooo!!!
@mbm60482 жыл бұрын
Unbelievable, The law of attraction really works.I was looking forward to learning javascript game development so I can apply at tech with Tim's startup company. Then outta nowhere fcc posts.
@wearegeeks2 жыл бұрын
The law of attraction doesn't exist. It's just a good polished algorithm or just you subscribed to the right channel.
@keskinkesir44682 жыл бұрын
its a bot comment...
@weihe35792 жыл бұрын
谢谢!
@CloudNey2 жыл бұрын
I just got myself something cool to do on this weekend 😁😁😁 thanks for sharing your knowledge with us!
@Gleb_Pastushenko2 жыл бұрын
About getting the XY coordinates of the cursor at the click point (2:35:00). You can get the coordinates of the cursor relative to the canvas directly, without any calculations, using the global coordinates of the cursor and the position of the canvas. To do this, you must use the canvas onclick event listener, not the window event listener, and then get the coordinates from the offsetX and offsetY properties of the event object.
@Frankslaboratory2 жыл бұрын
Yes this works well, just tested it, will use it in the next game dev class I'm working on
@agonzalez73892 жыл бұрын
I've been using Javascript since the year after it came out, but never ever had this much fun with it. Thanks!
@sabih__2 жыл бұрын
1995?
@agonzalez73892 жыл бұрын
@@sabih__ 1996. When only Navigator spoke it.
@sabih__2 жыл бұрын
@@agonzalez7389 oh nice
@cloudpractitioner51582 жыл бұрын
That's really cool. So many years of experience!
@TheodorSirmanoff7 ай бұрын
Hey Frank, a big "thank you" firstly. You spent much more time than the tutorial.length in fact. What a dedication! Impressive.
@MelvinG242 жыл бұрын
For me, this has been the definitive course on how to create a 2d game with Javascript. I have used Unity to make my 2D games, but I never like it. I found Unity games too heavy with many unnecessary libraries and features that I never use in my games. So I took the initiative to rewrite one of my simples games in Javascript, and this tutorial is the perfect place to start working with
@evolgenius11504 ай бұрын
I'm a front-end web developer! Soon as he said it I took that as a sign! I'm on the right path!
@everydaykhiem9742 жыл бұрын
Man, I'm so stoked about this! I've started making simple arcade games on my own, but it'll be cool to eventually implement 2D scrollers and platformers. Thanks for sharing FCC and FL!
@bernardus32892 жыл бұрын
I love how you explain stuff. You go into detail why stuff is there and you try to explain complex stuff that even a noob like me can follow.
@Frankslaboratory2 жыл бұрын
Thank you for this feedback. I will try to do more detailed explanations like this more often
@rmnkot2 жыл бұрын
Fantastic tutorial. For me, as experienced JS developer different game technics were the most precious. Thanks a lot.
@lukyyt96372 жыл бұрын
I love how he goes silent once in a while to give us a little time to think and understand what he just explained without having to pause the video.
@Frankslaboratory2 жыл бұрын
Thanks for that feedback
@kankikan85842 жыл бұрын
thank you, finished this course in 5 days!! great course!!
@karlkoch3345 Жыл бұрын
Finished! Frank's stuff is awesome. So much great information.
@roshnasanam83476 ай бұрын
Broo did you upload this project in Github if so will you please share your GitHub my code is not working I was struck for 3 days. Plz help me out
@maksimsergeevich80962 жыл бұрын
One of best courses I ever seen. Thank you, guys!
@beer6432 Жыл бұрын
Hats off to you, the best tutorial that really explains what to do and the reason why, loved it and please do not stop posting more videos!!
@Gleb_Pastushenko2 жыл бұрын
The problem of jumping background layers when changing speed is solved very simply (1:24:20). Along with the frame rate, you are essentially changing the speed of the game's timeline. In this case, the time in the game is set by the total number of frames. By changing the speed, you recalculate the total number of frames each time. The game jumps to a new position in the timeline, and the background layers jump to new coordinate positions corresponding to the game's position in the timeline. To save the current coordinates of the background layers, you need to save the position of the game on the timeline. In other words, when changing the speed, it is necessary to save the total number of frames. Because the total number of frames depends on the number of the "gameFrame" and on the "gameSpeed" then when changing the speed, it is necessary to change the "gameFrame" inversely proportionally to the change in speed. In the context of the code, this is just one line in the "onchange" event handler function of the slider, where you need to get the new number of the "gameFrame" by simply dividing the total number of frames by the new speed value: gameFrame = (gameFrame * gameSpeed) / e.target.value; Important: you must place this line of code at the very beginning of the handler function, where the "gameSpeed" variable remains its value until the speed is changed. I have checked this solution, it works perfectly.
@juliok46272 жыл бұрын
Thank you! Anyone that had troubles, maybe this could help I accidently put it under showGameSpeed.inneetHTML = ... suppose to be on top in the slider.addEventListener.....
@alexbird1507 Жыл бұрын
Thanks, but there is a problem. When you change the game speed value to 0, the canvas becomes completely black and any further attempts to change the game speed will not restore the dead animation.
@filled998 Жыл бұрын
@@alexbird1507 Solved in this way: Inside the handler function (I prefer to listen for an input event, instead of the change, in this case you can see the speed changing along with the range input, without need to release the click) -> const newSpeed = Number(evt.target.value); if (newSpeed && gameSpeed) { gameFrame = (gameFrame * gameSpeed) / newSpeed; } Inside update --> if (this.speed) this.x = gameFrame * this.speed % this.width; Inside animate --> if (gameSpeed) gameFrame--; Maybe there is a better way to code this? Idk, but works fine for me. I hope this helps you as well :D
@DyonEnedi Жыл бұрын
The best video i have seen ever. In 2013 i try made a game by myself and it was very hard cause I didn't find contents like this to learn. Now I can return to my project and try finish it using Canvas. Rotate objects was my problem, but now I am otimist I will get it done :)
@xVinoz2 жыл бұрын
Finally after 5 days of intense coding lol. This course is amazing bro, i always wondered how pure vanilla games were built, i had a reference but actually doing it its cool. Using state management with classes its good to re enforce architecture stuff. Definetly this course is 4 beginners in gaming development but not 4 beginners in programming in general or in javascript haha, using clases is something you have to know well. -Peace
@lauris52752 жыл бұрын
Yea, for sure. Im learning js/frontend for some time now and game development is actually different from frontend. There are many things that i find hard and i don't consider myself a complete beginner. Mby not hard, but you need to know something before you can go forward you know.
@roshnasanam83476 ай бұрын
Broo did you upload this project in Github if so will you please share your GitHub my code is not working I was struck for 3 days. Plz help me out
@CorCronje2 жыл бұрын
Thanks!
@Paulluskelvin2 жыл бұрын
Jeez, over 200k views in 7days. I will start this course in a week. Has to be the best out there for JavaScript developers cos building games is a surefire way to fast-pace your JavaScript skills not to mention how wonderful these games are, they'll really be great for portfolios
@sugoish94612 жыл бұрын
15:53 FLASH WARNING ⚠️ Not just at this specific point, but on some occasions too shortly after, as we are dealing with animating from a spritesheet, and how to not include blank frames in the animation shown. The animation is displayed at very fast speed and the subject is black, so there is a high-speed flickering between black and white. At 18:52 the animation speed has been slowed down again, so there shouldn't be a problem after that. Just wanted to make sure this is known! Love the video so far!
@KY-xz9yb2 жыл бұрын
8:01:40 background.js full 8:02:42 fixing typo on background.js 9:25:26 background completed 8:11:56 enemy.js 8:25:07 8:28:14 climbing enemy 8:31:37 end 9:06:21 particle code 9:08:52 lines 32 particle.js 7:40:21 player.js draw,onground,setstate functions 9:35:49 player.js lines 1to 31 9:07:48 playerstates line 1-30 9:10:45 full code for playerstates.js 9:15:02 collisionAnimation.js 9:18:30 9:20:58 UI.js 9:22:47 9:32:58 floatingMessage.js Full 8:39:58 main.js this.UI.draw(context input.js 7:23:30 9:24:42 main.js adding particles 8:47:00 - 8:52:20 about particles
@Gleb_Pastushenko2 жыл бұрын
About Chance that there will be two identical colors generated next to each other (3:26:10): 1. Chance of two identical colors: 1/256^6 (256^6 means: 256 to the power of 6) 2. Chance of at least two identical colors: 1/256^6 + 1/256^9 + 1/256^12 + .... + 1/256^(3*n) - where '"n" is the number of ravels. Сalculations are correct assuming a normal distribution of random values returned by the Math.random() method.
@Gleb_Pastushenko2 жыл бұрын
About deleting unused objects (which hid behind the left side of the screen 03:07:15). I think the best way to remove them is to remove them in the "update" method of the objects, this way we will significantly reduce the load on the processor, because. in this case, the "filter" method iterates over the raven array only when objects need to be removed, and not every animation cycle. To see the difference - just call console.log() in both cases (console.log should be called in the same place as "filter") and feel the difference.
@oleksandraokhotnykova8672 Жыл бұрын
It works with explosions and particles, but not with ravens. They are not disappearing. Any clue why?
@Gleb_Pastushenko2 жыл бұрын
Hello! At 1:00:05 - in the line 27 "... - gameSpeed" is redundant. In the line 25 it's ok, because at the moment when you move the background x1 ahead the background x2, using the x2 value as an offset, x2 keeps the value from the previous iteration, so you have to subtract one more "gameSpeed" value from the x1, because in current iteration the background x2 hasn't made "gameSpeed" step, but when you move the background x2 ahead the background x1, you concatenate it with x1 in the same iteration, specifically when the background x1 has already made a gameSpeed step to the left. This will work correctly only when both if statements are in a row, and after them both expressions for calculating the x coordinate as at 1:08:02, because in this case both x1 and x2 still contain values from the previous iteration.
@Radu2 жыл бұрын
A really good compilation with a bunch of useful techniques. I highly recommend it :-)
@jtimothy84812 жыл бұрын
Coding with Radu 👍
@Radu2 жыл бұрын
@@jtimothy8481 :-))
@victorhugopittamoller41162 ай бұрын
Wonderful, I hope everyone who wants to learn how to start developing games with Javascript can watch this video I learned a lot about game development in general, a lot about javascript and I was even able to try on my own to convert the game to the javascript framework that I use in my day-to-day life. I learned a lot. Thank you for this video!!!
@gambomaster2 жыл бұрын
Thanks for introducing Frank to us. Just visited his channel and subscribed. He has a lot of interesting content there. 👍
@Frankslaboratory2 жыл бұрын
Nice to meet you :D
@Ikejosh97 ай бұрын
Wow! 😮! Thank you so much for this. Been looking for this all my life
@programmingwithjavascript35792 жыл бұрын
I knew from thumbnail , it's frank's game video in js. Because no one can teach such game in js in whole KZbin community 🙏 .
@fedechiar1 Жыл бұрын
What a beautiful journey Frank, this tutorial is awesome (maybe a bit fast sometimes) and you're a great teacher. Big up!
@almandohafenaaje76952 жыл бұрын
As a newbie, I learned a lot, and i wont stop.. Thank you so much!
@web3hQ0002 жыл бұрын
keep on going my friend!! you'll actually reach dah top if ya don't give up... lol rhymes.. 😏😉
@almandohafenaaje14202 жыл бұрын
@@web3hQ000 Coded along with you... and i'm actually done with it now. Thank you!
@0xChijioke2 жыл бұрын
I finished It! Thanks, Frankie! Took me weeks because I didn't want to miss anything, and I didn't!
@roshnasanam83476 ай бұрын
Broo did you upload this project in Github if so will you please share your GitHub my code is not working I was struck for 3 days. Plz help me out
@smellthel2 жыл бұрын
I’ve been working on a platformer in plain JS and I was wondering if I did a lot of stuff in the best way. Thanks for the tutorial!
@quoiquedon70028 ай бұрын
I have gone through all the way to the end! It was really fun and I learned a lot. Many thanks again to Frank!
@dsm4202 жыл бұрын
Wow, Finally finished this 9-hour-long course. There was very much to learn. IDK how much I would be able to keep and use. But excellent explanations and a very structured video. 💛
@coolguy71602 жыл бұрын
nice, im getting to the second part, it's a good tutoral!
@AAA53292 жыл бұрын
Thanks for the grate video! If you want to use the modulo operation without the jumps you can't change the way how to calculate. for example if you are by frame 244817 and your gamespeed is 2 your modulo calculation is 34 ( >> this.x = gameFrame * gamespeed % this.width; => 34 = 244817 * 2 % 2400) if you change the gamespeed to 3 the value is 51 and your Layer jumps ( >> this.x = gameFrame * gamespeed % this.width; => 51 = 244817 * 3 % 2400) So you just have to change the way your gameframe value changes. If you use this line in the update() function of your class at 1:24:20 >> this.x = gameFrame % this.width; and you calculate the gameframe with: >> gameFrame = gameFrame - (1 * gameSpeed); (maybe don't call it gameframe anymore) you can use the modulo operation without the jumps :)
@kusmaurya36752 жыл бұрын
Solution to last problem in second Project (Parallax Background ) Problem: on changing slider background moves at some other position. Solution: Do not use global variable gameFrame. Refactor code of update method in Layer class like below: update(){ this.speed = gameSpeed * this.speedModifier; // if(this.x
@MrJroc212 жыл бұрын
Finally! Scowering youtube to find help creating games, this is amazing!
@seye692 жыл бұрын
Just finished the first project and am enjoying this so far - thanks! Not a bug per se, but unless I'm missing something, spriteAnimations doesn't need to be an Array. When you add stuff to it using strings rather than numbers in the square brakets, you're just adding properties to an object that's an empty array, and thus its size/length would remain at zero (you can see this when you inspect it in the console)! I think an empty Object ({}) would be less misleading than Array([]) if you're using string keys instead of number indices for access. Anyway, just a small observation - I'm going to shut up now and continue to enjoy your course :)
@roshnasanam83476 ай бұрын
Broo did you upload this project in Github if so will you please share your GitHub my code is not working I was struck for 3 days. Plz help me out
@roshnasanam83476 ай бұрын
Will you plz help me out with project 2
@markbrobyn2 жыл бұрын
Frank's channel is one of the best!
@MrEmekaChris2 жыл бұрын
Love what you guys do, thank you so much, please never stop, you’re the reason I am able to do all I do now
@aqibyaseen21222 жыл бұрын
What a time to be alive 😍
@guixiaojie2 жыл бұрын
really awesome. that effort, well explained. just super
@sol0matrix8 ай бұрын
Loving this series of pure Javascript without any frame works
@fhajji2 жыл бұрын
Around 2:24:00 don't take the square root, as it is computationally very expensive. Just compare the squared sum of radii with (dx*dx + dy*dy).
@Frankslaboratory2 жыл бұрын
I agree, this is a good point
@harshilshah9802 жыл бұрын
Just finished 'CLASH FROM THE PAST' and was left wondering how are games exactly made from scratch. Well, now I know how. Today feels like my lucky day :)
@thoughtsofapeer Жыл бұрын
This is an amazing course. I am on project 7 now and learning so much. I have one question in terms of jumping on project 7. I can't jump while moving to the side. How do I make it jump while I am holding down left or right arrow key? I just finished the course and I learned so much - and I also figured out the question above. Its really cool to begin experimenting. By project 9 I was pausing all the time to try and do the things before you showed us. It led to a few bugs and different logic, but it really amazes me that I came so far as I did in just 3 days. Thank you so so much!
@Alessandro_no12 жыл бұрын
That's what I need! Love you Guys!!!
@LifterAndy2 жыл бұрын
Thank you for your work. It's great.
@Gleb_Pastushenko2 жыл бұрын
3:30:54 you can SIMPLIFY color comparison FROM: if (object.randomColors[0] === pc[0] && object.randomColors[1] === pc[1] && object.randomColors[2] === ps[2]) TO: if (JSON.stringify(object.randomColors) === JSON.stringify(pc.slice(0, 3))) It looks clearer and less cumbersome. And you can do even better if in line 70 you assign the '[...detectPixelColor.data].slice(0, 3)' value rather then '[...detectPixelColor.data]' to the 'pc' variable to shorten the conditional expression (JSON.stringify(object.randomColors) === JSON.stringify(pc)) which is even more readable and clear, and almost two times shorter then (object.randomColors[0] === pc[0] && object.randomColors[1] === pc[1] && object.randomColors[2] === ps[2]) so as result you'll get the next code: const pc = [...detectPixelColor.data].slice(0, 3); ravens.forEach((object) => { if (JSON.stringify(object.randomColors) === JSON.stringify(pc)) { object.markedForDeletion = true; score++; } });
@Frankslaboratory2 жыл бұрын
Can you please go over my other videos and do these comments, haha, love it, I'm making notes :D
@momolp96562 жыл бұрын
Hi guys, thanks for the course, it looks great. My 9 yr-old daugther want to move from Scratch to Javascript for game development, and your course seems great but you mention that some previous knowledge is required. Can you recommend any source as an intermediate step before taking your course?
@Marckiese2 жыл бұрын
Does she know HTML and CSS yet?
@momolp96562 жыл бұрын
Hi @@Marckiese , no, she doesn't know yet HTML, neither CSS. Although I think we can help her with the basiscs.
@martinlaupola68362 жыл бұрын
Free code camp has great courses to learn these languages!!
@Marckiese2 жыл бұрын
FCC is a great place to get her started.
@DmitryDaren2 жыл бұрын
@@momolp9656 Yep, there’s mostly just one html element here - Canvas, and only the basics of css (used just a few lines there, so basically not required to learn ) and then, there’s basics of JS, like variables, loops, functions, objects.. and then everything is derived from these tutorials...
@Gleb_Pastushenko2 жыл бұрын
3:24:42 you can SIMPLIFY 'this.color' expression FROM: 'this.color = 'rgb(' + this.randomColors[0] + ',' + tihs.randomColors[1] + ',' + this.randomColors[2] + ')' TO: 'this.color = 'rgb(' + this.randomColors.join(',') + ')'
@dylanhamada47972 жыл бұрын
Awesome tutorial! I can see a ton of thought and effort went into making this. I had a question about Project 1. The spriteAnimations variable is an array, but you populate it with named objects. Is that possible? I thought array elements could only be accessed by their index number. If you're populating the spriteAnimations variable with named objects, shouldn't the variable itself be an object?
@baymanvalorant2 жыл бұрын
test3
@irfanbalahan59002 жыл бұрын
test34
@Nisuk_de2 жыл бұрын
test23
@tunabeyazal32602 жыл бұрын
test24
@sigmalaquery8312 жыл бұрын
test
@eliasdorigoni2 жыл бұрын
You're a godsend. I'm building a pacman clone as a practice project and as my first game (web dev here). Thank you!
@keddybyteai2 жыл бұрын
Hi, I am still a beginner so don't kill me for saying I feel it's better to have multiple images and just loop through them instead of putting all of them in one page. But I also feel like the pictures will be too large that is why you did it like that. But all these codes to bend around having to put all the images in one picture seems unnecessarily stressful. Enlighten me. Change my mind
@homersimpson11992 жыл бұрын
You want to do as little http requests as possible as they always come with an overhead and TLS handshake. This is why you dont want to have many pictures
@brangja4815 Жыл бұрын
It's because of the image load time
@rumansharma36162 жыл бұрын
Thankyou you and your team for your each & every video. Your videos are always helpfull to us.
@codestack61182 жыл бұрын
You and Frank are doing great job..... This video is just what we have been waiting for.... thanks all you guys...
@Gleb_Pastushenko2 жыл бұрын
About code refactoring at 8:48:15 you haven't to change code over all the children classes ("this.player" to "this.game.player"). Moreover - you don't need to change even the arguments of state classes constructors, since you pass the "player" object reference to every state instance you create inside it. And your "player" object already has the "game" object reference. All you need to do - is to create a "game" field inside parental class (State class). You even can simplify the code, removing all "this.player = player" statements from inherited class constructors to parental constructor: class State { constructor(state, player) { this.state = state; this.player = player; this.game = player.game; } } class Sitting | Running | ... | Rolling extends State { constructor(player) { super("SITTING" | "RUNNING" | ... | "ROLLING", player); } } thus you can leave "this.player" inside all inherited classes as is, getting rid of "this.player = player" statement in all inherited state classes at the same time. In addition, now nothing needs to be changed in the "player" class. And a cherry on the cake - you also get rid of the errror in the "handleInput", because when calling "this.currentState.enter()" your current state will already have the "player" reference, hence "this.player.frameX = 0" will not cause an error.
@Gleb_Pastushenko2 жыл бұрын
About keydown / keyup tracking at 4:54:50. You can check key pressing in more compact way: keyTrackingList = ["ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight"]; .... if (keyTrackingList.includes(e.key) && !this.keys.includes(e.key))
@Frankslaboratory2 жыл бұрын
I like this technique, will try to use it
@toddharvey42002 жыл бұрын
This is a great course so far. I just finished project 7. I played around with it until I was able to add horizontal movement by touch on mobile.
@kxrpcrn58802 жыл бұрын
first, I love frank's generative art tutorials, so I'm sure this one will be great
@dilshodiadgarov4461 Жыл бұрын
What a great tutorial, thank you!!! Learned a lot about OOP!!
@JeremyMyers2 жыл бұрын
First lesson done ... and WOW... What a great course this will be. Best explanations I have found yet in a course.
@Frankslaboratory2 жыл бұрын
Hi Jeremy, well done for completing the project, thank you for your feedback
@piegangxbankroll8970 Жыл бұрын
@@Frankslaboratory please is there a link to your git hub ? for this source code thanks
@hernangil24702 жыл бұрын
Course completed succesfully. Thanks!
@DragonX9992 жыл бұрын
for those who do not understand sx,sy,sw,sh,dx,dy,dw,dh in drawimage sx can be said ix (image x) sy can be said iy (image y) sw can be said iw (image width) dx can be said px(position x) dy can be said py(position y) dw idk dh idk
@priyanshupriyam174 Жыл бұрын
Starting this course with a lot of excitement!
@marqueeplier49492 жыл бұрын
Thank you so much. I used this to convert the game I made in love 2d into javascript. Now, you can directly play it on the browser. :).
@hernangil24702 жыл бұрын
2:13:15 follow() and avoid() complete. Good course. Thanks.
@atanas011711 ай бұрын
Great course!!! Had a lot of fun with it past 7 days.
@roshnasanam83476 ай бұрын
Broo did you upload this project in Github if so will you please share your GitHub my code is not working I was struck for 3 days. Plz help me out with project 2
@toomuchyee4 ай бұрын
if you're using visual studios to code these, you can get the "live preview" extension so you don't have to keep refreshing a browser
@ChrisTian-ej5zb2 жыл бұрын
Maaaan ang hiraaaaap, project 1 palang naiiwanan na ko
@dovakin_097 ай бұрын
Amazing and detailed course! Thank you so much!
@nolsjawline2 жыл бұрын
absolute gold content! I'm an incoming EMC student, and this seems like a great intermediate project! See you guys in a month!
@nolsjawline2 жыл бұрын
hopefully... haha
@HaroonCodes2 жыл бұрын
I hope to become the Best JavaScript Developer and most Important in the world of tech and programming and problem solving.
@nimira43 Жыл бұрын
Brilliantly explained tutorials by a brilliant tutor.
@minelabsryan44852 жыл бұрын
Thank you soo much, I have been trying to find a good starting video to get me familiar with JS, html, and CSS and this video is both fun and educational, thank you for making this video. :)
@bartvanpelt96275 ай бұрын
I loved your video. Very instructive, good to follow. Thanks a lot.
@juandavidcastroarias7115 Жыл бұрын
Thank your for your help, this information is usefull,
@andreranulfo-dev86072 жыл бұрын
Dude... That's mindblowing!!!
@Frankslaboratory2 жыл бұрын
Hi Andre, glad you think so :D
@braveitor2 жыл бұрын
Such a great video tutorial! I followed all the steps and projects, trying to anticipate your next implementations, so I've learned a lot. Thank you very much. I already knew a lot of this concepts but I needed the "big picture", with this state machine, classes distribution, and so on. Great job!
@Frankslaboratory2 жыл бұрын
Hi David, glad you found some value, I'm working on another series with a similar structure, there are many 2d gamedev techniques I haven't covered yet, think I will do some isometric game tutorials next :)
@braveitor2 жыл бұрын
@@Frankslaboratory That's fantastic! I'm watching also your previous videos as there are a lot of interesting things there. What I liked most of this vídeo is that everything is explained in a simple way, using vanilla javascript, while other instructors use some kind of js engine, and that content ends outdated in a pair of versions. Keep up this great content! I'd love to see how to make that isometric game. I made a very simple one back in the day using Flash, so it'd be great learning your approach. :)
@Justin-l2d Жыл бұрын
I like the camera masks in old school Resident Evil games; it's basically putting layers in front of a background image that the player can walk behind to make it look like a fully 3D environment.
@alexanderbehrens76862 жыл бұрын
Great Job. I only missed a github, with all the source code to compare it, with my code. Video pause, forward, backward, play and so on. You did a great job. Please more of this fine video tutorial. Your english is very food to understand!
@benja-min1588 Жыл бұрын
Late to the party, but people in late 2024 are still enjoying this. Thank you @Frankslaboratory, this was great.
@UnathiGX2 жыл бұрын
YOU'RE GOING TO LOVE THIS COURSE!!!!! 👁👁
@quoiquedon70028 ай бұрын
Great tutorial! Many thanks to Frank!
@web3hQ0002 жыл бұрын
They helped! Really.. helped. Although i know some basics on .js, i still find it hard to understand some of what he did with dah dog sprite but as i kept watching and flowing along i came to get what he was talking about. Really great video fr someone like me who wants to work in the game industry, and i also think 2d sprite is a good start up for me. Thanks for this great video Frank, they're awesome.. 😄
@bigman5952 жыл бұрын
I probably sound stupid but what code programme did you use?
@lelouch71072 жыл бұрын
Your video make my day. I wanted to improve my js skill and I did not know how I should do. After your tutorial, I know exactly what I must do.
@richardclark7002 жыл бұрын
Frank: Q @ 2:59:15 my answer: 16.65 - great videos btw, keep them coming