Fugue Devlog 4: Dialogue System Improvements

04.09.2021 19:32

Not a lot of coding today, but a lot more work on the dialogue system. Sketching the manager render sequence out, figuring out the speaker tracking, dialog box placement, etc.

Sketch of the ambient dialogue system

Dialogue system notes

More dialogue system notes

I’ve tried to think through all possible cases but surely some have been overlooked. I just hope that none are serious enough to require a complete restructuring. There are so many cases to consider, but a few that are trickier include:

  • Should multiple on-screen decisions be allowed? If so, how do players select between decisions? Right now I’m thinking that only one decision be allowed, but don’t know of a robust way of enforcing that constraint in the dialogue editor validator.
  • Should time stop/player movement be locked while in dialogue? I like the idea of being able to move around, break off from conversations, etc. Makes it feel more lively. But it adds in complications of pausing and resuming dialogue. And fixing the player in place while in a conversation feels like a reasonably “real” constraint to have.
    • That being said, pausing and resuming is necessary for ambient conversations. For example, two people having a conversation, then pausing to address the player when they get close enough (e.g. “Can I help you?”), and resuming their conversation once the player leaves their vicinity. This is part of a broader question of whether or not the ambient dialogue system should be distinct from the “player” dialogue system. Ideally they are one and the same, and the player’s involvement is a special case (e.g. time stops/player movement stops only if an active script includes the player as a speaker; dialogue always auto-advances/times out if the player isn’t involved, etc).
  • How should dialogue progression be handled? There are a lot of potentially conflicting cases here. In general there are three ways a statement can advance: the player hits the next dialogue input, the player selects a choice (if the statement is a decision), or the statement times out (if it has a timeout specified). This is straightforward if there’s one statement on-screen. But if there are multiple, as with simultaneous dialogue, then what? If some statements have timeouts and some don’t, does pressing the next dialogue input advance them all? Or do they wait for the timeouts to finish? There isn’t really a clear answer here. I may just have to pick something and be ready to change it as the rest of the game develops.

This last point is kind of the case with the dialogue system more broadly. I won’t really know how well any of this works until I implement it and start working through test cases.

I did get a very basic version of the speaker tracking implemented, was pretty straightforward to do in Godot. Basically I calculate the full bounding box (“AABB”) of a spatial node and use that to determine its center x coordinate and maximum y coordinate. Then unproject that point to the camera/screen space. It will get more complicated with multiple speakers and potentially overlapping dialogue boxes, though I think I have a decent solution to that in the sketches above.

Basic speaker tracking

Blender scripting

I also learned a bit of Blender scripting (which uses Python). Most people I know who do a lot of 3d modeling use Rhino/Grasshopper, and I’ve seen a lot of really amazing work done with scripting in that tool. It looks like Blender is just as capable, which is cool.

I made a big button for quickly exporting the current file to my Godot model folder. Normally I have to go to the export dialogue, navigate to the appropriate folder, then save. Navigating through folders is slow…it’s a small thing but smoothes out the workflow a lot.

Big quick export button in Blender

I’m also really impressed by the environment Blender provides for scripting. It has a console for trying things out and logs every interaction you have with the UI so that you can easily figure out what functions do what. There are also several templates provided that make it easy to quick prototype an idea.

Blender scripting environment

Log: 4/9/2021

04.09.2021 12:00
log

This week: Alternative RPG systems, race and anime, heavy bike cargo, farmland consolidation and ESG.

Alternative RPG systems

A comment on a thread about an upcoming tabletop RPG called Coyote & Crow led to me to look at a couple alternative tabletop RPG systems to D&D. The only other system I’d read anything about was the one for Cyberpunk 2020 which iirc isn’t all that much different from D&D.

Anyway, that’s not really what the linked thread is about. The commenter points that D&D and similar games usually encourage violent or other morally-compromising “solutions” to problems that come up. Having played a bit now, yes, violence, whether intentional or not, is the outcome of most scenarios in D&D. The mechanics probably do encourage it but that may also just be part of the fun of role-playing. The commenter points to some other rule systems that are designed to encourage other approaches to problem-solving (this is the context of solarpunk; cheating and murdering people is decidedly not solarpunk).

I looked at two of the mentioned games: ORBITAL and Ryuutama.

