This is a thread of notes on a video I& #39;m watching, entitled "The most important talk on programming by Jonathan Blow"
(who is an indy gamedev who made game called Braid, which is a... time travel platformer, I think?)
(who is an indy gamedev who made game called Braid, which is a... time travel platformer, I think?)
The video is here: https://www.youtube.com/watch?v=dS6rCaDSwW8">https://www.youtube.com/watch... .
It& #39;s apparently from a livestream where he& #39;s answering questions and discussing things with the chat, which isn& #39;t visible in the video.
It& #39;s apparently from a livestream where he& #39;s answering questions and discussing things with the chat, which isn& #39;t visible in the video.
His code screens have files with .jai extensions, which it turns out the name of an (as yet unreleased) programming language he created: https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md
It& #39;s">https://github.com/BSVino/Ja... a C-like language, meant specifically for game development.
It& #39;s">https://github.com/BSVino/Ja... a C-like language, meant specifically for game development.
One interesting thing about Jai is that you can run arbitrary Jai code at compile time. Sounds much better than C macros.
This is a feature Lisp-like languages have as well, and it makes sense to me. Why use different languages for write-time, build-time, run-time, ..?
This is a feature Lisp-like languages have as well, and it makes sense to me. Why use different languages for write-time, build-time, run-time, ..?
(which is why more attention should be paid to using Python on the frontend. I digress, but obligatory mention of Transcrypt: https://transcrypt.org/ ">https://transcrypt.org/">... )
One interesting gamedev thing in that Jai primer: if you have a lot of structs, you can get a performance depending on whether you store them them in "array of structures" vs. "structure of arrays" format (AoS vs SoA), storing things you access together, together.
(which is apparently something Jai has syntactic support for)
He mentions Entity-Component-System, which is apparently a common architectural pattern used in games: https://en.wikipedia.org/wiki/Entity_component_system">https://en.wikipedia.org/wiki/Enti... .
Your objects are Entities, each has traits called Components. Each Entity has a struct for each Component type it has. These component types can be dynamically added and removed from an entity.
Each subsystem of the game, such as collision detection, is called a System. Something that may or may not run in its own thread. It& #39;s basically a function that does something to the entities/components for every clock tick (or however often it runs).
Anyway, Jonathan calls writing an ECS something that programmers do instead of writing the game.
"There& #39;s no pressure encouraging software engineering culture to converge on values that actually make sense and are true."
".. if you& #39;re wasting 99.999% of your computer, which isn& #39;t an exaggeration for some web software, for example, I think that& #39;s silly.."
".. complexity kills everybody. It makes everything more complicated. It makes users unhappy (on multiple dimensions because they have to deal with more things, and things work less well). It lowers the threshold of what we could even accomplish."
If we have pressure to look at things empirically, he says,
"the benefit of simplicity will be one of the least controversial [values].. in the long run."
"In the short run it& #39;ll still be controversial because all these people get paid to tell you to make things complicated."
"the benefit of simplicity will be one of the least controversial [values].. in the long run."
"In the short run it& #39;ll still be controversial because all these people get paid to tell you to make things complicated."
He ends the video talking about how the drive toward complexity makes it harder for people to learn these days. He says that& #39;s why it& #39;s important to have good examples of how it could be.
(backing up a bit because I think I missed something I wanted to tweet about)
Near the beginning, talking about quality versus quality in software dev: "There& #39;s like a saddle point where if you fall below a certain level of [code] quality your development will take longer."
(Not familiar with the term "saddle point" as a metaphor. Wikipedia says it& #39;s the middle point of a saddle shape. I think he might have meant inflection point. -- images from the Wikipedia pages for those respective terms)
Looking back through this thread and apparently I missed a lot of words in my sentences.
"you can gain a performance"
https://abs.twimg.com/emoji/v2/... draggable="false" alt="🤦🏻‍♀️" title="Woman facepalming (light skin tone)" aria-label="Emoji: Woman facepalming (light skin tone)">
"you can gain a performance"