Searching txt.sour.is

Twts matching #games
Sort by: Newest, Oldest, Most Relevant

I have to say. I’m really very disappointed in Microsoft. Not only did they buy out Minecraft the game, but they basically ruined it for every privacy conscious family, parents and their kids, who can no longer play the game without giving away personal identifiable information (PII) on my children that Microsoft have zero rights to. 🤦‍♂️ – Honestly… Fuck you Microsoft.

⤋ Read More

@david@daiwei.me since I became linuxpilled and embraced SSH, I do my Wordles through https://late.sh/

Can strongly recommend it, even has all the other daily puzzles: minesweeper, sudoku, solitaire, nonogram (kinda hate those),…

Maybe not the best family activity, the chat can be somewhat spicy and so can the collaborative ASCII art drawing game.

⤋ Read More
In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. 😅 Some 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.

⤋ Read More

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!

⤋ Read More
In-reply-to » @lyse Awww, that sounds like a typical experience at school. 😅 They meant well but somehow it was still shitty …

@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. 🤔

⤋ Read More
In-reply-to » @lyse In what way was KDE 3’s menu organized? KDE 1 is the only KDE version I ever used. 😅 We’re talking about this one, right?

@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.

⤋ Read More

Show HN: I built 80 mini-games using Fable before it was shut down
Dear Hacker News,

I’m kindly asking for your participation in the open beta for my AI-managed mini-games website. Thank you in advance!

For a limited time window, I’m setting the all-free feature flag to true. I hope you have a lot of fun exploring the AI’s sense for games! Here and there, I tweaked it to help with visual consistency.

I would be deeply grateful if you opted into analytics.

$2,300 in API tokens…

Cheers!