ORBITAL has a lot of interesting elements. It uses a system called “No Dice, No Masters”, originally from Dream Askew. Instead of dice, players earn tokens by doing things and they can spend those tokens to take certain actions, and everyone acts as game master collectively. The way the game structures scenarios is also very clear and helpful. Characters aren’t built around particular combat proficiencies like in D&D. It doesn’t even look like there’s a combat system.

Ryuutama basic system is much closer to D&D (dice-based skill checks) but also has a less clear delineation between game master and player. While there is combat, players gain experience through travelling long distances (their site says it’s sometimes called “Hayao Miyazaki’s Oregon Trail”), and the magic system has a greater focus on weird utility spells (e.g. “turn any biological matter into a bottle of jam”), which are way more interesting than combat-focused spells. Classes are also more along the lines of “farmer” and “merchant” rather than around combat roles.

Mechanics that don’t rely on indiscriminate violence are something I’m thinking a lot about while developing Fugue. A handy term is here “ludonarrative dissonance” which describes the inconsistency between the game’s narrative (you’re a hero doing good things, or whatever) and the mechanics (but you’re going around murdering hundreds if not thousands of people). I’m still on the fence about including combat in the game. Even if combat is a part of the game, only one or two characters will have any combat proficiency.

For what it’s worth the D&D campaign I’m in is successfully minimal on combat! It’s all the better for it.

An aside on dice systems: I’ve always found dice-based games and general randomness in games interesting. True randomness doesn’t vibe well and paradoxically feels unfair, so game designers often tweak true randomness to align more with our poorly-attuned perception of randomness. If you sit someone down and tell you to write out a random sequence of heads and tails, people will under-represent streaks of heads or tails. Our vulgar understanding of randomness is some like “having no pattern” but in an independent random sequence like coin flips a streak is just as likely as any other combination of flips (though, depending on length, may be rare among all sequences of flips).

Anime character design

Among anime enthusiasts I probably only rank as a “casual” consumer of anime, but I’ve always wondered why anime characters look so “Western”. I only recently learned of the term “mukokuseki”, which translates to “without nationality”, and at the time the hand-wavy answer I got was more or less “well they look Japanese to Japanese people”. Clearly there’s a lot more going on, and anime is generally terrible when it comes to issues of race. I have no doubt that this has been thoroughly explored in academia. But I haven’t ever really encountered discussion of the topic “in the wild”, but again I’m not very plugged into internet anime spheres. The most only recent memory I have of the topic is reading comments around The Last Airbender live-action adaptation, with many people arguing that Aang is white. That just feels wrong, but I don’t know if the show runners ever came out with an official statement on that. One of the many, many disappointments of The Legend of Korra is that Aang’s descendants are more heavily coded white in their features, so maybe that more or less communicates the show runners’ stance on it.

This topic came back to mind after coming across this post on the topic while looking for Satoshi Kon character design images. The post points a bit more to how big the iceberg really is, but still doesn’t go into much depth.

The TV Tropes entry on mukokuseki has this to say:

Japanese propaganda art during Imperial Japan’s military aggression towards China and Korea is notable for featuring Japanese people looking more “European” with their larger eyes and white skin in contrast to the Chinese and Koreans, who were depicted with smaller eyes and stereotypical yellow skin (which is not a real East Asian trait). This artistic racialization was done by the Japanese to distance themselves from the rest of the Asian continent, particularly other East Asians, whom they viewed as inferior to them, and to put themselves on the same level as the West (white people) even though Japanese people obviously bore more cultural and physical similarities to neighbouring East Asian nations than, say, the French.

Carry Shit Olympics

I love biking with cargo. I’ve never had a trailer or one of those bikes with the platform on it (I do have a small rear basket though) so I’m usually jury-rigging milkcrates and strapping tons of stuff to my backpack (and/or wearing a front backpack). I had to move out of two studios last summer this way (though for one of the moves I did borrow a truck for the bigger furniture pieces). Anyway this is an IG filled with images of people hauling cargo on bikes. It looks like these are mostly from North America or Europe because tbh this is kind of nothing compared to the cargo you see in China, such as cooking stalls and gravity-defying loads on 三轮车 (sānlúnchē; Kira and Crystal had a cupcake stand on one). But some are still pretty impressive. I’d love to get one of those cargo bicycles one day and haul stuff for people.

