Internet Archive Vinyl Archive

The Internet Archive is a global treasure:

Unfortunately, many of these audio files were never translated into digital formats and are therefore locked in their physical recording. In order to prevent them from disappearing forever when the vinyl is broken, warped, or lost, the Internet Archive is digitizing these at-risk recordings so that they will remain accessible for future listeners.
Full Post.

Mystery Tease 03


It took me longer than expected to implement this. Obviously.

The reason being I wanted to make it somewhat flexible and to test out a few simple ideas without spending too much time overengineering it (I'm aware of the irony). I'm not 100% sure if I managed it, but here's what I came up with:

I have an abstract interface called InventoryProvider. Each Scene (read Level, Room, what have you) has an inventory, and each Player has one. Now, I'm not saying I'm making a game with multiple characters. But if I was, hypothetically, it would be very easy to add new ones with new abilities or change stuff around without disturbing existing ones. The interface looks something like this:

template <typename InvT>
class InventoryProvider {
	virtual ~InventoryProvider() {};

	virtual bool select(Inventory<InvT>&, std::shared_ptr<InvT>&) = 0;
	virtual bool deselect() = 0;
	virtual bool take(Inventory<InvT>&, std::shared_ptr<InvT>) = 0;
	virtual void useSelectedWith(std::shared_ptr<InvT>&) = 0;

It outlines the most common tasks you'd want to accomplish in a point-and-click adventure; namely selecting items, picking them up, and using them with other items. The Inventory is essentially a wrapper around a std::array of game objects, with some added info for grid-based inventories:

constexpr uint32_t _slot_size = 10;

template <typename InvT>
class Inventory {
	void add(std::shared_ptr<InvT>);
	void remove(InvT);
	bool contains(std::shared_ptr<InvT>&);
	struct Slot {
		float posX, posY;
		bool isFilled;
		std::shared_ptr<InvT> item;

	std::array<Slot, _slot_size> slots;
	bool is_grid;

The Player or Scene inherits from InventoryProvider, implements the methods, and stores the data in a corresponding Inventory member. I check for clicks in the runloop and react according to the position of the clicked item.

Yes, using std::array this way limits the number of items I can have per scene, but that won't be a problem, since they're very tiny anyway. It make it much easier to work with grids, and that's more important to me than filling a scene with more stuff. Remember, I'm the only person working on this thing. I don't have the capacity to add thousands of items, so I get to make decisions like that.

Parser Update Incoming

When I set up this new site, I decided to do most of it myself, including the Markdown parser. I knew what kind of stuff I wanted to write about, so I took various shortcuts to get it done quickly, because I didn't want to lose interest and add to my pile of unfinished projects. Well, that has come around to bite me in the ass, and hard.

I wanted to post a new update on the mystery game I'm working on, and naturally include some code to illustrate what I was doing. Suffice it to say, that didn't go well. The layout was completely borked and now I have to spend time I could be spending on the game on a new and improved Markdown parser. Yes, I know that there are ready-made offerings, but I would like to do it myself. It's fun. I think.

Dark Mode Icons

I waited to upgrade my devices until 13.1 dropped and it's been fine so far. Nothing crashes, no weird bugs (except for that one thing where keyboard keys randomly appear in Springboard, but I've had that since 12), nothing slows down. I appreciate the small design tweaks. Overall a solid upgrade.

I have one little complaint, though: Developers should be able to set Dark Mode specific icons and Apple should make Dark Mode versions of their own icons. I think it's a glaring oversight that this is not there (yet?), especially since they've been so thoughtful about the implementation overall.

Apple Music Feature Request

I like Apple Music playlists a bunch, so I add them to my library all the time. Problem is, they're stored as a list in the sidebar. Which, uh, is suboptimal if you've added more than ten. What I want is to have a view where I can see the cover art. Basically, the album view, but for playlists. Also, a way to pin favorite lists to the top would be nice. That would be super, thanks.

Mystery Tease 02

Look at that, another mysterious image:


Granted, that doesn't look all that different from the one I posted a while ago, but it does mark progress. While the first tease was generated in code just to get it up and running, this one is generated from data, specifically JSON:


That means I can swap stuff in and out, change color, etc., without having to recompile every time. I'm using the excellent JSON For Modern C++ to parse the files on disk. It's super well documented, simple, and makes it feel as if JSON was a native type in C++. Plumbing, ftw.

I'm adding items next, so an upcoming tease will have grey boxes and probably some text. Exciting!

Thrice Upon A Time

Yes, I promised to write something more substantial about Once Upon a Time… in Hollywood. And I will. I just haven't found the time yet. For now, this will have to do:

  1. There are problems. They are mostly the same problem as with every other Tarantino film.
  2. Brad Pitt!
  3. The Spahn Ranch sequence is just perfect. Could be released as a short.
  4. I liked it so much I will probably see it two more times in the theater before the end of the month.

At The Movies

I'm about to head out to watch the new Quentin Tarantino movie. Two weeks late, because someone decided in their infinite wisdom that staggering a release by country is a thing you do in 2019. 😒

I'm pretty excited. I wanted to make a concerted effort to watch more movies in the theater this year, but I haven't managed to do it for various reasons. So this will be only the second original film I've seen in the theater this year. ( I've seen all the Marvel ones, natch.) The other one was Vox Lux, which I enjoyed.

I couldn't escape some of the negative reactions online. Yes, obviously there are problems with Tarantino movies. I will most likely write something about them tomorrow.

But tonight I'm going to the movies, get some popcorn, maybe a beer, and watch $90 million arthouse trash.

I think that's pretty cool.

Top 5 Moments In History

Okay, I've been thinking about this, and here they are: The Top 5 moments in all of history.

5. The Invention Of The Wheel. A biggie, right off the bat. What a moment. Gave us all kinds of stuff: e-scooters, the hamster wheel, you name it! What a moment. <br> 4. The Big Bang Boom! Bet all y'all had that 1, right? Yeah, it's the all-time first moment, buuuut, it's a bit flashy to be number 1, don't you think? <br> 3. Guttenberg As in Steve. <br> 2. Bacon. <br> 1. That time I found a fiver at 3am, went to Mackie D, got a cheeseburger and they put an extra slice of cheese on there. Fucking A.

Mystery Tease 01

I'm trying to get better at the whole self-promotion thing, so here's the first tease of something that might become a thing some time in the future.


N00Lyn3 Postmortem

I'm honestly not sure how to feel about this game, now that I've had a day or two to think about it.

On the one hand, it's the first game related thing I've finished from top to bottom in a while. It's pretty much the idea I came up with on Friday, which in itself is sort of weird for me. I usually tend to move farther and farther away from the initial concept as I develop games. This time everything just clicked.

On the other hand, it's a total departure from my current creative output. My stuff has become more abstract as time went on, and I'm pleased with that. I am much less interested in plot and mechanics; instead I care about mood and making people feel something (weird). This game has none of that. It's a purely mechanical exercise.

I feel good about the process, though. I've been noodling on an engine these past couple of weeks, and as a result, I felt much more secure in what I was doing. I didn't hit any big roadblocks and my frustration was kept to a minimum. Not that I didn't have any problems, but at no point did I feel that it was impossible to produce the game I wanted to make, which was a first.

That one problem with the Windows High DPI thing was messed up, though. I made a note to work around that in the future. (Honestly, my insistence to use non-standard aspect ratios is partly at fault here.) Also that whole "let's have a different main function just for Windows" is still bonkers.

I wrote in my shorter post that I might port this to the iPhone, and while the idea is still not 100% dead, it won't happen anytime soon. Again, the process felt good, so I think I will actually try to tackle one of my long gestating ideas now. No, not that one. It's something I haven't talked about yet. Or at the very least build some prototypes for it. See how far I can get it in, oh, let's say, six months. Then re-evaluate.

The journey is the destination and all that.


I'll do a longer post-mortem once I've regenerated. You can download the thing over at

Windows only, at the moment. Sorry. (Again, tired.)

It's a weird one for me, because it's purely based in mechanics. I feel my stuff is best when it's defined by mood, so I have no idea if this thing is working or not. Do tell me, if you think it sucks. Or rocks. Or sucks rocks. Definitely tell me if it sucks rocks.

Gmtk 2019 Update 2

Suck on that, fake Ron Howard: It's noon(ish) and I have a playable prototype! 🎉


Now all I have to do is make it fun...

Gmtk 2019 Update 3

I do get to finish the game on Sunday. Yay, me.

Because everything took way longer than expected (as usual) I've decided against any (semi)cool graphics that I might've done otherwise. Barebones, primary colors it is. I need to finish the gameplay and add some music, at least.

I think it's actually a decent idea that I might explore further. I think I accidentally stumbled onto a thing that I could use to check out Swift again, because it feels very well suited to the phone form factor. We'll see.

For now, onwards!

Gamemakers Toolkit Jam

So I'm doing this for the next two days:

<a href="">Game Maker's Toolkit Logo.png</a>

It's been a while since I've jammed something, what with the kids and all.

I feel woefully underprepared, but super motivated. I don't know how much I'll post about it during the jam, but there will be a post-mortem, for sure. I probably won't be able to work on the game on Sunday, so I expect to build something really, really small. Probably just a single joke.

The plan is to Unity/Blender/Garageband, since those are the tools I'm most familiar with. If the theme is something I can work with in a text based game, I'll skip Unity/Blender and go straight to "C++" on the command line.

I don't think I'll stream anything, but if I do, I am on twitch and discord as peter_sc#4892.

Let's Rock.gif