Sign in

sam

@soulware.us
151 followers 283 following 251 posts

soulware.us

PostsRepliesMedia
sam @soulware.us · 19/09/2026
Installed bazzite last night because lightdm decided to stop working completely randomly and I had been sitting on an installer USB anyhow, so no more arch. Anyways it went pretty smooth besides my browser font being this for a little while
screenshot of Helium. it's a google search asking "chrome font is medieval for some reason". Almost every piece of text in the browser (url, bookmarks, search results) is in Luminari
120
sam @soulware.us · 09/09/2026
ever since i was a child i wanted to make esoteric video game secrets (pictured: notebook at 8yo)
notes from my notebook when i was younger:

ULTRA Guy
extra version in 3
• go to level select 3-10 bonus level
• find secret Jump house goto the back & get 1 token (hidden one)
• keep jumping
• teleported to area
• press B, A, select to get extra game
021
sam @soulware.us · 21/08/2026
oh yeah, having stuff remain slow seems super important for maintaining an interesting challenge. you can definitely feel it in your game too. for my ramping i had data specifying after N seconds what the min/max spawn time should be, and how many enemies should appear at most
example of a "phase" in my avoider game
{
                "phase_required_time": 27.0,
		"enemy_spawn_timer_min": 0.2,
		"enemy_spawn_timer_max": 0.7,
		"max_enemies_per_wave": 2,
		"big_enemy_spawn_timer_min": 7.0,
		"big_enemy_spawn_timer_max": 7.0,
}
111
sam @soulware.us · 21/08/2026
with my game i sort of observed that clusters emerge out of just leaning into the randomness (i used a rebalanced version of the "angel dances" algorithm). For ramping I just tweaked the timer range. Granted my game also benefits from having more of a slurry... i think
from "designing avoiders" (https://brlka.com/posts/2026-07-02-designing-avoiders):

There’s another approach to difficulty ramping that’s less engineered and just as effective, albeit with a very different flavor: pure randomness. In an angel dances in the sparks of a bonfire (aka angel game), a timer spawns two sparks, then resets to a random interval between one and zero. The result is uneven, unpredictable clumps of sparks - sometimes massive, dense waves, sometimes a sparse handful. This feels very different! It isn’t fair, but it’s fun. It tells a different story every time.
110
sam @soulware.us · 06/08/2026
i made a new game for the avoider jam! "a void danced as ash meant for you flew by" How long can you dance in the balance of avoidance and attraction? special thanks to @brlka.com whom this is heavily inspired by! Play now: soulware.itch.io/a-void-danced
192
sam @soulware.us · 26/07/2026
"The guests are outside so you have to cook really fast" - new game for gmtk jam! action cooking game where you have to keep track of all the timers you have going! soulware.itch.io/tgao #gmtk
063
sam @soulware.us · 11/07/2026
i do this but then the rest is still up to you...
snippet of GDScript:

var last_tick_left: int
var last_tick_right: int
var last_tick_up: int
var last_tick_down: int

func _physics_process(delta: float) -> void:
	var time = Time.get_ticks_msec()
	
	var input_move_left = Input.is_action_pressed("left")
	var input_move_right = Input.is_action_pressed("right")
	var input_move_up = Input.is_action_pressed("up")
	var input_move_down = Input.is_action_pressed("down")
	var input_initial_move_left = Input.is_action_just_pressed("left")
	var input_initial_move_right = Input.is_action_just_pressed("right")
	var input_initial_move_up = Input.is_action_just_pressed("up")
	var input_initial_move_down = Input.is_action_just_pressed("down")
	
	# resolve x move presses
	last_tick_left = time if input_initial_move_left else last_tick_left
	last_tick_right = time if input_initial_move_right else last_tick_right
	var x_input_priority = 0
	if input_move_left and input_move_right:
		x_input_priority = -1 if last_tick_left > last_tick_right else 1
	elif input_move_left:
		x_input_priority = -1
	elif input_move_right:
		x_input_priority = 1
		
	# resolve y move presses
	last_tick_up = time if input_initial_move_up else last_tick_up
	last_tick_down = time if input_initial_move_down else last_tick_down
	var y_input_priority = 0
	if input_move_up and input_move_down:
		x_input_priority = -1 if last_tick_up > last_tick_down else 1
	elif input_move_up:
		y_input_priority = -1
	elif input_move_down:
		y_input_priority = 1
100
sam @soulware.us · 08/07/2026
poem titled "Night on the town"
Night on the town

Dance about in triplicate and say what isn't said.
Drink and shout and sit with it until you've ginnish head.
Drag her home and sag your dome in deep diminished red.
Drive her out or find her sprout and sleep a finished bed.
120
sam @soulware.us · 06/07/2026
cool demon!
end screen which says End of Demon
000
sam @soulware.us · 01/07/2026
Rumor has it that you can purchase a limited edition physical copy of hit indie game, "The Bomb Split"
041
sam @soulware.us · 01/07/2026
alright...
lyrics to "Real Bad Job":

It's time to get a job
I need money for bills and stuff
It's time to get a
job
020
sam @soulware.us · 06/06/2026
more succinctly:
scansion of the first 4 lines of the poem + the phrases that it doesn’t totally work: “third-rate”, “I tried”, “half-lies”
130
sam @soulware.us · 04/06/2026
poem titled "Confession"
Confession

By the pool and up the yard
I fooled as a third-rate bard
Dusklit I tried to confess
Husked half-lies to your Tess
Swinging see-saw she saw me
Clearly caught while I fell free
After under doomdark moon
Weeding willows from our dune
With the wedding wrapped away
You confronted this young stray
Dawnbathed carp splashed in rose red
And I took Tess and you were dead.
252
sam @soulware.us · 23/05/2026
it's also experimental for chromium on linux w/AMD GPU... the majority of systems support it but there are a handful of browser/OS/GPU combos which dont
table for webgpu support, broken down by browser + OS + GPU + ISA (at https://github.com/gpuweb/gpuweb/wiki/Implementation-Status)
010
sam @soulware.us · 13/05/2026
godot wild jam threw it mostly out and started again... #godot #godotwildjam
151
sam @soulware.us · 02/05/2026
those making platformers in godot.. do you have a solution for having things slip into 1-block gaps? ive depicted the scenario, the only way ive had this work is by scaling the collider down, but it feels a bit unsatisfying, and idk what other problems it could cause.
121
sam @soulware.us · 01/05/2026
really liked this screen
020
sam @soulware.us · 27/04/2026
i was just thinking about this with regard to all the things i have bookmarked (eg will i ever go through that pile of things?). this is also the reason why i feel so attached to this post
tweet from @afraidofwasps:

You only live once - you should try to spend as much time on the computer as possible. After you die, you won't have access to it any more
020
sam @soulware.us · 20/03/2026
new book by @pdmcdonald.bsky.social just arrived, excited to read this!
a paperback copy of “The Impossible Reversal: A History of How We Play” by Peter D. McDonald
130
sam @soulware.us · 19/03/2026
THE BOMB SPLIT is half off in the Steam Spring Sale! currently only $5 if you want to play two fun and tricky platformers. get a copy, tell your friends about it, have some fun store.steampowered.com/app/4260640/... #platformer #steam #steamsale
132
sam @soulware.us · 14/03/2026
it’s funny that “cinema” (used like “kino”) is used to describe impressive or breathtaking moments (esp. those with strong visuals) in games. i think we should start just saying “Game” instead
051
sam @soulware.us · 03/03/2026
message in smash bros melee:

"You've fought 100,000 VS. mode matches! Go outside!"
04513
sam @soulware.us · 30/01/2026
current high score for KOLYDR, aiming for 140k (highest score ive seen from pancelor)
130
sam @soulware.us · 03/01/2026
moreover deep in the replies of some threads, an xai employee says something like “working on this” and yet the problem remains
110
sam @soulware.us · 28/12/2025
post search on bluesky for devolverslop with the result: No results found for "devolverslop"
260
sam @soulware.us · 05/12/2025
my strange new platformer GRENADIER comes out SUNDAY. it will be available at Boston FIG to demo and buy. you get a usb in a cassette case with this art! it releases side by side with @handcrushe.dev's game EXPLO. come check them out! #gamedev #indie #gaming #bostongamedev #godot #bfig #platformer
1146
sam @soulware.us · 29/10/2025
this and some of the ensuing discussion reminded me of scene(s) from Empty Metal
120
sam @soulware.us · 14/10/2025
030
sam @soulware.us · 14/10/2025
130
sam @soulware.us · 03/09/2025
this reminds me a bit of the concept of the rhizome, which i've been thinking about a bunch in relation to games (though, the reading on it is a bit dense - but especially how it's initially established in relation to books, and how the book discussing rhizomes was structured anti-linearly)
a wikipedia screenshot with the following text:

A rhizome is a concept in post-structuralism describing an assemblage that allows connections between any of its constituent elements, regardless of any predefined ordering, structure, or entry point. It is a central concept in the work of French Theorists Gilles Deleuze and Felix Guattari, who use the term frequently in their development of schizoanalysis.

Deleuze and Guattari use the terms "rhizome" and "rhizomatic" (from Ancient Greek ῥίζωμα, rhízōma, "mass of roots") to describe a network that "connects any point to any other point". The term is first introduced in Deleuze and Guattari's 1975 book Kafka: Toward a Minor Literature to suggest that Kafka's work is not bound by linear narrative structure, and can be entered into at any point to map out connections with other points.from "A Thousand Plateaus":

...well, undergoes a metamorphosis. Unlike a structure, which is defined by a set of points and positions, with binary relations between the points and biunivocal relationships between the positions, the rhizome is made only of lines: lines of segmentarity and stratification as its dimensions, and the line of flight or deterritorialization as the maximum dimension after which the multiplicity undergoes metamorphosis, changes in nature.
These lines, or lineaments, should not be confused with lineages of the
arborescent type, which are merely localizable linkages between points and positions. Unlike the tree, the rhizome is not the object of reproduction: neither external reproduction as image-tree nor internal reproduction as tree-structure. The rhizome is an antigenealogy. It is a short-term memory, or antimemory. The rhizome operates by variation, expansion, conquest, capture, offshoots. Unlike the graphic arts, drawing, or photography, unlike tracings, the rhizome pertains to a map that must be produced, constructed, a map that is always detachable, connectable, reversible, modifiable, and has multiple entryways and exits and its own lines of flight. It is tracings that must be put on the map, not the opposite. In contrast to centered (even polycentric) systems with hierarchical modes of communication and preestablished paths, the rhizome is an acentered, nonhierarchical, nonsignifying system without a General and without an organizing memory or central automaton, defined solely by a circulation of states. What is at question in the rhizome is a relation to sexuality—but also to the animal, the vegetal, the world, politics, the book, things natural and artificial—that is totally different from the arborescent relation: all manner of "becomings."from "A Thousand Plateaus"

plane of consistency on the basis of their intrinsic value. For example, a book composed of chapters has culmination and termination points. What takes place in a book composed instead of plateaus that communicate with one another across microfissures, as in a brain? We call a "plateau" any multiplicity connected to other multiplicities by superficial underground stems in such a way as to form or extend a rhizome. We are writing this book as a rhizome. It is composed of plateaus. We have given it a circular form, but only for laughs. Each morning we would wake up, and each of us would ask himself what plateau he was going to tackle, writing five lines here, ten there. We had hallucinatory experiences, we watched lines leave one plateau and proceed to another like columns of tiny ants. We made circles of convergence. Each plateau can be read starting anywhere and can be related to any other plateau. To attain the multiple, one must have a...
220
sam @soulware.us · 13/08/2025
i will be at kendall square open space today from 6-9pm showing off 3 games! PLOVERDRIVE, METEMPSYCHOSIS, and the unreleased “grenadier”. if you like weird small twitchy games, or games you can play with friends, or you hate video games, you should stop by. #bostongamedev #godot #indiedev #gamedev
1163
sam @soulware.us · 19/07/2025
I think my favorite distillation of some of these ideas is @sylviefluff.bsky.social 's "Sylvie Miniature", which is a different approach in being a platformer, but something I drew a lot of inspiration from in making BKH as small as it is my game also has a tiny pixel bunny, completely by accident
110
sam @soulware.us · 10/03/2025
i made a puzzle game called "BROKEN KEYBOARD HERO" inspired by tunic, zelda 1, animal well, and fez explore a strange island, uncover mysteries, and hopefully fix your keyboard? play it here: soulware.itch.io/broken-keybo... #gamedev #indiegame #godot #metroidbrania #solodev #2D #pixelart
2208
sam @soulware.us · 19/02/2025
only the wheel is persistent
110
sam @soulware.us · 03/02/2025
DRAFT AND GRAFT's title screenthe black market in DRAFT AND GRAFT! buy strange new body parts! fight against strangely assembled mutants!be careful when walking around the streets... people might want your limbs!
040