We used deterministic game play to implement multiplayer on the GB Color port of Vigilante 8.
The GBC Link Cable would pass 1 byte in each direction at the same time. It's a pair of shift registers filling each other up across the cable.
The game was locked to the GBC's frame rate. There was a lot work to update the screen that had to happen in each (effectively) V-Blank and if it was missed the smooth scrolling stuttered.
At multiplayer startup we passed our seed. To run it looked like this:
On frame A it reads the controls, and packs them into a byte and puts that in the transfer buffer. The transfer occurs while it renders frame B. At the start of frame C it has the local controls encoded in the byte sent on frame A and it has the other side's controls in the byte received in frame B.
It applies the controls to the game state and renders frame C. Local and remote controls are applied with one frame delay.
There was no frame delay of the controls for local play so if you ever lost in multi-player feel free to blame lag and me specifically if you need to.
I just bought this cart a few weeks ago (love the old GBC rumble carts!) and I was impressed that it had link-cable multiplayer. It's a really good game!
Thank you for the technical note on the multiplayer implementation -- that's really cool!
But also misinterpretations of what the history is. As I write this there's someone laughing at an image of black people in Scotland in the 1800s[1].
Sure, there's a discussion that can be had about a generic request generating an image of a black Nazi. The thing is, to me, complaining about a historically correct example is a good argument for why this kind of thing can be important.
"It’s often assumed that African people arrived in Scotland in the 18th century, or even later. But in fact Africans were resident in Scotland much earlier, and in the early 16th century they were high-status members of the royal retinue."
an article about a small number of royally-associated africans in soctland in the 16th century does not justify an image generating AI producing large numbers of black people in pictures of scottish people in the 16th century.
The Scotland link in the grandparent post is to a picture of 2 people, 1 white, 1 black. 1 is not large numbers.
Look, Gemini is clearly doing some weird stuff. But going all "look what crazy thing it did" for this specific image is bullshit. Maybe it's a misunderstanding of Scotland in specific and the prevalence of black people in history in general, in which case in needs to be gently corrected.
The argument I think you're making is "0.0001% of scottish people in the 16th century were black, so it's not realistic to criticize google if it produces historical images of scottish people where >25% of the individuals are black".
If you take the totality of examples given (beyond the scottish one), it's clear there's nothing specific about scotland here, the problem is systemic, and centered around class and race specifically. It feels to me- consistent with what many others have expressed- that Google specifically is applying query rewrites or other mechanisms to generate diversity where it historically did not exist, with a specific intent. That's why they shut down image generation a day after launching.
"Stochastic terrorism" is just an excuse to crack down on free speech by conflating harsh criticism with violence because deranged idiots exist who might take any criticism of anybody as divine inspiration to commit crimes.
The standard for free speech in America is that if you're not calling for imminent and specific violence, then you're in the clear. The stochastic in stochastic terrorism does away with both the imminence and specificity; with a large enough population you'll have enough nuts that some of them may take even the most mellow criticism as a call to action.
> The standard for free speech in America is that if you're not calling for imminent and specific violence, then you're in the clear.
Legally, yes. Socially? That's never been the standard. There is no principle in the US that says everybody has to be cool with anything people say short of calling for imminent violence.
Calling something stochastic terrorism is speech... by your own logic, shouldn't you be defending their free-speech rights to use the term stochastic terrorism?
You say "crack down" but it's just an online comment here, which should be protected, right?
Free speech doesn't imply not being questioned or corrected, but I understand that some have that impression in these times. But that is exactly what free speech is, you speak, someone replies, you may have more to say, and so it goes.
"Die slow" or "I hope you die" are not threats. It's unconstructive venting.
> Free speech doesn't imply not being questioned or corrected
Right. That's why the post I responded to shouldn't object to calling this "stochastic terrorism" on the basis of free speech. In the immediate discussion the argument is inherently self-contradictory.
It also muddies the meaning of free-speech from a profound principle to a cheap argument to club people with online when they criticize something in a way you disagree with.
> ...not trying to prevent the use of the term. I don't even understand how it's not obvious.
The post says it's just an excuse to crack down on free speech, suggesting that it has no validity as an actual idea, that the term itself is invalid. Arguing that a term is always wrong is surely an attempt to prevent the use of that term.
What's more important to free speech.., that people can use the term "stochastic terrorism" to describe a tweet where they think it fits, or that people should not have to be subjected to having their tweets called "stochastic terrorism"?
To me, it's pretty clear: if you're trying to police language, you shouldn't be using free speech as the justification for that.
As far as criticism goes, it takes some creative effort to get much harsher than that. It is far beyond constructive criticism; the target is asserted to be far past salvaging so the only good thing that could happen to them is a bad death.
I guess maybe you think it isn't criticism at all because it's not constructive criticism. But it's certainly criticism, no reasonable person could construe it as anything less than critical. And because it falls short of a specific and imminent threat, it's legal political speech.
Stochastic terrorism is such a dangerous and nebulous concept. It itself can be considered stochastic terrorism. People become afraid of stochastic terrorism and start to terrorize people whom they don't like. Or can't we say that Garry Tan wrote his tweet only because of what the politicians had done? Aren't they also stochastic terrorists if he is?
You have a fundamental misunderstanding of the concept. It's not nebulous at all, it in fact describes a very specific approach, to the point that it might as well be a playbook.
Part 1 is a radicalization chain, where you have several layers of public figures with varying levels of public-facing support for your cause, who guide people down the chain by platforming people with more extreme public-facing views. So maybe a talk show host who mostly just points out obvious problems in our society, who occasionally brings on guest speakers who have slightly more specific framings, who themselves occasionally publicly support YouTube channels that pitch potential solutions.
Part 2 is consensus building. As people trickle down the radicalization chain, it's important to introduce them to new social spaces that present your ideas as obvious truths. This normalizes your radical ideas in the minds of your newly radicalized cohort. Casual "joking but not joking" comments are a basic staple of this, with guillotine memes and blackpill posting and Boogaloo jokes all serving to make the appearance to their community that their extreme views are normal, acceptable, and widely held.
Part 3 (which is somewhat optional) is targeting. Some prominent figure (likely one of those public figures on your radicalization chain) paints a far less vague target than usual: casually calling for people to kill all landlords is one thing, mentioning one specific landlord is a clear escalation from that. Ideally this is done without making any incriminating statements, which at least in the US is easy: as long as your don't make a specific plan, it's typically considered protected speech.
Part 4 is, to borrow some specifically leftist terminology, "propaganda of the deed", "direct action", or just "terrorism". With a sufficiently large pool of radicalized individuals, you'll have people all across the radicalization and "unhingedness" spectra. The "extremely radicalized, completely unhinged" corner is where you find your martyrs, freedom fighters, etc. They hear the targeting speech from part 3, and decide to take it upon themselves to do something about it. They commit some act of violence, and probably end up facing some extreme consequences for it, whether that means death, imprisonment, etc. Then, your entire movement needs to achieve 2 things: outwardly distance themselves from the "lone wolf" to avoid unwanted scrutiny or consequences, while privately lionizing them as someone who "did what needed to be done" in order to encourage the next one.
The elegant thing about all this is that what it lacks in cohesion, it makes up for in robustness. Since it's not a rigidly fixed organization, individual parts can take a fall without crippling the effectiveness of the whole. One lone wolf doesn't incriminate any other members, except maybe the person who announced the target, if they were sloppy about how they worded it. And if someone along your radicalization chain loses their seat in the public eye for whatever reason, you have plenty of redundancy to fill the gap, and they can probably find a comfortable position somewhere further along the chain once things cool off a bit.
Playing whack-a-mole with the people with enough prominence to plausibly select targets is probably the most legally justifiable way of suppressing a standalone complex like this. Most people along the chain, both participants and consumers, are pretty clearly practicing free speech and assembly. They make perfectly legitimate targets for rival radical movements, but the State needs to uphold basic human rights, so it takes a more precise approach. Focusing on the shotcallers, it's easier (not necessarily easy) to get creative with what constitutes a non-protected "true threat", rather than crack down on civil liberties as a whole.
What you describe is just politics with some violence involved. If you replace “terrorism” with “voting at elections”, you basically describe every electoral movement whatsoever. Calling that “stochastic whatever” seems like pseudo-intellectualism for people who get impressed by math words.
The term stochastic terrorism (as it is used in literature, as far as I know, eg in “The Age of Lone Wolf Terrorism”) is simpler. It means that someone sends a message into mass media with an intention to motivate someone to commit an act of terror. That’s all. The intention part quickly got buried by the users of the term, at least on the Internet (what’s the difference if the outcome is the same, amiright?), so now it just means any mean tweet that can motivate a random nut job to do something crazy, as is demonstrated by the comment I replied to.
The radicalized pool is important in the context. If I, Joe-Blow Nobody send out a tweet saying "Bob from accounting is a dick, somebody should deal with that", there's no real threat there. By far the most likely person to do anything about that is me, and if I don't, it's basically a guarantee that nobody will.
If instead, I'm a respected member of a political movement with a pool of radicals, and my target is a rival to my political movement, and I target the radicalized members of my political movement with a call for violence by relying on the movement's normalized justifications for violence, then there is a much, much greater chance of someone rising to the call.
Yeah, he merely quoted a diss track that famously escalated a previous grudge to murder. Who could ascribe anything but jovial intent to that? Why should somebody as famous as Gary Tan expect to have unhinged followers who could be inspired to act?
Seems like he was hoping to get his twitter followers to harass them in a manner similar to the way he did -- otherwise why tweet it?
Probably receiving death threats causes a lot of real anxiety (not just the PC snowflake kind). That's a lot better than an actual assassination, but it's not nothing either.
In response to top of thread, retinal detachment does usually start with new floaters.
My first floater came with an unusually timed cluster headache ( like a migraine but usually with predictable timing ) so I had accompanying visual auras. Because I didn’t recognize it as a cluster I described it to the on call eye doc as new floaters and sparkles. That got me an emergency trip to optical ER and a slightly disappointed surgeon.
I intentionally start searches on Bing and have it set as default. But half of the time that I type anything to it it's because the browser didn't autocomplete like I expected.
So when I do want to see goggles results for the same thing I type "google", and a lot of the time the browser doesn't autocomplete to google.com before I hit return. So whoops, I just searched for "google".
> So how can we handle this case safely? There are a few ways I can think of.
strdup:
> The strdup() function returns a pointer to a new string which is a duplicate of the string s. Memory for the new string is obtained with malloc(3), and can be freed with free(3).
The GBC Link Cable would pass 1 byte in each direction at the same time. It's a pair of shift registers filling each other up across the cable.
The game was locked to the GBC's frame rate. There was a lot work to update the screen that had to happen in each (effectively) V-Blank and if it was missed the smooth scrolling stuttered.
At multiplayer startup we passed our seed. To run it looked like this:
On frame A it reads the controls, and packs them into a byte and puts that in the transfer buffer. The transfer occurs while it renders frame B. At the start of frame C it has the local controls encoded in the byte sent on frame A and it has the other side's controls in the byte received in frame B.
It applies the controls to the game state and renders frame C. Local and remote controls are applied with one frame delay.
There was no frame delay of the controls for local play so if you ever lost in multi-player feel free to blame lag and me specifically if you need to.