• 1 Post
  • 41 Comments
Joined 1 year ago
cake
Cake day: July 9th, 2023

help-circle

  • Self-replying to add a couple other classics that aren’t already in the thread:

    • Penguin Land: A Mr-Driller-like puzzler where you are trying to carefully bring an egg safely to the end of the level - but it can only fall one block distance without breaking. Also, there are polar bears you can crush with boulders.

    • Zillion: This game has no business being as good as it is. Side scrolling adventure game where you are tasked with rescuing your captured spy-buddies. You have to loot secret codes from the bodies of fallen enemies, use them to unlock laser doors and progress further into the enemy base. It uses exceptionally large and detailed sprites for the time and is a surprisingly “mature” game for the Era. (Not meaning nudity, just that it is more interesting to someone auth the patience to map out a base and write down secret codes)

    Skip the sequel, however. Zillion 2 sucked. a lot.



  • GOLVELLIUS

    This game is a blatant… homage to OG Legend of Zelda. But IMHO it does almost everything better.

    The game begins with Link Kelesis entering a cavern where an old woman tells him to take a sword - and some boots because our boy can’t even dress himself.

    After that, you know the drill. Top-down action rpg mode, slaying monsters, leveling up, finding secrets and better equipment.

    Where it improves on the original LoZ is that the Master System was more powerful than the original NES, so the graphics here are brighter and more detailed and the audio is crisper.

    The structure of the world is more linear than LoZ - but that means it’s a lot harder to get lost. Also, as you unlock gear and powers you can backtrack to discover new secrets in old locations.

    The game’s characters vary wildly in tone from angry old ladies berating you for lacking the funds to shop to meandering fairies commenting on snow cones.

    I replay Golvellius every few years on whatever the handheld platform dujour is. …I think it’s about time to give out a spin on the steam deck again.

    Anyway. If you like that classic Zelda vibe, give Golvellius a spin. It’s seriously one of the best games I played on the old Master System.






  • Classes are Data plus the code required to modify that Data. The idea is to encapsulate data modifications into one thing (a Class) that knows how to modify all the Data as a single unit. This lets us write some code to describe, say, a Scrollbar widget. The Class for the widget combines all the Data for a Scrollbar (position, orientation, bar size, total size, etc) with the methods that read or modify that data (scroll up/down, change size, draw, etc).

    That’s the first Big Idea of OOP - that data should be grouped with the functions that modify it. If you don’t have that - as in C - you have to write functions that only work on a given data type but which are namespaced separately. You get functions like void set_scrollbar_pos(void* scrollbar, word pos) which become verbose in a large project. (I’m not saying this is the worst thing in the world, just a different style.)

    The second Big Idea of OOP is message passing. Now that we have code and Data bundled together, it would be nice if Objects that share functions of the same essential type and intention could be swapped out interchangeably. So instead of directly invoking a function on an Object, we send a ‘message’ that says something like ‘if you know how, please draw yourself on screen, relative to X,Y’.

    Of course, since plain English is hella verbose, the actual message is going be something like “draw, X,Y” and the Object receiving the message then sorts out if it has a method called “draw” that can use the provided X and Y. If so, it runs the code to do so. If not, you get an error.

    Messages like this mean that you can swap out compatible Classes for one another. E.g. you can ask any collection of widgets to .draw themselves with a single method and let the compiler/interpreter generate the machine code as needed. That reduces the amount of boilerplate for engineers by a lot! Otherwise, trying to work with any collection of heterogeneous Objects (like a List of every Widget contained in a Window) would need to have essentially the same code rewritten for every different Type needed - a combinatorial explosion of code!

    Tl;Dr -

    • Classes help organize code and simplify state management by combining data with the functions that manipulate that data.

    • Classes reduce the amount of boilerplate code needed by allowing methods with the same “shape” to be called interchangeably.

    Everything else about OOP is essentially built off these two ideas. I hope that helps.









  • Aw man, you can’t write all that and then not give an example!

    Ruby makes scripting drop-dead simple. You can run any shell command by surrounding it with back ticks.

    # simple example, just grab files: 
    files = `ls`.split("\n")
    
    # pipes work inside back ticks
    files.map {|f| `cat #{f} | grep "can I use grep w/out cat"`}
      .compact
      .each { |match| puts match }
    # easy to build a pipeline on the data in ruby, too! 
    

    That’s it! No messing around with popen3, or figuring out pipes or signals. Those are there too if you really need them, but if you just wanna write a quick script with a less arcane syntax - try Ruby!


  • Ho-ly shit… You got me thinking and - if it weren’t so OP that it’d ruin the storytelling, the teleporters would make the federation the most terrifying army in the galaxy…

    Transporters should be able to fix pretty much anything wrong with you. Lost a hand? Don’t worry, we’ll replicate it from your last transport. Feeling sick? Nope - we beamed the little beasties away. Just a little dirty? Uniform rumpled? That won’t do, we’ll just fix that for you. No need to stop what you’re doing, it’ll happen in the background, you won’t even notice it’s happening…


    K’ovok, Klingon warrior, led his troop’s third assault on the federation outpost. They had been locked in combat with the Federation army for three days now. His troops were covered in blood, mud and unidentifiable filth after three days of glorious battle.

    The Federation “dolls” didn’t even look sweaty. Their uniforms were clean, fit perfectly and they were still smiling - always smiling - with their white, perfect teeth.

    K’ovok swung his bat’leth through the neck of a federation p’tagh and smiled with satisfaction as the body fell lifeless - and nearly headless - to the ground. He turned to find his next opponent…and heard the slightest hum. Whirling, K’ovok found himself facing the same man he had just beheaded shaking out his arms and smiling. Always smiling. Even his uniform was spotless.

    “Nice swing” the Federation doll spoke, slowly adjusting his neck and jaw. “You sure can dish it out! Let’s see if you can take it, too.”


    No plague, nor illness, nor infirmity ever touched the humans. As soon as they passed through one of their transporters, which was often, any deviance from perfect health was simply cleansed. From overeating to plagues to simple sloth, there was nothing the transporters could not repair, replace or remove.

    Aboard a starship the systems were even more aggressive. So long as you wore your combadge, your vitals were measured for any abnormalities. A slight tingle on your skin as bacteria or just honest dirt was transported away, added to the biomass the replicators drew from. Occasionally, you might lose a few seconds of time in the case of a really bad mess. More than one officer could relate a story about dying of a heart attack of moment and then waking back up still in the command chair.

    Of course, the transporter system had required generating an intensely thorough understanding of human biology to perform these feats. Most other species refused to make use of human transporters, for that very reason. The information required to configure them for “best effect” was simply too dangerous to hand to another species, however “benevolent” they may be. The Vulcans had famously accepted the “gift”. And in fairness, the transporters did work as advertised. Disease, infirmities, even many indignities of aging simply went away from Vulcan, cured by the transporter.

    But some still wondered, at what cost? The humans were allies, but they now had the data to engineer highly specific germs, plagues that could spread unseen through the galaxy, yet kill only Vulcans.

    There was no evidence such pressures were being applied, but it was notable how quickly the aloof Vulcan empire had become fast friends with humanity. Subservient, even, to their so-called Federation of Planets.

    Some whispered that it was yet more insidious - to function as they did, the transporters needed to understand your biology perfectly, from the beat of your heart, to the thoughts in your head. What if the transporters scanned for “unhealthy” thoughts and simply “cleansed” those too?

    And yet The Federation came on, and ever on. Spotless and smiling.