Comments URL: [https://news.ycombinator.c … ⌘ Read more

⤋ Read More

The Other Major Soccer Event of 2026? The Shake-Up in the World of Video Games
The 48-team World Cup is not the only historic soccer event this year. Four titans are vying for control of video game soccer in the fiercest battle the industry has ever seen. ⌘ Read more

⤋ Read More

This World Cup, You Can Watch the Game From a Ref’s Point of View
Referees for the 2026 World Cup will be wearing cameras positioned at their temples, allowing TV audiences to see a live view of the pitch from a vantage point they never have before. ⌘ Read more

⤋ Read More

The Queensland department using AI to help with estimates
Eyebrows were raised in department land following an artificial intelligence instruction. Also in Public Circus: an own goal for the Games authority and all hands on deck for a bargaining agreement at City Hall. ⌘ Read more

⤋ Read More

‘I liked being Cher’: Parramatta council staff on being labelled the ‘Witches of Eastwick’
Texts from former council boss Gail Connolly reveal she wanted to “get rid of” staff and that the “Pink Ladies play the long game”, the ICAC has heard. ⌘ Read more

⤋ Read More

Election Officials Are Getting Ready for ICE to Show Up at the Polls
The Trump administration keeps threatening to send federal agents to oversee elections. State and local officials are preparing, and even gaming out what happens if they’re arrested. ⌘ Read more

⤋ Read More

Epson Lifestudio Grand Plus Review: Rich Colors, Gemini Support
The Lifestudio Grand Plus isn’t without quirks, but the ultrashort-throw home cinema projector delivers a rich picture quality in movies and games, up to a 150-inch screen size. ⌘ Read more

⤋ Read More
In-reply-to » 495 turns and about ~4hrs alter I won! 🙌 Small map, 2-players, myself and an AI player. 😅 Media -- It took forever to beach the island the AI player was on and get enough Galley's and Swordsmen just to push back and eventually slowly destroy all enemy units and capture all cities! 🤣

@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 ?! 😅

⤋ Read More
In-reply-to » 495 turns and about ~4hrs alter I won! 🙌 Small map, 2-players, myself and an AI player. 😅 Media -- It took forever to beach the island the AI player was on and get enough Galley's and Swordsmen just to push back and eventually slowly destroy all enemy units and capture all cities! 🤣

@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.

⤋ Read More
In-reply-to » 495 turns and about ~4hrs alter I won! 🙌 Small map, 2-players, myself and an AI player. 😅 Media -- It took forever to beach the island the AI player was on and get enough Galley's and Swordsmen just to push back and eventually slowly destroy all enemy units and capture all cities! 🤣

@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? 🤔

⤋ Read More
In-reply-to » 495 turns and about ~4hrs alter I won! 🙌 Small map, 2-players, myself and an AI player. 😅 Media -- It took forever to beach the island the AI player was on and get enough Galley's and Swordsmen just to push back and eventually slowly destroy all enemy units and capture all cities! 🤣

@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!

⤋ Read More
In-reply-to » 495 turns and about ~4hrs alter I won! 🙌 Small map, 2-players, myself and an AI player. 😅 Media -- It took forever to beach the island the AI player was on and get enough Galley's and Swordsmen just to push back and eventually slowly destroy all enemy units and capture all cities! 🤣

@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!

⤋ Read More

California Engineer Identified in Suspected Shooting at White House Correspondents Dinner
The 31-year-old engineer and self-described indie game developer is suspected of firing shots at the annual event attended by President Donald Trump, high-profile media figures, and US government officials. ⌘ Read more

⤋ Read More

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! 😴

⤋ Read More

** Constraint propagation for fun **
I’ve been playing the very good Squeakross this weekend. It is adorable and the aesthetics are absolutely immaculate, but I’ve found the actual picross puzzles to be a point of frustrating friction in the game when compared to the picross-style puzzles in my bicross game.

Picross puzzles, aka nonograms, can relatively easily have ambiguous solutions. Because the hints only tell you how many co … ⌘ Read more

⤋ Read More

** Bicross **
I made a game. I’ve written about it in passing a few times, but here is an honest to goodness intro to it!

Bicross is 3 versions of the same basic game,

  • Bicross, is a zen-mode version of the game.
  • Bicross RPG, is an RPG version of the game where you can earn power ups, and build up hearts and stuff.
  • Bicross Daily, is very similar to the RPG version, but everyone who plays on a given … ⌘ Read more

⤋ Read More

** being goblin **
In response to my most recent week notes, Adrian shared this lovely quote on goblins with me. It comes from my favorite game designer, Avery Alder,

being goblin is a way of flagging that you want to include people not in spite of their sloppiness and uneven emotional growth, but because of it — because goblins come as they are, and they grow in community with one another. Being goblin means being intergenerational in an un-pr … ⌘ Read more

⤋ Read More

** Year in review, 2025 **
Here, an obligatory end of year wrap up kinda post that, as I started to write in what I assume is the classical platonic form for all blogs wherein I reflect thoughtfully on stuff I read, or games I played, or projects I twiddled at, and what not, I became overwhelmed by the act of creating a kinda cursory and meandering review, because, what, in this run on sentence, do I have to contribute that I really wanna commit to you, dear reader?

Instead, let’s try the following.

Right now, in 2025, I’ve go … ⌘ Read more

⤋ Read More
In-reply-to » Advent of Code 2025 starts tomorrow. 🥳🎄

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. 🤣

⤋ Read More

“A ZIP file containing 9 of Strangethink’s games, which were removed from their creator’s online pages in 2019.[…] The games included in this collection are -

Abstract Ritual
Art Machine
Error City
Glowing Bodies
Joy Exhibition
Mystery Tapes
Secret Habitat
The Pyramid Gate
These Monsters

I hope you enjoy these fascinating experiences!”

https://archive.org/details/strangethink-software via @Introscopia@Introscopia

⤋ Read More

** Sticker party, November **
Some random thoughts including how the band Imagine Dragons is kinda like Metal for kids; distributing apps, even without involving Apple at all, is deeply annoying on macOS; Pokemon ZA is fun, but I think that I’m a turn-based girlie at heart; my partner has been playing a lot of Tears of the Kingdom lately, it has been a lot of fun for me to watch, and hair-pullingly frustrating for our nearly 10 year old who has strong opinions about the correct order of operations in that game; I wrote, but am cu … ⌘ Read more

⤋ Read More

I’m still looking for people, podcasts, events talking about #Python without assuming everyone is a software developer or a “data scientist”.

Why are data journalists, type designers (Guido’s brother!), Blender wizards, FreeCAD hackers, hobbyist game makers, casual automation buffs, robot tweakers, MicroPython enthusiasts, creative coders, educators, biologists, astronomers and other scientists, consistently ignored?

Are we f*ing invisible? One of Python Brasil keynoters kind of just did that. My heart sank. Other talks, like the Art&FLOSS one, by Jim Schmitz, lessened my pain.

Where is the follow up for that 2017 keynote by Jake VanderPlas?

⤋ Read More

I’m still looking for people, podcasts, events, talking about #Python without assuming everyone is a software developer or a “data scientist”.

Why are data journalists, type designers (Guido’s brother!), Blender wizards, FreeCAD hackers, hobbyist game makers, casual automation buffs, robot tweakers, MicroPython enthusiasts, creative coders, educators, biologists, astronomers and other scientists, consistently ignored?

Are we invisible? One of Python Brasil keynoters kind of just did that. My heart sank. Other talks, like the Art&FLOSS one, by Jim Schmitz, lessened my pain.

Where is the follow up for that 2017 keynote by Jake VanderPlas?

⤋ Read More
In-reply-to » @bender Thanks for this illustration, it completely “misunderstood” everything I wrote and confidently spat out garbage. 👌

… and now I just read @bender@twtxt.net’s other post that said the Gemini text was a shortened version, so I might have criticized things that weren’t true for the full version. Okay, sorry, I’m out. (And I won’t play that game, either. Don’t send me another AI output, possibly tweaked to address my criticism. That is besides the point and not worth my time.)

⤋ Read More