Taylor Robbins's Avatar
Taylor Robbins
I love programming and the joy that comes from creating useful things. I'm the author of Const Port. I like to make toy games as a hobby.
Website
Const Port
Member since

Recent Activity

Here's a very informal blog post I wrote to start off the jam for my &modern-urls project. Don't expect too much from it, but if you have a bit of time and find the topic interesting feel free to give it a read https://www.siltutorials.com/blog/the-url-problem
(Reposting because I got the & mention wrong, and editing the post didn't seem to work)

View original message on Discord

One way to solve this problem is to give every computer in the world a unique identifier. In this hypothetical past, when there were only 10 computers, we could just label each computer with a number 1, 2, 3, etc. and then we could use that number to uniquely talk about each computer. Maybe my friend owns computer 3, he tells me his computer is 3, and on my computer which is 4, I say I want to connect to computer 3. So my computer looks at every computer connected to it and finds the one that reports itself as computer 3. This is pretty simple, and actually would work great if it weren't for a few fundamental problems:

1. There are more than 10 computers in a world. Way too many for a human brain to remember each unique number. Too many for my computer to ask every other connected computer what number it is as it tries to find a particular computer.
2. Humans are not as good at remembering "random" series of numbers as they are at remembering names and words in their own language. I can remember 10 random English words easier than I can 10 random numbers between 0-255, and that's not a fair comparison, because there are more English words than 255. Also some names are more valuable than others, because they are easier to remember, or represent more popular concepts. For example more people may want their computer to be named #1 rather than #2425, because #1 is easier to remember and people have a preference for being #1 in a competitive sense.
3. People all speak different languages, and it's easier to remember words and names in the language(s) you know. This is especially complex if my friend and I speak different languages. His computer might have a name in his language that is hard for me to remember. We need some system where we can use a translation of his name into a name that I can understand and remember.
4. Say my friend buys a new computer between telling me about the game and me trying to download it. This new computer might have a different number than his old one, but it's still **his** computer, and he likely means for me to get the game from his **new** computer rather than his old one. It would be nice if he could tell the world "I got a new computer. Please use computer 9 now, not computer 3" without having to communicate with me specifically.
5. Files and information transfer hold value, so someone might want to pretend to be my friend's computer. How can I be sure I got my friends file, not someone else who tried to pretend to be my friend? I somehow need some guarantees that the information my friend told me is enough to confidently route me to his computer, not someone else's.
6. The file on my friends computer might be in some folder. Once I'm connected to his computer, how do I find the file I am looking for? This is sort of a sub-problem, since my friend could include the information about which folder it's in as he's telling me the ID of his computer, but we'll likely want to treat this as a sub-problem, since it's likely easier to solve the problem of finding the right file **after** we solve the problem of connecting to the correct computer.
7. There might be a **lot** of people that want this file. Maybe my "friend" is actually Taylor Swift, and the "game" is actually a new album she just finished. Millions of people want to download this album but a single computer is not powerful enough to serve all of those people at the exact same time. For a variety of hardware reasons, we can't have a single physical computer that everyone is downloading from. We need to set up a system where the load of transferring the file is distributed amongst a collection of computers that all have the file. Even if everyone is finding the file using the same information that Taylor told them.
8. Related to #6 Each individual computer may break, or it may go offline for one reason or another. We can't have one computer failure cause the entire system to be inaccessible. We need to have a dynamic system where people get routed to a different computer when the one they were trying to connect to is unavailable
9. People live all over the world, and downloading a file from France while I live in Canada is not always that fast. It would be nice if my friend could manage a computer that is not physically located at his house, so that people that he can share files quickly with people who do not live close to him.

The URL Problem

Here's my description of the URL problem, as I understand it (i.e. I haven't done any research into the topic, this is the story I tell myself in my head. I'm sure the reality and history is a lot more complex)

Let's imagine we are at the beginning of the internet. There are like 10 computers connected to each other. If I am using one computer, and I want a file on another computer, I need to somehow distinguish which of the other 9 computers I want to access to get the file. There are essentially two problems that need to get resolved
* I need to know which computer the file is on. Maybe I just used the computer recently, so I want to see and remember the name of the computer I was accessing so I can tell my computer at home later which computer I am talking about. Much more commonly (in the modern world at least) I was told the file existed by some external source. Like maybe a friend told me that there's a cool game on his computer that I should try out. In this case my friend needs to somehow communicate to me the information about his computer so I can access it later
* Once I know which computer I am talking about, I need to somehow put some information into my computer and run it through some system that will get me connected to and downloading the right file. Essentially, using the information I have in my head, combined with the information and systems on my computer, I need to reliably (and hopefully without too much effort on my part) get connected to the correct computer.

Finally got around to recording a video of Process Spy in it's v0.1 state. The current zip that's available for download can be a bit annoying to get working (getting the open procmon driver started reliably is hard it seems, even with admin privileges. Also unsigned .exe trying to capture file events is often flagged by anti-virus). So this video should act as a small demo for what I was able to get working within the jam window. I'll definitely keep working on this after the jam too.

View original message on Discord

Here's a short video of Process Spy v0.1 in action. The list of processes that we've seen events for are listed on the left (along with number of events we've seen from that process). Events are filtered to only file accesses that are within the current folder you are looking at or in any of the sub-folders (recursive). There's not a whole ton of interaction or animation, but even with just this info I can find some interesting things going on. For example, Discord seems to be looking at most of the .exe files that I have currently running. You'll also see that Process Spy detects it's own actions often. These are coming from the way we lookup icons for running processes. We have to ask Windows for the icon for a particular .exe and that gets logged as an event on that .exe.

Because of the short time it may be hard to get the program running properly on your computer (turns out getting the Open Procmon driver started reliably is harder than I thought, requires something more than just admin privileges). So this video acts as a standin for running the process yourself. Hopefully the program will be easier to run in the future

Version 0.1 of Process Spy is now available as a zip download in the github repository: https://github.com/PiggybankStudios/ProcessSpy/blob/master/release/ProcessSpy_0_1.zip

There are a bunch of things I wanted to do that I ran out of time for in the jam time window. But I plan to add a lot more features in the near future. Being able to interact with the icons in the main viewport to identify which process icon is which is one of the main things. Also adding animations to the icons so you can more easily see when accesses are occurring, and how many. I also really want to add some filtering options so you can only see certain kinds of access events, or only events for certain processes

(Updated screenshot because the last one contained my email from some dumb Adobe account folder)
Finally got some visualization happening in Process Spy

View original message on Discord

More progress on the file browsing experience. Proper icons for files are requested from Windows. Scroll bars are added and mouse interactable. Selection is fully supported (including shift/control + left click). Double clicking folders allows you to navigate (or select and enter key). I think I should probably start working on the actual visual now. This seems like a fairly okay file browsing experience for a day of work
Link: https://github.com/PiggybankStudios/ProcessSpy

View original message on Discord

A bit more progress. Tomorrow I'll start on actually displaying the information I want to see. And hopefully populate the left-hand panel with a list of running processes

View original message on Discord

The idea I had for the Visibility Jam requires that I have a basic file explorer like experience to work on top of, so I've started setting that up this afternoon. It definitely won't be a Disk Voyager level experience, but hopefully it'll feel a little nicer than File Explorer in some ways

View original message on Discord

Worked more on my web assembly glue layer yesterday. Made a little toy breakout style game https://piggybankstudios.github.io/BreakoutPigWasm/

View original message on Discord

I am slowly conquering quaternions! Yesterday I got a conversion function from basis vectors to quaternion working (i.e. rotation matrix to quaternion) which is an important step to being able to answer some basic questions like "Give me a rotation where right face goes this way and up face goes that way."

Here's the weird little debug cube rendering I used while trying to get it working (Semi-transparent larger cube is the rotation if we convert from quaternion to basis vectors and then back again, it's now following the rotations of the main box. Yellow line is original quaternion axis and orange line is the semi-transparent box's quaternion axis)

I can share the implementation I landed on if anyone is interested but it mostly came from this page https://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/

View original message on Discord

Made decent progress on a non-enscriptem based web assembly application. Got some nice colored debug output and a canvas that I can draw a moving rectangle to. There are all sorts of rough edges with the standard library being ripped out (for now at least) but I think this will be a great starting place

View original message on Discord

@bvisness This ended up working out pretty well. There were a few more caveats with how I look up font faces and bakes and fall-back to faces that don't have bold/italic as a last resort (like hiragana being drawn while bold is enabled. Bold hiragana doesn't exist in the font I'm using so it's only in the first font face). Overall though this new pass on the font structures is much cleaner than the original pass so I'm pretty happy with it. (This is all the "bakes" in one font. Each row is a font "face". Each rectangle is a bake in that face. Each bake can have multiple "ranges" of either contiguous codepoints or a list of specific codepoints.)

View original message on Discord

I've been working on a new set of screenshots. It's interesting trying to balance between making the screenshot look aesthetically pleasing and keeping the puzzle being photographed functional. Also technically these screenshots don't contain the normal UI/viewport for the game but I don't think they feel improper because of it: https://www.princesscastlequest.com/screenshots

View original message on Discord

This is how we test the movement system in the game (and the googly eyes)

View original message on Discord

Googly eyes were a good idea I think xD

View original message on Discord

This is my first approach at trying to evenly distribute some number of points within a rectangle. Turns out this is a really interesting problem to try and solve

View original message on Discord

Starting to test out some pseudo random number generation options. Made a nice little visual for it

View original message on Discord

I've been dabbling in some color theory and LCH(ab) color space. Made a cool visual and tried to record it with my GIF encoder. Forgot that the gif encoder only chooses 256 color palette and isn't that good at choosing the colors. This is the weird result

View original message on Discord

Added a cool little input display thing for our game today

View original message on Discord

Implemented a broom on stream yesterday. It's pretty satisfying even without nicer sweeping animations

View original message on Discord

Maybe not the prettiest screenshot but I've been working on a bunch of technical backend to the game engine for our puzzle game in preparation for the demo over the last couple of weeks. One of the things that is hard about a demo is making the the demo executable different enough from the main executable that it's hard to crack while still providing an example of gameplay. The way I approached this was to make a binary pak format that only the full game knows how to deserialize while keeping the levels that the user creates/downloads and the demo levels in a regular ascii .lvl file format.

View original message on Discord

Been working on a Demo level recently for our puzzle game. I've found it's really hard to have a player play through the regular progression of the game during a short session like at meetups and trade shows. So instead we decided to make a single level with a collection of our favorite puzzle designs and just let people roam and attempt puzzles at their leisure. https://gph.is/g/EBmKOdX

View original message on Discord

Hey everyone! Me and a couple of friends are about to release our first game into Early Access mode starting on Friday. It's a puzzle/adventure game with a full level editor called Princess Castle Quest. We just finished a first version of our announcement trailer: https://www.youtube.com/watch?v=L55UHbb7Vic

You can join our Discord if you are interested too: https://discord.gg/JQaertK

View original message on Discord

Working on a system to record inputs and replay the recording. Had a bit of fun trying to optimize puzzles and play them back at max speed

View original message on Discord

Hey everyone! Come check out Princess Castle Quest at the Show and Tell room tomorrow. It's a puzzle game about a princess trying to save up to buy her own castle. We are working towards starting Early Access in February of next year. The game is made entirely in C with only GLFW and a library of ogg file parsing. We've got a bunch of really interesting systems to show off and we'd love to hear your questions and feedback!

View original message on Discord