Plush

About Plush#

I've spent most of my career making tools that help other people make things. I'm a technical artist, which means I've spent an unreasonable amount of time learning how 3D software, game engines, animation systems, shaders, and all the other stuff underneath a game actually work (often just to find ways around limitations that probably shouldn't have existed in the first place).

I've always enjoyed that part of the work. Probably more than actually playing games, honestly. I like figuring out how things work, why they work the way they do, and whether there's a better way to do them. I've spent years making tools to eliminate unnecessary steps in other people's workflows, which is kind of funny considering how much I enjoy the process of making things myself.

Plush started because I wanted to own more of that process.

There are already some incredible game engines out there. I'm not making Plush because I think Unity, Unreal, or Godot are bad (although I certainly have opinions about some of their decisions). I just wanted to build an environment where the underlying systems made sense to me, where I could change things when I wanted to, and where I wasn't constantly working around decisions somebody else had made about how I should be making games.

I also wanted to see if I could actually do it.

I've been using AI to help me program for years, long before agents could directly modify entire codebases. Initially that meant asking ChatGPT questions about APIs, getting code snippets, figuring out how to structure projects, and generally using it as a much more interactive version of Stack Overflow. I learned a tremendous amount of Python and C# that way (my formal programming education was primarily C++, and I don't think making tic-tac-toe for a college final particularly prepared me to write a game engine).

Now AI can implement entire systems, and I've used that extensively while developing Plush. I'm not going to pretend I wrote every line myself, because I didn't. But I also don't particularly like the idea of calling it a collaborative effort between myself and an AI. I wouldn't say Visual Studio co-authored my software, or that a shader I wrote was co-authored by the person whose research paper I referenced. AI is an incredibly powerful tool, and it's changed what I'm capable of accomplishing, but the decisions about what I'm building and why I'm building it are mine.

And that brings me to something I've been thinking about a lot lately.

I've spent my career making tools that remove friction from creative work. The goal has always been to make artists and developers more efficient, so they can spend less time fighting software and more time actually making something. But there's a distinction between eliminating unnecessary parts of a process and eliminating the process entirely.

If a five-year-old can ask a computer to make a game about trucks, and it just makes the game, that's pretty incredible. I'm not opposed to that existing. But personally, I don't particularly want a computer to make a game for me. I want to make the game. I want to understand how it works, mess around with the systems, break something, figure out why it broke, and occasionally discover something I hadn't even considered when I started.

That's the part I enjoy.

And I think there's value in preserving that experience, even if the technology eventually makes it unnecessary.

There's also the question of ownership, which is probably the biggest reason I wanted to make Plush in the first place.

I don't particularly like that so much of the software we use has become something we rent. Subscriptions, mandatory accounts, online authentication, services that can disappear, updates that change things whether you want them to or not. You can spend years creating something with a tool and still depend on the company that made the tool to continue granting you access to it.

I think that's a strange arrangement (especially when we're talking about software people use to make things they supposedly own).

I can buy an old Nintendo 64 cartridge, plug it into a working console, and play it. Nintendo doesn't need to know I'm playing it. They don't need to maintain a server, and they can't remotely decide that my copy of the game is no longer valid. I own the cartridge. I can keep it, sell it, take it apart, or destroy it if I really want to (although I'd probably regret that last one).

I think there's something important about that kind of ownership that we've gradually lost with digital software.

That doesn't mean I think every program needs to be open source, or that buying something should entitle you to every future version of it. Developers need to make money, and intellectual property rights exist for good reasons. But I do think that when you buy a piece of software, you should be able to keep using the version you bought without needing continued permission from whoever sold it to you.

I want Plush to work that way.

And perhaps more importantly, I want to be able to use Plush without depending on AI, or Adobe, or Epic, or whoever else might decide to change the terms of something I rely on. I want to open the editor, write some ordinary C#, use Python to automate whatever I need, import my own models and animations, and make games. If I want an AI agent to help me do something, great. But I don't want the agent to become a requirement for understanding or operating my own software.

There's a certain irony in using AI to build a game engine partly because I don't want to depend on AI to make games. I'm aware of that (and I think it's a pretty interesting distinction).

I don't know exactly where software development is headed. AI is changing things incredibly quickly, and I think we're going to have to reconsider a lot of assumptions about what software is worth, who owns it, and what it even means to create something.

Maybe in a few years somebody will be able to generate an engine better than Plush by typing a sentence into a computer. Honestly, that's probably not even a particularly unreasonable prediction.

But I don't really care if making a game engine becomes unnecessary.

I wanted to make one.

And now I have one that I can keep building on, experimenting with, and using to make whatever I want (which was really the point all along).