8 votes

What programming/technical projects have you been working on?

This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?

6 comments

  1. opheron
    Link
    These are not very technically-complex, but are programming-related: I released an updated version of the Waggle Dance, a guide to learning programming I wrote to help others. I released the first...

    These are not very technically-complex, but are programming-related:

    1. I released an updated version of the Waggle Dance, a guide to learning programming I wrote to help others.
    2. I released the first version of the Rust Starter Pack, which is a collection of resources to help people learn Rust.

    I am using both of these resources to help teach and mentor members of a free and open hacker/programmer collective I founded called the Electric Hive.

    4 votes
  2. ahq
    Link
    Some progress on making Gurlic's backend use the matrix protocol. Current challenges are mainly lack of time, and a long backlog of Gurlic feature requests and bugs to fix, which doesn't leave...

    Some progress on making Gurlic's backend use the matrix protocol. Current challenges are mainly lack of time, and a long backlog of Gurlic feature requests and bugs to fix, which doesn't leave much time to work on the matrix move. Took me a while to wrap my head around the Matrix spec and figure out which bits work best for federated communities. The slight inconsistencies in the client/server implementations also tripped me up. Anyway, will report back when I have more.

    3 votes
  3. Pistos
    Link
    I made a modest contribution to my video editor of choice, kdenlive. https://invent.kde.org/multimedia/kdenlive/-/merge_requests/163 It was accepted and merged, too.

    I made a modest contribution to my video editor of choice, kdenlive. https://invent.kde.org/multimedia/kdenlive/-/merge_requests/163 It was accepted and merged, too.

    3 votes
  4. joplin
    Link
    I tend to go in circles on my side projects. I'm back to working on tilings. This time I'm working on Wang tiles. I haven't yet tried to generate an aperiodic tiling, just a tiling that is...

    I tend to go in circles on my side projects. I'm back to working on tilings. This time I'm working on Wang tiles. I haven't yet tried to generate an aperiodic tiling, just a tiling that is non-periodic within the window I'm looking at. It's been an interesting read about them. It turns out they're really useful in games for generating non-repeating terrain out of a few small bits of terrain.

    2 votes
  5. Apos
    Link
    I did it! I've been thinking about a problem for a pretty long time, I posted about it a while ago here: snip. After months and months of tinkering with the API, trying some way too complicated...

    I did it! I've been thinking about a problem for a pretty long time, I posted about it a while ago here: snip. After months and months of tinkering with the API, trying some way too complicated ways to solve this problem and failing, I finally released version 2.0 of my input library for MonoGame. Apos.Input

    It's a polling-based input library. I managed to solve the problem of handling input conflicts. The solution was to add a tracker. For example:

    ICondition run =
        new AllCondition(
            new KeyboardCondition(Keys.Shift),
            new Track.KeyboardCondition(Keys.Right)
        );
    ICondition walk = new Track.KeyboardCondition(Keys.Right);
    

    Then you can poll the inputs wherever it seems most appropriate in a game loop. When run is triggered, walk will never trigger.

    if (run.Held()) {
    
        // Run while the buttons are held.
    
    }
    if (walk.Held()) {
    
        // Walk while the buttons are held.
    
    }
    

    Before, the code to do the same thing looked like (but not as well since specific inputs weren't tracked):

    bool isUsed = false;
    if (!isUsed && run.Held()) {
    
        // Run while the buttons are held.
        isUsed = true;
    }
    if (!isUsed && walk.Held()) {
    
        // Walk while the buttons are held.
        isUsed = true;
    }
    

    Every function in my game that processed an input needed to pass that isUsed bool around. It made inputs really awkward because a single input consumed would block all other inputs for the rest of the frame even if there wasn't really any conflict.

    With the tracking system, I don't have to manage any of that. It's all seamless. It looks really simple, but that frees my code base from the input cancer.

    I've also restarted streaming consistently on Twitch and YouTube. Tomorrow will my 200th gamedev stream!

    2 votes
  6. LukeZaz
    Link
    I've been spending the last month or so slowly working on a Virtual Tabletop tool in Godot. I started playing D&D 5e in about October or so, and am in 3 campaigns now, of which I host two....

    I've been spending the last month or so slowly working on a Virtual Tabletop tool in Godot. I started playing D&D 5e in about October or so, and am in 3 campaigns now, of which I host two. Needless to say, I quickly decided I wanted to automate stuff, and what with none of the available VTTs being ideal for me (D&D Beyond's tools are alright at least) I made my own.

    It's extremely barebones still, what with how I'd had no experience with multiplayer development at all until this point, but I did recently reach a first usable version recently that has decent chat and dice-rolling support. I'm not sure how far I'll take the project – it's more of a for-fun hobby project than anything right now – but I'm hoping to get somewhere decent with it sometime. Livestreaming Inkscape over Discord is only so effective, after all!

    2 votes