@prologic@twtxt.net Nice choice!
I was always partial to those 194x-style “bullet hell” games. 🛩️
Gonna recreate the classic [Break out](https://en.wikipedia.org/wiki/Breakout_(video_game) game this weekend for the Mills Games Cabinet – Anyone else got any ideas, requests? 🤔 #games #ebitengine
I’m still on a deckbuilding kick, so I was thrilled that we managed to get 3 games of Magic in last night.
In game 1, my Marvel Villains deck couldn’t stand up to Doctor Who’s Missy and her army of Cybermen (and Daleks). Since someone else was playing a dark lord Sauron deck, I guess that means she’s even more “villainous” that anything Marvel or Tolkien could offer.
For game 2, I ran my Guardians of the Multiverse deck (formerly known as The B-Vengers or Marvel Heroes 2: Electric Bugaloo). It was working well, and I had quite an army going, but I was still one turn from a win when an opponent’s tribal elf deck went off, killing everyone with 19 19/19 forest-walking elves. ¯_(ツ)_/¯
Then in game 3, I ran my Avengers deck, and finally got the win thanks to a Heroes’ Podium, a pair of Hawkeyes, and a flying, shield-wielding Captain America. Assemble, indeed.
Last night will likely be my final Marvel-only game night for a while. I still need to test the decks out some more, but they’re basically complete (I don’t currently plan on adding any more cards to them). Plus, while I’m on this kick, I’d like to finally finish my Sauron deck, and I’ve got some cards on order for both a Dune-themed deck and a couple of decks inspired by the old-school Beatdown Box.
Board game for one person? Ironing. :‘-D
jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.
And @lyse@lyse.isobeef.org is right. Not being on Github is a good thing IMO. Even when I was there with all my many projects, I basically got the same amount of “attention” as I do now. The only real way to gain more “attention” is to artificially play the “game”. You know. The stupid “Stargazer” one, and whatever you can to get into the “Top 10 X” charts. – But ultimately that doesn’t buy you “quality” contributors or users or whatever. So it’s all pointless.
@david@daiwei.me We could say the same about the England - France game, right? 😆
Hurray, I can now press gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.
I should probably write a real article about this at some point, but here we go. The only downside with my new key binding system is that it breaks tview’s established pattern. You’ve got an InputHandler(), that is implemented using WrapInputHandler(…). It typically then directly implements the switching logic depending on the key press. Something like this:
func (w *Widget) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// WrapInputHandler allows for intercepting key events with SetInputCapture(…)
// from the outside for customization. This handles the default key bindings.
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
w.scrollUp()
return // we already handled the event, stop processing
case 'j':
w.scrollDown()
return
}
}
}
// We didn't handle the key event. Maybe the parent
// widget knows what to do with it.
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
})
}
From the outside, you can intercept and either stop or continue the widget’s original key handling with a potentially rewritten key event using SetInputCapture(…):
w := NewWidget()
// customized or additional key bindings
w.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyUp:
// Rewrite the event, so the "cursor up" key is an alias
// for the vim key binding "k", that is handled by the
// wrapped input handler above. (I know, I know, this is a
// completely unrealistic example, why would anyone use
// cursor keys when there are vim key bindings available?!)
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'q':
app.Stop()
// we already handled the event, do not pass it
// to the wrapped input handler above
return nil
case 'r':
toggleMessageReadStatus()
return nil
}
}
}
// we didn't handle the event, pass it to the wrapped
// input handler above
return event
}
Since they all expect a single key, I’ve noticed that using multiple dedicated KeyBindings of mine on these different levels kinda breaks multi-key handling with common prefixes. The outer-most KeyBinding captures the prefix, but it can’t transfer it to the inner one if not handled by the outer one. At least not without some more (potentially ugly) changes. So, I now have to work with just a single KeyBindings object for the entire widget chain (if it consists of multiple other widgets or the regular input handler and input capture are in the game). The outside needs to register all its key bind customizations or extensions at the same level that the original widget handles its default ones. Doable by exposing the widget’s KeyBindings instance, but not pretty. You always have to keep this in mind.
With the KeyBindings, it will look like that:
type Widget struct {
parent tview.Primitive
// make it available to children or the outside either by
// direct field access or by providing a getter method
KeyBindings *bind.KeyBindings
}
func NewWidget() *Widget {
w := &Widget{KeyBindings: &bind.KeyBindings{}}
w.KeyBindings. // default key bindings
Bind0(bind.KeySequence('k', w.scrollUp).
Bind0(bind.KeySequence('j', w.scrollDown)
return w
}
func (w *Widget) InputHandler() InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// also note the missing support for focus transfer at the moment
event = w.KeyBindings.Capture(event)
if event == nil {
return
}
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
}
}
And then from the outside, or in a child widget:
w := NewWidget()
w.KeyBindings. // additional or customized key bindings
Bind1(bind.KeySequence(tcell.KeyUp), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind0(bind.KeySequence('r'), toggleMessageReadStatus)
When directly working with tview primitives that are not part of custom widget implementations, the following works well so far:
textView := tview.NewTextView().
SetWordWrap(true).
SetText("…")
SetScrollable(true)
textView.SetInputCapture((&bind.KeyBindings{}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind1(bind.KeySequence('g', 'g'), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
}).
Capture)
I need to sleep on this some more.
Also, writing very long messages like this one is really not all that fun in tt’s editor. I should absolutely provide a way to shell out to vim.
(Took me about one and a half hours to compose, holy crap. But not only because of not using vim. Although, that might have saved me a quarter hour or so for sure. Proof-reading this message also uncovered quite a few bugs in my real documentation. So, that’s a big win!) Good night!
@GabesArcade@gabesarcade.com’s Arcade@gabesarcade.com nice! TIL about “Planet of Lana”, and I think it will be the very first game I will buy on iOS. Thank you for sharing!
For game 2, everyone else brought out bigger guns - tribal dragons, tribal giants, tribal spiders (led by the completely broken Cosmic Spider-Man), and Atraxa (equipped with Captain America’s shield, no less), while I ran my new (also unlisted) 5-color tribal Super Villains deck (fronted by the Super Skrull). Although I got off to a slow start, it kept me mostly under the radar, allowing me to ultimately win with the Villains by goading everyone else’s creatures into attacking each other on one turn (via Maximum Carnage), and then killing off the remaining players over 3 combat phases on the follow-up turn (Full Throttle).
Boo-yah!
Perhaps unsurprisingly, last night’s Magic games were dominated by the new Marvel set.
In game 1, I was running my new (unlisted) 5-color tribal Super Heroes deck (led by Nick Fury, Agent of SHIELD) against a lightly-modified Avengers Assemble deck, a tribal Super Villains deck (fronted by Thanos, the Mad Titan), and 2 “classic” magic decks (Fractals and Artifacts). The heroes held their own quite well, but that game went way too long (thanks to Thanos snapping away half the board every other turn). It finally ended when everyone quit after yet another board wipe (giving the wiper her first win).
New project in the works. Federated game network and a new LoRD-inspired game as teh example… stay tuned!
@lyse@lyse.isobeef.org Yeah, I have a couple of teachers in my family and they all tell similar stories. 🙄
I have almost no recollection of my time at the “Gymnasium” anymore. I’m either traumatized by it or I wasn’t very interested in what happened there. 😅 But I have some vague memories of doing “computer stuff” at school. There certainly were computers and they certainly ran DOS games like Duke Nukem, that I do know. 😂 Just checked my records, and no, this wasn’t an official class. At best, it was one of those AGs. 🤔
@movq@www.uninformativ.de Yes, this screenshot. However, not the Dutch but rather the German version, no wonder it looks so crazy!!1!11
It’s been a hot minute or two since I last used KDE, so I don’t remember exactly. I just vaguely recall that I found myself thinking multiple times that the KDE application categories were better matching or there were more or something like that. Most of my classmates were on Windows and had one giant long list of all sort of stuff in there. You even had to scroll in the menu. Sure, they installed all kind of garbage, which didn’t exactly help. Where in KDE, they were actually grouped by Office, Internet, Graphics, Multimedia, Games, etc. In Windows, applications usually hid themselves in a sub folder named after the software vendor. At least in the later (?) days.
I only used Win 95, 98 and XP at home. For maths class with computer algebra system (Maple), we had a Cassiopeia with Win CE: https://en.wikipedia.org/wiki/Casio_Cassiopeia At school, there was probably also Win 2000, but I don’t know anymore for sure.
In Magic today, the Phyrexian Invasion failed in the first game, but the second game was EPIC!
I played my (unlisted) Dragons 2: Draconic Boogaloo deck, and…
Turn 1: Nothing special
Turn 2: Miirym (when a dragon enters, copy it)
Turn 3: Tiamat (choose 5 dragons from deck, put in hand)
Turn 4: Klauth (when dragons attack, create mana equal to their total power)
I attacked with all 5 dragons, which made 28 mana x2 = 56(!) mana.
Then (still turn 4) I played Scourge of Valkas (when a dragon enters, deal damage to target equal to number of dragons) + 5 other dragons, dealing 6 + 2 x (7+8+9+10+11+12+13+14+15+16+17) = 270(!) direct damage (more than double enough to kill the other 3 players).
Damn fine win, if I do say so myself.
Played some games, boosted some toots, tweaked some code… now it’s time for bed.
@movq@www.uninformativ.de Great find! Other than a couple of games I bought over the years, my 5.25” disks were always dark grey / black.
And 3.5” disks were another matter entirely… 😄
I went 1-for-2 again at Magic today, winning the first game with my (mostly standard) Fallout “Hail, Caesar” deck by creating a swarm of soldiers and slapping people across the face with them (LOL!), before quitting the 2nd game for lack of time after my board got wiped (I mean, I might have lucked into something eventually, but it was getting late, so I dropped out).
I hope to play more regularly going into the summer, but who knows.
@bender@twtxt.net I sound like I’m dumping on the game, but it really is alot of fun, especially with the right people. It’s just a whole different beast from D&D.
@bender@twtxt.net Apologies, I’m still working through some layout issues with TwtStrm and frequently miss mentions…
Magic: the Gathering does not use a Game Master (although professional referees are often used in sanctioned events). While the game has alot of thematic crossover with with D&D (or fantasy games in general), the system is much more of an abstract, card-dueling system involving things like “the stack” and insanely specific rules on card timing and interactions.
Like, we joke about “I’m sending my army of (goblins / elves / angels / whatever) at you,” but that’s about as far into the “role-playing” element most magic games get in my experience (and most of the “official” competitive games I’ve played at my FLGS were even more abstract and less thematic, although it’s been years since I played in one of those).
@itsericwoodward@itsericwoodward.com is there a Gamer Master, or Dungeon Master in Magic? My kid plays DnD, and such person is decisive for many outcomes, and for the quality of the game in general.
Congratulations! :-)
My first game of Magic ended with a truly EPIC TURN yesterday…
It was a 5-player game, and I was running my (unpublished) Superfriends deck (mostly Planeswalkers and counter manipulators). After some ups and downs, I was able to pop the ultimate abilities on a handful of PWs all on a single turn, pumping my Bioessence Hydra to 110/110 (!) before tapping it twice to kill 2 opponents, and then following that by destroying all of the lands of a 3rd opponent and stealing all of the creatures from the 4th, at which point the survivors decided to quit. As I said, EPIC TURN!
Game 2 ran long, so I dropped out. But that first game…
Many people started to become distrustful of big tech in the wake of the COVID-19 pandemic. I began feeling pessimistic back in 2016, when AlphaGo beat master Go player Lee Sedol four games to one. Something about that event has soured me on the future of technology ever since.
@bender@twtxt.net Well I’m open to ideas of course 😅 My goal here was to build something like a Civ-1 inspired game that’s playable online and multiplayer. Do you remember this old bad boy that was played on PC(s) on MS-DOS ?! 😅
@prologic@twtxt.net I am going to give it a more serious spin (meaning I am going to go read the help page). I’ve got to tell you though, most successful games do not need a help. But I am fully aware that there is a subset of gamers that would not mind—if not appreciate—a game with help, manual, and the likes.
@bender@twtxt.net Anything I can do to help with getting started with the game? Help page not enougH/ Some “Getting Started” guide? Walk-through? 🤔
@bender@twtxt.net Yeah !
Maybe put a notice when on mobile stating that the game is for desktop, or bigger screens (tablets), only?
I’ll do this for sure!
@prologic@twtxt.net I am fairly bad, or have a very poor understanding of the game, so I can’t figure out what to do. Tried a few times. 😅 Also, I am sure you know by now, but it is not mobile friendly at all. Maybe put a notice when on mobile stating that the game is for desktop, or bigger screens (tablets), only?
Congratulations!
@kiwu@twtxt.net Working on my game Frontier Crown – Going to push a new version today hopefully that includes much improved graphics, expanded ruleset and scope.
My One-Game Stint as a Baseball Coach ?~L~X https://thenewleafjournal.com/b/DzZ
I won our only game of Magic for this week with my (yet-to-be published) “Bolas Triumphant” deck: 5 players over 3 hours, including 4 board wipes (one of which came from my Nicol Bolas, God-Pharaoh), and I even got to cast Omniscience via a Fae of Wishes. I can’t speak for everyone, but I know I had a good time. 😁
Bam Adebayo’s 83 and Scoring Averages in 60+ Point Game Seasons ?~L~X https://thenewleafjournal.com/b/Dyk
TIL that SSH actually stands for Secure Snake Home, a massively multiplayer snake game playable via the SSH protocol: ssh snakes.run
Of course, no one else was online when I was playing, so…