三轮车 (sānlúnchē)

Bill Gates is the biggest private owner of farmland in the United States. Why?, Nick Estes

There was a moment of a lot of attention on “land grabs”; basically foreign private companies buying up large swathes of land throughout the world for speculative purposes (land being one of the fundamental resources and in fixed supply), for export-oriented industrial agriculture (increasingly seen as a good investment beyond the land itself, driven primarily by pension funds–people will always need to eat), for food security (e.g. countries with wealth but little arable land). Many of the projects on the purchased land puttered out. A report by GRAIN in 2016, “The global farmland grab in 2016: how big, how bad?”, reflects on that moment. We can throw climate change into that mix for probably two reasons:

  • Climate change will probably exacerbate productivity differences across land, making land that remains productive through those changes even more valuable.
  • On the “green capitalism” front, if services like carbon sequestration become profitable (e.g. through government subsidies or mandates requiring companies purchase offsets), many of the sequestration options have big land requirements (re/afforestation and carbon sequestering agriculture).

Rich people owning a lot of land isn’t really new, but Bill Gates is trying to spin it off as something socially beneficial. That also isn’t necessarily new (e.g. land dispossession because people weren’t using the land well/correctly or whatever) but this is a strong indication of where greenwashing is headed.

From the piece:

Investment firms are making the argument farmlands will meet “carbon-neutral” targets for sustainable investment portfolios while anticipating an increase of agricultural productivity and revenue.

ESG has gained a lot of popularity over the past couple years, basically the idea that you invest keeping environmental and social impacts in mind. The “governance” aspect of ESG is, as far as I know, already a part of most investment analysis. It’s not quite the same as ethical investing (which excludes entire categories of investments, e.g. weapons manufacturers) or impact investing (which invests with particular outcomes in mind). My understanding of ESG is that it’s a risk-based framework: for example, on the environmental front a company may be exposed to a lot of risk if they are heavy polluters and it’s likely that some strong pollution regulation is coming down the pipeline. They’d bear a high cost in fines or purchasing new equipment/changing their processes to meet the new pollution limits.

As far as I know most of the risk in ESG is regulatory, at least if you only consider it in the typical 5 year or less time horizons that analysts usually do. Some might be cultural, e.g. if a company does something racist that goes viral, but I have a feeling that doesn’t affect their bottom line that much (the people who make purchasing decisions on that basis are probably a much smaller fraction of a major company’s overall market than we’d like to believe). The more important externalities like climate change take a much longer time to play out. If it’s true that ESG risk is mostly regulatory, then ESG is really only as risky as the political environment the company operates in. And companies already take great measures to minimize political/regulatory risk.

The other way ESG goes is with this kind of greenwashed investing that’s pointed out in the piece. Regulatory risk is one side of ESG, the other is regulatory opportunity. As I mentioned above, things like subsidies for carbon sequestration or carbon offset mandates. Out of those two sides, this is of course the better one, but it still treats climate change as only a technical problem i.e. a matter of carbon accounting.



Fugue Devlog 3: Dialogue Editor and Manager

04.07.2021 20:09

Dialogue is a key part to Fugue, so I’m taking care to design those systems well from the start. The challenge is trying to imagine all the potential scenarios I might want to play out with the dialogue system beforehand. I’m probably going to get it wrong but I tried my best to design for maximum flexibility/minimum regret.

There are three main pieces that go into the system:

  • The schema: how is the data that describes a dialogue/conversation encounter (a “script”) structured?
  • The editor: if I’m going to be writing and tweaking a lot of these scripts, I need a tool that’s robust, quick, and intuitive.
  • The manager: the system that handles running scripts in the game, e.g. figuring out where/how to render the text, handle choice selection, etc.

