7 ms·
I learned Unity the wrong way
- lelanthran 7mo agoI submitted this because I thought it was a good and nuanced (if long) take. FTFA: > If I had AI in 2019, I would not have lasted 3 years before the interview crashed me. I would have lasted longer, and the crash would have been worse.
- argee 6mo agoIt's worth pointing out that: 1. Much of the core lesson in this article has nothing to do with Unity specifically, and applies to self-taught programmers in general; and 2. This person has a vested interest in making you believe learning Unity is especially difficult.
- andai 6mo agoYeah, the actual point is "For a long time I avoided learning programming and it turns out you do actually need that for a game programmer job." The issue was compounded by the author getting a lot of positive feedback on their game, because people respond to how the game looks, not the code. For the solo indie approach that's not really an issue (many such cases!), but getting a job is a separate beast.
- noisy_boy 6mo ago> The issue was compounded by the author getting a lot of positive feedback on their game, because people respond to how the game looks, not the code. It doesn't even have to look that good. Relying on vapid positivity from Reddit will do that to you.
- socalgal2 6mo ago> and applies to programmers in general; There, fixed that for you. So many college educated programmers I've worked with that have zero real world experience and so make a ton of poor decisions with code design.
- wonger_ 6mo ago> Before AI, I got a lot of interviews. Companies would talk to anyone with a reel. Today a beginner can send out fifty applications and not even get a first call. The thing that saved me may not be available to people starting out now. I do not have a clean answer for what to do about that. I only know that interviews were the best school I ever had, and I feel for anyone who is being shut out of that classroom.
- tardedmeme 6mo ago[dead]
- andai 6mo agoWhat nobody told him is that it doesn't matter. The most beloved games have the shittest code. The goals of getting a job in the industry, and making a game people love, have completely different requirements, with surprisingly little overlap. --- As for the latter (game industry requirements) I read this article a while back. https://lazyfoo.net/articles/article11_top-ten-mistakes-game-programmers-make/index.php https://lazyfoo.net/articles/article11_top-ten-mistakes-game... There's a great list of Fundamentals halfway through. Though I have no frame of reference for how reasonable it is. (Is the average game dev really expected to implement a rigidbody sim from scratch?)
- deleted 6mo ago[deleted]
- jordand 6mo agoThere's numerous studios across the games industry that have high coding standards, mandatory code reviews, and expect upskilling. Game complexity keeps increasing, and live service games in particular need to be stable and well maintained and very well engineered in the first place. For many games, the days of games being pressed to disk, shipped out and done with (where bad code is fine) are long gone.
- rawbot 6mo agoThey aren't long gone. There's a ton of very successful indie or AA games with shoddy development practices: https://www.reddit.com/r/programminghorror/comments/e0bub9/terrarias_source_code_is_an_interesting_one/ https://www.reddit.com/r/programminghorror/comments/e0bub9/t... A game isn't a fundamental or structural part of a system. In the end, it is just a game. The goal of a game is to deliver an experience. It doesn't need to be scalable or robust. If the experience isn't marred by bad coding or bugs, then it can still be a great game.
- jordand 6mo agoYeah all of that is always going to be true across hobbyists, indies and small studios. But for commercial game development at scale, where there's multiple studios or outsourcers/co-devs brought on, there's real expectations that people can be on-boarded quickly and work productively on projects with tight schedules. A poor quality, fragile codebase (usually with technical debt) is a recipe for disaster when things are at being worked on at that level.
- HauntingPin 6mo agoThanks for sharing your story, it was an engaging read. The part about filters in interviews resonated with me because of a recent experience. The place I work has been interviewing for new developers and the team lead asked me for my opinion on one of them. Overall seemed like a good candidate. But when I took a closer look at the assignment and the solution, I noticed that while technically the solution was good, the candidate had ignored a bunch of requirements outlined in the assignment. At first I was willing to give him a chance, but when I gave it more thought, I realized that one of the biggest issues I've had with colleagues was them not reading the issue they're given, not understanding it, not fulfilling the requirements given in the issue and/or outright ignoring what's written because they independently decide they know a better solution (without consulting anybody), which turns out to be worse because of reasons which might not have been outlined in the issue, but still lead to the given requirements. I pointed this out and felt it was a big red flag that, in a best-case scenario, this candidate was still unwilling to follow or incapable of following clear instructions. The candidate wasn't invited to the next round.
- romanows 6mo agoIt also really bugs me when I've put more time into reporting an issue or setting someone up for success than they've spent working on a solution. You would know best, but it struck me that one reason to skip parts of a take-home interview assignment is that it was taking far longer than it "should". A sufficiently senior candidate should have noted this but (I'm feeling charitable towards junior candidates this lazy Sunday afternoon) maybe that's something that's a reasonable thing for them to learn in a real job.
- zerr 6mo agoTo make it fair, did you also inquire into firing your colleagues? :)
- jamesfinlayson 6mo agoUgh... I've had two bad hires in two years that were exactly like this - if you can't follow simple instructions, how have you survived in this career for this long?
- __natty__ 6mo ago> But interview after interview, the story started to make sense. They were not wrong, I was not ready, and it took me a long time to admit that. I believe this is one of the most humbling but also maturing moments in career and adulthood.
- shermantanktop 6mo agoThere are activities where this type of realization is constant, and activities where it is rare. Interviewing a marketing manager is dominated vibes and optics, and driving that clarity about what their actual skills are is an uphill battle. With a software engineer I can usually get there in a few minutes. But many creative activities are susceptible to avoiding harsh realizations. And tfa was about the creative side of gamedev. That doesn’t mean that engineers are better than English majors. If anything, technical people should have more respect for great creative talents, because those people got almost no feedback and still figured out how to become great.
- jiggawatts 6mo agoMarketing is easy, just ask the interviewee what metrics they use in their job. If they can answer (at all), hire them. The expected answer is something like LTV/CAC.
- rustyhancock 6mo agoThanks for sharing! (Sorry the following is written before I realised you posted your own blog post!) It does seem like a trap, although you might nit have had the raw technical skills for the job they applied (by the way why wasn't he screened out early rather than on the take home task?), They clearly have a lot of the skills around game design. The trouble is that they also didn't have the high level skills that someone who does have the low level technical skills might need from a lead! I'm not entirely sure on the take that AI would make it worse. If they are satisfied with the kind of game they make. Then they could continue to make games for many years. I do think it's right that Game Developer companies want technically highly skilled people. My favourite thing about AAA gaming is the feeling of the constant cutting edge. On the other than, I don't see why they couldn't have a long and fruitful Indie career.
- bambataa 6mo agoExtremely well-written and honest post. The struggle with being self-taught is that you don’t know what you don’t know. This is probably even worse in areas like Unity, where the coding part is sort of a sideshow to the main event. Nowadays the problem is you lack the discernment to evaluate AI output. I wrote The Conputer Science Book (https://a.co/d/01e62STx https://a.co/d/01e62STx) to act as that basic building block and help orient self-taught developers. What did come out from the blog post though: - OP writes really well - OP has learned to be very honest with themselves (and I hope not too self-critical now) - OP seems really good at delivering things people like, even if they’re a bit cobbled together All of which are very valuable and harder to learn than programming fundamentals tbh.
- em-bee 6mo agoThe struggle with being self-taught is that you don’t know what you don’t know. yes, but he knew. i mean he should have known that he used stuff without knowing why. i am mostly self taught too, and i agree with your statement, but i don't see an excuse for using stuff and not trying to understand why. i mean sure, when i follow a tutorial , at first i'll copy things i don't understand, but do that a few times, understanding should eventually come. that's how i learned how OO programming works. i followed the motions for a while, and one morning i woke up and it clicked. if you keep using something without understanding it, then it is time to ask questions. what is this thing that i keep using? how does it actually work, and what are other ways to solve the same problem? things that i don't know are things that i never came across. i just recently had an interview that asked me questions where i honestly had to respond: i never touched this issue in my programming career so i can't give you an answer, just my best guess. but i never had a situation where i kept using something without eventually understanding why.
- CobrastanJorji 6mo ago> he should have known that he used stuff without knowing why. We all use stuff without knowing why. Many of the folks on here are deeply curious people who love learning about the world around them, especially for the tools we use in our daily careers and hobbies, but even then there's a huge number of things in our lives that we just do because it's what we do and it works. If you went to a "being a person" interview, and they asked you why you used a bow knot to tie your shoes and what the pros and cons of it were versus other knots, would you really have an answer?
- varun_ch 6mo agoI wonder how long/far someone can truly go without actually knowing stuff today. I don’t know about game dev but the web is certainly built on abstraction: In university I’ve met people whose portfolio sites are made in NextJS but don’t know what React, the DOM or even HTML is. I think this is bad. At the same time (with the help of AI) they are certainly shipping things and working real jobs. At least on the web, with frameworks and stuff abstracted into magic services or libraries, you can go really far without knowing what you’re doing. At what point does not knowing the lower level stuff start becoming a hard ceiling?
- bilekas 6mo ago> Then the interviewer asked me why I used Queue<T>. I couldn't answer And this was before AI. Imagine the amount of people who will never be able to answer similar questions. I am going to maybe have a bad take, but if you don't know what you're doing, you shouldn't be working in the field until you do. It's not okay to wing it into new roles with more responsibility.
- deleted 6mo ago[deleted]
- DonHopkins 6mo agoOn one hand, now anyone can ask AI to explain Queue<T>. On the other hand, most people aren't curious enough to ask.
- bilekas 6mo agoAnd that kicker has been around since salaries have been high. I've interviewed people who flat out had zero interest outside of work in the field. Who only took a degree because of the salary. It's incredible how a creative field that also happens to be critical to so many things can be infested by people who just don't care.
- thaumasiotes 6mo ago> It's incredible how a creative field that also happens to be critical to so many things can be infested by people who just don't care. Huh? Those aren't unrelated facts. The people who don't care are there because the field is critical to many things. If it wasn't, they'd leave, because they don't care.
- everyone 6mo agoWhat's with all the Unity articles on the front page recently? Seems suspicious.
- hacker_13 6mo agoHey, I'm the original author. Thanks for sharing this. I saw a spike in my analytics and couldn't figure out where it was coming from, now I know :)
- ipdashc 6mo agoJust wanted to say I loved this article. In a way it didn't say anything "new", and yet all the anecdotes were spot on and I really liked the writing style.
- omeysalvi 6mo agoI felt this article in my bones. I also had the same realisation years ago and eventually wrote about it on my blog: https://omeysalvi.com/blog/blog-11 https://omeysalvi.com/blog/blog-11. I still have a long way to go but I feel encouraged that at least I'm learning with intent now.
- debo_ 6mo agoDon't worry, blogpost author. We think you're a Queue<T> and that's all that matters.
- noisy_boy 6mo agoLast night I started learning Qt and thought if the underlying pun was the motivation :)
- imaginationra 6mo agoUnity dude here, learned alone/self taught- Being old enough to enjoy reading technical books/articles is a + and knowing the acronym RTFM I learned about collection types other than array/list from reading this article by the creator of the game Project Zomboid- as he used Stacks for zombie behaviors https://ia600303.us.archive.org/18/items/pdfy-G4Wm9sq1LU298rm3/behavior-trees-ai.pdf https://ia600303.us.archive.org/18/items/pdfy-G4Wm9sq1LU298r... Then I got this book which is a great overview of C# for use in Unity https://csharpplayersguide.com/ https://csharpplayersguide.com/ Remembering which ones are FIFO and LIFO helps you remember what is what for etc But yeah- had to read an article and a book- I hated most of the Unity youtube tutorials- enough info/help to get you going but they leave you stranded in the woods without a path out because you were blinding following someone else when you walked in. Better to read/learn and understand the small bits yourself slowly as they are the breadcrumbs that lead you out.
- protocolture 6mo agoI feel this. I went to a private university to learn gamedev. And I feel like I learned game but not dev. Yes I slung a lot of code but, when the game industry dried up and I applied for a bunch of developer positions, I kept finding terms I had never heard of. Basically any methodology other than compile and fix was completely absent from my skillset. What I had learned, I had discovered while helping mates in other disciplines with their coding assignments. And the learnings I had were completely transitory. Tricking DirectX 9 into compiling was actually quite different even from DX8 or DX10/11. I think this kind of thing is endemic, and its not just a youtube video problem. I guess you could see private education as kind of the same beast as self education. That said, it did give me troubleshooting skills, because effectively we were taught break fix to such a spectacular level, especially in netcode, that my skills were very easily transferable. Didn't come back to code for ages.
- deterministic 6mo agoLearning how to program from tutorials is like learning how to ride a bike from watching YouTube videos. You kinda feel that you are learning something but you only truly learn when you have to do it from scratch.
- matsemann 6mo agoNot the same issue as the author, as I come from programming and been toying with Unity for myself / hobby. But it's surprisingly difficult to learn, because most guides and tutorials don't teach you the fundamentals. They teach you how to specifically do X, but it's hard to apply when you want to make something else. Often they also "hack" it to work, and as an experienced dev I can then really feel that this isn't the way to actually do it, it's just a shortcut, but I don't know how it should be done. Like the input system. Many tutorials will just assign a listener on WASD buttons or something. But that only gets you so far. Or the mentioned Brackeys. Very cool and well produced tutorials to make certain graphical effects. But often they are impossible to combine with your actual shaders, and if mindlessly applied you haven't learned anything generalizable you can use for your own vision. Just then have to hope there exist a tutorial or asset for whatever effect you're looking for.
- HiPhish 6mo agoIt takes a lot of humility and strength to admit this. Kudos to the author. I was similar to that in the past, chasing tutorials and only having half-baked knowledge. What shook me out of that was this article: https://fabiensanglard.net/c/ https://fabiensanglard.net/c/ I'm going to start with the things I didn't take too seriously: Internet tutorials, blogs and almost anything brought by Google (yes, it includes this article). I usually considered those sources unreliable and potentially harmful. Like a lot of people in the industry I used to Google way too often. Overtime I found the illusion of speed and the inaccuracy of the answers to be counter-productive. No website is as good as a good book. And no good book is as good as a disassembly output. This set me straight and got me to look into actual authoritative sources. Instead of tutorials read a proper book. Don't scrape StackOverflow, read the reference documentation. Learn to write automated tests instead of randomly poking around in the application. The thing is, I did not even intend to learn C, but after reading that article and other articles on that website I accepted that if I want to get good at programming I should start with the fundamentals, and C was a good starting point. It was the first language I actually learned properly.
- ryandrake 6mo agoKnowing the literature is criminally underrated. Nobody even asks for it anymore. I used to ask candidates when was the last time you implemented something described in a paper or textbook, and walk me through how you did it, and after 2010 or so, people stopped even being able to come up with an answer. I've worked with junior developers who get stumped with basic things like what units or format for arguments to pass to some SDK provided function, and they try everything besides reading the official SDK docs.
- stmw 6mo agoThank you for sharing your story, and I'm so glad it worked out in the end. This story however is also why algorithmic interviews and the supposedly "irrelevant to the real job" programming interviews are not going anywhere soon. Having done a lot of hiring, it's surprising how many candidates do not actually know how to code despite experience and looking good on paper.
- JohnMakin 6mo agoThis is a great, reflective article that made me think of specific situations I've been in with people in my career that did not possess the same level of introspection. They are everywhere, which is why those interview questions he mentions get asked. Particularly though, this hit home - > The interviews were not silent on my end. I was not freezing and saying nothing. I was pretending. I was trying to sound like I knew, hoping the interviewer would believe me and move on. They always knew. You cannot fake technical answers in front of people who have asked the same questions hundreds of times. Looking back, that performance was worse than just saying I do not know. It wasted their time and it delayed my own learning. This is the thing that absolutely maddens me with some people who I have worked very closely with before. They don't know enough to know that they don't know, but either are so insecure or with outsized ego, they cannot admit it publicly, because that threatens their sense of expertise. They also aren't willing or able to do the "boring" work to catch up (that the author mentions at one point). The farther you go into your career without getting past what this guy went through, the worse it gets, and you'd be shocked how long some people can last living in this world, which to me looks like hell. I've had people confidently tell me stuff about niche areas of my expertise I knew they'd never worked on in their life, and start trying to drive decisions around those things based on that fake expertise, and being in the awkward spot of "do I protect their ego, let them fail, or tell them to please listen to me?" But I found when you do the latter, it falls on deaf ears, because they do not know enough to even understand that you can tell the confabulated responses they give to questions tell me immediately they have no effing clue what they're talking about, so any feedback will just be interpreted as threatening or incorrect. I'm positive I have done this in the past, not saying I am perfect, but entering a mid to mid senior part of my career now and having worked with a ton of different people, when I see it now, I'm very unsure how to deal with it. This guy, bless his heart because it's so honest, likely received tons of direct feedback he wouldn't or couldn't listen to.
- Animats 6mo agoWe're going to see much more of this. It's possible to get a lot done without actually knowing how to program now. Amusingly, this was with Unity, and didn't even involve AI. We're going to have a whole generation of developers who can't really program. But they can open the hood and mess with the internals. They're more than users, but less than programmers. Not clear how this plays out.
- ytoawwhra92 6mo agoI think the author's being a bit hard on themselves. Vanishingly few people ever learn a new thing optimally. Programming in particular takes years to learn thoroughly enough to get to a level where you can consistently produce quality work. It's normal to have gaps in your knowledge that you realise would've been better to fill earlier in your journey. Like, there would be plenty of people who spent years studying data structures, algorithms, and other fundamentals who never actually built anything in that time.
- coolThingsFirst 6mo agoThe very first mistake you made was using Unity. Start from scratch. A game loop is really just draw(), update() positions in a loop. Even smaller effects can be done with simple programming. Recently I played around with ChatGPT for some effects for JS game, the results were interesting and very experimental. 3D game is another beast altogether and linear algebra needs to be very solid for that.
- t-writescode 6mo ago> 3D game is another beast altogether and linear algebra needs to be very solid for that. Or you can use an engine, like Unity. Edit: you responded and then deleted a post about "games that don't look like Unity on Unity". Ignoring that the looks of a game usually matter less in the long run than gameplay, a very, very short search shows that Escape from Tarkov[0] is made in Unity. https://en.wikipedia.org/wiki/Escape_from_Tarkov https://en.wikipedia.org/wiki/Escape_from_Tarkov
- deleted 6mo ago[deleted]
- coolThingsFirst 6mo agoThe reason why I deleted it was because Subnautica one of my favourite games was written in Unity. I never could have guessed. It seems I've underestimated Unity, thank you for changing my mind!
- tayo42 6mo agoStart from scratch means your doing all of your own asset loading and handling, physics, collisions, hit boxes, animations, level editor and probably need to know some graphics library or api
- coolThingsFirst 6mo agoI built a multiplayer 2D top-down game for my Bsc thesis. Once I compressed the rotations and movements as vectors and linear algebra the code turned out to be around 2K lines for the client and 1K for the server. And it included assets, PvP, crafting system, collisions mobs etc. For collisions it's just dist center of assets <= sum of their radii. Requires geometry and some thought but not impossible Far from perfect game of course but got very far using simple concepts.
- vivzkestrel 6mo ago- as a non gamedev i keep asking this question since i dont get a satisfactory answer like ever - if i want to make a 3d third person tactical shooter from scratch) without unreal, unity, godot etc what is the exact flow - i know c++ and have a decade of programming experience. i am revising 3d math from that awesome 3d math primer book - what are the steps? if you asked me to write a program to take a postgres backup i would say, the steps are - spin a docker container for postgres 18.1 - perform a pg_dump using directory format - take a tar archive out of that directory - create a brotli archives out of the tar archive above as it doesnt work directly with directories and gives better compression than tar - copy the file from container to host - shut the containers down - can someone give me an overview along the above lines for gamedev?
- wewtyflakes 6mo agoThere is an ocean between the level of complexities of the examples you gave. For the database side, it would be the equivalent of "write postgres from scratch", not "how do I take a postgres backup", assuming you want to do no frameworks at all (like you qualified for the game side).
- deleted 6mo ago[deleted]
- gregsadetsky 6mo agoAre you interested in the graphics (how to render 3d, opengl/directx, shaders etc), in the “game engine” aspect (all of the various parts of a game coming together), game design, networking, or something else? All of it? As people used to say on stack overflow - what have you tried so far? Also - this might be a good starting point: https://www.gameenginebook.com/ https://www.gameenginebook.com/
- vivzkestrel 6mo ago- i have started brushing my c++ and learning 3d math for now - i am interested to know for starters what does the 10000 ft landscape look like - what are the major steps involved? - what have I tried? I spent a lot of time looking into what kind of libraries exist. Rust has something called bevy which I would not touch given it is new and I dont want to work with double unknowns - C++ has a library called raylib that seems to have a lot of functions for basic stuff. - There seems to be a library called jolt which claims to handle physics well - how is rendering / graphics pipeline stuff handled in c++. what libraries do we have for loading models, working with shaders, handling networking for gaming etc? - the thing is i need to get a complete picture inside my head of how a 3d game is put together like how this https://visualrambling.space/neural-network/ https://visualrambling.space/neural-network/ gives you the picture you need to understand how a neural network works
- num42 6mo agoThe most enlightening part of learning is finding our own unknown unknowns. For me it is different, making a best piano in the world is different from composing like Beethoven. Well what I am saying, learning unity is doable but what you do with it is most important. Back then I used to think learning photoshop, paint tools makes me artist, but I have realised being artist is actually faraway being from tool operator.
- pillars 6mo agoSorry, I am pasting my old comment which is written 10months ago. https://news.ycombinator.com/item?id=44177446#44184036 https://news.ycombinator.com/item?id=44177446#44184036 I want to share my experience about my journey of programming. When I started programming, I was introduced to the ideas of variables, conditions, loops, functions—regular programming constructs. But I didn't understand much of what was going on, how the computer worked, or anything beyond just the syntax. I used to wonder: when I start my PC, how does it even know where to begin? I often felt insecure and anxious about all these unknowns. I was trapped in tutorial hell, thinking that just gluing pieces of code together was enough. It made sense for a while, but eventually, I wanted to quit. After some time, I searched online about how to improve, and people recommended learning data structures and algorithms (DSA). I didn’t know how to implement data structures on my own and struggled a lot—almost like going through hell. Nothing made sense. I couldn’t even get beyond linked lists. Then I found a Reddit post saying I might have the wrong mental model. It said that even if you know some programming, without understanding how to think about structures and systems, you're stuck. I started searching for what 'mental models' meant, but due to my lack of experience, I didn’t find anything useful. Later, I read a discussion on Hacker News about the book Structure and Interpretation of Computer Programs (SICP). One commenter explained how the book starts with the concept of data and procedures. That really clicked for me. I had never thought of computation as just transforming input data into output data. The model of: Input → Computation → Output made everything fall into place. This idea carries through all levels of programming—whether it's assembly, mid-level, or high-level languages. It’s the fundamental notion. You need basic constructs to steer data through transformations into useful outputs. Computation is essentially about transforming one form of information into another. After that realization, everything started to make sense—assembly, high-level programming, even operating systems. It was one of the best ‘aha!’ moments of my life." What is programming? by George Hotz is also good one https://www.youtube.com/watch?v=N2bXEUSAiTI https://www.youtube.com/watch?v=N2bXEUSAiTI
- WA 6mo agoWhen I started game programming, I thought that game programming means manipulating pixels on a screen. Took a while to understand that the stuff you see is just a representation of the game state in memory. The whole game could run in memory only without any render logic and would still work. That's what game servers do.
- AgentNews 6mo agoI can relate, I picked up Unity to build a game. Not to learn programming. This has had consequences. Years later one of my oldest projects is a maze of spaghetti code that I'm afraid to enter, I don't want to face the minotaur inside or worse realize it's a dead end.