fortyseven

Pico-8 – Lines Screensaver

2019-01-22 

Okay, so it’s not really a screensaver in this instance, but it’s the art from inside one. You recognize it. You’ve seen it before. But here it is… much lower res than usual. 😉

Source: https://gist.github.com/Fortyseven/a4e2d5d3105ed86e0916d162a1a4d466

pico-8 cartridge // http://www.pico-8.com
version 16
__lua__
-- lines (classic)
-- by fortyseven

SPACING = 4
SPEED = 1

function buildPolyVerts()
    local verts = {
        x=rnd(128),
        y=rnd(128),
        xvel= SPEED,
        yvel= SPEED
    };
    if (rnd(1) > 0.5)  verts.xvel = -verts.xvel
    if (rnd(1) > 0.5)  verts.yvel = -verts.yvel
    return verts;
end;

-------------------------------------------------------------
poly = {}

function poly:init(i, color)
    self.color = color
    self.verts = {}

    -- ensure we use the same seed for each poly object, so it will always
    -- create the same intial x/y/velocity directions

    for i = 1, 4 do
        verts = buildPolyVerts()
        add(self.verts,verts)
    end

    -- run the update a couple times to space them out

    for i = 1, i*SPACING do self:update() end
end

function poly:update()
    foreach(self.verts, function(vert)
        vert.x += vert.xvel
        if ((vert.x >= 128) or (vert.x <= 0)) vert.xvel = -vert.xvel
        vert.y += vert.yvel
        if ((vert.y >= 128) or (vert.y <= 0)) vert.yvel = -vert.yvel
    end)
end

function poly:draw()
    for i = 1, 3 do
        color(self.color);
        line(self.verts[i].x, self.verts[i].y, self.verts[i+1].x, self.verts[i+1].y)
    end
    line(self.verts[4].x, self.verts[4].y, self.verts[1].x, self.verts[1].y)
end

function poly:new(o)
    self.__index = self
    return setmetatable(o or {}, self)
end

-------------------------------------------------------------
polyCluster = {}

function polyCluster:init(col_array)
    self.objects = {}
    seed = flr(rnd(1000))

    -- generate three unique polys
    for i = 1, 3 do
        srand(seed)
        local o = poly:new()
        o:init(i, col_array[i])
        add(self.objects, o )
    end
end

function polyCluster:update()
    foreach(self.objects, function(obj)
        obj:update()
    end)
end

function polyCluster:draw()
    foreach(self.objects, function(obj)
        obj:draw()
    end)
end

function polyCluster:new(o)
    self.__index = self
    return setmetatable(o or {}, self)
end

-------------------------------------------------------------
clusters = {}

function _init()
    local c = polyCluster:new()
    c:init({2,8,14})
    add(clusters, c)

    c = polyCluster:new()
    c:init({1,6,12})
    add(clusters, c)

    c = polyCluster:new()
    c:init({13,6,7})
    add(clusters, c)
end

function _draw()
    foreach(clusters, function(c)
        c:update()
    end)
end

function _update()
    cls()
    foreach(clusters, function(c)
        c:draw()
    end)
end

Fantasy consoles?!

2019-01-05 

Been really enjoying playing with Pico-8 lately. If you’re not familiar, it’s essentially a so-called ‘fantasy console’ that you can code against. It has all kinds of restrictions as far as code size, memory, graphics, etc. But that’s the point: coding within restraints. Old-school style before entire trucks full of gigabytes and gigahertz were dumped on our doorstep.

The consoles include code, music, and art editors inside the app, so you can do everything in one place. It’s possible to edit these things externally, too, if that’s your bag. Personally, I’ve been using VSCode along with an appropriate extension.

My first attempt was recreating the classic demo-scene fire effect, which has popped back into the mainstream consciousness thanks to
this post.



As you can see, it runs pretty great in a web browser!

There’s other ‘fantasy consoles’ besides Pico-8, including TIC-80 which has an Android port for coding on-the-go!

Not only is it a good exercise coding down to restrictions, it’s very convenient to just pick up and go to sketch out gamedev ideas.

Give it a go!

Slack Injection Arcade – THING!!!

2018-08-21 

Played through the first episode of the Build-based classic Blood last night. It’s not great but it has some charming moments. At the time, everyone was going for the one-off jokes and pop culture references after Duke 3D set the tone for these things, and Blood was no exception! 😉

 

 

This, of course, applies to almost everything divisive…

2018-08-19 

Surely there’s a balance between the suffocation of extreme political correctness and being a crude, self-important jerk who lacks compassion.

Finding that balance requires a nimble nuance few seem willing to engage the issues with. It’s either all or nothing, whichever way you happen to swing.

And the sheer aggressive, pigheadedness of the majority of the opposing side (whichever it is), and the strong desire to throw a wrench in their mechanisms, all but forever guarantees a wide gulf between ideologies.

Slack Injection Arcade

2018-04-03 

I’ve been meaning to do more Slack Injection episodes, but I just haven’t gotten around to it. But I do play a lot of games. I seem to find time for that. Oof.

There’s a whole world of game streaming that I never really got into — your “Twitches” and your “YouTube Gamings” and such.

So, what the hell, right?  Over the last couple nights, I’ve been playing with Twitch and the always excellent Open Broadcaster. Streamed some Far Cry 4, and, last night, my Overwatch session. And you know what? It was fun. I love to ramble and bitch, so this was a great match for me. I had no idea. 😉

Going to make an attempt to stream nightly, or a couple times a week at least. Whatever I’m currently into. Or maybe do something different now and then, like some NES/SNES classics.

I’m going to set it up so that folks can call in, including some regulars, making it almost an improvised talk show of sorts. Maybe I can line up some audio clips, like the pre-recorded shows.

I have no idea — this is my first week playing with it. I’d like to make it something different from the million other streamers, though.  But for now, I’ll just take it as it comes.

For now, add me up and follow to get notifications. I’ll probably be streaming around 8 or 9pm EST, when I do, but I could strike at any time…! ;U

(Well, not at work. 😏)

https://www.twitch.tv/drfortyseven

Last Walk in Clinton

2015-03-23 

I went for what will probably be my last walk around downtown Clinton, tonight.

Cold and crisp, but surprisingly hospitable considering the temperature.

As always, folks were hanging out over at the Driftwood (or whatever it’s called nowadays). People playing pool. Having fun. Never took the time to drop in and check it out. Bars aren’t really my thing. Wish they were. Feel like I’m missing out.

Lots of cars and people leaving the Town Hall. Probably had a play tonight. Or a rehearsal for one.

I sat on the bench between the church and the Stanton House for a bit, and looked around. Watched cars go by. Nice little quiet spot in the dark, just me in my black pea coat, black Punisher winter cap, and scarf.

Sigh.

I’m going to really miss this town, and the CT shoreline area.

Clinton, Westbrook, Saybrook, Madison, Guilford… they’ve been such a large part of me and my identity, for over three decades.

I grew up here. The shoreline the well-worn groove in a comfortable couch. It’s all I’ve known. It’s ME. But you know? I need to let it go. The world moved on… and I didn’t. At this point, I figure I’m long overdue.

So, tomorrow afternoon, this unusually thick chapter will come to an end… and a new one will begin.

I am… cautiously optimistic.