2,962 karma · joined July 27, 2015
My main interests and experience are in graphics programming and performance optimization.
https://agentlien.github.io
When I first heard people complain I shrugged it off because people always complain. But having seen it myself...
So many easy to fix basic mistakes. Such poor craftsmanship. I would have never shipped something looking like that.
The same goes for articles. I want the author to distill the material using their own voice and hard earned expertise. I don't want a generic text which sort of tells the tale.
> I would much rather someone be themselves and write with their own voice, or with some passion
I recently had a fairly successful article here on HN. The common thread among comments was appreciation for the passion and it being "hand-crafted". I am thrilled my passion shone through despite the dry subject. Still, it's sad that something simply being written by a human has become such a rare compliment.
The advantage with block compression is that it is purpose built to minimize bits used, it's local to small blocks, decoding and encoding can be done with fairly simple code[0], and it doesn't require any specific AI hardware.
I am unfamiliar with NTC, but at first glance it seems to require an Nvidia card with RTX features, meaning it wouldn't be supported on Xbox One and PlayStation 4 (AMD GCN), Xbox Series X|S and PlayStation 5 (AMD RDNA2), nor the original Switch (Nvidia Tegra X1).
[0] https://learn.microsoft.com/en-us/windows/win32/direct3d11/b...
"Wow, that's terrifying! So exciting!"
That still sounds highly unethical.
In my work as a graphics programmer I often find that I look at a problem and will immediately see how to solve it, more or less. But the devil is in the details and often nothing works unless you get every detail right. So you spend a lot of time coming up with complex solutions, then boiling them down to simpler versions. In the end you often end up with a fix which is short, simple, and seems obvious. But it gets a lot of subtle details just right and avoids countless potential issues you wouldn't know if you hadn't failed a lot getting there.
And that is actually how you learn and master the craft.
Now, imagine you describe how you sort of solve it to a machine and it spits out the simple, correct implementation and you nod approvingly, never knowing all the ways it could have gone wrong. If this is how mathematics - or programming - is done from now on, no one will actually master their craft. I definitely see why this would worry someone whose career is built on mastery of the craft and a legacy meant to teach the next generation.
[0] Before I worked on game development I actually worked in virtual surgery simulation, and there we also had a localized UI with a very large number of supported languages and tooling to detect issues.
[1] Need For Speed (2015), NFS: Payback, NFS: Heat, Lost in Random, Wavetale
I got into Dwarf Fortress around 2015 and I was hooked. These days it's something I often play together with my son. I love how dynamic and deep it feels. It was such a privilege to get to buy a copy when it finally came to Steam.
We had to implement a streaming system and figure out a good way of chunking the world. This was a challenge because everything was on water and you could see nearby islands quite far away. An intern called Tommi did a great job identifying a good strategy and writing the system.
We also had to reduce the density and model complexity of a lot of environmental details such as rocks, vegetation, and stuff like pots and clotheslines. This was done largely by sorting things by memory size and frequency of use and identifying outliers.
One of the biggest issues was actually really silly: the journal fetched Portrait images and names of characters by referencing the actual NPC and having them embedded there. Meaning the journal, which was always loaded, would pull every NPC involved in a quest into memory including their behaviors, textures, and models.
On my end I also found a lot of silly details wasting hundreds of megabytes. Special render passes using huge textures and render targets, poor structuring of the render pipeline caused memory increases, several key shaders referenced huge textures which weren't necessary, ...
My blog posts about the project[0] mainly focus on rendering performance because that's where I spent more time and it contains more interesting content for discussion. But reducing memory was an ongoing concern with countless little improvements over the 1.5 year porting process
The 100 TiB number almost gives me vertigo. Though in this context it was "just" 50%
Another possibility is that the people who experience these 100x productivity increases are honest, correct, and simply had abysmal productivity which has now been increased to near-average junior levels thanks to AI.
I think what depth does do is help something stand not the test of time but deep continuous analysis. It really heightens the experience when you're a fan and can dive deeply into something for years and still discover subtleties you somehow missed that elevate it even further.
But if something catches your attention immediately granting you a sense of wonder and appreciation which lingers... Well, that is valuable art. Perhaps that's another kind of mastery, managing to convey your ideas so effectively that it doesn't need deeper analysis to digest?
I think a good example for me personally is 2019 in music. And I assume most people reading this list will shake their head at my (in their view) poor taste.
1. Rammstein released their untitled album which to me remains the best they've ever made.
2. Slipknot released "We are not your kind" which I played on repeat for so long. Nero Forte remained my first or second most listened to song for three years in a row.
3. Lars Winnerbäck also released Eldtuppen, causing the one and only time someone else than AC/DC became my most listened to artist for a year
4. While I didn't like the 2019 Korn album "The Nothing", it made me realize I'd missed their 2016 release "The Serenity of Suffering", which remains one of my favorite albums of the last decade.
Rinnig - a kitchen towel called "runny"
Skaftet - a series of standing lamps and lamp stands called "the shaft"
Fejka - plastic plants literally called "to fake"
Knöckla - A garbage bin called "crumple up"
Some I don't get but are still funny
Ostbit - wooden serving tongs called "piece of cheese"?
Took me several seconds to get it.
There are a lot of great resources out there. The best modern beginner friendly resource I am aware of is Scratchapixel[0]. Back when I was first learning 3D I used to follow tutorials on places like NeHe Productions[1], which is probably a bit dated these days.
For more comprehensive information on all kinds of techniques, with examples from big games for each technique, the absolutely best resource is the book Real-Time Rendering[2].
If you're interested in ray-tracing rather than rasterization (i.e. more film than video games) a lot of people recommend "Ray Tracing in One Weekend"[3]. If you want to learn state of the art ray-tracing in depth, with all the math and and theory, the best resource is "Physically Based Rendering: From Theory to Implementation"[4], which is freely available online.
[0] https://www.scratchapixel.com/
[2] https://www.realtimerendering.com/
I wonder if it it is more that the percentage of people who choose to dedicate themselves to that type of work is miniscule. I work in graphics and performance, and it seems similar.
Few people really work on it specifically at any given company, and I've heard people warn others that there are few jobs in it.
But video game companies really want people for those roles and will pay well because they're hard to find. Still, few programmers show any interest in specializing in those skills. If you're passionate about it and willing to learn the details you'll eventually find a lot of job opportunities. I know people who want to work with this and do so - I know many more who have specifically said they want to stay away from it. I don't know anyone who wants to and can't.
I even have my own domain and I still ended up choosing to have my blog on GitHub because it was so smooth an experience.
One of my favorite blogs[0] is interesting because the author, Julia Evans, often writes about her learning experiences and is very transparent about mistakes made and where she still doesn't understand things. It becomes very fun, driven by curiosity, and not pretending to be an expert at everything she touches.
[0] https://jvns.ca/
For my own blog [0] I usually start writing because I feel I just learned and did something cool which gets me excited to share it. I also write only about topics I'm very familiar with (graphics and performance). Very safe. And still I learn a lot by forcing myself to really examine what I write about and always leave with much better insight into something I thought I knew inside and out. And still I'm always very nervous that people will dismiss it or find huge faults in it. I've found a few issues myself after the fact, but commenters have been nice.
Maybe I should risk pushing myself into unfamiliar territory? On one side, I absolutely loathe blogs written in an expert voice by someone who is clearly a novice - and I don't want to be that person. On the other hand, people who know me often encourage me to get more technical and detailed in my posts because they recognize that my blog is very simplified (meant to be approachable) compared to what I actually do day to day. My upcoming post will definitely lean into the more low level and technical. Hopefully that will be appreciated, but I find myself really nervous about it.