I agree in many ways. I'm a full-time, professional developer and the company I work for is Unity-focused. I came from background in DirectX and engine development, with a lot of years of low-level programming as well as C# ... I cringe at about 97% of the tutorials out there. It's not simply that they don't teach optimization, they don't teach any type of solid _programming_ fundamentals to beginners. You know who are the worst C# programmers? Aspiring Unity developers, without a doubt ... I interview candidates on behalf of our company, and the failure rate for entry-level candidates in technical interviews is about 99.5%, no joke. Each time we interview someone I cross my fingers and pray that they know C#, but I know better than to get my hopes up. This technical interview is not hard for anyone who knows C# fundamentals and how to write code: they're just simple logical tasks with strings and numbers, and I can tell if a person is a junior, mid or senior level dev just by watching what they do and the things they say about the task. I can also tell if someone has no clue how to write code at all, and that's the case with basically all of them we've interviewed. Without Brackeys writing the code for them they can't even write a basic arithmetic function, and they just freeze up ... so, what's going on here? For one, it's the blind leading the blind on RUclips. People who are still beginners but know a couple little tricks are teaching other beginners on RUclips, and people learn a trick from a tutorial and then make their own tutorial based on that tutorial, quoting it like holy scripture. Another part of it is that "development made easy" and "no code required" are catchy-sounding to millions of gamers who fantasize about making games but don't want to try anything hard. There's big money to be made in selling people dreams like "earn millions of dollars from home" or "develop your own games without code". Make a video with a clickbait title like "Start Earning $100K+ per Year in the Game Industry!" and in the video tell people to spend 3hrs a day learning how to program and write code for a year or two to get a good job. You'll get 350,000 views, but tons of dislikes and nasty comments even though you actually gave excellent advice. Most people don't want good advice if it involves _any_ thinking or learning, they just want someone to write the code for them and give it to them to Ctrl+C, Ctrl+V ... in some of the Unity dev communities I participate in, people get irate when I suggest C# programming should be a dev's #1 priority and Unity alone is not a good way to learn it. This issue really goes down to the societal and social level, and isn't just the Unity community. They have this problem around every difficult and technical thing that's exciting or has high rewards, such as investing in stocks, cryptocurrency, etc. Watch some investment and trading tutorials and you'll see the same problems: unqualified people teaching other unqualified people and leading them to their doom. 2021 was a prime example with the meme stock and meme coin crazes that cost novice investors their life savings by investing in trash assets at the behest of social media and RUclips influencers. Instead of worrying about it too much, and because you can't fix it or make people learn things properly, just look at it as "job security" lol. You won't have to worry about any of those people getting industry jobs so salaries will stay high and there will be open positions everywhere because they refuse to learn programming ... 🤷♂️
Thank you for the incredibly thoughtful reply. Part of the reason I made this vid was because it makes me really sad that people are being misled so horribly into believing they can make it in the industry while being taught all the wrong paths. As you said, this isn't exclusively a game dev tutorial problem and instead an issue with people wanting difficult things to be made easy and if someone can delude them into believing that then they will take that path without a second thought. Game development is a subset and specialization of programming/computer science, too many people try to skip that. It's like trying to draw anime without first learning the fundamentals of anatomy and sketching. This sentiment should be reflected more often, which is why I constantly shill Jasper's tutorials because they're the only ones that I find are top notch. The Unity community in particular is very nasty about this which is strange, you'd think Unreal would be the one like this since Unreal has all of the good visual scripting/non programming stuff. This video got horrible backlash on the Unity subreddit for the same reasons you describe. Perhaps it's because Unity is still seen as the indie game and "easy to use" engine which attracts these sorts of people. I won't lie I am def guilty of not formally learning C# lol but I'm at least competent in nearly every other popular programming language. Someday I'll take the time to write a non Unity C# program. Again, thanks for the comment!
@@Acerola_t that's to be expected ... if you tell people that they have spent months or years learning the wrong things the wrong way and still aren't good devs, that's a tough pill to swallow. But there's a reason they're not applying for and getting industry jobs and they have regular jobs that they hate (or no job): because they won't stop using Unity as a "toy" and just learn to be a good programmer, first and foremost, and use it as a professional tool. When it comes to hiring developers, we will hire a strong C# programmer with no Unity experience over the average indy dev who lacks C# skills but knows all about the editor and tools. I can teach that C# programmer Unity in about 40 or 60 days, and have them rolling out sophisticated features in projects, but I can't teach a non-programmer to master C# or C++ that fast, maybe not even in a year or three years, no matter how many years they tinkered with Unity editor and copying tutorial scripts ... I don't understand it, personally, because to me the code _is_ the fun part. Give me the hard problems no one else knows how to do and let's invent something new to chip away at that problem. 🤷♂️
@@GameDevNerd I've been in the industry for 15+ years. Next interview you lead start by asking what is a GameObject. Then ask them what is a component, finally ask them what is the difference between a GameObject and an Object in C#. It's a bit of a trick question but I've found these 3 questions alone split the big boys and the script kiddies. Another question I like to ask is what value can I access faster, a boolean from a list or a list from a dictionary and why. If you have someone that can answer these questions then continue the interview, otherwise save your time and recommend some areas for them to improve on.
@@OSemeador I've been programming and doing game dev at least 15 years (not always professionally) too, and you basically nailed it. The typical Unity "script kiddie" isn't even gonna know what System.Object is, at all, and generally has no clue how to write a class and use a constructor (also only knows that int, float and bool exists, and has never heard of other primitive data types). Basically, everything they do has to be a MonoBehaviour for them to paste some Brackeys code into, and if you talk about writing classes, instantiating and using them they simply have no idea what sort of wizardry this is you're speaking of. An important question I often ask is for someone to explain the difference between a _value type_ and a _reference type_ or between an object and a structure. As you'd expect, most applicants have no idea how to respond to that ... but the more incredible part is that many still _think_ they do and they will just start making stuff up that sounds good, lol. "An object is like a thing you put into your game, and a structure is a way of organizing those things" ... or "A reference type is things that you have a plan for and a value type is something that's important to the game" lol. I kid you not, I've literally received some genuine answers like that and just had to politely wind the interview down, bring it to a close and recommend them a good C# book or two to read. 🤷
@@OSemeador i think i could answer the first and third with basically no unity experience (i had previously used unity like a few hours at most and currently i’d like to get into godot) but with years of programming experience. dunno what a component is but it makes me think of composition, like instead of inheritance tree relations, an object being composed from several traits. not sure if i’m on the right path but maybe id know if i spend more than a week using c# ever in my life. pretty sure Object is the inheritance root for all of c# and GameObject is that for unity’s objects and necessary to be used or inherited from for the like basic unity methods. also had a brain fart and at first confused list and array for the fourth question oops
I got a degree in computer science, and we were always taught that premature optimization is bad. Get something to work first, then optimize it if it needs optimizing. However I do agree that most tutorials display terrible coding practices.
I kinda agree with you, but I am sure you missed something he tried to explain. I mean, I agree about giving priority to optimization over other fundamental aspects is always problematic since you limit yourself and you moslty never allow yourself to experiment, because you settle for watching that framerate is high and cpu/gpu consumption is low. In addition, by focusing too much on that, you end up spending time and energy that can be used for other more important areas. But optimization is a task that you SHOULD always do without exceptions. But what he tries to explain is that every begginer and most important many "dev youtubers" NEVER CARE about optimization. Most of the time people are happy to see their game working. Without even understanding how it works. And when they start to see that the game is starting to dropping the framerate, they just simple start reducing graphical effects, lowering render resolution, disabling shadows, deleting objects, reducing grass, etc. (overrall reducing the quality of the game). and that is how they think they are optimizing the game. They are not capable to develop a game in conditions.
@@angeldude101 Well said! I genuinely feel people have parroted premature optimizations are bad too much. Not going in an unoptimial way isn't premature, it's saving time.
Probably a more accurate rule of thumb should be "premature micro optimizations are bad", but even this would be a bit misleading, because there are situations where non micro optimizations could be skipped or put off. One reason to skip it is if the system is initially fast, but scales very badly (1 enemy, 10 enemy, 100 enemy etc) then you may not care, if you know that you will be working with small scales and you can save tons of development time. This still have drawbacks, mostly that this is now a niche system, that you may not be able to reuse. So the reasons for skipping optimizations is somewhat obvious(on paper/as an idea) so i don't think there is a need to talk too much about that, what i think is less obvious is when you should put off optimization considerations. The things that should be considered in my opinion to decide how much thought should be put into optimization beforehand: Is it a self contained system or more like a service? For example your character controller ideally wouldn't be something that is used by other components, so you can put off optimizing it, as this task is less likely to get harder as your project grows. Lets say it is more like a service. Now we are in more dangerous waters, but not all is lost. Following the same logic as before, you don't have to worry too much about the internals of your component. What is VERY dangerous is what that component/service shows to the outside. An example from unity could be demonstrated with comparing Physics.RaycastAll and Physics.RaycastNonAlloc. Let's say that you are a unity dev about to implement Raycasting. You would probably first go with Physics.RayCastAll for the use case of returning all object hit by a ray. The problem with this is that you always return a new list for each call. But let's say you didn't think of this. Your clients start using this version, and after a year or two there are complaints that RayCastAll is generating memory garbage and it hurts some people's projects. Now you have a big problem. You may think that you could try to optimize RayCastAll, but there is only so much you can do. What this method shows to the world, is that it will return a list and it doesn't really have a way to reuse lists with the signature it already has. Thats a dependency. If you change that it would break at the client side... So you compromise. You implement Physics.RayCastNonAlloc that takes the list from the client and it works no garbage BUT now you have to ask the clients to refactor their code, possibly at hudreds of places. These are the kinds of situations where putting of optimization concerns can hurt you. small disclaimer: Don't take this example out of context. I am not saying that this is something that happened and unity made a mistake. As far as i know RayCastAll and RayCastNonAlloc could have been there from the start, and they decided to include both because RayCastNonAlloc altough more efficient (maybe not in some cases) is harder to use. I just made this example up to illustrate my point.
You don't need premature optimization if you start making your stuff optimized in the first place by making right moves. It might make no sense when i type it like that but basically with experience you start to learn how to not make stuff as bad when you making them so less headache on long run
Optimization is something i wish smaller game studios/indie devs would focus more on in the anniversary update for risk of rain 2 one of the quality of life updates was optimization and when you're on lower end hardware like i was at the time i could totally tell i was having a way smoother and better experience
Exactly, one argument against prioritizing optimizations is that "computers are fast now" but the faster your game runs, the more lower end hardware you can support, thus expanding your potential customer base. Thanks for the comment!
@@Acerola_t low end hardware is east europe and they pirate anyway so no,.not really Its not about "how many people I can reach" its about "Can i reach the people i should?" Optimization is important, but computers *are* fast now and by optimizing You primarily cater to an audience who: *-Dont make their own purchasing decisions or have no expandable income* (Kids with old pcs, supervised by parents, Poor countries...etc) *-Will possibly pirate the game anyways* So you are right...but you are also wrong
@@ZeroSleap THISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHIS Why THE HELL, are devs skimping on proper optimizations?
I know this is an old comment, but ROR2 even had poor performance on relatively high end machines, especially if you got pretty far in a run. Those optimizations you're talking about are definitely making a huge difference even on newer hardware
I remember having a hard time finding tutorials on optimization. In college, we almost had a class on optimization, but it was dissolved because "modern CPUs are fast enough, otherwise everything is moving to the web/cloud". If I get fired at my job due to my hospital stay, I might do some videos on optimization.
do they think cloud programs magically appear out of thin air ? cloud programs actually need more optimization if anything since they can cost millions of dollars in electricity and server space.
The dispensing with optimization classes due to modern CPU speeds is how we ended up with the disastrous software bloat we have today where everything is electron based and browsers eat up several gigs of ram. It's the same reason Pokemon chugs on the same hardware Doom 2016 runs on at 60fps. Add several layers of abstraction with stack overflow copy pasters and you get soydevs: the programming equivalent of someone who thinks microwaving a tv dinner is comparable being a gourmet chef, just cause it says "gourmet" on the package
@@marcomoreno6748America, probably... FMLA might exist but it's only guaranteed for like, 3 months. And even then people can find ways to fire you even if it's technically illegal...
Didn't really want to comment, but I'm seeing so many veteran developers agreeing to this without giving the context any second thought, so I just wanna share my thoughts on this... It is true that optimization and proper practices are incredibly important when creating a full release product. However it is also INCREDIBLY important to remember that learning a skill like game dev, require taking the learner through "stages of learning" to best help them reach the end-goal of developing a game. 🙂 In my opinion, EVERYONE should have a proper chance at learning to make games if it is a dream they have. And helping the broadest audience achieve that goal means teaching them one step at a time. In due time once they are comfortable and have a fundamental understanding about WHAT they need to optimize, then it's time to teach them about optimization. 👈 Of course teaching proper practices from the start is important to not give them bad habits, but when teaching you also have to be careful you don't forget that a beginner WILL get overwhelmed just learning about the basics... 😕 If you attempt to teach advanced optimization from lesson one, then many of the learners will eventually jump off the learning train. And if anyone's response to that statement ☝ is "well then game dev isn't for them"... Then we just won't reach an agreement, since I'm clearly more concerned with the student having a good learning experience, rather than overwhelming them with the "technically correct approach for a full release game". I often encounter developers who are extremely technically gifted, or developers who has learned another language for 20 years, who has no issues learning game dev "properly" from the start, since their mind is attuned to that type of technical skill. But occasionally these same people have a hard time putting themselves in the place of someone less gifted, or someone who has only JUST taken their first step into their FIRST technical skill. And I have even seen "experienced devs" who couldn't look outside their own bubble, resulting in making the less experienced feel stupid and scaring them away... My point is, that there is a MASSIVE difference between "teaching game dev for complete beginners", and "teaching how to properly develop a game". 🙂 In due time, optimization SHOULD be taught once they can handle it without getting overwhelmed. People are too quick at jumping to the "cold and logical" conclusion that "optimization is more important from the start", rather than taking the human into account who is sitting there trying to learn something they find difficult. Another point here that I think a lot of people forget when they learn something off of a RUclips video... Regarding of their teaching platform... Whenever a person teaches any type of technical skill, you are meant to use your own head a bit. Expecting the instructor to have everything included into their lessons, so you don't need to spend your own energy applying what you are learned, is a "you issue". Blaming a RUclipsr for not "guiding you towards the next learning step" is understandably in some cases, but you also have to be careful you don't rely too much on the RUclipsr holding your hand CONSTANTLY, to the point where you don't know how to seek knowledge on your own. If you find a RUclips video teaching you "how to create a health bar in your game", in most cases they are of course going to teach you the concept of how it is made... Not a "full release version you can just copy/paste into your game"... I don't blame most people leaving comments in here, since they haven't actually experienced what it's like running a large RUclips channel. But whenever you go EXTREMELY SPECIFIC in your tutorials, you get a overwhelming amount of people who are frustrated because it gets too technical, or you have people complaining that "you need to make another video with THEIR specific games setup in mind"... This is a big reason why tutorials can appear "vague" or not technical enough for a full-release product. You are supposed to "learn and apply"... Not "copy paste". People are literally expecting RUclipsrs to be "freelancers hired to help them finish their game", when they should be seen as teachers/educators. 😂 Making optimization, security, complex systems, etc. part of your tutorials, will make your lessons more about "how to" rather than "teaching"... And this is where I often see viewers misunderstand the purpose of online educational videos. A third point I have which is more aimed at the person who made this video... You start out your video saying "I'm not going to mention any names", but at the same time you have Brackeys face plastered on the thumbnail, looking like the devil... 😅 I know it is for clickbait (like stated in the thumb), but it's still a extremely bold move for a "on purpose clickbait". My overall issue with this video isn't the message you are trying to convey to people. Optimization IS extremely important, and I'm glad that you are pointing it out, so that the people who are ready to take that step, can be made aware of the importance of it. But there are more positive ways to go about it, besides pushing other creators under the bus, or using a well bellowed educator negatively for clickbait. 🙂
This is the comment that should be pinned to the top of this page and definitely not a post about someone *cringing* over existing tutorials and flexing on their programming resume. A lot of these tutorials that are being bashed are likely one of a few that exist for a given subject matter. From my experience, they at least provide a good starting place to achieve the goal you are looking for. Programmers that are new to the scene will probably have to copy some portion of the work without fully understanding it and that's okay. Get it in there, see if it works. If it doesn't work see if you can figure out why. Now step through each line and get an understanding of what is happening. If something isn't done in the most performant way, eventually you're going to either recognize this during the tutorial and make an adjustment yourself or you will wonder why and come across a tutorial on using profiling tools. Let your curiosity drive and discover that xyz functionality is taking a long time and go down the rabbit whole of finding out why that is and is there a better way to go about satisfying your problem. It's astounding how many tutorials there are today. You can pretty much find a tutorial for anything. I don't mind the gripe over a creator claiming production ready when it is clearly not, although you do clearly call out Brackey. My issue is more with the Pinned message at the top. If you just want to be a C# developer then sure be really good at C# lol...
or better yet, teach the easy way and the optimized way, so the beginer who is only testing can use the quick dumb way to see if they like it in the game, and when they want to optimize the code they can come to the same video from improvements@@sunbleachedangel
I'll be honest, While it is problematic, Just like the first boss in a Dark souls game... Understanding when a tutorial is showing you just the simple way of doing something and then understanding how to upgrade/optimize it on your own is super important for growth
Gonna be a bit cynical here, but it's been quite a while and I still haven't understood how to progress on my own into rigid body wheel physics. Because absolutely no one teaches anything other than raycast wheels or Unity/Godot's default wheel colliders. And even raycast wheels, not many people do. About 99% of tutorials are about default wheel colliders, which are absolutely abysmal. But hey, they are easy to get going, so anyone can learn them in a day and make a tutorial about them. Same thing for first person controllers. Everyone and their mothers teaches them using capsule colliders. Which are fine in some cases, but not at all in others. But then, of course, just like the default wheel colliders, they are easy to learn, so there's 0% tutorials teaching how to use cylinders for colliders (which handle stairs better, don't slide down on edges and thin platforms, etc). So far I haven't a clue how to implement such a thing.
@@ElmerGLue disagree, this is probably a issue tried and solved hundreds of times, probably there is a great doc/tutorial out there, that solves your problem and even some you still dont know you are gonna have, but is pushed down by the flood of the same simple concept repeated 1000 times by 1000 tutorial. It is a problem of discoverability, this is also why there are "awesome-something" repository that collect the best tool/method/tutorial for something.
As a veteran game dev, I think those tutorials still serve the purpose of making game development accessible to complete beginners. I remember starting out in the 2000s, most people didn't even know where to start and never made it anywhere at all. The only people who ever got started either exchanged knowledge on forums and/or bought 90s coding books lol.
I agree. I'm still a new game dev working on my second commercial game. My background was producing comic books for 20 years until I hit a career/personal wall and wanted a change. Some people don't like him, but Thomas Brush tutorials and vids helped me to have the confidence to try game dev. I will never be a great programmer, but I can be decent enough and use my strengths in visual arts to make games. You can hire or ask for help where you are weak. I saw a doc on the Hollow Knight guys and they hired people to help with their programming. There is more than just writing code to making a game. And no knowledge, tutorial or skill makes up for determination and perseverance. Those two things I feel are more important when it comes to making games, because there will always be obstacles to overcome making games or anything other endeavor in life.
@@Repanon00 Very well said. In that aspect, the current landscape doesn't look bad, because while 99% of the viewers can't code but at-least 50% of them are interested in development, which just boosts the overall reach of the topics and that just means the 1% grows in number, maybe not in % but in actual value.
Yeah, it's great for getting people into game development. It's just annoying that once you become intermediate, you very suddenly go from having a wealth of content to scrounging around for a single tutorial that is actually useful.
But all the tutorials could be done in other, better ways with similar results. Do videos of those other ways exist? I bet they do, but because of youtube/google/search in general we end up with what is the most popular, which is likely not related to which is the best way to achieve X and more likely down to how well presented (edited/presenter vocals/etc) than the actual content of the video. This is a systemic problem that goes beyond game design.
I think a lot of the problem here is the psychology of making something that "barely works" for people doing these tutorials. Spending hours following along doing something (usually without any really good context or explanation for half of what you're doing) and then getting to sit back and go "wow it (barely) works!" doesn't give you any satisfaction or motivation to continue. Learning the "better way" from the start would allow noobs to build actual working systems into their games, which would then allow them to move on to something else interesting rather than redoing their grass for the 5th time. I can't speak for everyone, but getting to the "minimum viable product" for a very simple game is the payoff that I was seeking. If the tutorials lead me to a MVP that simply isn't playable, I have little to no motivation to try again. If i had used this grass example, and then added a bunch of assets and tried to make a combat system, and it's running at 9 FPS, it's extremely demotivating.
For anyone curious, the reason why geometry shaders are generally considered bad, is because they dont map to the GPU's strength as well as other pipeline operations do. The big thing with the GPU is that its supposed to be able to perform many operations in massive parallel, but because of specific requirements many graphics API's make for geometry shader output (for example, geometry shader vertex emissions must be rendered in input order), the GPU must do extra buffering, syncing, and other things to ensure that these requirements are met, and these required operations generally means lots of memory accesses and "middlemen", if you will, that stall the pipeline. Its just not scalable compared to other pipeline operations.
I'm learning Unity for about a month now and I swear the "How to make a game" tutorials are the very worst place to start. I just kinda dove right in and read a lot of documentations and asked for help for very specific things. Seriously, you learn a lot faster when you think of an idea and understand the processes to materialize that idea. It's okay to ask for help but don't copy paste code. The official Unity discord is the best place. They offer you help but they don't give you code to just copy paste.
somethings you gotta just black box tho. Like deduplicate an unsorted array. Do you really know what ram and CPU is doing with those functions? Do you REALLY know? then it's been black boxed, and odds are it's fast enough
You're probably right, but I wanna point out that some people (e.g. myself and many other people with ADHD) are really bad at learning from documentation. In our case, learning by doing is probably going to be more effective than setting the unrealistic goal of reading and understanding documentation, even if it means we learn bad habits and struggle with optimisation further down the road.
@@jesusstaccato8448 it's not like anybody's first game is going to be a fucking masterpiece, but it might be more about the approach. I struggle with reading documentation as well but I think the point is that you are learning the method to do something rather than understand how they did it. It is a very general topic for my comparison to be accurate but it's the closest I can come up with at the moment. In any case, do whatever works for you. Unlearning bad habits is better than not learning at all.
The most important optimizations: A: limiting what is loaded into your scene at any given time B: managing when new assets are loaded into your scene so as to hide the process C: culling things that are loaded but you cannot see You should only need to provide an environment in which the player's screen is filled.
code level optimizations tend to have less impact, however, the most important code level optimizations: A: avoid exposing methods unnecessarily in update and coroutines B: use dictionaries to find items in large collections wherever possible C: know which commonly used methods take more resources such as findobject methods in unity and reduce your use of them.
@@svenrawandreloaded The reason why event ticks are less performant is because it essentially uses its own update cycle to check for conditionals. So yes, but it's not limited to that. Essentially event ticks fall under code optimization A, which is the first code optimization for a reason.
Reminds me of the game dev behind the scenes video on crash bandicoot. They implemented all kinds of revolutionary new ideas (sarcasm intended) like "dynamically load stuff in and out of your level rather than just try to cram everything into the one megabyte of RAM available". I know, shocker. It explains why so many PS1 games have such simplistic level design and geometry. 3D games in general over new territory and most developers didn't think of even the most basic optimizations.
Making a billion load/unload operations per frame is the solution to all optimizations? Wow didn't know that, someone should totally make a tutorial about this.
Leaving out optimization seems to serve the same purpose as "lies for children" in other subjects. You don't want to _start off_ with it. I don't think it's very important to know when you're truly just starting out. The people who are really willing to take the next step will inevitably learn about it.
I agree with this. I'm a professional programmer and followed some tutorials to get my game started and enjoy a lot of the small wins i've made. I have a giant terrain and painted a bunch of grass and my game ran like shit and guess where I ended up.. watching Acerola's entire grass series lol. Those who want to learn, will learn.
I agree in general but if your tutorial is about using a method that would never be practical because of how inefficient it is, it's just a bad tutorial.
You have a point but I don't agree. Software development is like 50% optimisation and I think there is a large amount of devs who never realise that they are not as good as they think they are. I think Acerola was talking about the brackeys tutorial and brackeys should 100% have known that he was teaching a outdated method, but he did not. Why did he not know? Mabey because optimisation is to neglected. My hypothesis is that optimisation is not interresting enought that most high level coding teachers don't bother bc no one will listen and its only when you get the lower systems coding (C/C++) that optimisation is taught. But I may be wrong :)
Obviously the people willing to take the next step will learn about it. That’s circular logic: those who aren’t willing to take the next step will… not take the next step. The point is that if that step were easier to take, more people would be willing to do it. Isn’t that the point of tutorials? If we didn’t have tutorials at all some people would still figure it out on their own, so why bother?
I started with Roblox when I was 11 or 12 and was mainly fascinated with the idea I could write instructions that the computer had to follow, so I have mainly hooked on the programming aspect then the general "making games" aspect (though that is something I really want to do also). For that, I also fell into the trap of looking up tutorials for everything I wanted for a while, especially since I was so young and still getting a grasp on the basics. I think part of the problem is everyone tells you to start small and basic so you don't demotivate yourself quickly so people avoid trying anything super daunting right off the bat, like properly learning programming fundamentals and the language you're using. I get staying motivated can be an issue, but if it's too challenging to try and work on learning those fundamentals and getting a proper grasp on the programming side then that part of game dev might not be it for you. You don't have to immediately stop everything to work on just speed running the basics, I did a lot of little experiments (and still do) when learning concepts so I have the application of concepts to establish and support what I just learned, but avoiding proper learning will just hurt you in the long run. While I was still doing Lua stuff for Roblox I decided to try making stuff for GMod since it also used Lua. This was a great step since the tutorials for GMod were a lot more sparse. I learned how to read documentation and use references not to copy code but instead inform me on how code worked. Because I didn't have tutorials that gave exact implementation details I instead started experimenting and trying to implement more and more of the knowledge I had built up before to make new things. I dissected other people's add-ons to get the gist of how they worked and started reading Source engine code too to better understand how things operate under the hood. I learned so much more because I didn't have rigid and specific guides filled with basic implementations that wouldn't be good at a production level. After a year or two of GMod dev I picked up a Udemy course on UE4 C++ dev that started with a section on making a simple console app game with C++ before even touching the engine. I didn't get far into the actual engine lessens since it wasn't as flexible as I thought (the courses) and my compile times made edits so slow. I tried to make a basic TPS for a bit but gave up on it because of compile times. That's when I tried Unity for a bit and learned some C# but waited and went back to GMod to apply some of the OOP fundamentals I did pick up on to improve some of the projects I was working on before. One thing that really opened my eyes up past the large swath of beginner tutorials was watching GDC videos. Being able to see how bigger and more complex systems were designed, iterated upon, and implemented opened up the idea that I now had references to pursue these more complicated systems that are being used in actual games. I think a lot of people trick themselves into the beginner's trap with that mindset I described earlier, where they don't want to demotivate themselves so they pursue things that are really easy and basically laid out for them. I say do some of these things but do learn the fundamentals and devote more time to that than the instant gratification stuff and only keep doing those when you really need that extra boost. Instead, turn the fundamental learning into the bulk of your gratification. Make a small little prototype out of something you just learned and don't watch a tutorial for the specifics. If you're learning the fundamentals of a language then doing a basic console app prototype is good enough and doesn't have to be more complex than just printing what would otherwise be a debug message. Just seeing that a basic for loop or search algorithm actually printed the right result is satisfying while learning and gets you to learn much faster since you'll be applying the knowledge. It's just important that you're doing the bulk of that work instead of a tutorial or guide. Recently I've really started getting into Unity development and improving my C# while learning a little about the engine, but I've mostly focused on learning fundamentals, architecture, and C# itself while working on my project. As I said before, I learned during modding with GMod and some extra Roblox stuff how to read documentation so instead of watching video tutorials on how to do everything in Unity I try to read the API docs first and see what I can use to implement what I want to do. Otherwise, I've been looking up game programming patterns (gameprogrammingpatterns.com is a great free book (at least the web version is, paperback and ebooks are available to buy and have nothing exclusive that can't be found in the web version) based on an older generalized OOP patterns book that's referenced by a lot of people and where a lot of the popular patterns got their name and popularity from, features and quirks of C#, and data structures. I picked up a humble bundle of O'Reilly books that are generalized for any sort of production code and has topics on optimization, DevOps, algorithms, managing complexity, and even skills outside of straight coding that will make you a better programmer. I've found that the lessons taught in all these media are more fruitful and applicable than the specific tutorials that beginners will cling too and have trouble escaping from. They helped me build confidence to try experimenting with more complex systems like GOAP, HTN planners, tool dev, spatial data representation and query systems, raycast ballistic simulations, and more because I have the fundamental knowledge of how the basics of these systems work so I can build on that knowledge to actually implement them.
@@epicm999 my joy of making games is never been bogging down because of asset design, it's the exploration that explained everything that gets me confused then implementing them to my game, never really caring about the assets or the graphics, it's just for the experiments of it. i think this is the reasons for me not using a game engine and instead creating an 2d engine as your own (making a 2d engine is really easy but people have to go through abstract concepts they'd have to think on their own) is because you've disciplined yourself to what is the methodical option advantageously, for your game ideas.
To any person wanting to write: "But that would be a premature optimization, and that is a root of all evil": the full quote states: "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." So making your grass render faster by an order of magnitude thanks to some smart decisions is not premature optimization. Spending a day or two so your game can run at 86 FPS instead of 85 is.
I feel like the way bigger problem is that many tutorials are made in a way that many people don't learn anything from them. But that is a weird issue, and basically a core part of tutorials. But you can just mindlessly follow along.
alot of people don't understand that tutorials show a plan of action, and that they are responsible for learning AND internalizing the mentioned actions to properly progress as a learner. Gift yourself, don't spoil yourself! - The giant rat that makes all of the rules
I understand the exact issue you're talking about! When making videos for the channel I'm commenting with, part of why I don't go deep into "how to make this very specific thing" is because the point isn't to have people learn how to make a specific thing, but to learn how something in Unreal works, so they can creatively apply it to their own games! But it does seem like a very limited philosophy and I do wish more tutorial makers applied it (if anything for when ~I~ have questions on things)
And then they also provide their entire Unity package you can download so that if you want to, you literally don't even have to follow the tutorial. Just transplant their work that you don't understand into your game.
what's the difference between tutorials and education? the latter actually expects you to do some work, and that's how you learn. a video will teach you some keywords but will never magically make you better at actually doing it
Acerola: "I won't be naming any specific tutorials, because I don't want any of the authors feel bad or be targeted by my audience." Also Acerola: *proceeds to put a specific author into the video's thumbnail*
One of the most technically impressive games I've looked into is Shadow of the Colossus. Not the remake, the original. The beauty of the game speaks for itself, but if you dive into the lengths they went to optimizing the shit out of EVERYthing you get a real appreciation for how important a step it is in game development. A true example of limitation breeding creativity.
@@matthewpublikum3114 there’s a great technical breakdown simply titled “making of shadow of the colossus - ps2” in Japanese, unfortunately the site hosting the English translation is no longer around and the only mirror I could find has this gaudy orange background which kind of takes away from the reading experience.
Couldn't agree more. It's really frustrating how many tutorials set you up for failure. Not just for optimization, but just for their practical use. Just finished a VR tutorials where the guy has you use a rigid body for the players collider and movement... In VR... Had to throw everything away and start from scratch on my own.
@@steen_is_adrift My initial impression without knowing anything about whatever system you're interfacing with is that a 'rigid' body (from the name alone) has physics actions with some kind of normalised motion, but VR tracking cannot impart force onto the player (only perhaps their play area / frame of reference) and the player can move their physical components as fast as they want so it would impart extreme forces on the environment without correction.
Yeah I encountered something like this recently, on a video about avoiding cheating in vr by going through walls. They had a collision system made. but that meant you try and move into an object, even a table, your vision remains the same while your body moves which can induce motion issues for the user.
@@BrandonNyman To be fair, a lot of the best VR games do this because the only alternative is to create a Half-Life Alyx system of showing a weird orange halo as your screen goes black, which can be equally disorienting. VR is still tricky in a lot of areas. Lots of room for new ideas.
I am a professional senior PHP developer and just today I reached the end of the first month of my first Unity project. I have a quite large list of features implemented already, Combat System, Health and Stamina System, Enemy AI & Pathfinding, Droppable Loot and Findable Loot... To name a few. I can safely say that while the programming logic is mostly the same, there are many, many things that makes game development such a different beast all together, and working alone, needing to provide graphical interface (photoshop), audio mixing and back-end logic is arduous to say the least. Game development requires so many different skills and I believe it is extremely under-appreciated (looking at salaries here), which is why I decided to become a PHP developer instead of a Game Developer. Most of what I managed to implement was from an Udemy course I took, alongside RUclips tutorials and many sleepless nights scouring Unity's documentation, and with enough persistence, I always found a way to implement what I needed, where I needed and when I needed, however, I can hardly imagine how difficult it would be for somenone with 0 programming knowledge to implement all that while not even having the slight idea what optimization is, I can safely say that the only reason why I could build all that in under a month (which honestly, is mediocre) is because I've spent the last 8 years studing programming logic and code and even then, it was not easy, and it is far from perfect, to make all that blend together and not having a single crash or FPS drop was an optimization task, something a very little portion of the tutorials I've seen around here teaches. In my journey which is far from over, I've came across many, bizarre "tutorial" videos that made me think if these people even tried out what they're trying to teach. I don't wanna bash any of it but seriously, it's just like when you learn something wrong, and you teach it, it gets spread all over. Mistakes that are quite hard to withdraw yourself on later in your programming carrer. All I can say to new developers out there is: even before thinking of developing a game, and I know its hard and will probably take up a lot of time, try to look for professional content outside of RUclips, and Unity-endorsed ones. This will save you many, many problems down the line.
Hey just a little confused about that last part. Are you saying to look for content outside of youtube and outside of unity endorsed ones or outside of youtube and look for unity endorsed ones?
The most important part of your programming, generally, is really not optimization, but the readability and maintainability of the code itself. As long as you have that you can still quickly update and fix other things. If you lose that then you cannot do anything at all without braking things, development would be super slow, nobody would want to work with it and it could potentially cancel out whatever benefit you were getting from not setting readability and maintainability as the first priority.
@@0009tra the reason why React projects are bloated and slow is because people do NOT care about quality and instead just install package upon package of random "helper" bloat and never bother to clean up a single thing later on. This results in large bundles filled with useless code. Good quality code is extremely important because you can easily refactor it down later as well. This will lead to the complete opposite of what you said - your bundle will actually get smaller.
If you think gamedev tutorials for game engines like unity have terrible practices and poorly optimized results from predatory youtube shenanigans, you haven't seen the average blender tutorial.
haha when they don't even prompt you to save everything before connecting the instance on points node, knowing there's gonna be 120gb of ram+swap needed i guess the lack of optimization considerations is because most blender artists haven't done much programming, which geometry nodes (and a lot of the other stuff) essentially is
While I agree that optimization is important, I also believe that it's important for beginners to try and make their game first, and optimize later. If they're spending the majority of their time optimizing their first game, rather than add in the elements that they want, they're likely gonna get discouraged from the slow progress. Your first game doesn't have to be perfect, and likely, it's by doing things the quick and dirty way that you'll later discover the slow and optimized way of doing things, because you've given yourself time to learn the code, and figure out what works better. That being said, anyone who's making a tutorial that shows the quick and dirty methods should absolutely disclose that it's the quick and dirty method, as to not mislead their viewers.
I think the fundamental problem is that the grass example is not a tutorial of a neat technique to render grass that can be used for other things, and it really should not be used to render grass because of how resourse hungry it is. Instead, it's a tutorial on how to render grass period. And someone unexperienced could not realize where's the problem when after 4 months of learning and adding things the game runs at 20fps. But I agree that if it's disclosed that what is being tought is an excersize and not a real implementation, that the implementation used is not meant to be used for millions of grass blades, solves the issue
Using free online tutorials, I've always felt something was off. Game dev tutorials remind me of the many Web dev tutorials that show you concepts and methods completely out of context for sake of simplicity, or to get you to buy something. It also makes me think of the maths and science taught to young children, they're full of lies because the realities are far more complex to grasp as a beginner perhaps.
Something I noticed with RUclips tutorials is the more I watch the more advance and complex tutorials RUclips sends my way as well as people who give advice like you with optimisation. So I feel like the RUclips algorithm found a way to teach people in a way that fits their individual needs Unless this is just a coincidence on my part. 🤪
It's not just optimization though. I lost count of the times that, for the sake of simplicity, tutorials only teached me how to create a very sub par and half assed version of what I wanted to build, and not how to progress from there and make it better. I did quite a lot of tutorial hopping, looking for someone who actually went deeper into the subject, and I didn't find it very often.
That's one of the worst and most frustrating things when you are trying to interconnect multiple tutorials on a subject to fully implement something. Because it never fails that each tutorial went about it a completely different way and it makes it twice as complicated if not impossible to take concepts from this tutorial and apply it to the system from that tutorial without having major issues. It's honestly just the same problem that literally every other aspect of the internet has. Things are easily accessible and open to anyone now so you will have a lot of people making specific content for specific reasons and there's a lot of garbage to filter to get to the good stuff. And the Games that come out on Steam every day reflect that also.
I find tutorials can be useful as a general guide on how to approach a problem. That said, unless I'm completely lost I tend to avoid them. Another great grass video in the books!
I actually completely disagree with this. You are absolutely correct in everything you are saying about people not learning to optimize, but you're forgetting a few things. First off, there wouldn't be a thousandth of the developers there are today if it weren't for the ease of use of tools like Unity and the prevalence of tutorials on youtube. If everyone kept learning by reading books and going to university like they used to, this industry would never have grown the way it has been. The truth of the matter is that you don't need to understand how the GPU renders things to make a great game today - and that's not a bad thing, it's great! Second, the market decides what a good game is. If that is an unoptimized piece of junk, technically speaking, it is most likely not going to do well and the developer will be out of a job. If it does do well, then it's because it's a good game despite its technical shortcomings and would probably never have seen daylight if people followed your advice. Third, I'd argue that one of the best ways to sift through developers who are "script kiddies" and actual developers is for them to see their framerate drop to 40 when adding their grass and have them solve it. Giving them a cheat sheet for how to fix it is only going to exacerbate the problem - because you are kidding yourself if you think those script kiddies are going to actually read your article about "why" and not just copy-paste the code from the github link at the end. They will never actually understand what the underlying problem was, or care about it. Fourth, ??? Fifth, There's a pinned comment on this video about a professional developer who interviews people who fail basic technical interviews. He makes this seem as if it is a bad thing, when in fact all that shows is that there are tons of interested, passionate developers out there looking to advance themselves. Who cares if they fail? They're not going to get the job, but so what? It's not going to be their last interview, and if they fail and are still passionate, they're going to learn from their mistakes and make themselves better. Sixth, premature optimization is a terrible idea. Obviously, if you can think of three different ways of doing something you should pick the one that has the cost/effectiveness balance that is most in line with your expected outcome, but that's not really how people work most of the time. You need quite a lot of experience to be able to understand the problem to such a degree that you can think of several ways of solving it. Why am I saying this? Because the vast majority of the tutorials you are clobbering aren't out-of-whack unoptimized. Shaders might be more-so than others, but most tutorials on Unity-related topics are about moving transforms, shooting fps guns, health systems and the like. Teaching people to create their own render pipeline to make more optimized light baking as a beginner topic is a terrible idea - as I'm sure you'd agree. So is this grass thing. It's not a beginner topic. Trying to work with shaders in general is not entry-level programming. Which means that these tutorials don't actually hurt anyone - or the industry. If you can't or won't spend the time to figure out why your grass is rendering at 40fps AFTER THE FACT, then you will give up on the issue and delete your grass, which is exactly what you should do.
For real, I felt this was a generic call out video with a more popular youtuber in the thumbnail to gain clout. I feel like like this guy doesn't understand the point of these tutorials at all.
@@purplewine7362 Well, first of all, let's take about 20% off. There's nothing wrong with having an opinion and we should discuss its merits before we attack someone's integrity. I think he is making a legitimate claim. Obviously, that grass tutorial showed people an objectively bad way of doing it and the tutorial could have been made much better.
Eh... I sorta agree with the OP... sorta. I don't actually think you realize what a deluge of crap has befallen us though. If given the choice between a gallon of pure water and a 55 gallon drum of raw sewage... I think the choice between the two is obvious. The same goes for game development... the fact that every two-bit hack and their grandmother thinks they can develop a game just because a tool like Unity, Godot, or UE makes it easier than how it was in the 80s or 90s is just opening the floodgates for trash. That's also part of the reason why the mobile markets are so full of shovelware. Proper game development is an interdisciplinary process and any part that is subpar reflects on the entire product. Program code is the glue that holds it all together. Sure, you can have nice pretty graphics and pleasant audio, but if your game runs at 15FPS, like so many Unity-based games do, it's garbage from top to bottom no matter how nice you make it look. A monkey dressed in silk is still a monkey. I agree that tutorials need to be explaining things better, especially when it comes to performance. Any hack can throw together a tutorial... there are no requirements for even knowing what you're doing. But look at it this way... would you rather learn surgery from a surgeon or Bob the truck mechanic? Quality matters. I'd rather have a steady stream of high-quality games coming from experienced developers than a metric butt ton of garbage games from inexperienced chowderheads who think that it's all glam and cash, the kind of crap I have to sift through to find the good works.
Full support. Optimization is important and you don't want your game running like shit, but god forbid someone's small game doesn't run at 10000fps like it could (which is what most people will do). It's not some rocket science, with secret pitfalls that'll destroy your gains. You just write something wrong and can immediately see the drop. If you wanted people to focus on performance, you'd tell everyone to drop Unity/Godot and go make their own engine. I work in console porting where optimizing is my bread and butter, and I've had to fix some real stinkers. But I write inefficient garbage code all the time myself because it still runs great very often, even in extreme conditions like spawning 100x of the usual amount. Machines are way more efficient than we think (or were taught, because schools usually have garbage machines). It may be a bad thing that tutorials don't shine enough light on optimization, true. Like teaching how to use an extinguisher during cooking lessons, SOME attention should be given to this. But I think every dev who gets past first few projects and still has creative drive, will eventually search for answers on his own. It's not a race, we don't need to hold their hands for this.
You missed the point of the video. The issue was that the tutorials involved making things that aren't viable for use. It's like teaching the bogosort algorithm and being like "it werks tho". I agree that telling people to "just read the textbooks" is a death sentence for accessibility, but beginners don't know a thing about complexity, so they only learn bad habits from 'beginner' videos such as those mentioned. Teaching something conventient is pointless if it cannot be used alongside anything else. It's like using a 'drag and drop' website maker for 30 hours before you realise you want to do a webGL render and you're SoL because they don't and refuse to support that feature. Teach something right the first time. A tutorial should make something complex easier to digest.
Imo killing the interest of potential, new, or growing developers isn't really worth getting bogged down with the specifics of optimization right from the start. Don't get me wrong, it's definitely important to at least mention that the methods of doing these things may be inefficient, which a lot of tutorials leave out, but "predatory" is very far from the right word for most of them. Most of these guys are solo indie developers who are themselves learning, not everyone has the benefit of industry experience or the time to figure out the shit they're making is slow. They simply made something and are sharing it.
I have a stance that it's fundamental on any tutorial or course that the underlying complexities of the subject are at least touched upon. Most courses and tutorials on programming in general just show a half assed implementation of the subject they're teaching and hardly comment on the problems it has or how a good real world implementation could address them. So i agree that many are disingenuous, they just want people to keep coming and inside their confort zone.
My approach is that if its killing the ability to grok stuff or produce readable, decently structured code then don't But at the same time it's worthwhile teaching how to do it *properly*, or just give an idea of the implications under the hood. Like 'we shouldn't have to keep recomputing this value, memoise it or pass it explicitly' I remember there being this whole debate as when we all saw the elsif tower of doom that Yandev made some suggested 'use a switch statement those are faster' but while this is true for both js and python for example others piped up with 'but the compiler already handles that its smart enough'. And the fact is the code shoulda just used polymorphism to handle much of that shit
I know its a year late but he's right. this is even present in the art community where an artist will be like 'just do this simple trick' without showing how the trick functions to make a better artist
I also feel like understanding what elements to optimize is very important as well. I don't know a ton when it comes to code optimization, but at least in the world of optimizing models, people tend to focus on the wrong things. People try to remove every last polygon they can get away with, but at the end of the day, the polygon count is nowhere near the most computationally expensive part of a model, and just because you can remove an extra 50-100 polygons from your soda can by removing the tab and replacing it with a texture, that doesn't really matter unless you have tens of thousands of soda cans in a scene at once, in which case there are much better optimizations you could do
I totally agree. One of the first things I was taught in university was the Amdahl's law and it's unbelievable how little attention it gets, being the most intuitive thing in the world.
If you wanted a big pile of soda cans, only putting in the models/assets of the outer cans (as well as some inner cans) and leaving the inside hollow would be enough to make the illusion that there are many, when there is only a portion of the amount it is seemingly displaying
@@bonbon_idv Exactly. The only reason you would want to go through and save every last polygon is when you get into the range of millions of cans, or if you need the full volume of cans to be simulated or something like that, otherwise there is no real reason to spend any significant time optimizing the polygon count of the asset
@@jumpergamer1913 reducing draw calls is the biggest one. This means using less materials and avoiding shaders with multiple passes, because every draw call means sending information to the GPU to render, which usually takes much longer than the render itself, especially for a few thousand polys or less. Reducing texture size also helps on lower end devices with less VRAM, because if the GPU runs out of VRAM it will run a lot slower copying files in and out of the ram constantly. Another thing that helps is combining many static assets into one large file that uses a single material, as that will really reduce draw calls, although I think game engines tend to do that to some degree automatically
I hope you continue with this type of content. One could settle for the idea that the authors of those tutorials are little more than novices with youtuber aspirations or the sole intention of promoting their own games, but the problem is that almost all of them have videos sponsored by Unity, so...
All I can hope to do is try and cut as few corners as possible in my explanations and be transparent when something isn't optimal or ideal. I'd like to do a series someday where I can help indie devs with their graphics or optimizations and identify where they are going wrong, sort of like Sinix's paint over pals series. Hopefully I can get the Unity sponsor someday lol Thank you for the comment!
Optimization aside, there are so many tutorials that show how to do one thing, in a one c# script and basically what tutorial teaches you, is how to download the script and attach the script to your component, voila. Those tutorials are only fine if you literally never coded by yourself or never opened Unity and you really want to know how things work in this environment. For example, check Brackeys platforming tutorial and compare it to Sebastian Lague 2D platformer basics. This can show you the difference between INFLUENCER and a PROGRAMMER. I recommend every aspiring game developer to download projects, disassemble them and try to make them work from the scratch using the code made in another project. Unreal got a pretty vast demo library made by the developers showing good programming practices in their projects and there are some good breakdown videos on youtube explaining some stuff. I bet Unity got some good stuff too.
RUclips just started recommending me your videos and I can't believe how underrated you are! Your videos are really great, hopefully the algo starts picking them up more!
Just came across this video and wanted to say thank you. I first learned C 25 years ago working on a MUD, on a computer with around 2mb of RAM (if that much). Everything I wrote had to be super optimized to get a big game to fit into that memory footprint, and still leave enough resources for the server to function. So that's how I "grew up". About 3 years ago I started a project in Unity writing in C#. It was my first time using C#. I had lots of questions, many about optimization, which I asked on the Unity forums. Over, and over, and over, and OVER again I was told to stop worrying about it. Write the code, and if later there are performance issues, I could use the tools to see what the problem is and work on it from there. "Computers are so powerful, with so much RAM, that little thing you're worrying about isn't an issue." It absolutely infuriated me that many many people all had that same attitude. Don't bother to optimize it, that's not a problem (unless it's a problem). No, I want to write efficient code ONCE and NOT have to go back and "fix" it later. So I just wanted to say thanks for posting this video. This needs to be learned as a starting point for writing code, not as a "ugh if I have to later".
I only realized the folly of most game development tutorials once I had several years of non-game programming under my belt. It finally clicked why I was struggling so much to pick up what seemed so simple in Unreal Engine and Unity. It's not just optimization that the tutorials lack, but context and system design as well. I understand system design is dry, complex, and time consuming, but it is essential to creating an extensible code base. Now, with professional programming experience, it becomes obvious quick when a tutorial is cutting corners or teaching a less-than-optimal approach to a problem. For the first time in 30 years, I'm finally getting to a point where I can build small games from scratch. And to be able to tell when a tutorial is over-complicating something, or not abstracting it to a point that it can be easily integrated with my own code. That said, I still find value in many tutorials I have watched. I've learned not to follow their word to a T and copy everything they do, but it does help me get some ideas about how to implement things, what features are available in an engine I'm not experienced with, and can also help get past mental blocks. But as I said before, I think the biggest roadblock apart from optimization is system design. A good system design makes it so, so much easier to integrate new features without needing to do tons of refactoring. For example, I watched a Godot 4 tutorial for building a weapon manager component. It was decent, but I only got about 2/3 through it before I decided that the approach being taken was not... great. I took the basic building blocks of what they were doing, broke out a pencil and paper, and starting racking my brain to figure out a simpler, more modular, more optimized approach. After a few hours of brainstorming, I figured it out and implemented it my own way. The problem, of course, is that you have to have experience with programming before it's really possible to do this.
Fucking finally i found a channel who calls this shit out, honestly. Most of these people are like the tech bros of game development. No passion for making features the best they can be, they just tend to make videos about how to make thing X the easy way, with very little actual helpful technical info given on the thing they're doing.
For the most part, if the tutorials showcase correct code practice, I see no issue with not *_teaching_* optimization. That type of content would ultimately derail the main topic of the tutorial depending on what types of optimizations need to be covered. I do agree in that optimization in general isn't even mentioned during tutorials, which is unfortunate, but I personally don't hold tutorial makers accountable for teaching subset topics that aren't directly related to creating the feature the tutorial is offering... Say, if a video was showing me how to create a flowing grass shader for my terrain. I wouldn't expect the video to spend half its length on culling, LODs, batching, etc. That stuff is general topic stuff that is very important, but not directly related to the creation of said grass shader. In this, I would expect a tutorial to mention at least the performance impacts such features could have, that way it can prompt a beginner to think about options to make it more performant on their own, seeking more dedicated tutorials or research rather than half-baked optimization techniques packaged into tutorials that weren't meant to teach optimization.
It also helps to be picky about your tutorials if you choose to follow any. There are plenty of tutorial videos that actually do optimize their code, or mention that something could be done better. People like Sebastian Lague, while the optimization of their code could be arguable to some, at least he mentions when code is possibly not optimized, and at least he provides insight to his code and in some tutorials, actually tries to do things the best way he knows how to provide a smooth result. These types of tutorials are completely fine to me. There are many ways to code the same thing, and if the person making the tutorial prefaces or mentions an optimization point in their tutorial, then the person following it can't complain about bad performance if they followed it and didn't bother exploring optimization themselves after it being pointed out. Of course, if there too many bad spots in the tutorial, then simply don't follow the video. I get some people are lazy, but even beginners need to take some responsibility. I'm not the best at traditional C# either, but even as a beginner at Unity, I took it upon myself to research optimization myself, because it's the logical thing to do. This is actual development. Behind the scenes exists. Even beginners need to know this. They can certainly be blamed if they ignore optimization. You can't pin all the blame on tutorial videos here, since a beginner will probably ignore optimization regardless of using tutorials or not. It's not something they typically think about if they don't have the mind to think about it. Luckily, after 6 years of college, I learned to pay attention to behind the scenes details logic such as this.
I've gotten interested in game development at the start of the pandemic by people like Dani who make fun games that even on my ok laptop run pretty poorly. Lately I started watching game optimizations such as Kaze emanuar's efforts of modifying the Super Mario 64 engine to run several times faster than it originally did, since at the time, game programmers weren't at all used to the C language. The explanations in those videos were good and all, but the thing is it's hard to see what would be a better solution... when you don't know that solution, and I could only really follow along, didn't feel like I could come to any of those ideas by myself... (and probably since the N64 is a really atypical computer) Now, after watching your grass animation trilogy and this video, it really strikes me as obvious that the required knowledge is the very basics of coding or even just how computers work in general, even more so than before. My main takeaway is that at some point I'll definitely want to learn actual programming, and I'll probably also get the computer gems books, they seem epic. Big problem is that I'm in the middle of becoming a woodworker engineer in a non-English-speaking country, so it'll be a side hobby on the internet for quite a while. We'll see tho
half the battle is knowing just what tools even exist. Imagine trying to build a car from catalog, but you had no concept of the hand tools we have. Would be caught doing some strange things with a pair of pliers
11 months later this was recommended to me. You're far past your 1k goal good sir. I'm so glad you found your community; we are proud of you. You deserve this.
I agree and disagree. First of all, I enjoyed your video. I get handed all sorts of projects in my work with other game developers and other clients and there is a lot of really strange things that I see. Low hanging fruits that are not optimized. But on other hand, game development is a form of art and expression. So there are a lot of tutorials out there that help people see what tools are available for them to adopt. I feel like people should try lots of different things and see what's fun and interesting. Many independent game developers are just making simple games with not a lot of layers of complexity. Larger studios implement more strict control over CPU GPU cycles. In unity, it is pretty easy to profile to find things that are slowing you down. Also, are you filming out of an RV?
Thanks for the comment! I agree that my points don't apply to those making simpler games that will never be intensive. My main issue is with tutorials that portray the content as out of the box ready or teach a topic without explicitly stating that it's beginner knowledge. Also yeah I am filming in my family's camper lol, I unfortunately don't live alone so there's nowhere else private to film.
Yup, it's simply different audiences. There's so much shit that you need to learn in game development, so you need a bunch of little dopamine-inducing wins on your journey. If I'm 3 months into learning Unity and want to know how to make a nice looking grass environment, I'd probably go with the path of least resistance for that small win to keep me motivated. If I'm a bit more experienced and working on a production-level project, then it's up to me to keep an eye out for potential performance pitfalls. I can't just go with the beginner-level "STYLIZED GRASS IN 5 MINUTES" tutorial and call it a day. I'm not sure I'd call those styles of tutorials predatory. They do serve a very real purpose to the community, as do these sorts of videos calling them out for the reasons you shouldn't follow them. Nothing's black and white :)
@@teamldm Yeah, there's certainly nothing wrong with 'stylized grass in 5 minutes' videos, but the predatory part is when it's portrayed as a production ready asset when it's the exact opposite.
@@NeoHCgbz You have a great point, in addition, for people like myself, who could at best be called a hobbyist, starting off thinking through how to optimize it before it's implemented, means I'll never actually start making anything lol.
*at the end of the video* "...and I'm pretty far from my goal of 1 thousand" *checks sub count* *is nearly 200k* Grats my guy! Just came across your videos today and they've been really interesting and helpful :3
How to make a game in Unity tutorial!; Step 1: add a fully functional rig of a human Step 2: add gravity Step 3: add controls Step 4: add enemies Step 5: add the ground
YES. Thank you. Tutorials do help people grasp the beginnings of programming. BUT, they should only be a kickstart and that's it. Everyone should proceed to learn C# fundamentals (unity's case), coding patterns, etc. Unity actually has a pretty easy tutorial on C# basics that can help tackling this step. After this, learning actual math also is a must. And it's not just tutorials, many assets in the unity's asset store sucks. I stopped buying then since most of them are a convoluted mess. I have a colleague in the studio that grew watching tutorials and his code sucks hard. We gotta correct a bunch of issues when dealing with his pull requests, sometimes even ignoring the issues because dont want to deal with his shit anymore. When he asks about how can he improve, we tell him all those things and he just goes "but why tho, it works fine for me". god
Thank god I found your video when I was procrastinating my first Unity project. I would have started the wrong way and I am really thankful the RUclips algorithm gave me that video
This happens a lot whenever I'm trying to learn new coding practices. I would watch a tutorial and rather than take that at face value, I would research the topic, read multiple articles, and scour documentation and 9 times out of 10 (obviously an exaggeration) it would be done in a way that completely contradicts the video. Not only that, when I tried asking other devs (specifically from the Unity forums) when I was stuck, usually because of a compiler error or user error, they would answer with some jargon that I didn't understand, (especially for a beginner) tell me to go to unity docs, or not answer entirely. So, not only did I get lied to by a tutorial that was supposed to teach me, I got stonewalled by a place that was supposedly meant to be helpful. Eventually I resorted to asking Reddit and I learned more than I ever could from said "tutorials"... it's a lot easier to learn from people who are willing to explain how something works rather than getting spoon fed the answers. I am by no means an expert yet but that's a start... Now I am able to make my own scripts and hone my C# coding abilities...
I started my software dev careeer on embedded system where 16Kb of memory is considered generous and CPU clocks cycles are counted in Mhz. When I started doing game dev as a hobby, I was struck by how inefficiently everything I looked at was being done. On microchips, we're spending weeks optimising a function just to save a few bytes of memory. In general software development, people are making calculator apps that 100Mb and uses 1Gb of RAM.
I kinda know what you’re mentioning - I myself am like a complete beginner and my code‘s pretty garbage, still I started Developing my Game, Right now it certainly isn’t optimal, yet I think it’s still pretty good, but when I started my Game I wanted to create a sea-level with large ammounts of water and I just clicked on a random Tutorial - it created the waves of the water via Vertex displacement and it just didn‘t explain anything properly so I just copy and pasted all the Code- well 30-40 fps (I Must say I just Use an Laptop with a 3060 so Keep that in mind) it wasnt very good or performant and it also didn‘t Look to Great - months Later with a bit of experience gained I Went back to that Level and just realised that that water needed to Go I replaced it with a shader graph shader and boom- 100-200 fps (which is good for my Laptop honestly) well what did I learn back there - don’t just copy and Paste everything from the Internet and better Research a bit further
Shaders and filters are ususally a bad idea They can look really good but they almost always kill performance Its always good to try to find work arounds to make the same effect without using any code (or at least keep it to a minimum)
People don't want to realize that coding games is hard. You won't be able to do anything if you can't write any code yourself. Optimization is important, but Micro optimization can get absurd. You don't need .1 millisecond of improvement most times. Tutorials are great but what makes someone a good developer is their willingness to learn how to make and fix things. When people ask me how to start making games I don't tell them to start small. Start something big, huge even. If you are willing to follow through and start learning how to make the stuff you need then you will succeed. Getting code from tutorials is fine and necessary if you are to learn. But the minute you expect to have to do nothing and write no code or change no code you are not learning anything and will never be able to write your own code. I think most developers who are going to seriously try to learn or code anything, Will be like "This runs terribly, let me see if I can get to work better by editing all this code and looking at good examples". I use to hate it when tutorials didn't give me the code to just copy and paste. I was like "Alright I don't need to know how it works I just want my game to have it". Little did I know, I was learning how to make any piece of code I could imagine, Just because I had to write it out and learn how it worked. Making the people watching the tutorial write the code all themselves and explaining it as they go along is SUPER important. It slowly gives them the tools they need to do any code themselves. Being a game developer doesn't mean you know everything about code. It means you are willing to learn how a piece of code works. How to use it and sometimes, how to optimize it.
I agree and disagree lol and I personally make tutorials. I think optimization should be considered once you achieve the function of your game. Most devs (especially beginners) are working on considerably small projects that don't need microscopic optimizations. Unless of course they are dealing with graphic related pipelines. The general rule of thumb I use and freely speak out for is get something working, take a step back and review. If it is not a bottleneck then continue. Even for my tutorial videos, even with "easy" in the title, it is more a long the lines of the teaching method is easy to follow. I preview the concept, walk thru the process while explaining the code as I go a long, mention pitfalls and then lastly execute the code to show it works in a very timely manner, with the added bonus of sharing links to the documentation/resource I derived my info from. And if it's a subject I am not 100% on, I even mention that I am by no means an expert on the topic, just sharing the process of how I arrived to my solution. I think the topic of optimization debate will always be present, and typically if you structure your code in the first place, there isn't much to concern with. A great example of optimizing too early is when I see videos mentioning something like using raycasting is expensive, so they go out of there way to avoid using them, which in fairness it can be computationally expensive, but if used properly, you can have 1000's of raycasts happening in a single frame and still be okay. (such as using physic layers, using mutliple checking methods such as using a collider to check objects in general vicinity, then raycasting to the collected objects, ect.. ) But is that really necessary when you are only using a single raycast at max per frame? lol That's why I personally build my features, then monitor the stats/garbage collection, then optimize from there. Obviously if you know in advance a massive overhead issue, then you try to avoid it, but if you don't, then that means you are still learning, which honestly everyone still is, and givers reason to dig further and expand. Generalizations can be brutal when used incorrectly. As for the rest of the content in the video, grass in video games is interesting, And I always admired the charm of the billboard grass lol
01:01 “I wont be naming any specific tutorials or authors because I dont want them to feel bad” literally the thumbnail is a photoshopped picture of Brackeys as the devil?
Might have been a joke, but optimization being the most important aspect of programming (as a whole) is controversial. Software arhitecture overshadows optimization and, in most cases, leads to optimized code when properly done. Edit: Regarding the "50 instructions/perlin noise generation": this is a bit generalized. The speed of perlin noise generation depends on the noisemap's resolution. Measuring in instructions isnt too good because it does not account for following factors: - CPU Clock rate - Memory locality/Cache misses - CPU Arhitecture - Memory latency - Memory speed - Parallelization techniques in processor pipeline for primitive instructions (e.g.: SIMD Accelerated pseudorandomness)
I failed to mention how i mostly meant in the realm of graphics, obviously in the world of web development and other areas of computer science, optimization is less of a priority.
@@Acerola_t Yeah i see, sorry for the misunderstanding. I'm currently binge-watching your videos and I'm enjoying them a lot and subscribed too. Looking forward to more
I thought this video would just be clickbait, but you bring up a really big issue. Early on I thought good programming was chucking "if" statements and getting your code to "just work". I've also been watching some GDC talks recently. They can be really technical and math, but I often come out learning something new about a cool game.
This is the kind of thing that makes me very very glad I STARTED with an interest in programming, rather than in "gamedev" (which is a massive nebulous area of many different skills). Having learned CS fundamentals and how to use raw programming languages by themselves - mostly self-taught from a very young age by badly making things and later figuring out how to make them better - it's sad to see so many people struggling because they've missed the most important step. Programming is the underlying core of everything that's made digitally, and while you do not always need to understand it to USE applications, if you want to MAKE one and truly have understanding and control over exactly how it works, raw programming and CS understanding is essential. I'd argue even more essential when working inside an engine, because even if the engine solves some things for you, if you CAN'T look into it and figure out how it works and debug your issues, your app will be crippled by workarounds and problems you just didn't understand how to fix.
Do you have any suggestions about how to get into programming? I'm just starting to dive into coding. I'm still unsure of coding bootcamps, but I may join in one day when I have enough money saved up. I may join a bootcamp that's 6 months long at least to give me time. But before that, I plan to start off with free resources online first and I'm even reading some coding books to see if I can understand some basic concepts and eventually move up to more advanced concepts of coding. I don't plan to code only for games, I've been interested also in app development. VR games also fascinates me but I know VR is still very new.
@@paolaanimator Mmn.. Tricky question! IMO, learning code isn't really "hard", as long as you take the time to properly understand exactly what's going on, but then again, it's easy to say that as someone who's been programming for literally most of my life. There's a few significant differences between writing standalone code and code for games (in an engine, at least), but once you have a good understanding of "how to code", you'll be able to tackle any kind of game or project without too much difficulty (other than the inherent challenges of whatever you're making) Bootcamps and "tutorial sessions" and all that kind of stuff never really worked for me; I usually find it a lot easier to search out and learn things myself, as I spot which things I don't understand, but that may just be me. The way I got started was a long and slow process of just.. messing around with things, when I was a really young kid - I started using visual drag-n-drop "languages" not long after I learned to read and use a computer. Starting as an adult (or at least not young kid) now though, I don't think you'd want to go through that haha. There's a bunch of fantastic resources out there for all kinds of code and different projects, so I guess I'd recommend just, searching around for the kind of project you're interested in doing, and finding some good beginner explanations (not just follow-along-tutorials!) of how to get started with them. If you'd like, feel free to add me on discord (Drake#6138) and I can try and help out if you get stuck or confused anywhere.
@@hyeve5319 Thanks Drake! And yeah, I've been trying to start out with free resources or resources I can check it out to learn about coding on my own first (like coding books) before considering spending money on a bootcamp. I guess what makes bootcamps helpful is access to a community or (hopefully) access to internship opportunities to get into coding jobs in the future. And thanks for the Discord ID! I'll DM you in Discord. 👍
Counter-argument. Many games are either short experiences or simple gamejam prototypes, if devs, especially newer ones, were to focus on documentation, flow-work, and optimization, having a prototype finished in time would be impossible. From what I learned from GDC Talks, particulary post-mortems, optimization is a huge problem only when you start scaling your game, most prototyping in the industry focuses in giving a working product in time, not an effective product delivered late
Optimization is a skill developed over time and is often in a case by case basis. Make your game first, optimize later. Pre-optimization is evil and will waste hours of development time that could have further progressed your game. Beginners shouldn't worry about optimization until they need to.
One of my school teachers gave an introduction to HTML. When I pointed out the errors on a slide he was presenting he said they were intentional! Now I'm always sceptical about 'simple' tutorials. Back on topic, this is why I enjoy watching people like Sebastian Lague and others; optimisation is part of his creation process.
As a complete newbie i learned a couple of usefull things for a not so tutorial - 1 Noise textures are somewhat used for mesh manipulation why and how exactly i don't know - 2 It confirmed my doubts on being skeptical with tutorials promising you fast and easy results, nothing is easy especially in 3D - 3 Optimization is a thing that makes no compromises - 4 Catlike Coding tutorials, i'm currently on the clock tutorial and learned a lot about the really basics of Unity. - 5 You can't like a video more than once.
think of a noise texture as a range of values (mainly from 0 to 1, aka black to white). You can use the position of a portion of a texture to apply those values to something, which is commonly used for stuff like world gen (the values for example can be the height of the land, or kind of like in Terraria's case - caves). Since those are values, you can use them to offset the position of the vertices, just need to "slide" through the texture to get the offset value that keeps changing
lol I remember this very simple mobile game with almost no flashy animations or anything going on in the game. But playing it for 20 minutes consumes a lot of battery and heats up my phone to the point my phone notified me complaining about this app. Yeah, I'm looking at you 'The Gauntlet: Arcade Roguelike' by Cutlass.
I strongly disagree This is exactly the mindset of all your terrible teachers back in school; they want to teach you the cutting edge, most optimized way of doing things when you can barely write a hello world program! By doing this, you are going to make people hate game development and never start in the first place. You are essentially solving a problem that they haven’t yet faced. Initially you will do things in an unoptimizable way, and it will be fine because your games will be small initially so it won’t matter, but later if the game is large enough you will end up going back and looking up how to optimize it, but now you see the problem for yourself and will actually understand the solution and won’t forget it next time.
@@sisyphus_strives5463 And what, uhh, does it solve? If tutorials will state that this is not the fastest way to do things they will state the obvious. Of course it's not. It's your job as the dev to optimize the code if it needs that, and this is implied in most cases.
@@Floglor Fair enough. They'll certainly come across a situation in which the algorithm is incredibly inefficient and will be forced to come up with a solution(or google).
@@Floglor Just, as a youtube channel, perhaps making videos on both algorithms (the inefficient and most efficient and maybe also somewhere in between) will be quite profitable
Oh my god for real though- nothing annoys me more than looking up tutorials for something I want to put into a game project, and having every tutorial be like... "here is how to build a version of this that you can do as an exercise but won't actually fit into any existing system." Like no I don't want to know how to make a tech demo I want to know how I can implement it as a feature.
We shouldn't be teaching game development to newbies. We should be teaching the fundamentals of programming to newbies. Optimization of code is a fundamental principle which a programmer should know before even looking at a game engine.
I think there is a good niche for unoptimized tutorials, as others have said: Sometimes it's not about making the game run at 200FPS, sometimes it's about making the game run in the first place. That being said, I do appreciate emphasis on optimization, and I do believe that there is a large market looking for that kind of thing. I Imagine you'll go quickly, if you focus on making tutorials, but optimized. P.S. I wish you did unreal instead of unity lol
when i first started game development i would always follow tutorials and keep questioning why certain things weren't explained very well, and then i came to the conclusion that some people doing the tutorials don't understand what they're doing themselves. a lot of these tutorials are basically copied and pasted from other tutorials but said in their own voice. want to make a 2D platformer game? There's at least 100 basic tutorials doing the *same* exact thing that another tutorial has done. want to make a 3rd person shooter? there's plenty of those that start off the *same* exact way.
I just assume "how to" videos for game development are worthless, and not just because they don't cover optimisation. The exceptions are if it's by someone with credibility (e.g GDC talks), or if it's advanced enough that the really bad channels wouldn't be able to come up with it or turn it into clickbait. Most of the really good information doesn't come from RUclips. I'm glad you brought up textbooks, as they are so overlooked by beginners. Dev forums and blogs are also good both for tech and design.
I completely agree. I started out using the simple and easy stuff but now I have been forced to follow the tutorials that are either more than 20 minutes long or actually work well and are optimized. When I have to learn something I usually have to do a lot of research and watch a lot of tutorials before I come up with something that seems like it actually makes sense in a real game. (Which usually isn’t from the tutorial) Only a few RUclipsrs I trust to make complete and optimized tutorials, and usually the really popular ones aren’t those few. I just spent two weeks making trees for my game. I went through dozens of tutorials before settling on an approach that was somewhat performant. Wait a second. How do I know I can trust this video. Is everything you said in this video really good for me in a practical situation.... Just kidding ;)
fyi, I've just discovered pico-8 which is very interesting regarding the environment which requires minimalist resources and multi-platform support. The game is saved as a .png image (like in spore with the creatures files) and weak/portable machines like the Raspberry Pi is 100% supported. You can program directly on it and easily upload or download via wifi. However, there are limitations because only 2d 8 bits games with a low resolution of at least 3:4 and only 2 buttons + start + directional pad (+ mouse for some games) are supported. For quick experimentation with 2d concepts it is the ideal solution, as it is popular for developing games in short jam competitions and many minimalist good games are done on it. With simplified lua code and 8-bit tools for sprites and song included, you don't have to worry about optimization normally for this use case.
Instant subscribe. I feel very caught up in this struggle myself despite having gone to university for programming. Trying to self educate on specific engines and an entire 3d modeling and animation pipeline was a rewarding years long undertaking and I take way too much from random unqualified youtube tutorials by individuals mushing blueprint kits together for experiments. I remember I used to develop weapons on a multiplayer platform where anyone could cobble code together and crash the whole server. At one point I personally wrote a shotgun that recompiled a script in each pellet every time it was fried which would practically create slow motion through lag. Then I met the real coders, the code artists who understood the engine and optimization tricks. The people who actually had the support, time, and motivation to really grok the world we were trying to build in. It was like the difference between a hand saw and laser cutting and the result was directly measurable in numbers because of multiplayer lag. It was very early on in me learning development but it really taught me the value of understanding the tools you are working with, optimization, and either dedicating the hours to learning specific development tasks or hiring on proper specialists.
I agree with the game optimization, no one wants to play your game if it has unstable fps, the only thing i dissagree is, that Brackeys dude face on your thumbnail. It kinda makes other people hate them and other tutorials out there :(. I learnt alot from them and sometimes I write my own codes and yeah it could be a mess or "POORLY OPTIMIZED" but Im proud coz it works. I guess as a beginner, its pretty common that you make a lot of mistakes, because that's where you'll learn from... it's the inevitable education in life. Regardless, thanks for sharing the info about optimization :)
I work a non-coding job for a living. I want to do game development as a hobby. Years ago, I watched C++, C#, and Python videos that are 2+ hours long. Even then, I felt it was wasted effort. How to apply it or understand the explained concepts were limited. Every 5 mins I tell my screen, "Why is that useful? Isn't this the same as that? Couldn't I do xyz instead?" and other questions only a person can explain. About 3 years ago, I decided to spend a few weeks of free time using Python instead of watching tutorials. I couldn't even get the program to work. I asked in the forums and posted images but I was ignored. So my coding journey ended and I probably forgot a lot by now. If you don't use it, you lose it. And I barely used it. I've only come back because of the Godot game engine. It feels like my childish goal is finally in reach again. But as you said, I probably still can't optimize. Where are these Boring But Best tutorials instead of clickbait? There are some people who are willing to do the hard and long foundation instead of the quick and easy lies. If I'm going to be told I'm wrong, I would prefer in the beginning when I'm learning. Anyway, that is my coding rant. It's not easy for a non-coder to distinguish good and bad tutorials. Even if I am told that, I can't trust an internet stranger either. Either way, I subbed because I prefer the truth.
while I agree to your video, I just don't get it why the comment section is suddenly filled with hatred towards tutorial those tutorial still a great starting point. and if you really is want to search for a robust "how to something" don't search it on youtube, search for a legit documentation! articles or something! saying "Tutorial on youtube is the worst thing to start" is just not right. for me especially when you're learning how to code, the first step is literally "Make it works". I don't really care about optimization first, just trying to "Make it works". After that, if I deep dive into it then the second step is "Optimize it" so don't try to think about the so called god "Optimization" if your code doesn't work at all. maybe you said that "Then it's a waste of time when we study about optimization we need to refactor all of our code". HELL NO it's not a waste of time. Remember, you want to STUDY. doing something wrong and KNOWING IT'S WRONG afterward is part of studying. of course what I said is different for professional scene, where time to work on project is a resource so you just cant waste time. but like I said, most people that search tutorial on youtube is just people that wants to start learning about game development. no hatred towards Acerola, I just don't get it how many hatred comment towards youtube tutorial in this video. "Oh my favourite youtuber saying tutorial is bad, time to say that it is bad" fookin bullcrap
The problems with tutorials are: They usually cover only the most basic things; There are dozens of tutorials about the same topic, some of which contradict each other; They show you how and what to do without properly explaining why you should do it; While they are a good starting point, you can't really learn from them, unless you pause every second and look in the documentation what is this function, what does this component do, what does this option mean etcetcetc.
I've seen that technique used in a tutorial before, though if I'm remembering correctly it was a video by a 3D artist, not a game dev, so ofc their techniques are going to be a lot different and less optimization focused. Great vid btw, watched one of your grass videos then this one, and subscribed :)
"For the sake of privacy, I won't be naming any specific tutorials because I don't want any of the authors to feel bad or be targeted" Photoshops Brackeys to look evil for the thumbnail 😅😅😅
Optimization is an essential skill no doubt. But it's by no means the most important in programming. The most important skill is to get things done. We all know the saying, premature optimization is the root of all evil. I wanted to disagree with that cliche, but throughout all my years of programming I learned the hard way the truth of it. The tutorials only take you so far, and optimization should be your own burden as a programmer. Not only that, but I feel that most tutorials had a good idea of telling you the general performance costs of what they're doing. Beyond that is just handholding.
Finally a good comment in that cesspool. If you want to get shit done, you need to find how to get shit done. If it runs slow, you need to optimize it, you need to go deeper and optimize the algorithms or use something else. This youtuber wants to write well-optimized code first, and that's not how you do things in the the business logic industry. Of course you need to know how the engine works and how to write fast code, but optimizing it before it's even done will burn your time for things that maybe doesn't even need optimization. Not talking about grass, of course, but since he is attacking every tutorial out there...
Agree with you 100%, my advice to beginner game devs would be to learn programming first and then move on to game engines. Not just high level languages like C#, Java, Python, etc. But low level ones as well, especially C. Only by learning how everything works under the hood you can use the high level languages efficiently, they do abstract all the annoying work away from the programmer, but the work is still being done, so its complexity cannot just be ignored. Programming itself is hard enough, I started with C# and it took me a *long* time to learn just the basics for all the areas of programming. Comming into Unity was like starting that journey all over again. I knew how to code (or at least how to make something basic), but all the new ways of programming, like relying on Start/Update methods instead of constructors and me calling the functions myself, all the knowledge required about computer graphics, etc. was adding a whole new level to the programming knowledge required.
I think the issue is that many tutorials teach you how to do something but not what it means. For example, you learn a formula in class and then you can't use it in a real world context because you don't know what the formula does conceptually. It's why beginners struggle to do anything past the tutorial because it never taught them what they needed to know to survive on their own. It's easy to just give a solution rather than actually teach the concept. PS: Fellow P3 fan 🤝
My problem is that I learned coding optimization but, because I'm trained as a regular engineer, I learned *matlab* optimization techniques which don't work in anything else. For context Matlab is designed to do matrix math so your main first-level optimization technique is turning anything that iterates over a list into something that turns the list into a matrix and operates on it all at once.
very true. I went back to a game I was making just a few weeks after getting a junior programmer job at a game studio and already cringed at the old code I wrote with stuff I learned from tutorials
haha, this is a great video, i love that you take performance seriously. a game that runs good is a game that looks good and feels good. doesn't really matter how good the hardware is getting. if anything, gamers these days are starting to value high resolutions and even higher framerates, so even somebody with a higher end pc might feel disappointed at a poorly optimized title.
Big disagree. While it's true some tutorials could be better, I don't get why you need to harp on optimization. As a beginner in game dev and especially in coding, it is an immensely complicated and arcane topic. Being able to follow a simplified tutorial and finish a game, no matter how simple or unoptimized, is a very important first step that many fail to achieve. Ideally everyone should have gone through a comprehensive coding class, but many people don't have the luxury or attention span for it. Anything that can help getting started in development is a good thing.
Optimization is not important. The important part is understanding what you're working with. Many people aren't even aware that they are creating a ton of garbage by manipulating strings in C#.
I am a student at DAE which is the best Game Dev school in the world and optimisation is one of the most important points in programming and 3D modelling. Too many vertices? Points deducted. Texture to big? Points deducted. Unwrap is not space efficient? Points deducted. Every time I make something, I already have the reflex on how it will scale, which I am really thankful for. I haven't dabbled much in C# and unity so haven't noticed these tutorials yet but thinking about all of the memory leaks in Minecraft mods it is no suprise to me that Unity tutorials are quite bad aswell. Thanks for the enlightenment!
I didnt know this, thank you so much. Im familiar with C but not C# and especially with unity terminology and logic. as a noobie gamedev I was thinking that Simple=good. but as you said bigger projects or even mobile ones can be damaged by this happy go lucky mentality, i will revised my code in the future much more especially on this mass generated stuff. thankfully im still on prototype stages. you sir have gained a suscriber!
I agree in many ways. I'm a full-time, professional developer and the company I work for is Unity-focused. I came from background in DirectX and engine development, with a lot of years of low-level programming as well as C# ... I cringe at about 97% of the tutorials out there. It's not simply that they don't teach optimization, they don't teach any type of solid _programming_ fundamentals to beginners. You know who are the worst C# programmers? Aspiring Unity developers, without a doubt ... I interview candidates on behalf of our company, and the failure rate for entry-level candidates in technical interviews is about 99.5%, no joke. Each time we interview someone I cross my fingers and pray that they know C#, but I know better than to get my hopes up. This technical interview is not hard for anyone who knows C# fundamentals and how to write code: they're just simple logical tasks with strings and numbers, and I can tell if a person is a junior, mid or senior level dev just by watching what they do and the things they say about the task. I can also tell if someone has no clue how to write code at all, and that's the case with basically all of them we've interviewed. Without Brackeys writing the code for them they can't even write a basic arithmetic function, and they just freeze up ... so, what's going on here?
For one, it's the blind leading the blind on RUclips. People who are still beginners but know a couple little tricks are teaching other beginners on RUclips, and people learn a trick from a tutorial and then make their own tutorial based on that tutorial, quoting it like holy scripture. Another part of it is that "development made easy" and "no code required" are catchy-sounding to millions of gamers who fantasize about making games but don't want to try anything hard. There's big money to be made in selling people dreams like "earn millions of dollars from home" or "develop your own games without code". Make a video with a clickbait title like "Start Earning $100K+ per Year in the Game Industry!" and in the video tell people to spend 3hrs a day learning how to program and write code for a year or two to get a good job. You'll get 350,000 views, but tons of dislikes and nasty comments even though you actually gave excellent advice. Most people don't want good advice if it involves _any_ thinking or learning, they just want someone to write the code for them and give it to them to Ctrl+C, Ctrl+V ... in some of the Unity dev communities I participate in, people get irate when I suggest C# programming should be a dev's #1 priority and Unity alone is not a good way to learn it.
This issue really goes down to the societal and social level, and isn't just the Unity community. They have this problem around every difficult and technical thing that's exciting or has high rewards, such as investing in stocks, cryptocurrency, etc. Watch some investment and trading tutorials and you'll see the same problems: unqualified people teaching other unqualified people and leading them to their doom. 2021 was a prime example with the meme stock and meme coin crazes that cost novice investors their life savings by investing in trash assets at the behest of social media and RUclips influencers.
Instead of worrying about it too much, and because you can't fix it or make people learn things properly, just look at it as "job security" lol. You won't have to worry about any of those people getting industry jobs so salaries will stay high and there will be open positions everywhere because they refuse to learn programming ... 🤷♂️
Thank you for the incredibly thoughtful reply.
Part of the reason I made this vid was because it makes me really sad that people are being misled so horribly into believing they can make it in the industry while being taught all the wrong paths. As you said, this isn't exclusively a game dev tutorial problem and instead an issue with people wanting difficult things to be made easy and if someone can delude them into believing that then they will take that path without a second thought.
Game development is a subset and specialization of programming/computer science, too many people try to skip that. It's like trying to draw anime without first learning the fundamentals of anatomy and sketching. This sentiment should be reflected more often, which is why I constantly shill Jasper's tutorials because they're the only ones that I find are top notch.
The Unity community in particular is very nasty about this which is strange, you'd think Unreal would be the one like this since Unreal has all of the good visual scripting/non programming stuff. This video got horrible backlash on the Unity subreddit for the same reasons you describe. Perhaps it's because Unity is still seen as the indie game and "easy to use" engine which attracts these sorts of people.
I won't lie I am def guilty of not formally learning C# lol but I'm at least competent in nearly every other popular programming language. Someday I'll take the time to write a non Unity C# program.
Again, thanks for the comment!
@@Acerola_t that's to be expected ... if you tell people that they have spent months or years learning the wrong things the wrong way and still aren't good devs, that's a tough pill to swallow. But there's a reason they're not applying for and getting industry jobs and they have regular jobs that they hate (or no job): because they won't stop using Unity as a "toy" and just learn to be a good programmer, first and foremost, and use it as a professional tool. When it comes to hiring developers, we will hire a strong C# programmer with no Unity experience over the average indy dev who lacks C# skills but knows all about the editor and tools. I can teach that C# programmer Unity in about 40 or 60 days, and have them rolling out sophisticated features in projects, but I can't teach a non-programmer to master C# or C++ that fast, maybe not even in a year or three years, no matter how many years they tinkered with Unity editor and copying tutorial scripts ...
I don't understand it, personally, because to me the code _is_ the fun part. Give me the hard problems no one else knows how to do and let's invent something new to chip away at that problem. 🤷♂️
@@GameDevNerd I've been in the industry for 15+ years. Next interview you lead start by asking what is a GameObject. Then ask them what is a component, finally ask them what is the difference between a GameObject and an Object in C#. It's a bit of a trick question but I've found these 3 questions alone split the big boys and the script kiddies. Another question I like to ask is what value can I access faster, a boolean from a list or a list from a dictionary and why.
If you have someone that can answer these questions then continue the interview, otherwise save your time and recommend some areas for them to improve on.
@@OSemeador I've been programming and doing game dev at least 15 years (not always professionally) too, and you basically nailed it. The typical Unity "script kiddie" isn't even gonna know what System.Object is, at all, and generally has no clue how to write a class and use a constructor (also only knows that int, float and bool exists, and has never heard of other primitive data types). Basically, everything they do has to be a MonoBehaviour for them to paste some Brackeys code into, and if you talk about writing classes, instantiating and using them they simply have no idea what sort of wizardry this is you're speaking of.
An important question I often ask is for someone to explain the difference between a _value type_ and a _reference type_ or between an object and a structure. As you'd expect, most applicants have no idea how to respond to that ... but the more incredible part is that many still _think_ they do and they will just start making stuff up that sounds good, lol. "An object is like a thing you put into your game, and a structure is a way of organizing those things" ... or "A reference type is things that you have a plan for and a value type is something that's important to the game" lol. I kid you not, I've literally received some genuine answers like that and just had to politely wind the interview down, bring it to a close and recommend them a good C# book or two to read. 🤷
@@OSemeador i think i could answer the first and third with basically no unity experience (i had previously used unity like a few hours at most and currently i’d like to get into godot) but with years of programming experience. dunno what a component is but it makes me think of composition, like instead of inheritance tree relations, an object being composed from several traits. not sure if i’m on the right path but maybe id know if i spend more than a week using c# ever in my life. pretty sure Object is the inheritance root for all of c# and GameObject is that for unity’s objects and necessary to be used or inherited from for the like basic unity methods. also had a brain fart and at first confused list and array for the fourth question oops
I got a degree in computer science, and we were always taught that premature optimization is bad. Get something to work first, then optimize it if it needs optimizing. However I do agree that most tutorials display terrible coding practices.
I kinda agree with you, but I am sure you missed something he tried to explain.
I mean, I agree about giving priority to optimization over other fundamental aspects is always problematic since you limit yourself and you moslty never allow yourself to experiment, because you settle for watching that framerate is high and cpu/gpu consumption is low. In addition, by focusing too much on that, you end up spending time and energy that can be used for other more important areas. But optimization is a task that you SHOULD always do without exceptions.
But what he tries to explain is that every begginer and most important many "dev youtubers" NEVER CARE about optimization.
Most of the time people are happy to see their game working. Without even understanding how it works. And when they start to see that the game is starting to dropping the framerate, they just simple start reducing graphical effects, lowering render resolution, disabling shadows, deleting objects, reducing grass, etc. (overrall reducing the quality of the game). and that is how they think they are optimizing the game.
They are not capable to develop a game in conditions.
@@angeldude101 Well said! I genuinely feel people have parroted premature optimizations are bad too much. Not going in an unoptimial way isn't premature, it's saving time.
Probably a more accurate rule of thumb should be "premature micro optimizations are bad", but even this would be a bit misleading, because there are situations where non micro optimizations could be skipped or put off. One reason to skip it is if the system is initially fast, but scales very badly (1 enemy, 10 enemy, 100 enemy etc) then you may not care, if you know that you will be working with small scales and you can save tons of development time.
This still have drawbacks, mostly that this is now a niche system, that you may not be able to reuse.
So the reasons for skipping optimizations is somewhat obvious(on paper/as an idea) so i don't think there is a need to talk too much about that, what i think is less obvious is when you should put off optimization considerations.
The things that should be considered in my opinion to decide how much thought should be put into optimization beforehand:
Is it a self contained system or more like a service? For example your character controller ideally wouldn't be something that is used by other components, so you can put off optimizing it, as this task is less likely to get harder as your project grows.
Lets say it is more like a service. Now we are in more dangerous waters, but not all is lost. Following the same logic as before, you don't have to worry too much about the internals of your component. What is VERY dangerous is what that component/service shows to the outside.
An example from unity could be demonstrated with comparing Physics.RaycastAll and Physics.RaycastNonAlloc. Let's say that you are a unity dev about to implement Raycasting. You would probably first go with Physics.RayCastAll for the use case of returning all object hit by a ray. The problem with this is that you always return a new list for each call. But let's say you didn't think of this. Your clients start using this version, and after a year or two there are complaints that RayCastAll is generating memory garbage and it hurts some people's projects. Now you have a big problem. You may think that you could try to optimize RayCastAll, but there is only so much you can do. What this method shows to the world, is that it will return a list and it doesn't really have a way to reuse lists with the signature it already has. Thats a dependency. If you change that it would break at the client side... So you compromise. You implement Physics.RayCastNonAlloc that takes the list from the client and it works no garbage BUT now you have to ask the clients to refactor their code, possibly at hudreds of places. These are the kinds of situations where putting of optimization concerns can hurt you.
small disclaimer: Don't take this example out of context. I am not saying that this is something that happened and unity made a mistake. As far as i know RayCastAll and RayCastNonAlloc could have been there from the start, and they decided to include both because RayCastNonAlloc altough more efficient (maybe not in some cases) is harder to use. I just made this example up to illustrate my point.
🏳🌈🏳🌈
You don't need premature optimization if you start making your stuff optimized in the first place by making right moves. It might make no sense when i type it like that but basically with experience you start to learn how to not make stuff as bad when you making them so less headache on long run
Optimization is something i wish smaller game studios/indie devs would focus more on
in the anniversary update for risk of rain 2 one of the quality of life updates was optimization and when you're on lower end hardware like i was at the time i could totally tell i was having a way smoother and better experience
Exactly, one argument against prioritizing optimizations is that "computers are fast now" but the faster your game runs, the more lower end hardware you can support, thus expanding your potential customer base.
Thanks for the comment!
@@Acerola_t low end hardware is east europe and they pirate anyway so no,.not really
Its not about "how many people I can reach" its about "Can i reach the people i should?"
Optimization is important, but computers *are* fast now and by optimizing You primarily cater to an audience who:
*-Dont make their own purchasing decisions or have no expandable income* (Kids with old pcs, supervised by parents, Poor countries...etc)
*-Will possibly pirate the game anyways*
So you are right...but you are also wrong
@@Acerola_t I HATE that industry mindset of "computers are faster now,develop faster with worse optimisation"
@@ZeroSleap THISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHISTHIS
Why THE HELL, are devs skimping on proper optimizations?
I know this is an old comment, but ROR2 even had poor performance on relatively high end machines, especially if you got pretty far in a run. Those optimizations you're talking about are definitely making a huge difference even on newer hardware
I remember having a hard time finding tutorials on optimization. In college, we almost had a class on optimization, but it was dissolved because "modern CPUs are fast enough, otherwise everything is moving to the web/cloud". If I get fired at my job due to my hospital stay, I might do some videos on optimization.
Where do you live that you can get fired due to being in the hospital!?
do they think cloud programs magically appear out of thin air ? cloud programs actually need more optimization if anything since they can cost millions of dollars in electricity and server space.
The dispensing with optimization classes due to modern CPU speeds is how we ended up with the disastrous software bloat we have today where everything is electron based and browsers eat up several gigs of ram. It's the same reason Pokemon chugs on the same hardware Doom 2016 runs on at 60fps. Add several layers of abstraction with stack overflow copy pasters and you get soydevs: the programming equivalent of someone who thinks microwaving a tv dinner is comparable being a gourmet chef, just cause it says "gourmet" on the package
@@marcomoreno6748America, probably... FMLA might exist but it's only guaranteed for like, 3 months. And even then people can find ways to fire you even if it's technically illegal...
@@marcomoreno6748 america
Didn't really want to comment, but I'm seeing so many veteran developers agreeing to this without giving the context any second thought, so I just wanna share my thoughts on this...
It is true that optimization and proper practices are incredibly important when creating a full release product. However it is also INCREDIBLY important to remember that learning a skill like game dev, require taking the learner through "stages of learning" to best help them reach the end-goal of developing a game. 🙂
In my opinion, EVERYONE should have a proper chance at learning to make games if it is a dream they have. And helping the broadest audience achieve that goal means teaching them one step at a time. In due time once they are comfortable and have a fundamental understanding about WHAT they need to optimize, then it's time to teach them about optimization. 👈
Of course teaching proper practices from the start is important to not give them bad habits, but when teaching you also have to be careful you don't forget that a beginner WILL get overwhelmed just learning about the basics... 😕
If you attempt to teach advanced optimization from lesson one, then many of the learners will eventually jump off the learning train. And if anyone's response to that statement ☝ is "well then game dev isn't for them"... Then we just won't reach an agreement, since I'm clearly more concerned with the student having a good learning experience, rather than overwhelming them with the "technically correct approach for a full release game".
I often encounter developers who are extremely technically gifted, or developers who has learned another language for 20 years, who has no issues learning game dev "properly" from the start, since their mind is attuned to that type of technical skill. But occasionally these same people have a hard time putting themselves in the place of someone less gifted, or someone who has only JUST taken their first step into their FIRST technical skill. And I have even seen "experienced devs" who couldn't look outside their own bubble, resulting in making the less experienced feel stupid and scaring them away...
My point is, that there is a MASSIVE difference between "teaching game dev for complete beginners", and "teaching how to properly develop a game". 🙂 In due time, optimization SHOULD be taught once they can handle it without getting overwhelmed. People are too quick at jumping to the "cold and logical" conclusion that "optimization is more important from the start", rather than taking the human into account who is sitting there trying to learn something they find difficult.
Another point here that I think a lot of people forget when they learn something off of a RUclips video...
Regarding of their teaching platform... Whenever a person teaches any type of technical skill, you are meant to use your own head a bit. Expecting the instructor to have everything included into their lessons, so you don't need to spend your own energy applying what you are learned, is a "you issue".
Blaming a RUclipsr for not "guiding you towards the next learning step" is understandably in some cases, but you also have to be careful you don't rely too much on the RUclipsr holding your hand CONSTANTLY, to the point where you don't know how to seek knowledge on your own.
If you find a RUclips video teaching you "how to create a health bar in your game", in most cases they are of course going to teach you the concept of how it is made... Not a "full release version you can just copy/paste into your game"...
I don't blame most people leaving comments in here, since they haven't actually experienced what it's like running a large RUclips channel. But whenever you go EXTREMELY SPECIFIC in your tutorials, you get a overwhelming amount of people who are frustrated because it gets too technical, or you have people complaining that "you need to make another video with THEIR specific games setup in mind"... This is a big reason why tutorials can appear "vague" or not technical enough for a full-release product. You are supposed to "learn and apply"... Not "copy paste".
People are literally expecting RUclipsrs to be "freelancers hired to help them finish their game", when they should be seen as teachers/educators. 😂
Making optimization, security, complex systems, etc. part of your tutorials, will make your lessons more about "how to" rather than "teaching"... And this is where I often see viewers misunderstand the purpose of online educational videos.
A third point I have which is more aimed at the person who made this video...
You start out your video saying "I'm not going to mention any names", but at the same time you have Brackeys face plastered on the thumbnail, looking like the devil... 😅 I know it is for clickbait (like stated in the thumb), but it's still a extremely bold move for a "on purpose clickbait".
My overall issue with this video isn't the message you are trying to convey to people. Optimization IS extremely important, and I'm glad that you are pointing it out, so that the people who are ready to take that step, can be made aware of the importance of it. But there are more positive ways to go about it, besides pushing other creators under the bus, or using a well bellowed educator negatively for clickbait. 🙂
This is the comment that should be pinned to the top of this page and definitely not a post about someone *cringing* over existing tutorials and flexing on their programming resume. A lot of these tutorials that are being bashed are likely one of a few that exist for a given subject matter.
From my experience, they at least provide a good starting place to achieve the goal you are looking for. Programmers that are new to the scene will probably have to copy some portion of the work without fully understanding it and that's okay. Get it in there, see if it works. If it doesn't work see if you can figure out why. Now step through each line and get an understanding of what is happening. If something isn't done in the most performant way, eventually you're going to either recognize this during the tutorial and make an adjustment yourself or you will wonder why and come across a tutorial on using profiling tools. Let your curiosity drive and discover that xyz functionality is taking a long time and go down the rabbit whole of finding out why that is and is there a better way to go about satisfying your problem.
It's astounding how many tutorials there are today. You can pretty much find a tutorial for anything. I don't mind the gripe over a creator claiming production ready when it is clearly not, although you do clearly call out Brackey. My issue is more with the Pinned message at the top. If you just want to be a C# developer then sure be really good at C# lol...
Thank you!
Very well said, thank you
I think it is still very important to at least say some like "this isn't the best practice but we will use it for now"
or better yet, teach the easy way and the optimized way, so the beginer who is only testing can use the quick dumb way to see if they like it in the game, and when they want to optimize the code they can come to the same video from improvements@@sunbleachedangel
I'll be honest, While it is problematic, Just like the first boss in a Dark souls game... Understanding when a tutorial is showing you just the simple way of doing something and then understanding how to upgrade/optimize it on your own is super important for growth
A lot of popular tutorials get popular by leaning into the false 'this is all you need to know' vibe.
Gonna be a bit cynical here, but it's been quite a while and I still haven't understood how to progress on my own into rigid body wheel physics. Because absolutely no one teaches anything other than raycast wheels or Unity/Godot's default wheel colliders. And even raycast wheels, not many people do. About 99% of tutorials are about default wheel colliders, which are absolutely abysmal. But hey, they are easy to get going, so anyone can learn them in a day and make a tutorial about them.
Same thing for first person controllers. Everyone and their mothers teaches them using capsule colliders. Which are fine in some cases, but not at all in others. But then, of course, just like the default wheel colliders, they are easy to learn, so there's 0% tutorials teaching how to use cylinders for colliders (which handle stairs better, don't slide down on edges and thin platforms, etc). So far I haven't a clue how to implement such a thing.
@@ElmerGLue disagree, this is probably a issue tried and solved hundreds of times, probably there is a great doc/tutorial out there, that solves your problem and even some you still dont know you are gonna have, but is pushed down by the flood of the same simple concept repeated 1000 times by 1000 tutorial.
It is a problem of discoverability, this is also why there are "awesome-something" repository that collect the best tool/method/tutorial for something.
@@lesto12321 tell me more about this “awesome-something” repository, seems like something I need lol
@@lesto12321 yeah the search engines are hiding all the good stuff and propping up the nonsense ontop.
As a veteran game dev, I think those tutorials still serve the purpose of making game development accessible to complete beginners. I remember starting out in the 2000s, most people didn't even know where to start and never made it anywhere at all. The only people who ever got started either exchanged knowledge on forums and/or bought 90s coding books lol.
I agree. I'm still a new game dev working on my second commercial game. My background was producing comic books for 20 years until I hit a career/personal wall and wanted a change. Some people don't like him, but Thomas Brush tutorials and vids helped me to have the confidence to try game dev. I will never be a great programmer, but I can be decent enough and use my strengths in visual arts to make games. You can hire or ask for help where you are weak. I saw a doc on the Hollow Knight guys and they hired people to help with their programming.
There is more than just writing code to making a game. And no knowledge, tutorial or skill makes up for determination and perseverance. Those two things I feel are more important when it comes to making games, because there will always be obstacles to overcome making games or anything other endeavor in life.
@@Repanon00 Very well said. In that aspect, the current landscape doesn't look bad, because while 99% of the viewers can't code but at-least 50% of them are interested in development, which just boosts the overall reach of the topics and that just means the 1% grows in number, maybe not in % but in actual value.
Yeah, it's great for getting people into game development.
It's just annoying that once you become intermediate, you very suddenly go from having a wealth of content to scrounging around for a single tutorial that is actually useful.
But all the tutorials could be done in other, better ways with similar results. Do videos of those other ways exist? I bet they do, but because of youtube/google/search in general we end up with what is the most popular, which is likely not related to which is the best way to achieve X and more likely down to how well presented (edited/presenter vocals/etc) than the actual content of the video. This is a systemic problem that goes beyond game design.
I think a lot of the problem here is the psychology of making something that "barely works" for people doing these tutorials. Spending hours following along doing something (usually without any really good context or explanation for half of what you're doing) and then getting to sit back and go "wow it (barely) works!" doesn't give you any satisfaction or motivation to continue.
Learning the "better way" from the start would allow noobs to build actual working systems into their games, which would then allow them to move on to something else interesting rather than redoing their grass for the 5th time.
I can't speak for everyone, but getting to the "minimum viable product" for a very simple game is the payoff that I was seeking. If the tutorials lead me to a MVP that simply isn't playable, I have little to no motivation to try again. If i had used this grass example, and then added a bunch of assets and tried to make a combat system, and it's running at 9 FPS, it's extremely demotivating.
For anyone curious, the reason why geometry shaders are generally considered bad, is because they dont map to the GPU's strength as well as other pipeline operations do. The big thing with the GPU is that its supposed to be able to perform many operations in massive parallel, but because of specific requirements many graphics API's make for geometry shader output (for example, geometry shader vertex emissions must be rendered in input order), the GPU must do extra buffering, syncing, and other things to ensure that these requirements are met, and these required operations generally means lots of memory accesses and "middlemen", if you will, that stall the pipeline. Its just not scalable compared to other pipeline operations.
I'm learning Unity for about a month now and I swear the "How to make a game" tutorials are the very worst place to start. I just kinda dove right in and read a lot of documentations and asked for help for very specific things. Seriously, you learn a lot faster when you think of an idea and understand the processes to materialize that idea. It's okay to ask for help but don't copy paste code. The official Unity discord is the best place. They offer you help but they don't give you code to just copy paste.
The amount of "make your first game in unity" videos where they just use marketplace assets and do the bare minimum code, if any at all
somethings you gotta just black box tho. Like deduplicate an unsorted array. Do you really know what ram and CPU is doing with those functions? Do you REALLY know? then it's been black boxed, and odds are it's fast enough
@@daaaaaaanny Brackys be like :
You're probably right, but I wanna point out that some people (e.g. myself and many other people with ADHD) are really bad at learning from documentation. In our case, learning by doing is probably going to be more effective than setting the unrealistic goal of reading and understanding documentation, even if it means we learn bad habits and struggle with optimisation further down the road.
@@jesusstaccato8448 it's not like anybody's first game is going to be a fucking masterpiece, but it might be more about the approach. I struggle with reading documentation as well but I think the point is that you are learning the method to do something rather than understand how they did it. It is a very general topic for my comparison to be accurate but it's the closest I can come up with at the moment.
In any case, do whatever works for you. Unlearning bad habits is better than not learning at all.
The most important optimizations:
A: limiting what is loaded into your scene at any given time
B: managing when new assets are loaded into your scene so as to hide the process
C: culling things that are loaded but you cannot see
You should only need to provide an environment in which the player's screen is filled.
code level optimizations tend to have less impact, however, the most important code level optimizations:
A: avoid exposing methods unnecessarily in update and coroutines
B: use dictionaries to find items in large collections wherever possible
C: know which commonly used methods take more resources such as findobject methods in unity and reduce your use of them.
A: Not using event tick
B: Not using event tick
C: Not using tutorials that rely on event tick
@@svenrawandreloaded The reason why event ticks are less performant is because it essentially uses its own update cycle to check for conditionals. So yes, but it's not limited to that. Essentially event ticks fall under code optimization A, which is the first code optimization for a reason.
Reminds me of the game dev behind the scenes video on crash bandicoot. They implemented all kinds of revolutionary new ideas (sarcasm intended) like "dynamically load stuff in and out of your level rather than just try to cram everything into the one megabyte of RAM available". I know, shocker.
It explains why so many PS1 games have such simplistic level design and geometry. 3D games in general over new territory and most developers didn't think of even the most basic optimizations.
Making a billion load/unload operations per frame is the solution to all optimizations? Wow didn't know that, someone should totally make a tutorial about this.
Leaving out optimization seems to serve the same purpose as "lies for children" in other subjects. You don't want to _start off_ with it. I don't think it's very important to know when you're truly just starting out. The people who are really willing to take the next step will inevitably learn about it.
I agree with this. I'm a professional programmer and followed some tutorials to get my game started and enjoy a lot of the small wins i've made. I have a giant terrain and painted a bunch of grass and my game ran like shit and guess where I ended up.. watching Acerola's entire grass series lol. Those who want to learn, will learn.
Agreed!
I agree in general but if your tutorial is about using a method that would never be practical because of how inefficient it is, it's just a bad tutorial.
You have a point but I don't agree. Software development is like 50% optimisation and I think there is a large amount of devs who never realise that they are not as good as they think they are. I think Acerola was talking about the brackeys tutorial and brackeys should 100% have known that he was teaching a outdated method, but he did not. Why did he not know? Mabey because optimisation is to neglected. My hypothesis is that optimisation is not interresting enought that most high level coding teachers don't bother bc no one will listen and its only when you get the lower systems coding (C/C++) that optimisation is taught.
But I may be wrong :)
Obviously the people willing to take the next step will learn about it. That’s circular logic: those who aren’t willing to take the next step will… not take the next step.
The point is that if that step were easier to take, more people would be willing to do it. Isn’t that the point of tutorials? If we didn’t have tutorials at all some people would still figure it out on their own, so why bother?
I started with Roblox when I was 11 or 12 and was mainly fascinated with the idea I could write instructions that the computer had to follow, so I have mainly hooked on the programming aspect then the general "making games" aspect (though that is something I really want to do also). For that, I also fell into the trap of looking up tutorials for everything I wanted for a while, especially since I was so young and still getting a grasp on the basics. I think part of the problem is everyone tells you to start small and basic so you don't demotivate yourself quickly so people avoid trying anything super daunting right off the bat, like properly learning programming fundamentals and the language you're using. I get staying motivated can be an issue, but if it's too challenging to try and work on learning those fundamentals and getting a proper grasp on the programming side then that part of game dev might not be it for you. You don't have to immediately stop everything to work on just speed running the basics, I did a lot of little experiments (and still do) when learning concepts so I have the application of concepts to establish and support what I just learned, but avoiding proper learning will just hurt you in the long run.
While I was still doing Lua stuff for Roblox I decided to try making stuff for GMod since it also used Lua. This was a great step since the tutorials for GMod were a lot more sparse. I learned how to read documentation and use references not to copy code but instead inform me on how code worked. Because I didn't have tutorials that gave exact implementation details I instead started experimenting and trying to implement more and more of the knowledge I had built up before to make new things. I dissected other people's add-ons to get the gist of how they worked and started reading Source engine code too to better understand how things operate under the hood. I learned so much more because I didn't have rigid and specific guides filled with basic implementations that wouldn't be good at a production level. After a year or two of GMod dev I picked up a Udemy course on UE4 C++ dev that started with a section on making a simple console app game with C++ before even touching the engine. I didn't get far into the actual engine lessens since it wasn't as flexible as I thought (the courses) and my compile times made edits so slow. I tried to make a basic TPS for a bit but gave up on it because of compile times. That's when I tried Unity for a bit and learned some C# but waited and went back to GMod to apply some of the OOP fundamentals I did pick up on to improve some of the projects I was working on before.
One thing that really opened my eyes up past the large swath of beginner tutorials was watching GDC videos. Being able to see how bigger and more complex systems were designed, iterated upon, and implemented opened up the idea that I now had references to pursue these more complicated systems that are being used in actual games. I think a lot of people trick themselves into the beginner's trap with that mindset I described earlier, where they don't want to demotivate themselves so they pursue things that are really easy and basically laid out for them. I say do some of these things but do learn the fundamentals and devote more time to that than the instant gratification stuff and only keep doing those when you really need that extra boost. Instead, turn the fundamental learning into the bulk of your gratification. Make a small little prototype out of something you just learned and don't watch a tutorial for the specifics. If you're learning the fundamentals of a language then doing a basic console app prototype is good enough and doesn't have to be more complex than just printing what would otherwise be a debug message. Just seeing that a basic for loop or search algorithm actually printed the right result is satisfying while learning and gets you to learn much faster since you'll be applying the knowledge. It's just important that you're doing the bulk of that work instead of a tutorial or guide.
Recently I've really started getting into Unity development and improving my C# while learning a little about the engine, but I've mostly focused on learning fundamentals, architecture, and C# itself while working on my project. As I said before, I learned during modding with GMod and some extra Roblox stuff how to read documentation so instead of watching video tutorials on how to do everything in Unity I try to read the API docs first and see what I can use to implement what I want to do. Otherwise, I've been looking up game programming patterns (gameprogrammingpatterns.com is a great free book (at least the web version is, paperback and ebooks are available to buy and have nothing exclusive that can't be found in the web version) based on an older generalized OOP patterns book that's referenced by a lot of people and where a lot of the popular patterns got their name and popularity from, features and quirks of C#, and data structures. I picked up a humble bundle of O'Reilly books that are generalized for any sort of production code and has topics on optimization, DevOps, algorithms, managing complexity, and even skills outside of straight coding that will make you a better programmer.
I've found that the lessons taught in all these media are more fruitful and applicable than the specific tutorials that beginners will cling too and have trouble escaping from. They helped me build confidence to try experimenting with more complex systems like GOAP, HTN planners, tool dev, spatial data representation and query systems, raycast ballistic simulations, and more because I have the fundamental knowledge of how the basics of these systems work so I can build on that knowledge to actually implement them.
Bro wrote his entire life story 😨😨😨
@@orangeblanket7181 you know it 👌😤😤
@@tacticaltoaster5777 i deleted my comment. who did it.
I regressed lmfao. I started with Unity and got really good at Roblox. Then I stopped game deving because I'm horrible at asset design.
@@epicm999 my joy of making games is never been bogging down because of asset design, it's the exploration that explained everything that gets me confused then implementing them to my game, never really caring about the assets or the graphics, it's just for the experiments of it.
i think this is the reasons for me not using a game engine and instead creating an 2d engine as your own (making a 2d engine is really easy but people have to go through abstract concepts they'd have to think on their own) is because you've disciplined yourself to what is the methodical option advantageously, for your game ideas.
To any person wanting to write: "But that would be a premature optimization, and that is a root of all evil": the full quote states:
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil."
So making your grass render faster by an order of magnitude thanks to some smart decisions is not premature optimization. Spending a day or two so your game can run at 86 FPS instead of 85 is.
lmao thank you so much
I feel like the way bigger problem is that many tutorials are made in a way that many people don't learn anything from them. But that is a weird issue, and basically a core part of tutorials. But you can just mindlessly follow along.
alot of people don't understand that tutorials show a plan of action, and that they are responsible for learning AND internalizing the mentioned actions to properly progress as a learner. Gift yourself, don't spoil yourself! - The giant rat that makes all of the rules
@@thegiantratthatmakesalloft9415
A rat!
Omygawd.
I understand the exact issue you're talking about! When making videos for the channel I'm commenting with, part of why I don't go deep into "how to make this very specific thing" is because the point isn't to have people learn how to make a specific thing, but to learn how something in Unreal works, so they can creatively apply it to their own games!
But it does seem like a very limited philosophy and I do wish more tutorial makers applied it (if anything for when ~I~ have questions on things)
And then they also provide their entire Unity package you can download so that if you want to, you literally don't even have to follow the tutorial. Just transplant their work that you don't understand into your game.
what's the difference between tutorials and education? the latter actually expects you to do some work, and that's how you learn. a video will teach you some keywords but will never magically make you better at actually doing it
Acerola: "I won't be naming any specific tutorials, because I don't want any of the authors feel bad or be targeted by my audience."
Also Acerola: *proceeds to put a specific author into the video's thumbnail*
One of the most technically impressive games I've looked into is Shadow of the Colossus. Not the remake, the original. The beauty of the game speaks for itself, but if you dive into the lengths they went to optimizing the shit out of EVERYthing you get a real appreciation for how important a step it is in game development.
A true example of limitation breeding creativity.
The fact that they *only* needed to upgrade the graphics for the game to fit in with other games 2 generations newer. Boy...
A nice interview of the techniques would be great
The more I learn about how awesome this game is the better it gets.
@@matthewpublikum3114 there’s a great technical breakdown simply titled “making of shadow of the colossus - ps2” in Japanese, unfortunately the site hosting the English translation is no longer around and the only mirror I could find has this gaudy orange background which kind of takes away from the reading experience.
Couldn't agree more. It's really frustrating how many tutorials set you up for failure. Not just for optimization, but just for their practical use.
Just finished a VR tutorials where the guy has you use a rigid body for the players collider and movement... In VR... Had to throw everything away and start from scratch on my own.
can you explain what is wrong with doing that?
@@maxff123 it's extremely advanced and not even remotely suitable for a RUclips tutorial. Like I said. It sets you up for failure.
@@steen_is_adrift My initial impression without knowing anything about whatever system you're interfacing with is that a 'rigid' body (from the name alone) has physics actions with some kind of normalised motion, but VR tracking cannot impart force onto the player (only perhaps their play area / frame of reference) and the player can move their physical components as fast as they want so it would impart extreme forces on the environment without correction.
Yeah I encountered something like this recently, on a video about avoiding cheating in vr by going through walls. They had a collision system made. but that meant you try and move into an object, even a table, your vision remains the same while your body moves which can induce motion issues for the user.
@@BrandonNyman To be fair, a lot of the best VR games do this because the only alternative is to create a Half-Life Alyx system of showing a weird orange halo as your screen goes black, which can be equally disorienting. VR is still tricky in a lot of areas. Lots of room for new ideas.
Congrats on the growth since then!
I am a professional senior PHP developer and just today I reached the end of the first month of my first Unity project.
I have a quite large list of features implemented already, Combat System, Health and Stamina System, Enemy AI & Pathfinding, Droppable Loot and Findable Loot... To name a few.
I can safely say that while the programming logic is mostly the same, there are many, many things that makes game development such a different beast all together, and working alone, needing to provide graphical interface (photoshop), audio mixing and back-end logic is arduous to say the least.
Game development requires so many different skills and I believe it is extremely under-appreciated (looking at salaries here), which is why I decided to become a PHP developer instead of a Game Developer.
Most of what I managed to implement was from an Udemy course I took, alongside RUclips tutorials and many sleepless nights scouring Unity's documentation, and with enough persistence, I always found a way to implement what I needed, where I needed and when I needed, however, I can hardly imagine how difficult it would be for somenone with 0 programming knowledge to implement all that while not even having the slight idea what optimization is, I can safely say that the only reason why I could build all that in under a month (which honestly, is mediocre) is because I've spent the last 8 years studing programming logic and code and even then, it was not easy, and it is far from perfect, to make all that blend together and not having a single crash or FPS drop was an optimization task, something a very little portion of the tutorials I've seen around here teaches.
In my journey which is far from over, I've came across many, bizarre "tutorial" videos that made me think if these people even tried out what they're trying to teach.
I don't wanna bash any of it but seriously, it's just like when you learn something wrong, and you teach it, it gets spread all over. Mistakes that are quite hard to withdraw yourself on later in your programming carrer.
All I can say to new developers out there is: even before thinking of developing a game, and I know its hard and will probably take up a lot of time, try to look for professional content outside of RUclips, and Unity-endorsed ones. This will save you many, many problems down the line.
Hey just a little confused about that last part. Are you saying to look for content outside of youtube and outside of unity endorsed ones or outside of youtube and look for unity endorsed ones?
@@epiccoolperson1236 You should look for professional content outside of RUclips, and preferably Unity-endorsed ones.
The most important part of your programming, generally, is really not optimization, but the readability and maintainability of the code itself. As long as you have that you can still quickly update and fix other things.
If you lose that then you cannot do anything at all without braking things, development would be super slow, nobody would want to work with it and it could potentially cancel out whatever benefit you were getting from not setting readability and maintainability as the first priority.
@@baseddepartment9656 Fuck that, my code remains a byzantine labyrinth that only I can navigate. Noone will learn my secrets!
@@keepinmahprivacy9754 It's a meta game: Figure out what my code does
@@victor22332211 Protip: if you do comment, make sure the comment is completely unrelated to the code it is associated with to cause further confusion
@@0009tra the reason why React projects are bloated and slow is because people do NOT care about quality and instead just install package upon package of random "helper" bloat and never bother to clean up a single thing later on. This results in large bundles filled with useless code.
Good quality code is extremely important because you can easily refactor it down later as well. This will lead to the complete opposite of what you said - your bundle will actually get smaller.
@@keepinmahprivacy9754
//Pray to God that this words
If you think gamedev tutorials for game engines like unity have terrible practices and poorly optimized results from predatory youtube shenanigans, you haven't seen the average blender tutorial.
haha when they don't even prompt you to save everything before connecting the instance on points node, knowing there's gonna be 120gb of ram+swap needed
i guess the lack of optimization considerations is because most blender artists haven't done much programming, which geometry nodes (and a lot of the other stuff) essentially is
While I agree that optimization is important, I also believe that it's important for beginners to try and make their game first, and optimize later. If they're spending the majority of their time optimizing their first game, rather than add in the elements that they want, they're likely gonna get discouraged from the slow progress. Your first game doesn't have to be perfect, and likely, it's by doing things the quick and dirty way that you'll later discover the slow and optimized way of doing things, because you've given yourself time to learn the code, and figure out what works better.
That being said, anyone who's making a tutorial that shows the quick and dirty methods should absolutely disclose that it's the quick and dirty method, as to not mislead their viewers.
I think the fundamental problem is that the grass example is not a tutorial of a neat technique to render grass that can be used for other things, and it really should not be used to render grass because of how resourse hungry it is. Instead, it's a tutorial on how to render grass period. And someone unexperienced could not realize where's the problem when after 4 months of learning and adding things the game runs at 20fps.
But I agree that if it's disclosed that what is being tought is an excersize and not a real implementation, that the implementation used is not meant to be used for millions of grass blades, solves the issue
Using free online tutorials, I've always felt something was off. Game dev tutorials remind me of the many Web dev tutorials that show you concepts and methods completely out of context for sake of simplicity, or to get you to buy something. It also makes me think of the maths and science taught to young children, they're full of lies because the realities are far more complex to grasp as a beginner perhaps.
Something I noticed with RUclips tutorials is the more I watch the more advance and complex tutorials RUclips sends my way as well as people who give advice like you with optimisation. So I feel like the RUclips algorithm found a way to teach people in a way that fits their individual needs
Unless this is just a coincidence on my part. 🤪
Same here, even a year later
It's not just optimization though. I lost count of the times that, for the sake of simplicity, tutorials only teached me how to create a very sub par and half assed version of what I wanted to build, and not how to progress from there and make it better. I did quite a lot of tutorial hopping, looking for someone who actually went deeper into the subject, and I didn't find it very often.
That's one of the worst and most frustrating things when you are trying to interconnect multiple tutorials on a subject to fully implement something. Because it never fails that each tutorial went about it a completely different way and it makes it twice as complicated if not impossible to take concepts from this tutorial and apply it to the system from that tutorial without having major issues.
It's honestly just the same problem that literally every other aspect of the internet has. Things are easily accessible and open to anyone now so you will have a lot of people making specific content for specific reasons and there's a lot of garbage to filter to get to the good stuff. And the Games that come out on Steam every day reflect that also.
*cough* any VRIK that isnt using Rootmotion
I find tutorials can be useful as a general guide on how to approach a problem. That said, unless I'm completely lost I tend to avoid them. Another great grass video in the books!
hey groch
@@duccw hi ducc :)
I actually completely disagree with this. You are absolutely correct in everything you are saying about people not learning to optimize, but you're forgetting a few things.
First off, there wouldn't be a thousandth of the developers there are today if it weren't for the ease of use of tools like Unity and the prevalence of tutorials on youtube. If everyone kept learning by reading books and going to university like they used to, this industry would never have grown the way it has been. The truth of the matter is that you don't need to understand how the GPU renders things to make a great game today - and that's not a bad thing, it's great!
Second, the market decides what a good game is. If that is an unoptimized piece of junk, technically speaking, it is most likely not going to do well and the developer will be out of a job. If it does do well, then it's because it's a good game despite its technical shortcomings and would probably never have seen daylight if people followed your advice.
Third, I'd argue that one of the best ways to sift through developers who are "script kiddies" and actual developers is for them to see their framerate drop to 40 when adding their grass and have them solve it. Giving them a cheat sheet for how to fix it is only going to exacerbate the problem - because you are kidding yourself if you think those script kiddies are going to actually read your article about "why" and not just copy-paste the code from the github link at the end. They will never actually understand what the underlying problem was, or care about it.
Fourth, ???
Fifth, There's a pinned comment on this video about a professional developer who interviews people who fail basic technical interviews. He makes this seem as if it is a bad thing, when in fact all that shows is that there are tons of interested, passionate developers out there looking to advance themselves. Who cares if they fail? They're not going to get the job, but so what? It's not going to be their last interview, and if they fail and are still passionate, they're going to learn from their mistakes and make themselves better.
Sixth, premature optimization is a terrible idea. Obviously, if you can think of three different ways of doing something you should pick the one that has the cost/effectiveness balance that is most in line with your expected outcome, but that's not really how people work most of the time. You need quite a lot of experience to be able to understand the problem to such a degree that you can think of several ways of solving it. Why am I saying this? Because the vast majority of the tutorials you are clobbering aren't out-of-whack unoptimized. Shaders might be more-so than others, but most tutorials on Unity-related topics are about moving transforms, shooting fps guns, health systems and the like. Teaching people to create their own render pipeline to make more optimized light baking as a beginner topic is a terrible idea - as I'm sure you'd agree. So is this grass thing. It's not a beginner topic. Trying to work with shaders in general is not entry-level programming. Which means that these tutorials don't actually hurt anyone - or the industry. If you can't or won't spend the time to figure out why your grass is rendering at 40fps AFTER THE FACT, then you will give up on the issue and delete your grass, which is exactly what you should do.
For real, I felt this was a generic call out video with a more popular youtuber in the thumbnail to gain clout. I feel like like this guy doesn't understand the point of these tutorials at all.
@@purplewine7362 Well, first of all, let's take about 20% off. There's nothing wrong with having an opinion and we should discuss its merits before we attack someone's integrity. I think he is making a legitimate claim. Obviously, that grass tutorial showed people an objectively bad way of doing it and the tutorial could have been made much better.
Eh... I sorta agree with the OP... sorta. I don't actually think you realize what a deluge of crap has befallen us though. If given the choice between a gallon of pure water and a 55 gallon drum of raw sewage... I think the choice between the two is obvious. The same goes for game development... the fact that every two-bit hack and their grandmother thinks they can develop a game just because a tool like Unity, Godot, or UE makes it easier than how it was in the 80s or 90s is just opening the floodgates for trash. That's also part of the reason why the mobile markets are so full of shovelware. Proper game development is an interdisciplinary process and any part that is subpar reflects on the entire product. Program code is the glue that holds it all together. Sure, you can have nice pretty graphics and pleasant audio, but if your game runs at 15FPS, like so many Unity-based games do, it's garbage from top to bottom no matter how nice you make it look. A monkey dressed in silk is still a monkey. I agree that tutorials need to be explaining things better, especially when it comes to performance. Any hack can throw together a tutorial... there are no requirements for even knowing what you're doing. But look at it this way... would you rather learn surgery from a surgeon or Bob the truck mechanic? Quality matters. I'd rather have a steady stream of high-quality games coming from experienced developers than a metric butt ton of garbage games from inexperienced chowderheads who think that it's all glam and cash, the kind of crap I have to sift through to find the good works.
Full support. Optimization is important and you don't want your game running like shit, but god forbid someone's small game doesn't run at 10000fps like it could (which is what most people will do). It's not some rocket science, with secret pitfalls that'll destroy your gains. You just write something wrong and can immediately see the drop. If you wanted people to focus on performance, you'd tell everyone to drop Unity/Godot and go make their own engine.
I work in console porting where optimizing is my bread and butter, and I've had to fix some real stinkers. But I write inefficient garbage code all the time myself because it still runs great very often, even in extreme conditions like spawning 100x of the usual amount. Machines are way more efficient than we think (or were taught, because schools usually have garbage machines).
It may be a bad thing that tutorials don't shine enough light on optimization, true. Like teaching how to use an extinguisher during cooking lessons, SOME attention should be given to this. But I think every dev who gets past first few projects and still has creative drive, will eventually search for answers on his own. It's not a race, we don't need to hold their hands for this.
You missed the point of the video. The issue was that the tutorials involved making things that aren't viable for use. It's like teaching the bogosort algorithm and being like "it werks tho".
I agree that telling people to "just read the textbooks" is a death sentence for accessibility, but beginners don't know a thing about complexity, so they only learn bad habits from 'beginner' videos such as those mentioned. Teaching something conventient is pointless if it cannot be used alongside anything else. It's like using a 'drag and drop' website maker for 30 hours before you realise you want to do a webGL render and you're SoL because they don't and refuse to support that feature.
Teach something right the first time. A tutorial should make something complex easier to digest.
Imo killing the interest of potential, new, or growing developers isn't really worth getting bogged down with the specifics of optimization right from the start. Don't get me wrong, it's definitely important to at least mention that the methods of doing these things may be inefficient, which a lot of tutorials leave out, but "predatory" is very far from the right word for most of them. Most of these guys are solo indie developers who are themselves learning, not everyone has the benefit of industry experience or the time to figure out the shit they're making is slow. They simply made something and are sharing it.
I have a stance that it's fundamental on any tutorial or course that the underlying complexities of the subject are at least touched upon. Most courses and tutorials on programming in general just show a half assed implementation of the subject they're teaching and hardly comment on the problems it has or how a good real world implementation could address them.
So i agree that many are disingenuous, they just want people to keep coming and inside their confort zone.
My approach is that if its killing the ability to grok stuff or produce readable, decently structured code then don't
But at the same time it's worthwhile teaching how to do it *properly*, or just give an idea of the implications under the hood. Like 'we shouldn't have to keep recomputing this value, memoise it or pass it explicitly'
I remember there being this whole debate as when we all saw the elsif tower of doom that Yandev made some suggested 'use a switch statement those are faster' but while this is true for both js and python for example others piped up with 'but the compiler already handles that its smart enough'. And the fact is the code shoulda just used polymorphism to handle much of that shit
Those "potential" new programmers won't be programmers if all they do is consume mindless copy and paste RUclips tutorials.
@@arminkuburas1696 they need to learn at least the basics somewhere
If these new/growing developers can only stomach spoon fed unoptimized garbage to keep going, perhaps it's better they just get weeded out.
I know its a year late but he's right. this is even present in the art community where an artist will be like 'just do this simple trick' without showing how the trick functions to make a better artist
I also feel like understanding what elements to optimize is very important as well. I don't know a ton when it comes to code optimization, but at least in the world of optimizing models, people tend to focus on the wrong things. People try to remove every last polygon they can get away with, but at the end of the day, the polygon count is nowhere near the most computationally expensive part of a model, and just because you can remove an extra 50-100 polygons from your soda can by removing the tab and replacing it with a texture, that doesn't really matter unless you have tens of thousands of soda cans in a scene at once, in which case there are much better optimizations you could do
I totally agree. One of the first things I was taught in university was the Amdahl's law and it's unbelievable how little attention it gets, being the most intuitive thing in the world.
If you wanted a big pile of soda cans, only putting in the models/assets of the outer cans (as well as some inner cans) and leaving the inside hollow would be enough to make the illusion that there are many, when there is only a portion of the amount it is seemingly displaying
@@bonbon_idv Exactly. The only reason you would want to go through and save every last polygon is when you get into the range of millions of cans, or if you need the full volume of cans to be simulated or something like that, otherwise there is no real reason to spend any significant time optimizing the polygon count of the asset
@@adicsbtw what are the good ways of optimizing 3d models?
@@jumpergamer1913 reducing draw calls is the biggest one. This means using less materials and avoiding shaders with multiple passes, because every draw call means sending information to the GPU to render, which usually takes much longer than the render itself, especially for a few thousand polys or less. Reducing texture size also helps on lower end devices with less VRAM, because if the GPU runs out of VRAM it will run a lot slower copying files in and out of the ram constantly. Another thing that helps is combining many static assets into one large file that uses a single material, as that will really reduce draw calls, although I think game engines tend to do that to some degree automatically
I hope you continue with this type of content. One could settle for the idea that the authors of those tutorials are little more than novices with youtuber aspirations or the sole intention of promoting their own games, but the problem is that almost all of them have videos sponsored by Unity, so...
All I can hope to do is try and cut as few corners as possible in my explanations and be transparent when something isn't optimal or ideal. I'd like to do a series someday where I can help indie devs with their graphics or optimizations and identify where they are going wrong, sort of like Sinix's paint over pals series. Hopefully I can get the Unity sponsor someday lol
Thank you for the comment!
Optimization aside, there are so many tutorials that show how to do one thing, in a one c# script and basically what tutorial teaches you, is how to download the script and attach the script to your component, voila.
Those tutorials are only fine if you literally never coded by yourself or never opened Unity and you really want to know how things work in this environment.
For example, check Brackeys platforming tutorial and compare it to Sebastian Lague 2D platformer basics.
This can show you the difference between INFLUENCER and a PROGRAMMER.
I recommend every aspiring game developer to download projects, disassemble them and try to make them work from the scratch using the code made in another project.
Unreal got a pretty vast demo library made by the developers showing good programming practices in their projects and there are some good breakdown videos on youtube explaining some stuff.
I bet Unity got some good stuff too.
RUclips just started recommending me your videos and I can't believe how underrated you are! Your videos are really great, hopefully the algo starts picking them up more!
Same, got recommendations yesterday.
These videos are really well done, actually!
the "standup" handheld mic style is way ballsier than any game tutorial channel
Just came across this video and wanted to say thank you. I first learned C 25 years ago working on a MUD, on a computer with around 2mb of RAM (if that much). Everything I wrote had to be super optimized to get a big game to fit into that memory footprint, and still leave enough resources for the server to function. So that's how I "grew up". About 3 years ago I started a project in Unity writing in C#. It was my first time using C#. I had lots of questions, many about optimization, which I asked on the Unity forums. Over, and over, and over, and OVER again I was told to stop worrying about it. Write the code, and if later there are performance issues, I could use the tools to see what the problem is and work on it from there. "Computers are so powerful, with so much RAM, that little thing you're worrying about isn't an issue."
It absolutely infuriated me that many many people all had that same attitude. Don't bother to optimize it, that's not a problem (unless it's a problem). No, I want to write efficient code ONCE and NOT have to go back and "fix" it later.
So I just wanted to say thanks for posting this video. This needs to be learned as a starting point for writing code, not as a "ugh if I have to later".
I only realized the folly of most game development tutorials once I had several years of non-game programming under my belt. It finally clicked why I was struggling so much to pick up what seemed so simple in Unreal Engine and Unity. It's not just optimization that the tutorials lack, but context and system design as well. I understand system design is dry, complex, and time consuming, but it is essential to creating an extensible code base. Now, with professional programming experience, it becomes obvious quick when a tutorial is cutting corners or teaching a less-than-optimal approach to a problem. For the first time in 30 years, I'm finally getting to a point where I can build small games from scratch. And to be able to tell when a tutorial is over-complicating something, or not abstracting it to a point that it can be easily integrated with my own code.
That said, I still find value in many tutorials I have watched. I've learned not to follow their word to a T and copy everything they do, but it does help me get some ideas about how to implement things, what features are available in an engine I'm not experienced with, and can also help get past mental blocks. But as I said before, I think the biggest roadblock apart from optimization is system design. A good system design makes it so, so much easier to integrate new features without needing to do tons of refactoring.
For example, I watched a Godot 4 tutorial for building a weapon manager component. It was decent, but I only got about 2/3 through it before I decided that the approach being taken was not... great. I took the basic building blocks of what they were doing, broke out a pencil and paper, and starting racking my brain to figure out a simpler, more modular, more optimized approach. After a few hours of brainstorming, I figured it out and implemented it my own way. The problem, of course, is that you have to have experience with programming before it's really possible to do this.
Yes the thumbnail is a double entendre
Don’t say shit like that to me
@@Brutalic
@Spartacus well I liked it
Fucking finally i found a channel who calls this shit out, honestly. Most of these people are like the tech bros of game development. No passion for making features the best they can be, they just tend to make videos about how to make thing X the easy way, with very little actual helpful technical info given on the thing they're doing.
For the most part, if the tutorials showcase correct code practice, I see no issue with not *_teaching_* optimization. That type of content would ultimately derail the main topic of the tutorial depending on what types of optimizations need to be covered. I do agree in that optimization in general isn't even mentioned during tutorials, which is unfortunate, but I personally don't hold tutorial makers accountable for teaching subset topics that aren't directly related to creating the feature the tutorial is offering...
Say, if a video was showing me how to create a flowing grass shader for my terrain. I wouldn't expect the video to spend half its length on culling, LODs, batching, etc. That stuff is general topic stuff that is very important, but not directly related to the creation of said grass shader. In this, I would expect a tutorial to mention at least the performance impacts such features could have, that way it can prompt a beginner to think about options to make it more performant on their own, seeking more dedicated tutorials or research rather than half-baked optimization techniques packaged into tutorials that weren't meant to teach optimization.
It also helps to be picky about your tutorials if you choose to follow any. There are plenty of tutorial videos that actually do optimize their code, or mention that something could be done better.
People like Sebastian Lague, while the optimization of their code could be arguable to some, at least he mentions when code is possibly not optimized, and at least he provides insight to his code and in some tutorials, actually tries to do things the best way he knows how to provide a smooth result. These types of tutorials are completely fine to me. There are many ways to code the same thing, and if the person making the tutorial prefaces or mentions an optimization point in their tutorial, then the person following it can't complain about bad performance if they followed it and didn't bother exploring optimization themselves after it being pointed out. Of course, if there too many bad spots in the tutorial, then simply don't follow the video.
I get some people are lazy, but even beginners need to take some responsibility. I'm not the best at traditional C# either, but even as a beginner at Unity, I took it upon myself to research optimization myself, because it's the logical thing to do. This is actual development. Behind the scenes exists. Even beginners need to know this. They can certainly be blamed if they ignore optimization. You can't pin all the blame on tutorial videos here, since a beginner will probably ignore optimization regardless of using tutorials or not. It's not something they typically think about if they don't have the mind to think about it. Luckily, after 6 years of college, I learned to pay attention to behind the scenes details logic such as this.
I definitely agree, sadly, those awful tutorials were infinitely better than my game design classes I took in school, if you can even call them that
I've gotten interested in game development at the start of the pandemic by people like Dani who make fun games that even on my ok laptop run pretty poorly. Lately I started watching game optimizations such as Kaze emanuar's efforts of modifying the Super Mario 64 engine to run several times faster than it originally did, since at the time, game programmers weren't at all used to the C language. The explanations in those videos were good and all, but the thing is it's hard to see what would be a better solution... when you don't know that solution, and I could only really follow along, didn't feel like I could come to any of those ideas by myself... (and probably since the N64 is a really atypical computer)
Now, after watching your grass animation trilogy and this video, it really strikes me as obvious that the required knowledge is the very basics of coding or even just how computers work in general, even more so than before.
My main takeaway is that at some point I'll definitely want to learn actual programming, and I'll probably also get the computer gems books, they seem epic. Big problem is that I'm in the middle of becoming a woodworker engineer in a non-English-speaking country, so it'll be a side hobby on the internet for quite a while.
We'll see tho
half the battle is knowing just what tools even exist. Imagine trying to build a car from catalog, but you had no concept of the hand tools we have. Would be caught doing some strange things with a pair of pliers
11 months later this was recommended to me. You're far past your 1k goal good sir. I'm so glad you found your community; we are proud of you. You deserve this.
I agree and disagree. First of all, I enjoyed your video. I get handed all sorts of projects in my work with other game developers and other clients and there is a lot of really strange things that I see. Low hanging fruits that are not optimized. But on other hand, game development is a form of art and expression. So there are a lot of tutorials out there that help people see what tools are available for them to adopt. I feel like people should try lots of different things and see what's fun and interesting. Many independent game developers are just making simple games with not a lot of layers of complexity. Larger studios implement more strict control over CPU GPU cycles. In unity, it is pretty easy to profile to find things that are slowing you down. Also, are you filming out of an RV?
Thanks for the comment!
I agree that my points don't apply to those making simpler games that will never be intensive. My main issue is with tutorials that portray the content as out of the box ready or teach a topic without explicitly stating that it's beginner knowledge.
Also yeah I am filming in my family's camper lol, I unfortunately don't live alone so there's nowhere else private to film.
Yup, it's simply different audiences. There's so much shit that you need to learn in game development, so you need a bunch of little dopamine-inducing wins on your journey. If I'm 3 months into learning Unity and want to know how to make a nice looking grass environment, I'd probably go with the path of least resistance for that small win to keep me motivated. If I'm a bit more experienced and working on a production-level project, then it's up to me to keep an eye out for potential performance pitfalls. I can't just go with the beginner-level "STYLIZED GRASS IN 5 MINUTES" tutorial and call it a day.
I'm not sure I'd call those styles of tutorials predatory. They do serve a very real purpose to the community, as do these sorts of videos calling them out for the reasons you shouldn't follow them. Nothing's black and white :)
@@teamldm Yeah, there's certainly nothing wrong with 'stylized grass in 5 minutes' videos, but the predatory part is when it's portrayed as a production ready asset when it's the exact opposite.
@@Acerola_t very true.
@@NeoHCgbz You have a great point, in addition, for people like myself, who could at best be called a hobbyist, starting off thinking through how to optimize it before it's implemented, means I'll never actually start making anything lol.
*at the end of the video* "...and I'm pretty far from my goal of 1 thousand"
*checks sub count*
*is nearly 200k*
Grats my guy! Just came across your videos today and they've been really interesting and helpful :3
That thumbnail makes me feel like some hatred is being directed to a certain channel.
How to make a game in Unity tutorial!;
Step 1: add a fully functional rig of a human
Step 2: add gravity
Step 3: add controls
Step 4: add enemies
Step 5: add the ground
YES. Thank you.
Tutorials do help people grasp the beginnings of programming. BUT, they should only be a kickstart and that's it. Everyone should proceed to learn C# fundamentals (unity's case), coding patterns, etc.
Unity actually has a pretty easy tutorial on C# basics that can help tackling this step. After this, learning actual math also is a must.
And it's not just tutorials, many assets in the unity's asset store sucks. I stopped buying then since most of them are a convoluted mess.
I have a colleague in the studio that grew watching tutorials and his code sucks hard. We gotta correct a bunch of issues when dealing with his pull requests, sometimes even ignoring the issues because dont want to deal with his shit anymore. When he asks about how can he improve, we tell him all those things and he just goes "but why tho, it works fine for me". god
Thank god I found your video when I was procrastinating my first Unity project. I would have started the wrong way and I am really thankful the RUclips algorithm gave me that video
This happens a lot whenever I'm trying to learn new coding practices. I would watch a tutorial and rather than take that at face value, I would research the topic, read multiple articles, and scour documentation and 9 times out of 10 (obviously an exaggeration) it would be done in a way that completely contradicts the video. Not only that, when I tried asking other devs (specifically from the Unity forums) when I was stuck, usually because of a compiler error or user error, they would answer with some jargon that I didn't understand, (especially for a beginner) tell me to go to unity docs, or not answer entirely.
So, not only did I get lied to by a tutorial that was supposed to teach me, I got stonewalled by a place that was supposedly meant to be helpful. Eventually I resorted to asking Reddit and I learned more than I ever could from said "tutorials"... it's a lot easier to learn from people who are willing to explain how something works rather than getting spoon fed the answers. I am by no means an expert yet but that's a start... Now I am able to make my own scripts and hone my C# coding abilities...
I started my software dev careeer on embedded system where 16Kb of memory is considered generous and CPU clocks cycles are counted in Mhz. When I started doing game dev as a hobby, I was struck by how inefficiently everything I looked at was being done.
On microchips, we're spending weeks optimising a function just to save a few bytes of memory. In general software development, people are making calculator apps that 100Mb and uses 1Gb of RAM.
I kinda know what you’re mentioning - I myself am like a complete beginner and my code‘s pretty garbage, still I started Developing my Game, Right now it certainly isn’t optimal, yet I think it’s still pretty good, but when I started my Game I wanted to create a sea-level with large ammounts of water and I just clicked on a random Tutorial - it created the waves of the water via Vertex displacement and it just didn‘t explain anything properly so I just copy and pasted all the Code- well 30-40 fps (I Must say I just Use an Laptop with a 3060 so Keep that in mind) it wasnt very good or performant and it also didn‘t Look to Great - months Later with a bit of experience gained I Went back to that Level and just realised that that water needed to Go I replaced it with a shader graph shader and boom- 100-200 fps (which is good for my Laptop honestly) well what did I learn back there - don’t just copy and Paste everything from the Internet and better Research a bit further
Shaders and filters are ususally a bad idea
They can look really good but they almost always kill performance
Its always good to try to find work arounds to make the same effect without using any code (or at least keep it to a minimum)
People don't want to realize that coding games is hard. You won't be able to do anything if you can't write any code yourself. Optimization is important, but Micro optimization can get absurd. You don't need .1 millisecond of improvement most times. Tutorials are great but what makes someone a good developer is their willingness to learn how to make and fix things. When people ask me how to start making games I don't tell them to start small. Start something big, huge even. If you are willing to follow through and start learning how to make the stuff you need then you will succeed. Getting code from tutorials is fine and necessary if you are to learn. But the minute you expect to have to do nothing and write no code or change no code you are not learning anything and will never be able to write your own code. I think most developers who are going to seriously try to learn or code anything, Will be like "This runs terribly, let me see if I can get to work better by editing all this code and looking at good examples". I use to hate it when tutorials didn't give me the code to just copy and paste. I was like "Alright I don't need to know how it works I just want my game to have it". Little did I know, I was learning how to make any piece of code I could imagine, Just because I had to write it out and learn how it worked. Making the people watching the tutorial write the code all themselves and explaining it as they go along is SUPER important. It slowly gives them the tools they need to do any code themselves. Being a game developer doesn't mean you know everything about code. It means you are willing to learn how a piece of code works. How to use it and sometimes, how to optimize it.
I agree and disagree lol and I personally make tutorials. I think optimization should be considered once you achieve the function of your game. Most devs (especially beginners) are working on considerably small projects that don't need microscopic optimizations. Unless of course they are dealing with graphic related pipelines. The general rule of thumb I use and freely speak out for is get something working, take a step back and review. If it is not a bottleneck then continue.
Even for my tutorial videos, even with "easy" in the title, it is more a long the lines of the teaching method is easy to follow. I preview the concept, walk thru the process while explaining the code as I go a long, mention pitfalls and then lastly execute the code to show it works in a very timely manner, with the added bonus of sharing links to the documentation/resource I derived my info from. And if it's a subject I am not 100% on, I even mention that I am by no means an expert on the topic, just sharing the process of how I arrived to my solution.
I think the topic of optimization debate will always be present, and typically if you structure your code in the first place, there isn't much to concern with. A great example of optimizing too early is when I see videos mentioning something like using raycasting is expensive, so they go out of there way to avoid using them, which in fairness it can be computationally expensive, but if used properly, you can have 1000's of raycasts happening in a single frame and still be okay. (such as using physic layers, using mutliple checking methods such as using a collider to check objects in general vicinity, then raycasting to the collected objects, ect.. ) But is that really necessary when you are only using a single raycast at max per frame? lol
That's why I personally build my features, then monitor the stats/garbage collection, then optimize from there. Obviously if you know in advance a massive overhead issue, then you try to avoid it, but if you don't, then that means you are still learning, which honestly everyone still is, and givers reason to dig further and expand.
Generalizations can be brutal when used incorrectly.
As for the rest of the content in the video, grass in video games is interesting, And I always admired the charm of the billboard grass lol
The first rule of optimization is: Don't do it. The second rule of optimization (for experts only) is: Don't do it yet. Measure twice, optimize once.
@@sephypantsu pretty much. Immediate optimizations up front just adds cost that could be avoided (cost of time, money, frusturation, ect..) lol
01:01 “I wont be naming any specific tutorials or authors because I dont want them to feel bad” literally the thumbnail is a photoshopped picture of Brackeys as the devil?
Might have been a joke, but optimization being the most important aspect of programming (as a whole) is controversial. Software arhitecture overshadows optimization and, in most cases, leads to optimized code when properly done.
Edit: Regarding the "50 instructions/perlin noise generation": this is a bit generalized.
The speed of perlin noise generation depends on the noisemap's resolution.
Measuring in instructions isnt too good because it does not account for following factors:
- CPU Clock rate
- Memory locality/Cache misses
- CPU Arhitecture
- Memory latency
- Memory speed
- Parallelization techniques in processor pipeline for primitive instructions (e.g.: SIMD Accelerated pseudorandomness)
I failed to mention how i mostly meant in the realm of graphics, obviously in the world of web development and other areas of computer science, optimization is less of a priority.
@@Acerola_t Yeah i see, sorry for the misunderstanding. I'm currently binge-watching your videos and I'm enjoying them a lot and subscribed too. Looking forward to more
@@mariocamspam72 Thanks so much!
I thought this video would just be clickbait, but you bring up a really big issue. Early on I thought good programming was chucking "if" statements and getting your code to "just work". I've also been watching some GDC talks recently. They can be really technical and math, but I often come out learning something new about a cool game.
🤣 also, "geometry shaders are cringe" lol!
This is the kind of thing that makes me very very glad I STARTED with an interest in programming, rather than in "gamedev" (which is a massive nebulous area of many different skills).
Having learned CS fundamentals and how to use raw programming languages by themselves - mostly self-taught from a very young age by badly making things and later figuring out how to make them better - it's sad to see so many people struggling because they've missed the most important step.
Programming is the underlying core of everything that's made digitally, and while you do not always need to understand it to USE applications, if you want to MAKE one and truly have understanding and control over exactly how it works, raw programming and CS understanding is essential.
I'd argue even more essential when working inside an engine, because even if the engine solves some things for you, if you CAN'T look into it and figure out how it works and debug your issues, your app will be crippled by workarounds and problems you just didn't understand how to fix.
Do you have any suggestions about how to get into programming? I'm just starting to dive into coding. I'm still unsure of coding bootcamps, but I may join in one day when I have enough money saved up. I may join a bootcamp that's 6 months long at least to give me time. But before that, I plan to start off with free resources online first and I'm even reading some coding books to see if I can understand some basic concepts and eventually move up to more advanced concepts of coding. I don't plan to code only for games, I've been interested also in app development. VR games also fascinates me but I know VR is still very new.
@@paolaanimator Mmn.. Tricky question! IMO, learning code isn't really "hard", as long as you take the time to properly understand exactly what's going on, but then again, it's easy to say that as someone who's been programming for literally most of my life.
There's a few significant differences between writing standalone code and code for games (in an engine, at least), but once you have a good understanding of "how to code", you'll be able to tackle any kind of game or project without too much difficulty (other than the inherent challenges of whatever you're making)
Bootcamps and "tutorial sessions" and all that kind of stuff never really worked for me; I usually find it a lot easier to search out and learn things myself, as I spot which things I don't understand, but that may just be me.
The way I got started was a long and slow process of just.. messing around with things, when I was a really young kid - I started using visual drag-n-drop "languages" not long after I learned to read and use a computer. Starting as an adult (or at least not young kid) now though, I don't think you'd want to go through that haha.
There's a bunch of fantastic resources out there for all kinds of code and different projects, so I guess I'd recommend just, searching around for the kind of project you're interested in doing, and finding some good beginner explanations (not just follow-along-tutorials!) of how to get started with them.
If you'd like, feel free to add me on discord (Drake#6138) and I can try and help out if you get stuck or confused anywhere.
@@hyeve5319 Thanks Drake! And yeah, I've been trying to start out with free resources or resources I can check it out to learn about coding on my own first (like coding books) before considering spending money on a bootcamp. I guess what makes bootcamps helpful is access to a community or (hopefully) access to internship opportunities to get into coding jobs in the future. And thanks for the Discord ID! I'll DM you in Discord. 👍
Counter-argument. Many games are either short experiences or simple gamejam prototypes, if devs, especially newer ones, were to focus on documentation, flow-work, and optimization, having a prototype finished in time would be impossible.
From what I learned from GDC Talks, particulary post-mortems, optimization is a huge problem only when you start scaling your game, most prototyping in the industry focuses in giving a working product in time, not an effective product delivered late
The transition at 6:32 made me spit my Kellogg's® Sultana Bran
This is like in Unreal tutorials, all the people showing how to make stuff just get you to cast to it, which is the worst thing you can do.
Optimization is a skill developed over time and is often in a case by case basis. Make your game first, optimize later. Pre-optimization is evil and will waste hours of development time that could have further progressed your game. Beginners shouldn't worry about optimization until they need to.
Good Lord, back when we were coding on older machines every bit counted. Anything you could do to optimize and write concise code, you did.
Congratulations, you found a short comment!
One of my school teachers gave an introduction to HTML. When I pointed out the errors on a slide he was presenting he said they were intentional! Now I'm always sceptical about 'simple' tutorials. Back on topic, this is why I enjoy watching people like Sebastian Lague and others; optimisation is part of his creation process.
As a complete newbie i learned a couple of usefull things for a not so tutorial
- 1 Noise textures are somewhat used for mesh manipulation why and how exactly i don't know
- 2 It confirmed my doubts on being skeptical with tutorials promising you fast and easy results, nothing is easy especially in 3D
- 3 Optimization is a thing that makes no compromises
- 4 Catlike Coding tutorials, i'm currently on the clock tutorial and learned a lot about the really basics of Unity.
- 5 You can't like a video more than once.
think of a noise texture as a range of values (mainly from 0 to 1, aka black to white). You can use the position of a portion of a texture to apply those values to something, which is commonly used for stuff like world gen (the values for example can be the height of the land, or kind of like in Terraria's case - caves). Since those are values, you can use them to offset the position of the vertices, just need to "slide" through the texture to get the offset value that keeps changing
My game runs at 1400fps on a modest desktop. I optimized to hell and I got it running at… 1400fps.
Shout-outs to Infallible Code. There’s a tutorial channel that teach the underlying stuff, not just specific features.
lol I remember this very simple mobile game with almost no flashy animations or anything going on in the game. But playing it for 20 minutes consumes a lot of battery and heats up my phone to the point my phone notified me complaining about this app.
Yeah, I'm looking at you 'The Gauntlet: Arcade Roguelike' by Cutlass.
I strongly disagree
This is exactly the mindset of all your terrible teachers back in school; they want to teach you the cutting edge, most optimized way of doing things when you can barely write a hello world program!
By doing this, you are going to make people hate game development and never start in the first place.
You are essentially solving a problem that they haven’t yet faced.
Initially you will do things in an unoptimizable way, and it will be fine because your games will be small initially so it won’t matter, but later if the game is large enough you will end up going back and looking up how to optimize it, but now you see the problem for yourself and will actually understand the solution and won’t forget it next time.
But if that’s the case, shouldn’t such information be transparent say- in the description or comment section?
@@sisyphus_strives5463 And what, uhh, does it solve? If tutorials will state that this is not the fastest way to do things they will state the obvious. Of course it's not. It's your job as the dev to optimize the code if it needs that, and this is implied in most cases.
@@Floglor Fair enough. They'll certainly come across a situation in which the algorithm is incredibly inefficient and will be forced to come up with a solution(or google).
@@Floglor Just, as a youtube channel, perhaps making videos on both algorithms (the inefficient and most efficient and maybe also somewhere in between) will be quite profitable
Oh my god for real though- nothing annoys me more than looking up tutorials for something I want to put into a game project, and having every tutorial be like... "here is how to build a version of this that you can do as an exercise but won't actually fit into any existing system." Like no I don't want to know how to make a tech demo I want to know how I can implement it as a feature.
It's basically blind leading the blind
We shouldn't be teaching game development to newbies. We should be teaching the fundamentals of programming to newbies. Optimization of code is a fundamental principle which a programmer should know before even looking at a game engine.
You have a white coat, "dude just trust me" is not even needed.
I went to look up what's wrong with geometry shaders and the first search suggestion was "why geometry shaders are cringe"
I think there is a good niche for unoptimized tutorials, as others have said: Sometimes it's not about making the game run at 200FPS, sometimes it's about making the game run in the first place. That being said, I do appreciate emphasis on optimization, and I do believe that there is a large market looking for that kind of thing. I Imagine you'll go quickly, if you focus on making tutorials, but optimized.
P.S. I wish you did unreal instead of unity lol
I try to keep my videos about theory only so it applies to all engines, I just happen to use Unity.
when i first started game development i would always follow tutorials and keep questioning why certain things weren't explained very well, and then i came to the conclusion that some people doing the tutorials don't understand what they're doing themselves. a lot of these tutorials are basically copied and pasted from other tutorials but said in their own voice.
want to make a 2D platformer game? There's at least 100 basic tutorials doing the *same* exact thing that another tutorial has done.
want to make a 3rd person shooter? there's plenty of those that start off the *same* exact way.
Problem is most tutorials are not an educational materials, and most of their creators never intended them to be.
I just assume "how to" videos for game development are worthless, and not just because they don't cover optimisation.
The exceptions are if it's by someone with credibility (e.g GDC talks), or if it's advanced enough that the really bad channels wouldn't be able to come up with it or turn it into clickbait.
Most of the really good information doesn't come from RUclips. I'm glad you brought up textbooks, as they are so overlooked by beginners. Dev forums and blogs are also good both for tech and design.
I completely agree. I started out using the simple and easy stuff but now I have been forced to follow the tutorials that are either more than 20 minutes long or actually work well and are optimized. When I have to learn something I usually have to do a lot of research and watch a lot of tutorials before I come up with something that seems like it actually makes sense in a real game. (Which usually isn’t from the tutorial) Only a few RUclipsrs I trust to make complete and optimized tutorials, and usually the really popular ones aren’t those few. I just spent two weeks making trees for my game. I went through dozens of tutorials before settling on an approach that was somewhat performant.
Wait a second. How do I know I can trust this video. Is everything you said in this video really good for me in a practical situation....
Just kidding ;)
fyi, I've just discovered pico-8 which is very interesting regarding the environment which requires minimalist resources and multi-platform support.
The game is saved as a .png image (like in spore with the creatures files) and weak/portable machines like the Raspberry Pi is 100% supported. You can program directly on it and easily upload or download via wifi.
However, there are limitations because only 2d 8 bits games with a low resolution of at least 3:4 and only 2 buttons + start + directional pad (+ mouse for some games) are supported.
For quick experimentation with 2d concepts it is the ideal solution, as it is popular for developing games in short jam competitions and many minimalist good games are done on it.
With simplified lua code and 8-bit tools for sprites and song included, you don't have to worry about optimization normally for this use case.
Instant subscribe.
I feel very caught up in this struggle myself despite having gone to university for programming. Trying to self educate on specific engines and an entire 3d modeling and animation pipeline was a rewarding years long undertaking and I take way too much from random unqualified youtube tutorials by individuals mushing blueprint kits together for experiments.
I remember I used to develop weapons on a multiplayer platform where anyone could cobble code together and crash the whole server. At one point I personally wrote a shotgun that recompiled a script in each pellet every time it was fried which would practically create slow motion through lag. Then I met the real coders, the code artists who understood the engine and optimization tricks. The people who actually had the support, time, and motivation to really grok the world we were trying to build in. It was like the difference between a hand saw and laser cutting and the result was directly measurable in numbers because of multiplayer lag. It was very early on in me learning development but it really taught me the value of understanding the tools you are working with, optimization, and either dedicating the hours to learning specific development tasks or hiring on proper specialists.
I agree with the game optimization, no one wants to play your game if it has unstable fps, the only thing i dissagree is, that Brackeys dude face on your thumbnail. It kinda makes other people hate them and other tutorials out there :(. I learnt alot from them and sometimes I write my own codes and yeah it could be a mess or "POORLY OPTIMIZED" but Im proud coz it works. I guess as a beginner, its pretty common that you make a lot of mistakes, because that's where you'll learn from... it's the inevitable education in life. Regardless, thanks for sharing the info about optimization :)
I work a non-coding job for a living. I want to do game development as a hobby. Years ago, I watched C++, C#, and Python videos that are 2+ hours long. Even then, I felt it was wasted effort. How to apply it or understand the explained concepts were limited. Every 5 mins I tell my screen, "Why is that useful? Isn't this the same as that? Couldn't I do xyz instead?" and other questions only a person can explain.
About 3 years ago, I decided to spend a few weeks of free time using Python instead of watching tutorials. I couldn't even get the program to work. I asked in the forums and posted images but I was ignored. So my coding journey ended and I probably forgot a lot by now. If you don't use it, you lose it. And I barely used it.
I've only come back because of the Godot game engine. It feels like my childish goal is finally in reach again. But as you said, I probably still can't optimize. Where are these Boring But Best tutorials instead of clickbait? There are some people who are willing to do the hard and long foundation instead of the quick and easy lies. If I'm going to be told I'm wrong, I would prefer in the beginning when I'm learning.
Anyway, that is my coding rant. It's not easy for a non-coder to distinguish good and bad tutorials. Even if I am told that, I can't trust an internet stranger either. Either way, I subbed because I prefer the truth.
Unfortunately I dont use godot so I cant point you in the direction of reliable godot resources, but I wish you luck!
Your room is cool as hell. It feels like you're recording on a boat.
lol it was my parent's trailer, they have since sold it and I live on my own now.
while I agree to your video, I just don't get it why the comment section is suddenly filled with hatred towards tutorial
those tutorial still a great starting point. and if you really is want to search for a robust "how to something" don't search it on youtube, search for a legit documentation! articles or something!
saying "Tutorial on youtube is the worst thing to start" is just not right. for me especially when you're learning how to code, the first step is literally "Make it works". I don't really care about optimization first, just trying to "Make it works". After that, if I deep dive into it then the second step is "Optimize it"
so don't try to think about the so called god "Optimization" if your code doesn't work at all.
maybe you said that "Then it's a waste of time when we study about optimization we need to refactor all of our code". HELL NO it's not a waste of time. Remember, you want to STUDY. doing something wrong and KNOWING IT'S WRONG afterward is part of studying.
of course what I said is different for professional scene, where time to work on project is a resource so you just cant waste time. but like I said, most people that search tutorial on youtube is just people that wants to start learning about game development.
no hatred towards Acerola, I just don't get it how many hatred comment towards youtube tutorial in this video.
"Oh my favourite youtuber saying tutorial is bad, time to say that it is bad" fookin bullcrap
The problems with tutorials are:
They usually cover only the most basic things;
There are dozens of tutorials about the same topic, some of which contradict each other;
They show you how and what to do without properly explaining why you should do it;
While they are a good starting point, you can't really learn from them, unless you pause every second and look in the documentation what is this function, what does this component do, what does this option mean etcetcetc.
I've seen that technique used in a tutorial before, though if I'm remembering correctly it was a video by a 3D artist, not a game dev, so ofc their techniques are going to be a lot different and less optimization focused. Great vid btw, watched one of your grass videos then this one, and subscribed :)
"For the sake of privacy, I won't be naming any specific tutorials because I don't want any of the authors to feel bad or be targeted"
Photoshops Brackeys to look evil for the thumbnail 😅😅😅
Optimization is an essential skill no doubt. But it's by no means the most important in programming. The most important skill is to get things done.
We all know the saying, premature optimization is the root of all evil. I wanted to disagree with that cliche, but throughout all my years of programming I learned the hard way the truth of it.
The tutorials only take you so far, and optimization should be your own burden as a programmer. Not only that, but I feel that most tutorials had a good idea of telling you the general performance costs of what they're doing. Beyond that is just handholding.
Ahh yes getting things done, let's finish my game with 93739372997528298226628 million triangles
Finally a good comment in that cesspool. If you want to get shit done, you need to find how to get shit done. If it runs slow, you need to optimize it, you need to go deeper and optimize the algorithms or use something else. This youtuber wants to write well-optimized code first, and that's not how you do things in the the business logic industry.
Of course you need to know how the engine works and how to write fast code, but optimizing it before it's even done will burn your time for things that maybe doesn't even need optimization. Not talking about grass, of course, but since he is attacking every tutorial out there...
Agree with you 100%,
my advice to beginner game devs would be to learn programming first and then move on to game engines.
Not just high level languages like C#, Java, Python, etc. But low level ones as well, especially C.
Only by learning how everything works under the hood you can use the high level languages efficiently, they do abstract all the annoying work away from the programmer, but the work is still being done, so its complexity cannot just be ignored.
Programming itself is hard enough, I started with C# and it took me a *long* time to learn just the basics for all the areas of programming. Comming into Unity was like starting that journey all over again.
I knew how to code (or at least how to make something basic), but all the new ways of programming, like relying on Start/Update methods instead of constructors and me calling the functions myself, all the knowledge required about computer graphics, etc. was adding a whole new level to the programming knowledge required.
I think the issue is that many tutorials teach you how to do something but not what it means. For example, you learn a formula in class and then you can't use it in a real world context because you don't know what the formula does conceptually. It's why beginners struggle to do anything past the tutorial because it never taught them what they needed to know to survive on their own. It's easy to just give a solution rather than actually teach the concept.
PS: Fellow P3 fan 🤝
My problem is that I learned coding optimization but, because I'm trained as a regular engineer, I learned *matlab* optimization techniques which don't work in anything else. For context Matlab is designed to do matrix math so your main first-level optimization technique is turning anything that iterates over a list into something that turns the list into a matrix and operates on it all at once.
very true. I went back to a game I was making just a few weeks after getting a junior programmer job at a game studio and already cringed at the old code I wrote with stuff I learned from tutorials
Take away, even though the tools of game development have become democratized for the most part, game development is still complicated.
haha, this is a great video, i love that you take performance seriously. a game that runs good is a game that looks good and feels good. doesn't really matter how good the hardware is getting.
if anything, gamers these days are starting to value high resolutions and even higher framerates, so even somebody with a higher end pc might feel disappointed at a poorly optimized title.
Tarodev has 5* tutorials and does optimizations. Though I think you definitely make a good point
Big disagree. While it's true some tutorials could be better, I don't get why you need to harp on optimization. As a beginner in game dev and especially in coding, it is an immensely complicated and arcane topic. Being able to follow a simplified tutorial and finish a game, no matter how simple or unoptimized, is a very important first step that many fail to achieve. Ideally everyone should have gone through a comprehensive coding class, but many people don't have the luxury or attention span for it. Anything that can help getting started in development is a good thing.
Optimization is not important. The important part is understanding what you're working with.
Many people aren't even aware that they are creating a ton of garbage by manipulating strings in C#.
I am a student at DAE which is the best Game Dev school in the world and optimisation is one of the most important points in programming and 3D modelling.
Too many vertices? Points deducted. Texture to big? Points deducted. Unwrap is not space efficient? Points deducted.
Every time I make something, I already have the reflex on how it will scale, which I am really thankful for. I haven't dabbled much in C# and unity so haven't noticed these tutorials yet but thinking about all of the memory leaks in Minecraft mods it is no suprise to me that Unity tutorials are quite bad aswell. Thanks for the enlightenment!
I didnt know this, thank you so much. Im familiar with C but not C# and especially with unity terminology and logic. as a noobie gamedev I was thinking that Simple=good. but as you said bigger projects or even mobile ones can be damaged by this happy go lucky mentality, i will revised my code in the future much more especially on this mass generated stuff. thankfully im still on prototype stages.
you sir have gained a suscriber!
You missed the use of the world sound when the time moves further xD btw nice video