T
The Witness Blog
the-witness.net · Company blog · on HN since 2010
The blog for Jonathan Blow's puzzle game The Witness, with posts on engine tech, shaders, console certification, and the Jai compiler.
What HN saysHN links it as the home of The Witness and for Blow's game programming posts; commenters also praise the game's art and tree-making posts.
54HN people shared it
30linked it in comments
41stories submitted
880story points
11 months agolast shared
2010people per year2026
Most-shared posts
- 1How to program independent games (Johnathan Blow of Braid fame)11 people · 148 points · first shared 2011 · 18 comments on HN
- 2The Witness7 people · 1 points · first shared 2014 · discussion on HN
- 3News4 people · first shared 2013
- 4Engine Tech: Concurrent world editing3 people · 6 points · first shared 2011 · discussion on HN
- 5A Shader Trick2 people · 220 points · first shared 2022 · 55 comments on HN
- 6Finding and Fixing a Five Second Stall2 people · 97 points · first shared 2012 · 37 comments on HN
- 7Thoughts on Consoles and Certification Processes - Jonathan Blow2 people · 54 points · first shared 2012 · 26 comments on HN
- 8Testing the Jai Compiler2 people · 36 points · first shared 2018 · 8 comments on HN
- 9Mapping Walkable Surfaces in "The Witness" Game2 people · 6 points · first shared 2012 · discussion on HN
- 10Designing to Reveal the Nature of the Universe2 people · 4 points · first shared 2011 · discussion on HN
- 11What I Did on My Christmas Vacation2 people · 3 points · first shared 2012 · discussion on HN
- 12Architecture in The Witness2 people · 2 points · first shared 2011 · discussion on HN
- 13About2 people · first shared 2016
- 14How to program independent games1 people · 139 points · first shared 2011 · 14 comments on HN
- 15Fun with in-engine color grading1 people · 61 points · first shared 2012 · 12 comments on HN
What HN people wrote when they linked it
rttlesnke · 2014-05-14
I think I've seen a similar mechanic in the critically acclaimed side-scroller Braid [1]. There's a world called "Time and Place" where the flow of time is tied to the player's horizontal position. Going right and left takes you forward and backward in time respectively, and standing pauses it. Amazing game, really.
Also, a new game from the creator (Jonathan Blow) is scheduled to release this year, The Witness [2].
[1] http://braid-game.com/
[2] http://the-witness.net/
s_kilk · 2017-02-24
On the topic of puzzle games, you might enjoy The Witness: http://the-witness.net
felipemnoa · 2017-01-30
Jonathan Blow, developer of The Witness.
[1] http://the-witness.net
reedlaw · 2016-03-06
What you say is very true. Maybe I should have said "intermediate" tutorials. Even though the problem area is so deep and complex there have been astonishing engines produced by very small teams, such as:
* http://procworld.blogspot.com/ which is a voxel-based rendering engine mostly developed by one person
* http://the-witness.net/ which is a game with a custom engine developed by a small team and features many realistic effects
Eric_WVGG · 2016-01-28
There’s been a lot of coverage about the puzzles and ingenuity of the gameplay, but equal attention should be given to the amazing artistic style of the game.
a couple of blog posts about the making of the trees:
http://the-witness.net/news/2013/06/2157/
http://the-witness.net/news/2011/06/witness-trees/
I’d love to see more videogames step away from uncanny-valley and ill-advised attempts at photorealism and instead embrace unique artistic style.
teddyh · 2015-09-17
The web site of the game itself (http://the-witness.net/) seems down at the moment, but their Twitter account has links to more articles:
https://twitter.com/witnessgame
ephemeralgomi · 2015-03-03
Jonathan Blow wrote an excellent article on the text-based entity file format he developed for The Witness, which was designed to be (more) mergeable:
http://the-witness.net/news/2011/12/engine-tech-concurrent-world-editi…
reledi · 2015-02-07
One of my favourite technical talks is by Jonathan Blow: http://the-witness.net/news/2011/06/how-to-program-independent-games/
Vermeulen · 2013-12-04
Jonathon Blow had a great talk on the topic of programming indie games, http://the-witness.net/news/2011/06/how-to-program-independent-games/
One part he mentions how when he was a more novice programmer and looking at the Doom1 source code he thought they made some horrible programming choices - but only once he actually started to try to make commercial products himself did he realize none of that mattered. When the goal is to make good products with very little resources (which is the defining aspect of being indie) being pragmatic is the most important thing.
what you would consider 'good code' wasn't Notch's goal, doesn't mean he isn't capable of it
scott_s · 2011-09-26
Rather, I think his point aligned with points Jonathan Blow makes in this presentation: http://the-witness.net/news/2011/06/how-to-program-independent-games/
One of his points - with which he uses an id game as an example - is that sometimes the naive implementation is the best implementation. His example has to do with loading levels at startup. The written code was, from an algorithmic perspective, inefficient. It was written in such a way to optimize for developer time. His point was that in this circumstance, that was the correct thing to do because this was not a performance critical part of the code, and naive implementations are easier to maintain.
tompark · 2021-02-24
TFA has some good points. I'd go even further on the situation where you quit your job to work on an indie game -- if you ever find yourself doing this, and you've never built a game by yourself before, you'd better have several years of runway.
For many years one of my favorite talks about indie games development was Jonathan Blow's speech at UC Berkeley CSUA (2011) (http://the-witness.net/news/2011/06/how-to-program-independent-games/)
Initially I loved his main message during the talk: "You have to be brutally effective to finish a project in a reasonable amount of time."
But there's a part in the Q&A that later grew to be even more poignant to me:
https://www.youtube.com/watch?v=JjDsP5n2kSM#t=1h13m8s
> Q: You said you worked on many projects before Braid which didn't quite get completed. What was special about Braid which made you complete it?
> A: What was special was it had been a long time since I'd finished anything on my own, and I sat down and decided that "Dammit I'm going to finish something this time". And, "To that end, so I can finish this, I'm gonna make something that is technically pretty simple"...
For some of us, it's REALLY HARD to complete a side-project while working full-time job. For most of my career I had completed a real game only when it was for a job (or for a client) and I worked on it full-time.
The single reason I hadn't made a game as a side project was because I'd quit before I finished. I finally figured out something that worked…
ido · 2018-12-08
Have you tried The Witness? http://the-witness.net/
jblow · 2013-01-15
Sometimes rigid code is simpler, sure. But what I am arguing is that it is almost never more debuggable / maintainable.
What I am saying is not specific to test and branch, though test and branch is great because it gives you these big code blocks into which you can insert more code and it's clear where that code lives and under what circumstances it runs. Which is something you don't get in assembly language, which is part of why the assembly language reply is a goofy straw-man argument.
Yes, my reply was a bit irritable; I would definitely prefer to have a reasonable discussion, but the assembly-language thing was the first volley in being unreasonable. Putting up a straw man like that is an attempt to win the argument, not an attempt to understand the other person's position. I detected this and decided, well, if that's the position, then it is useless trying to make further / deeper rational arguments, so I am just going to say, this comes from a lot of experience, so take it or leave it.
As fatbird replied, "This is shitty." (I can't reply to his reply yet because of the timed reply thing, so I am including it here.) Maybe it is shitty, I don't know, but it's true and sometimes you just have to say the true thing to be expedient and get on with life.
I don't have time to teach people on the internet how to program. I work my ass off for 4 years at a time to build and ship games that are critically acclaimed and played by millions of people. These are the kinds of…
wcarss · 2013-01-04
They don't necessarily have to, and even if they did, it may not be obvious.
Consider a financial company working to improve prediction algorithms for their in-house use, hiring smartypants PhDs and giving them free reign and great pay. The result after ten years could be way ahead (or even just a little ahead) of the academic world's work and never release a product with a sticker for a big shiny new algorithm.
The firm wouldn't even have to stand out in its success; it could do reasonably well compared to others, and just attribute a lot of its modest success to its algorithmic insights.
Even in externally released products, really clever ways to get around things aren't necessarily visible. Just today I was reading about Jonathan Blow's work [1] on localised kriging [2] for his upcoming game The Witness. He's pulling from advanced geostatics academia for a little feature he wanted in a game, and if he didn't blog about it (and then discuss enhancements in the comments) no one would know it existed - even once the game is released. A small example to be sure, but I think it exemplifies the point.
[1] http://the-witness.net/news/2010/05/kriging-is-cool/
[2] http://en.wikipedia.org/wiki/Kriging
sunrunner · 2025-12-19
> The funding for underrepresented creators was a condition of my involvement in this project, so doesn't represent his values so much as mine. He was at least willing to do it though, which I'm not sure he would be today.
Interesting, and thanks for the sources. I was under the impression that it was the same fund as that announced in 2010 [1] but the date in [2] plus the apparent timeline does align.
"I'm not sure he would be today" is a strawman and just Hazelden's own current views of Blow, but I doubt there's going to be a direct quote (or even better, a new grant from Thekla) to back it up. But yes, 7 years is a long time and the political landscape has changed "somewhat".
[1] http://the-witness.net/news/2010/03/announcing-indie-fund/
[2] https://www.gamesindustry.biz/the-witness-studio-offering-usd20-000-gr…
thenoblesunfish · 2022-02-24
I didn't see an obvious mention of it on the page, but this site has an RSS feed at http://the-witness.net/news/feed
SolarNet · 2016-02-01
His dev blog on The Witness also has some technical articles by him that show he's quite capable. It is a custom engine after all, architected mostly by him, with a few other programmers. For example: http://the-witness.net/news/2011/12/engine-tech-concurrent-world-editi…
fulafel · 2016-01-28
They have a timed exclusivity agreement with Sony, hence PS4 first.
"It will be released on the PC and the PlayStation 4 on January 26, 2016. The game will come to iOS some months after that, and other platforms a bit later." (http://the-witness.net/news/about/)
Fingers crossed for a Linux port at some point! For Blow's last game (Braid) I think the Linux port was done by a third party.
Or maybe it's time to get a copy of Windows and set up a VM with GPU passthrough...
ericye16 · 2015-06-02
Jonathan Blow, creator of Braid, is coming out with a new game called "The Witness" pretty Soon™.
http://the-witness.net/news/
ipince · 2015-04-07
Yep, that's him, given his profile in HN and http://the-witness.net/news/
dang · 2014-05-26
jamesmiller5 · 2014-05-08
This was also posted on The Witness blog if you'd like to see more comments.
http://the-witness.net/news/2012/12/mapping-the-islands-walkable-surfa…
captn3m0 · 2014-05-08
The post is dated Dec 2012, and the Witness is still to be released. [0].
[0]: http://the-witness.net/news/
zindlerb · 2014-03-18
Jonathan Blow (How to Program Independent Games)
http://the-witness.net/news/2011/06/how-to-program-independent-games/
Not really about games. More about CS in general
Any talk by Bret Victor.
jere · 2013-07-10
>At first, this struck me as a very odd thing; text is inefficient, and machines, not humans, are meant to interpret protocols. A binary setup would save bytes—bytes!— and be all-around more manageable by software.
>It wasn’t long, however, before I realized the true genius behind this decision.
This reminded me very much of a talk by Jonathan Blow where he's talking about how he "nerd raged" while reading the Doom source code. He found a section that wasn't optimized, but in fact not optimizing it had so many other benefits (besides, the performance gain would have been negligible). Starts at 14 minutes: http://the-witness.net/news/2011/06/how-to-program-independent-games/
angersock · 2012-04-13
Here's the talk in question:
http://the-witness.net/news/2011/06/how-to-program-independent-games/
In a course I took junior year of college, my project partner (now cofounder) and I worked on a zombie outbreak simulation game. Towards the height of the project, we were probably tearing up and laying down a thousand lines of code a day, keeping in touch over the phone and fixing build errors and weird behavior.
Years later, I can't look at that code without wanting to gouge out my eyes. It makes me physically sick. That said, it worked and worked well for the task at hand.
Game programming is weird like that, and Blow's talk has a section where he talks about the relative merits of dumb structures and algorithms for developers that just have to get the thing to work. It's an interesting perspective.
CJefferson · 2011-09-06
This talk by Jonathan Blow (author of Braid) has totally changed how I think about writing games, and certainly since I listened to it I've got much closer to finishing any of my personal projects than I have in years, hopefully will release something soon (I believe that games are one of the few areas where 'release quick, release often' is a bad idea, although I seem to be getting proved wrong by minecraft).
http://the-witness.net/news/2011/06/how-to-program-independent-games/
100ideas · 2016-02-01
I've been enjoying the game too. This quote from Jonathan's development blog more than anything in this New Yorker article has helped me understand his narrative intent with the game:
> "But if you have an eye for detail, you may notice the elements of modern construction shoring up the design of an older structure with a different purpose. The design of the new structure tells you something about what the newer guys were doing there, and how it differs from what the older guys were doing there. And if you look really closely, you can see traces of the original footprint of the site (perhaps these are very subtle, some bricks just rising above the dirt in a few places), and infer the purpose of this very old site too.
> "If you see the different civilizations that came to this island as embodying different philosophies; and you see the structures they built as representative of the way these philosophies led them to interact with the world; and you see further that when they replaced a site, it represents the rejection of some older worldview that they consider no longer useful, then perhaps you start to get some idea of the amount of backstory that can be encoded into the world, nonverbally.
- http://the-witness.net/news/2011/12/architecture-in-the-witness/
iamwil · 2011-08-13
http://the-witness.net/news/2011/06/how-to-program-independent-games/
This was posted on HN recently. Skip to slide 18. In it, the guy talked about premature optimization, curiously, of the same thing: linear iteration over an array vs using a hash implementation.
His example was that in his youth, he was on the Doom forums, and he was doing mods, and took a look at the code that loaded the different asset files. And he was abhorred that the code used an array to linearly iterate over to find the asset to load. He started complaining on the newsgroups, and then Doom guys said you don't know what you're talking about, etc.
In this case, it was where that code just didn't matter in terms of run time, because the order of magnitude difference in looking up an asset and actually loading the asset was huge, and it just didn't matter. And because they used a dumb implementation, they could optimize for developer productivity and go on to code that mattered, like the rendering.
That said, I think the thing to keep in mind is, which parts of your problem space is of the core importance, and keep an eye on difference of order of magnitude in the different solutions you were thinking about implementing