๐ณ๏ธโ๐ally, gamedev (Thief, Promesst), Indie Game Jam cofounder, popularized C header-file libs w/stb, @ Epic Games. "It smells like if celery was mad at you."
Time to update my pinned post...
Still vaguely hoping Twitter can survive pedo guy, but if not, you might find me at:
bluesky:
mastodon:
cohost:
I'm not on Threads and will never be.
@pete_tnt
dude, I *already* wasted my time tracking the issue down. if instead of reporting it as an issue I had filed a PR for it, they would have rejected the PR and I would have wasted even MORE time. this interaction does NOT make me feel like submitting a doc fix is a good use of time
There is some confusion about my meaning, so let me write yet another thread expanding on it that most people replying won't see.
I don't just mean in the sense of "it's an indie game, fuck it, if it works, ship it".
I mean in the sense that this is stylistically correct. (1/n)
Finally announced, the PS5 has RAD's Kraken decompressor (from Oodle) implemented in hardware, able to decode 5 GB/s data. (Typically 8-9 GB/s output, capped at at most 22 GB/s.)
[I edited this screenshot to make it smaller but still readable, hence the weird artifacts.]
Dear indie game devs: here are 3 different actively-growing PBR public domain texture sites. (There may be more, but these are the three I currently support on Patreon because they're CC0.)
โข
โข
โข
think it
sketch it
scope it
pitch it
spec it
case it
plan
design it
code it
build it
link it
run it
test it
change it
break
debug it
change it
test it
change it
test it
change it
test it
break
debug it
change it
test it
change it
test it
change it
test it
break
revert it
Thinking about the big surprise in X-Com: UFO Defense (1994) when the aliens attack your base, which you've been building without knowing there's a scaled-up isometric combat version of it that you'll have to defend, and, too late, you realize how indefensible your layout is.
The whole Internet loves Rasmus Lerdorf, the PHP creator who reached some higher level of coder enlightment by hating programming. *5 seconds later* We regret to inform you that Ledorf renamed PHP functions to better distribute their hash values when the hash function was strlen.
It used to be that you only saw this style of camera movement in videogames. It wasn't physically possible in the real world.
So I kept looking for level-of-detail pop-in.
I will never get past the fact that the Uber autonomous vehicle killed a pedestrian because Uber chose to have the car NOT err on the side of braking due to too many false positives.
Everyone in the chain of command on this decision should be in prison.
Released stb_image_resize2.h.
Long-awaited major rewrite by Jeff Roberts. Old version in deprecated/stb_image_resize.h
Claimed 2-5x faster scalar, 4-12x faster w/SIMD.
Breaking API changes. Porting instructions included at top for simple API use case.
LRT: Most significant takeaway from "Marvel's Spider-Man: A Technical Postmortem":
The game's fictional Manhattan has 1202 alleyways for crime to happen in.
There are only 7 alleys in real-life lower Manhattan.
Classic bad advice: "I was successful, so everyone should do that I did."
I've seen many GDC talks where game companies who succeeded with their 1st game attribute that success to specific business or design choices they made, even though that conclusion is totally unjustified.
Criticisms of the code mostly fall in two camps: performance, and style.
Performance is irrelevant. It's written in the interpreted language Lua, it does multiple hash table lookups per if, but that doesn't matter, it runs once per frame, computers are fast.
I was unaware of this historical precedent for the extended assignment operators in C/C++. I don't know how much further it goes back; this calculator is from 1969.
It reminds me of a pattern I noticed in classic interactive fiction / text adventure development systems. In most adventure games, everything is bespoke; you don't have six hats that all have hat-ish behaviors.
I suppose I shouldn't just make this claim without clarification, & since _for now_ Twitter still lets me post more than 20 tweets in a day, I give you:
A History of 3D Computer Graphics Math Conventions and How They've Changed Over the Years
๐งตtotally unresearched, from memory
This of course reminds me of this wonderful chart (by Freya Holmer, seemingly).
(The bottom right corner is the correct one, although Z-up only matters in world space, not so much camera space, so APIs and modelling programs get a pass, leaving Unity as odd one out.)
new versions:
stb_image.h
stb_image_write.h
stb_vorbis.c
stb_truetype.h
stb_ds.h
stb_dxt.h
stb_textedit.h
stb_image_resize.h
stb_sprintf.h
stb_rect_pack.h
stb_divide.h
stb_tilemap_editor.h
stb.h
Addressed most github PRs/issues that were not enhancements
Enjoy hand-optimizing assembly language for fun? I've made a game for you.
HOVALAAG
Program a 12-bit VLIW computer to solve one of 13 problems. Use social media to compare the speed & size of your solutions to those of your friends.
stb_image 2.20
stb_image_write 1.10
stb_truetype.h: 1.20
stb_sprintf: 1.06
stb_rect_pack.h: 0.99
stb_vorbis: 1.15
stb_leakcheck: 0.5
stb_textedit.h: 1.13
stb.h: 2.32
and other minor changes. Last stb lib update was a year ago, 2018-02-11! Whoops!
I never talk about work, so here's this...
Back in 2019, at RAD, I was working on a new perceptual audio codec, roughly Vorbis quality/size trade-off, but designed for SIMD decode for optimal performance in games (that may play many sounds).
Finally shipped now in iOS Fortnite.
Protip:
In C, allocate arrays with malloc/calloc using sizeof() the variable, not the type:
foo *arr = malloc(num_arr * sizeof(arr[0]));
not
foo *arr = malloc(num_arr * sizeof(foo));
If you change the type of 'arr', the first is still correct, the second is wrong.
Balatro is a game with lots of unique playing card Jokers, each with its own ability. As a result, it has what I called "bespoke" code; each such unique joker need custom code to implement the unique behaviors for that joker.
I find hiding pointerness behind typedefs reduces clarity. But it was many years into my C programming career that I learned you didn't have to do
typedef void (*callbackType)(int x);
callbackType mycb;
but could instead:
typedef void (callbackType)(int x);
callbackType *mycb;
It is weird to me that people don't think "the user experience is worse in later OSes" is a legit reason for me to be running Windows 7, so I have to pretend I have some old software that only works in Win7 that forces me to use it to even get software devs to even talk.
Newest additions to Unicode have been announced!
U+1FAF8 FLYING SPAGHETTI MONSTER
U+1FAF9 THEY DON'T HAVE SKIM MILK, IS 1% OKAY
U+1FAFA GLORNPH
U+1FAFB HELP WE'RE TRAPPED IN A UNICODE STANDARDS COMMITTEE
What do "Shut them all down" and "Somebody set up us the bomb" have in common?
Idea by
@mcclure111
This chart doesn't even address the distinction between "get on it" and "get it on", or "take on me" vs "take me on".
Published stb_image 2.28, fixing several years of issues and merging several years of pull requests, work done by de-facto maintainer
@rygorous
(thanks!), all blame on me if anything breaks.
If graphics programmers made PC components, everything would be white instead of black.
But no, in this world you assemble PCs by screwing black screws to hold a black component against a black case, and everything is absorbing every photon of light so you can't see shit.
Now I've heard there was a simple cat
Who can't escape when cup's a hat
And closes doors that block where he wants into.
Pam's whiteboard tasks have gone too far.
The doorstop lost? Opines HR:
Dear baffled Jorts, no one will margarine you
Margarine you
Margarine you
@vandroidhelsing
I call upon the power of all my genius rhyming friends (and any of theirs) to now crank out a series of increasingly rambunctious songs beginning always with:
"I heard there was a...."
a/a/b/b/etc. rhymes only, please
@lizduffyadams
@Signs_of_Life
Bioshock Infinite: Liz's "Don't die on me, Booker"
Bioshock: Vita Chambers
System Shock 2: Quantum Bio-Reconstruction Machine
System Shock: Resurrection Room
Ultima Underworld: Silver Sapling
We don't think of diegetic respawning as a core element of this lineage, but...
Thread
NSA put backdoor in crypto standard (Dual EC DRBG) so they (but nobody else) could easily decrypt; pressured/paid companies to adopt. Hackers changed one company's product's source code, replaced NSA's constants with new ones so they could decrypt all traffic thru product
Posting this once in a while since it's generally forgotten/unknown: Looking Glass did an ECS (Entity Component System) in ~1997 (shipped 1998). But no real public writeup, so its influence on later ECS development was probably minimal.
For style, we have to focus on what it does. I talked about this tangentially in this other thread, but I didn't really tackle explaining why this makes sense head on in that thread, so I will here.
It reminds me of a pattern I noticed in classic interactive fiction / text adventure development systems. In most adventure games, everything is bespoke; you don't have six hats that all have hat-ish behaviors.
So:
1. performance of this code is fine
2. in general, grouping by behavior can be beneficial for heterogenous but relatively simple objects, so it's good style/structure here
3. if it works, fuck it, ship it
Speaking in general, not Balatro, this is a general pattern you see sometimes in games (and probably less so in other software!), lots of unique objects each with unique behaviors. (This is very common in text adventures, hence the other thread.)
Typically in this pattern,
This of course reminds me of this wonderful chart (by Freya Holmer, seemingly).
(The bottom right corner is the correct one, although Z-up only matters in world space, not so much camera space, so APIs and modelling programs get a pass, leaving Unity as odd one out.)
This, today, in response to some streamer claiming a dev is going to get blacklisted from the industry for saying they're not going to buy the game they worked on for ethical objections
Hell this industry can't agree on what "up" means you think we can coordinate a blacklist
@GoodOldBacHo
@jbensnyder
@ne0liberal
Because the idea is obviously impossible on its face. "Two years ago I was an academic researcher, but I was radicalized and am now a terrorist. How much has my face changed?"
@vectorpoem
In addition to the failure in 'computing resources' and 'information infrastructure', consider the obvious failure in open source itself (from the Bloomberg 'arctic vault' article going around):
TIL in Windows 7, if you type 'dir' in command shell in a directory with a file containing U+2013 EN DASH, when the command tries to output the filename it terminates, printing "The system cannot write to the specified device".
I didn't test to see what range of Unicode fails.
Yep, the last person to touch the mini-games file in System Shock 1 was me (at least through the original version control system). It's also the only file I touched in SS 1, as I only did minigames for it.
Buried lead: System Shock 1 source is on github.
Okay so this is wild.
I just got a call and voicemail from an attorney who is calling to complain about content in a video game that โhis son and his friends are playingโ (Conan Exiles) - Weird.
1/
New library for C programmers (not interesting for C++ programmers): extending the "stretchy_buffer" stb_arr API metaphor to HASH TABLES. Based on idea by
@pervognsen
Preview release, has done lots of testing and tuning but may still have bugs!
@bnoob_
I think because the tone I took in my final reply (which wasn't the point of the tweet anyway, I just included it for fun) is a counter-productive tone to take as it is likely to annoy maintainers & make them choose not to do anything.
Of course I knew that and did it anyway.
Me, reading the JSON specification, and finding out that what is AFAICT essentially the most-used text-based serialization format intended for generation BY SOFTWARE does not technically allow trailing commas in arrays and objects:
TFW the compute shader that took 3-4ms/frame two days ago (w/video proof!) now takes 10-12 ms, & you haven't really changed anything, so you check out an old version and it's also 10-12 ms, and you reboot your computer, still 10-12 ms, and you haven't updated drivers or anything.
I remain miffed that I spent all the 90s typefing an int32 instead of assuming that int was 32-bits, because that was good practice, and then when we went 64-bits, we ended up with the convention that ints were staying 32 bits, largely because too much int-using code would break.
Protip: on Windows browsers, alt-drag link text to select without clicking link
Protip: In text editors, press 'undo' then 'redo' to move cursor to location of last edit.
Protip: make C function signatures w/o pointer:
typedef int foo(int bar);
void myfunc(foo *callback);
New library: stb_hexwave.h
A new kind of audio synthesis. It's not subtractive, it's not additive, it's not FM synthesis. If I have to name it: line segment synthesis?
Band-limited (anti-aliased) w/ BLEP & BLAMP. On my github as always.
Audio demo:
AFAICT this is basically just "sandbox Facebook from everything else", so then the question becomes: when do we get the browser that just sandboxes everything from everything else?
This is genius: Leaving Facebook isn't an option for everyone, so Firefox's new Facebook Container Extension lets you continue using Facebook, but quarantines your identity into a container that third-party cookies and trackers can't touch.
Since 33 mutuals of mine follow Rich Geldreich, I should point out that as far as I can tell, he's just making stuff up about RAD and pretending it's magical insider knowledge, so I wouldn't trust his discussion of ANY company or its internals.
Despite RAD having already explained to
@richgel999
that they've never been bailed out, he continues to claim RAD was bailed out. What bailout? When did this happen? Who bailed them out? It's nonsense. It is extremely irresponsible to blatantly lie repeatedly to 12k+ followers.