But first, what features am I looking for in a dialogue system?

  • Branching and dynamic dialogue: choices in dialogue and factors outside that specific encounter influence the course of a conversation.
    • Choices that depend on other variables (either hidden or shown but not selectable until the criteria is met)
    • Variable substitution
    • Pick up at different points depending on previous conversations
    • Circular conversations (e.g. that let you return to a menu of questions to ask someone)
    • Time-limited decisions, especially because managing time will be an important part of the game
  • Rich formatting: colors, bold, italic, and whatever else I can get
  • Entity agnostic: Conversations can be had with both objects and NPCs (without needing to classify objects as NPCs or anything hacky like that)
  • Flexible in triggering: A conversation can be triggered by player choice (e.g. approaching an object/NPC and interacting), by entering the proximity of something, or after some other action is taken
  • Integrate into broader scenes: triggering other actions/animations and events, capture the cadence and rhythm of a conversation with pauses (delays and timeouts) and by revealing the text over time (the “typing” effect)
  • Feels well integrated into the surrounding ambient environment: less “we are locked into having a conversation now”
  • Handle multiple simultaneous speakers: For example, to convey the feeling of everyone talking over each other in a large group

In terms of developing the game and editing dialogue, there are a couple other quality-of-life features, like making it easy to attach a script to an object, NPC, or trigger area and supporting validation/tests to minimize bugs.

The script schema

This is the schema that’s currently in place.

A dialogue script has two top-level keys:

  • root: The root note that determines how the dialogue starts. It’s just an array of “Outcomes” (see below)
  • events: An array of “Events”, which are the basic unit of a dialogue script. This is a flat array, though represents and is parsed into a graph.

An “Event” has the following structure:

  • id: Used to keep track of event relationships. Only needs to be unique to its parent dialogue.
  • type: There are two types of Events:
    • thought: An internal dialogue statement, italicized, and has no associated speaker
    • verse: A spoken dialogue statement, spoken by a speaker
  • text: The actual statement that’s shown. Can use BBCode, which means colors and other styles can be applied.
  • speaker: An optional speaker name to show with the rendered text.
  • delay: Optional delay in seconds before the next event is rendered. For pacing a conversation.
  • timeout: Optional timeout in seconds the player has to make a choice or to auto-progress the dialogue. If there are choices, letting the time run out is a “null” choice.
  • signal: Optional signal name (signals are Godot’s way of having nodes communicate with each other without direct references) to emit when this event starts. This can be used to trigger things like other actions/animations in the environment (I think, I haven’t tested it yet).
  • outcomes: An array of “Outcomes”. An Outcome is a link to another Event, with zero or more conditions attached to it.
    • The order of the array matters. Outcomes have their conditions evaluated in the array order; the first to evaluate to true (or to have no conditions) is selected as the next Event.
    • An Outcome with no conditions is the “default” Outcome; there can be only one.
    • An Outcome has:
      • ids: The next events to load if this Outcome is selected. Something I’m thinking through now is whether this should only be a single id or multiple ids (the current implementation); the relevance is for the simultaneous speakers feature. Not sure how to do that yet without making the progression of the conversation hard to anticipate.
      • conditions: An array of Conditions that must evaluate to true for the Outcome to be selected
  • choices: An array of “Choices”. When selected a Choice sets a local variable called choice; Outcomes can condition on this variable (i.e. a Choice can lead to a specific Outcome but more complex behaviors are also supported). A choice consists of:
    • id: This is what the choice variable is set to if the Choice is selected
    • required: An array of Conditions that have to be satisfied for this Choice to be selectable
    • show_required: An array of Conditions that have to be satisfied for this Choice to be visible (e.g. for secret choices)
    • text: The text displayed for the Choice. Supports BBCode, so colors and other styles can be applied.

The other piece are Conditions, which have the following recursive schema broken into two types:

  • Comparison:
    • variable: The variable name for the left side of the comparison
    • value: The value or variable name for the right side of the comparison
    • type: Indicates if value is a “value” or a “variable”
    • comparator: One of ==, !=, <, <=, >, >=, for comparing the left and right sides
  • JointComparison:
    • op: An and or or operation
    • a: A Condition
    • b: Another Condition

Thus JointComparisons can contain more JointComparisons and so on.

The dialogue editor

I shouldn’t be editing dialogue scripts by hand but through an editor that keeps things valid where possible. This is implemented as a “main screen” EditorPlugin for Godot using its built-in GraphEdit node and other UI elements. I was surprised at how much can be done with just the built-in components, though it was a struggle at times. I learned a lot in the process but some of Godot’s UI behavior is unusual coming from frontend web development.

The dialogue editor

