Conversation

I just thought of a really good metaphor that explains why using Unity feels so bad to me, despite the fact that I usually enjoy writing code (when I do it on my own terms)

(I just read Thing Explainer so please pardon how weird my word choices are lol - I’m really enjoying writing in this style)

so, when I write code it feels like I’m building a beautiful machine. I get to pick out all of the parts that go in it and if I can’t find the perfect part I get to make that part myself

sometimes I put other people’s parts into my machine, but those parts are always one of these:

  • parts that do something so simple that I could make them myself, but I just don’t want to
  • boxes that do something really ugly that I don’t want to think about. on the outside of the box, there are buttons and levers that let me understand the ugly thing in a really simple way instead. and I can understand the really simple way very deeply so I still feel like I’m in control of what happens

after I’m done building the machine I can feel really proud that I made it all from scratch. I know what every piece of it does, and I’ve tested all of them, so I know for sure that it will always work. I have to know that my machine will always work or I can’t feel proud of it

it also feels good that I was in control of how every part of the machine works. I don’t have to build it in the same way that everyone else builds similar machines - I found my own way to build it that’s beautiful to me

but when I’m using Unity - it doesn’t feel like I’m building my own machine. it feels like I’m living inside a really big machine that someone else built, and I don’t understand how it works. inside the machine there are tons of buttons and levers and switches and they’re all labeled vague things like “play particles” or “stop particles” - or they’re labeled really confusing things like “secondary axis”

the Unity machine is way too big for me to ever understand. I’m not sure if anyone really understands it - though lots of people probably understand parts of it

if I want to do something in the Unity machine, I need to press buttons and pull levers until I figure out a combination that works. and once I’ve figured out the combination, I can be proud that I made the machine do what I want, but it doesn’t feel like I built my own machine. it doesn’t really feel like I understand how the buttons and levers work either. it just feels like I eventually found some levers and buttons that are working okay for now, but later the whole machine might break because I used them

if I want, I can make my own small machines to push buttons and pull levers for me. but those machines actually go inside of the Unity machine. so instead of building a machine out of other people’s small parts, I’m adding my own small parts to Unity instead

so I don’t feel in control at all - it’s actually the opposite. Unity is in control of my own machines, and I don’t get to tell Unity what to do with them. I don’t even get to control how I build my own machines, because Unity has to be able to use them, so I have to build the machines to please Unity instead of myself

I also can’t figure out for sure if my machine will always work, because I would have to test all of Unity to be sure, and nobody understands all of Unity. so I can’t ever be proud of making a working machine because I can’t know for sure if my machine will always work

so instead of feeling proud and smart because I made a machine, I feel small and lost while I try to please someone else’s machine that I don’t understand

I’m worried that Unity will always feel like a big scary machine that I’m lost in. that I’ll never feel like I get to control what it does - and I’ll never be able to prove that what I make will always work - so I can never feel proud of what I make

I’m also worried that if I want to make a machine that other people will want to use, I’ll always have to make it inside of a big scary machine like Unity. I’m not sure if I’ll ever feel safe or comfortable doing that - let alone enjoy it

2
0
8

@kasdeya yeah . . . this is one of our bigger frustrations with a lot of code frameworks

it's like it takes any hope of developing an intuition for how the thing works and shrouds it in fog, as we don't really have a good way to look out from where our code lives to see the rest of the application

0
0
1
re: mental health negative
Show content

@kasdeya I think it's worth mentioning that you already have been making machines inside of machines this whole time. There's networking protocols, network cable manufacturing standards, your entire computer and peripherals, the English language, your programming language, and many more machines you use seamlessly without making them from scratch. Basically everything in life is one of those black boxes with pretty levers hiding a chaotic mess too difficult to deal with.

Making a reasonably self contained thing you understand is just sensible, the only way to get anything done in a world of infinite interconnected systems. If making things in Unity fails to even feel like making things, then maybe that's Unity's fault for not being a useful tool. I don't have a solution here, I avoid graphics programming as a rule because the whole thing feels like a haphazard pile of pieces rather than a working system. I just think you're valid for what you want from it.

1
0
1
re: mental health negative
Show content

@Valdus you make a really good point that all software is a machine inside of other machines

after thinking about this more, I think my biggest problem with Unity is just how intricately interconnected everything is because of the component system - and how those connections aren’t really documented in a clear way. it’s designed that way to allow tons of code reuse, but it feels like a whole bunch of spaghetti to me lol

and it also feels like there’s no way for me to identify a well-defined problem, and then unambiguously solve it. it feels like Unity is more about doing things based on vibes and I don’t like that at all

and I’m wondering if maybe all game dev will feel this way to me. or at least all game dev that isn’t something much simpler like a turn-based grid-based game, or a card game or something

I think I’m probably going to learn something else instead for now

0
0
2
I love the way you describe your own code writing
1
0
1