I went 1 for 2 at Magic this week… Temmet made a good showing the first game before being overwhelmed by an infinite number of Wylls (aka Fred Durst, on account of all his “rollin’, rollin’, rollin’!”). As a result, I unleashed Chatterfang on the group for the second game, and he lead his squirrel army to victory once again. Good times!
A Knight of the Seven Kingdoms, encore une série dans l’univers de Game of Thrones, mais entre […] 🔗 https://yom.li/notes/20260404221732
Went 2/3 at Magic today: Prosper dominated game 1, Ash and his Knights came within a single planar die roll of winning game 2, and then Atraxa came up with the win in a fairly tight game 3. All in all, not a bad afternoon of Magic.
thinking of Masyu. What a great game. Wondering about the perfect algorithm to generate a board of arbitrary size with only one solution. That’s almost more fun than playing the game #programming #masyu #puzzle #videogame
@kingdomcome@yarn.girlonthemoon.xyz Oh, that brings back memories! I’ve played minetest one and half centuries ago. Some classmates and I tried to recreate our computer science building at the time. The proportions didn’t work out, but it still kinda worked. Minetest was one of the very few games I played a bit more extensively.
@bender@twtxt.net I see. Well that’s not how I think of the term “Isomorphic” 🤣 I keep thinking about graphics and isomorphic games 😅
Video Game Home Console Success By Generation ?~L~X https://thenewleafjournal.com/b/DuS
Well it’s ~2am and I finally defeated the AI player in a game of Frontier Crown 👑
– On that note I’m now going to bed, I’ve made so many improvements to the aesthetics (UX) of the game, the mechanics, and it’s now quite nicely playable 👌 G’night! 😴
AI Game Worlds and Humane Games ?~L~X https://thenewleafjournal.com/b/Dt8
gaming
Feeling nostalgic, for 3D-ish old game sprites, so I made one of myself.