An additional feature is a validator. It runs through the script and identifies common errors, checking that:

  • In the script root:
    • There’s one default entrypoint. That is, the script has to have some default starting event.
    • Each entrypoint is connected to an event.
    • Each entrypoint eventually leads to a terminal event (i.e. no conversations that loop forever).
  • For all Conditions:
    • All values and variables are defined.
    • All variables reference existing global state variables or choice.
  • For each Event:
    • The text is not empty.
    • Must have a parent (which can be the root).
    • Each Outcome must be connected to another event.
    • Has one default Outcome.
    • Has one default Choice, if it has any Choices.

There are some other small quality-of-life features, like highlighting all events a given event is connected to. The editor will also automatically layout nodes, but it’s not very good at the moment. It also gets very dense, very quickly given how many properties there are for an events. I want to figure out how to make that representation more compact and support faster free-flow writing.

The dialogue manager

The dialogue manager is what reads a dialogue script and plays it out in-game. So it needs to render and position the text, render the choices and handle their interactions, etc. So far it’s relatively simple (if the schema does its job well, the dialogue manager shouldn’t have to do much). But it will probably get more complicated with more advanced features like speaker position tracking, simultaneous dialogue, and ambient dialogue.

An example script played out by the dialogue manager

I won’t have any voice acting (bad voice acting is worse than no voice acting!) but I want the talking that does happen to still feel like ambient sound and conversation. This video on game design that accommodates for deaf people or people with hearing difficulties mentions sound cue indicators that can be enabled in Fortnite:

Sound cue indicators in
, from “Making Games Better for the Deaf and Hard of Hearing” by Game Maker’s Toolkit

Sound cues won’t be important in Fugue, but maybe something like this can give a sense of ambient snippets of conversation happening around you. In general I want conversations to feel less like you’re fixed in a place with a big block of text at the bottom of the screen and more weaved into the environment, which I think this helps with.

I need to implement and experiment with this kind of approach. It might get way too cluttered or be otherwise overwhelming. One way I could approach that is not showing snippets of speech as the visual cue except when you’re close enough where you’d be able to make out what they’re saying. At further distances I could group further conversations away into a more abstract representation of speech happening off-screen.

Next steps

Working out and implementing the rest of the dialogue system is enough to keep me occupied for awhile. Figuring out the ambient dialogue system, a better way to do simultaneous dialogue, and dynamically positioning dialogue boxes based on the speaker position are the next challenges. Then testing everything, fixing any issues, and feeling confident in its robustness and expressiveness.

After that, I want to try building an exterior environment and work on player movement/scene transitions.

Bigger tasks off the top of my head: an inventory system and building out more object interaction, then thinking through some of the more specialized systems. Right now that includes: a card game, a legal system, and character ability puzzles. But what of those remain and what they ultimately need to do depends on figuring out the rest of the world and story in more detail.


Fugue Devlog 2: Interior Environments and Interaction

04.04.2021 18:09

A lot of progress this weekend. I put together some larger objects, such as this pharmacy cabinet:

Chinese pharmacy cabinet model

