35 thoughts on “Jonathan Blow – How to program independent games – CSUA Speech

  1. This is the kind of practical knowledge and wisdom you gain when you make your game from scratch and not use Unity or Unreal.
    It's your choice. You want to become like him or you just want to sell game.

  2. I will just write notes here for my future self:
    – Avoid optimization (and wasting time thinking about it). You don't usually need it in most cases.
    – Use Arrays for everything. Data structures are about optimization.
    – Don't build generalized systems. They are worse than hard-coded ones.
    – Deleting code is better than adding code.
    – Prefer big top-to-bottom straightforward functions, instead of function calls

  3. Huh… did not expect that The Witness only has a few thousands LOC more than Braid. While I realize that the amount of content is mostly just assets, I figured that all the complexities of dealing with a 3D environment would require many more LOC than a 2D game.

  4. 30:43 "If there is some code that is like a 1000 lines long and only does one linear sequence of events, I actually prefer to be a 1000 lines long doing one linear sequence of events."

  5. I love this talk. It's interesting that the first point is about how you need to optimize your time coding and to do that you need to not waste time optimizing code. It's sort of an ironic way to make the point that human time is way more important than computer time.

  6. 1:03:00 he talks about failing certification on xbox 360 if the framerate is dropping. was it like for xbox live arcade only? cus lots of games are and were dropping frames on consoles so how does it gets certified lol pubg is literary payed for by microsoft and runs and looks and plays like shit

  7. The readability is the key problem of generic systems, OOP and all kinds of frameworks. The more layers of generic nonsense that a system has, and the more "magic symbols" it needs the programmer to learn in order to actually understand the code, the worse it is. We are now living through a period of new frameworks popping up every month that is supposed to make your life easier, but its essentially a waste of time. Spend your time learning the core language and how to do things without a single library, that makes you a good programmer.

  8. I agree with everything he's said here – All of the mistakes he mentioned exactly describe the mind-set of a new programmer. I'm in the business/ERP space but even there (where the computer science and optimisation elements are less important than functional correctness), these rules absolutely apply. These are lessons that are only learnt with experience.

  9. I wonder, if he wants to optimize years of his life per program implementation, why he started on Jai? Isn't this new language of his (an attempt at optimizing C++) taking him too much time already and will take even more than it has already taken? He could probably write a game or two in this timeframe, or just enjoy life, not write anything for a while (there's plenty of other things to do without getting bored). IDK, Jai just sounds like a contradiction to me to what he is saying here. I have to say, I've done a lot of native and web development, just not C++, don't know how bad it is, so maybe I'm wrong and Jonathan will have more life left and games written after having finished Jai, but I'm skeptical.

  10. This is so awesome. Working on a large project for a year now… wish I watched this before I started.

  11. I like a lot of this advice because I basically love contrarian advice. There is so much group / herd "thinking" and mindless adherence to certain dogmas that it is almost an ethical duty to go against some of that. That being said, most of this advice is well-known from decades back ("Premature Optimization is the root of all evil" D. Knuth) but it is worthwhile to repeat again and again. One of my faves is actually removing code or accomplishing some functionality without introducing a lot of extraneous staff (libraries, frameworks, etc), much satisfying that adding complexity for the sake of very small efficiencies (the "very marginal benefits" mentioned in the video), or sometimes for the sake of using some design pattern that ultimately changes nothing other than complicate the code. This is something that happen with what I call "junior-seniors" and is a frequent nerd temptation to all of us, including me, of course. And one of everyone's favorites: generic systems, when a "Generalized system is usually worse than a specific one", which somehow seems to be counter-intuitive. There is something deeply human in this however, the desire to feel smart, to somehow come on top of our insecurities and of our peers.

  12. I disagree on using arrays instead of other data structures. Using arrays is an optimization(memory). So if you don't care about any optimization a use a linked list or something which has more memory usage etc.

  13. @17:50 "If I think somethings wrong with that they did, but what they did is kind of beyond my capability, maybe I just don't understand why they did what they did."

  14. "I prefer it to be a thousand lines long doing one linear sequence of events. I don't want to hide that fact!" This made me laugh a lot. Blow is making an important point I think. I used to take pride in shrinking all my functions by making lots of little functions, but you have to recognize when that's unnecessary.

  15. 2300 lines of code per year? Industry standard? What is he talking about? 2k lines a day is more like it.

  16. I really loved this video. I've recently started up a game dev blog with my latest projects, art, or tips. Come check it out at http://arcticodestudios.com

  17. "We're going to work on it for another year or 2…" – well, the upper bound was reasonably accurate.

  18. Don't agree with many of the suggestions, but still a worthwhile watch for any aspiring game developers

Leave a Reply

Your email address will not be published. Required fields are marked *