Hacker News new | ask | show | jobs
by alexwebb2 1835 days ago
Quick links to the five "must read" posts that William highlighted:

> FFF #243 - New GUI tileset: Showing off their GUI design document. A MUST READ, if only for a good example of a comprehensive design style that fits the game theme perfectly. (https://factorio.com/blog/post/fff-243)

> FFF #176 - Belts optimization for 0.15 : Incredible analysis of transport belts and optimizing their performance. A MUST READ. (https://factorio.com/blog/post/fff-176)

> FFF #204 - Another day, another optimisation : Solid technical writeup on how a prefetching optimization patch works across a number of resource-heavy factory builds. A MUST READ. (https://factorio.com/blog/post/fff-204)

> FFF #296 - All kinds of bugs : The snippet at the bottom is a perfect encapsulation of their attitude towards problem solving. It’s such a simple concept, just going a little farther, that can take tremendous discipline and focus. A MUST READ. (https://factorio.com/blog/post/fff-296)

> FFF #356 - Blueprint library for real : Michal “kovarex” Kovařík, one of the two cofounders, talks about falling out of the development process, losing his sense of purpose, and how playing Factorio with his son brought him back. Reading this one, even through the sometimes-broken English, is inspirational and a wonderful look at how things fall apart and come back together. Like I mentioned in the intro, this is one of those rare, special offerings that is technical in nature but deeply personal and human-centric in form. A MUST READ. (https://factorio.com/blog/post/fff-356)

3 comments

> Earlier this week we got a bug report about the game freezing, consuming all of the available RAM, and then crashing when it ran out of RAM. It was again a modded save file so my first instinct was to blame it on a mod. Again, I had to test it. And again... it's never what you think it is.

> So, I still repeat the phrase: "Crashing on dereferencing null? Just add a null check!" as a reminder to myself and others to always look deeper into why and never stop at the basic symptom of a problem.

I feel this is a very important rule that people often forget - most anytime your "safety" code triggers, something went wrong somewhere else and it can be worth tracking it down.

It's a perfect example of how useful it is to think in terms of what invariants should hold and why.
> FFF #176 - Belts optimization

The last bit of this post mentions UDP packets not making it through ISPs if their checksum is 0x0000 or 0xFFFF...what is THAT all about? This would have been in February of 2017.

> If you remember from the previous FFF, our map downloader was having some extremely rare problems with some mysterious packets that would always get filtered over the Internet. We already had a fix for it, but I was curious what was going on. Thanks to the investigative power of the Factorio community, we found out that all those mysterious packets, before NAT, had a checksum of 0xFFFF. Admalledd from the forum sent some hand-crafted packets through his Internet connection and surprise, all packets would go through, except those with a checksum of 0xFFFF or 0x0000. At this point I would just assume this ISP(and some other few ISPs around the world) have some faulty hardware or software that do not handle these special cases of UDP checksums.

If the checksum comes out as all 0's you're supposed to make it all 1's (0 in a UDP checksum means no checksum) so really it's related to that singular value and, if you've ever seen the quality of some of the dirt cheap hardware with ancient firmware some carriers use, it's really not that surprising for it to be bugged as described as they really don't care about dropping the occasional UDP packet when it's probably dropping more than that of general traffic due to how cheap and overrun it is anyways.
356 is a really nice read. inspirational indeed.
Yeah, that one caught my eye (and then moistened it).

The way he breaks his slump by sharing Factorio with his son -- what a wonderful, unexpected benefit of working in games. How many of us will get to do something like that?