And built out an interior test environment to figure out the built-in physics system (mainly collisions) and develop player movement/control and object interaction. Not sure if I have the best practices down there (e.g. the walls are separate planes, when I should maybe use an inverted cube. But I’m happy with out it turned out:

Interior test environment

The player movement and control still need a lot of tweaking. I’m not sure of the best relationship between the player direction and camera direction…this is easier to figure out on console because you have joysticks to control each separately, but not so clear on PCs.

The object interaction using raycasting (key for object interaction/talking to NPCs) was very straightforward, as was object proximity detection (for triggering events when you come near something, for example).

Highlighting focused object with raycasting

In general I’m getting more familiar with Godot and the workflow with Blender. So far I’m really enjoying Godot; a few small snags here and there but overall it’s been intuitive and powerful. I haven’t yet felt like I needed to do any clunky or hacky; there’s always been a clean solution.

I originally anticipated using Rust as the foundation for the game (was looking at bevy originally as the framework for the game). I even set up an integration between Godot and Rust (using godot-rust). But I’ve found GDScript to be really nice, and probably performs well enough for my needs. The game logic is straightforward; any bottlenecks would probably come from graphics/rendering/etc which the scripting language wouldn’t help much with. Anyways, I’m using relatively small textures and simple models, so I’m not worried about that.

I’m currently sketching out the dialogue system. There are many different scenarios that it needs to handle; I’m hoping to design it so that it basically can run “cutscenes” (really just sequences of dialogue, animations, audio cues, etc) in addition to a more conventional choice-driven system. So I’m taking care to design a system and schema for representing dialogue scripts that will avoid painful re-writes in the future.

Simple example of a “thought” dialogue

I’m using one of my favorite bitmap fonts here, UW ttyp0. Unfortunately it doesn’t get much bigger than this, so I’ll eventually need to find an alternative.


Log: 4/2/2021

04.02.2021 12:00
log

This week: Rick Roderick, the reconfiguration thesis, p2p and the far right, poorly drawn bicycles, bardcore, We Will Always Love You, and World of Horror.

Self Under Siege, Rick Roderick

@Rick Roderick on Baudrillard - Fatal Strategies

I re-visited this series of Rick Roderick’s lectures that were very formative for me. He has two other lecture series, “Nietzsche and the Post-Modern Condition” and “Philosophy and Human Values”, both of which were good (so far as I remember), but “Self Under Siege” is the one that stuck with me the most. It’s a compact but very accessible introduction to critical theory mixed in with musings on 90’s American politics and pop culture. The name series refers to the various ways the “self” is under attack: people losing their sense of self, the increasing control of bodies and minds through more and more insidious and powerful structures, the devaluing of human life (of oneself and of others), and so on. Older ideas of dystopia start to look quaint (“Orwell’s vision of a horrible future…a boot stamping on a human face forever, is a utopian image because he assumed there would be resistance and human faces”) as oppression and control grow ever more diffuse, invisible, and sophisticated. As depressing and discouraging as that is, Roderick usually tries to point towards something better throughout the lectures.

Roderick is unashamed in (and has a talent for) presenting concepts in a very clear, forgiving, and not morbidly serious way, though he never makes light of the topics. He speaks with a consciousness about the tropes and idiosyncrasies in how philosophy is developed and how philosophers behave; that philosophers themselves engage in all sorts of socially-contingent behaviors (writing a particular way, valuing certain kinds of arguments, ignoring certain people and traditions, etc) that muddle what they talk about and how they talk about it. And he always relates everything back to what he feels is the project of philosophy: human liberation. I wish more philosophy (or anything, really) was taught this way. Sadly he passed away relatively young in 2002. I would have loved to hear more of his lectures.

It’d be interesting to see an updated lecture series modeled off of “Self Under Siege” for today. I wonder how different it would be. There’s the internet of course, and many other developments, but it feels as though we’re still basically on the same trajectory that he and the philosophers he discusses laid out decades ago. The reason I revisited the lectures is because I’m reading Achille Mbembe’s Out of the Dark Night, and in the first part he reviews a lot of these recent developments–e.g. biosciences/biotechnology, neuroscience, expansion of the internet and ICTs, ecological/climate crisis, etc–and their causes, dynamics, and implications. It’s kind of like a compact version of what I imagine an updated “Self Under Siege” lecture series would be like, now that I think about it (at least in terms of topic coverage). Nothing sounded fundamentally different than what I remembered from those lectures, just dialed up 100 times. But maybe there’s some nuance there that I’m missing.

While revisiting those lectures I came across this interview with Roderick that I hadn’t seen before. He goes into more of his background growing up in West Texas, his understanding of critical theory, social change, and the labor movements of the time, and how he thinks about teaching (“Don’t leave my class saying ‘strike out against all authority’, based upon the authority of Rick Roderick. This is paradoxical. Find your own form of struggle, questioning, of living more fully”), among other things.

The Reconfiguration Thesis

A question that comes up again and again is the extent to which capitalist technologies and infrastructure can be used against or separate from capitalism itself. This falls under the umbrella of a more general question explored through writing like Langdon Winner’s “Do Artifacts Have Politics?” and expressed through quotes like Audrey Lorde’s “the master’s tools will never dismantle the master’s house”1. Working with computer technologies and adjacent to the tech industry exposes me to this question all the time, especially through positions like Fully Automated Luxury Communism (FALC), ecomodernism, xenofeminism, and so on, which are all positions that I at some point held myself. And while I don’t hold those positions anymore, I’m still sympathetic to them in a way (especially xenofeminism); at the very least I don’t totally reject the notion that technology has some liberatory potential (it seems impossible to defend or refute these positions in general), for me the question is more about coming up with a better rubric for discerning technologies with that potential (e.g. a better and more honest assessment of the ecological implications/environmental feasibility of something like FALC, or that technologies implicate us in certain relationships we might not want to be in, and whether or not such an intensely technologically-dependent society is even necessary to achieve social goals), and understanding if going whole-hog on that direction is the best use of my time.

Anyways…in light of the Suez Canal blockage and because this question makes up part of Fugue, I revisited Jasper Bernes’ “Logistics, Counterlogistics and the Communist Prospect” and Alberto Toscano’s response, “Lineaments of the Logistical State”, which explore this question (“the reconfiguration thesis”) in the context of logistics and commodity circulation. These are long pieces, and admittedly the latter half of the Toscano piece still goes over my head even after all these years, so I hope I’ve understood their main points.

Bernes argues a few points:

  • Some main features of highly-developed logistics: it expands access to markets, the privileging of flexibility reduces the power of labor (“resiliency” not only in the face of natural disasters but strikes or unfriendly regulations as well), and just-in-time production reduces costs of storing goods/building up stocks.
    • One important effect: has facilitated decline in local productive capacity, which makes regional movements more exposed to capitalist crackback and enshrines a dependency that can undermine revolutionary movements: “the need to maintain an export economy in order to buy crucial goods on the international markets — arms in particular — meant that revolutionary cadres and militants had to use direct and indirect force in order to induce workers to meet production targets.”
  • Blockades/sabotage are actions that are targeted at circulation, as opposed to production: “The blockade, it seems, might assume an importance equal to the strike in the coming years”
  • He proposes “counterlogistics”: essentially mapping out the network of logistics so as to identify chokepoints and to clearly see how otherwise disparate actions integrate to form a cohesive whole.
  • As for the reconfiguration of logistics infrastructure, there are two main points I see:
    • Can it be made useful to revolutionary interests? Such infrastructure is optimized for circulation of specific forms; particular ideological commitments or capitalist needs are baked in: “individually packaged boxes of cereal…sold and consumed in sizes and types that reflect certain social arrangements, such as the nuclear family” or for particular relations of trade (consumer and producer nations).
    • Is it even needed? “For workers to seize the commanding heights offered by logistics — to seize, in other words, the control panel of the global factory — would mean for them to manage a system that is constitutively hostile to them and their needs, to oversee a system in which extreme wage differentials are built into the very infrastructure. Without those differentials, most supply-chains would become both wasteful and unnecessary.”

Toscano’s response, as far as I understood it, amounts to something along the lines of: well, most of it probably can’t be reconfigured, but we should be open to the possibility:

I stressed that any “reconfiguration” concerns an evaluation, both practical test and theoretical anticipation, of, as I had said, “what aspects of contemporary capitalism could be refunctioned in the passage to a communist society.” This implies that some (many, even most – the ratio is not decidable a priori) of these aspects could not be refunctioned at all (though they would still need to be somehow dealt with or disposed of).

And regarding blockades and sabotage, he makes the point that “disruption is not sufficiently linked to control”. To me this sounds less like a problem inherent in those tactics and more of a question of how they fit together into a broader movement, which is maybe what Bernes’ “counterlogistics” is getting at.

The Decentralized Web of Hate, Rebellious Data and Emmi Bevensee

Matt sent me this report on the far right’s use of p2p. We talked about it and it dawned on me that, although most of my exposure to p2p has been in a left libertarian/anarchist context, as a general ecosystem/approach to social platforms, it’s probably going to be first widely adopted by the far right. This report indicates that things are already heading this way.

It makes sense that p2p adoption would play out this way. The far right are the most visibly deplatformed by major sites, and so they have an actual need to find alternative platforms that are harder to moderate if they want to preserve their entire media ecosystem. The more popular approach to the problems of social media on the left is policy, e.g. anti-trust regulation, or even nationalizing such platforms (extremely unlikely). Because control over these platforms via policy actually looks feasible, alternative platforms look less necessary. This is obviously an incomplete picture, but hadn’t occurred to me before.

The Illusion of Explanatory Depth

The illusion of explanatory depth has been stuck in my head. From the paper that introduced the concept: “People feel they understand complex phenomena with far greater precision, coherence, and depth than they really do; they are subject to an illusion—an illusion of explanatory depth.” It’s when you feel like, “yeah I think I understand X”, and then when pressed to explain further, you realize you don’t understand X at all.

This is so common and less discussed than its closest counterpart, the Dunning-Kruger effect, which is usually used as a bludgeon to shame people (in internet discourse, at least). I like developing models and simulations precisely because it forces me to reckon with this illusion. I think this is exactly why people say that teaching is the best way to learn something.

One of the best/funniest demonstrations of the phenomena is asking people to draw bicycles from memory:

Lawson, R. (2006). The science of cycology: Failures to understand how everyday objects work. Memory & cognition, 34(8), 1667-1675.

Bardcore

I got sucked into the world of bardcore (“medieval” covers of pop songs). There are a lot of really impressive covers, like this one of The Weeknd’s “Blinding Lights”:

@Blinding Lights (Medieval Style)

(this Arabic cover of “Blinding Lights” is also really good)

Some songs really lend themselves to the style, e.g. Lil Nas X’s “Old Town Road”, Attack on Titan’s final season theme, the Wu-Tang Clan’s “C.R.E.A.M”, and Outkast’s “Ms. Jackson” (these last two feel like they could be on the Morrowind soundtrack).

This cover of BLACKPINK & Selena Gomez’s “Ice Cream” in the “ancient Chinese” style is also extremely good:

@BLACKPINK, Selena Gomez - Ice Cream (Ancient Chinese Style)

There’s also a cover of BLACKPINK’s “Lovesick Girls”. I’m curious about what sample packs are being used here.

Some songs which don’t seem at all conducive to the style end up working really well, e.g. Daft Punk’s “One More Time”.

The comments on all these videos are also very entertaining (tons of jokes about modern problems in medieval times).

I haven’t yet found any “bardcore beats to study to” streams yet.

We Will Always Love You, The Avalanches

In other music news, I started listening to The Avalanches’ latest album, We Will Always Love You (I’m late to it, it came out last December). Their debut album, Since I Left You, is probably my favorite album (so much that I made a program inspired by it), and they have a lot of great mixes floating around on the internet. I was a little disappointed by Wildflower–it wasn’t bad, it just wasn’t as good as Since I Left You. We Will Always Love You still doesn’t hit that mark either; I take it they’ve departed from the fully plunderphonics approach and so their sound has lost some of its uniqueness, but it works a lot better for me than Wildflower did (maybe the sophomore album curse doing its work there).

If you want to hear how much their sound has changed since the band’s inception:

@

I also learned about Cola Boyy through the album (on “We Go On”, with Mick Jones and sampling Karen Carpenter), whose music is also hitting the spot:

@

World of Horror

I love Junji Ito’s work. Uzumaki was thrilling to read (I kind of want to re-read it now; spirals have been interesting lately because they are a kind of broken loop), The Enigma of Amigara Fault is kind of an internet in-joke now (not sure if it’s yet ascended to “meme” status); in general he’s very good at, well, horror. But the kind that sticks with you. Not in the way of a latent threat or lurking shadow but in a more cosmic way. Also, I normally hate body horror (just too viscerally disturbing) but for some reason with his works it is less hard for me to stomach. Maybe it’s the illustration; I haven’t watched the Uzumaki film because I think that would be too much for me.

Anyway, that’s all to say that there’s this game I recently tried, World of Horror, that’s inspired by Ito’s work. It’s a roguelike, so very hard, but over time you pick up the “right” way to respond to certain situations. But there’s still plenty of RNG so it’s damn hard even then. And the art style also available) mimics Ito’s well with its old MacOS 1-bit (2-bit also available) dithered graphics.

There isn’t a Linux version, but it works fine with Wine.

There’s also a Uzumaki mini-series coming out soon, which I’m excited for.


1

Although there are many different interpretations of this particular quote. In Ed Whitfield’s wonderful essay “What must we do to be free? On the building of Liberated Zones” he notes: “I would make her point differently. I think that you can tear down the master’s house using some of the master’s tools. Tools are just tools. They amplify, or multiply human effort and they don’t have to be used the way they were intended or for the purpose they were created. I think that the real problem is that it is difficult to tear down the master’s house while you live in it. And that, for many of us, represents the challenge. Our presence in the big house leads many of us to feel the need to defend it, rather than pray for the strong wind when it begins to catch fire.”

<< >>