@movq@www.uninformativ.de what game is that?
Alright, Advent of Code is over:
https://www.uninformativ.de/blog/postings/2025-12-12/0/POSTING-en.html
It’s been quite the time sink, especially with the DOS games on top, but it was fun. 🥳
In case you’re wondering: All puzzles (except for part 2 of day 10) were doable in Python 1 on SuSE Linux 6.4 and ran in a finite time on the Pentium 133. Puzzle 10/2 might have been doable as well if I had better education. 🤣
The game went well. Players loved it. I guess I did ok…
Yay, it’s D&D day. I get to run a game for my players.
Sometimes, (just sometimes) my ability to pattern match and remember how to play perfect games of chess is awesome 😎 
I like to read through old RPG books and zines for inspiration for my games, and lately I’ve been enjoying the Arduin Grimoire (https://en.wikipedia.org/wiki/Arduin), one of the earliest 3rd-party zines (coming out during the initial run of OD&D). It’s filled with a bunch of unique ideas (some better than others), entirely too many charts, and is very much a product of its time, but there’s something about its “raw”-ness (and its variety) that I still find appealing.
I wound up running 2 out of 3 of the one-shots, both Halloween games based on Ravenloft / Curse of Strahd, and both rousing successes (for the players, not so much for Strahd).
Since I’m on something of a gaming kick, I think I’m going to try and finish plotting out the rest of the fae adventure I’m running for my kids, while also (hopefully) finishing my super secret astral gaming project.
Can I do it? Stay tuned and find out!