That would be ideal. But generally, it’s quite confusing
“An electrician doesn’t make their own pliers and electrical wire”
“A carpenter doesn’t make their own hand saw and wood”
A programmer frequently builds their own tools and resources
And that’s exactly where all this confusion comes from
Creating a sprite → “I’m developing a game”
Modeling a character → “I’m developing a game”
Programming an inventory → “I’m developing a game”
Even though actual game development only truly begins once you have all the pieces and all that’s left is to connect them
A sequence that, in practice, rarely ever happens
Because programmers build the tracks while the train is already running
In programming, ideally, you should build the libraries first
Inventory.add
Inventory.remove
etc.
After building that, you simply use the bug-tested resource
But in practice, they build the functions first—often incredibly well-named
AddWeapon-with_three_shotsToInventory
AddWeapon-with_two_shotsToInventory
Only later do they realize they need to separate responsibilities
And refactor the spaghetti
A more organized game studio can reuse the same pieces to build multiple games
The chaotic ones frequently recreate the exact same pieces over and over again
For instance, every time they need to make a character move, they rewrite:
C++
(...)
const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
AddMovementInput(ForwardDirection, MovementVector.Y);
AddMovementInput(RightDirection, MovementVector.X);
(...)
C#
(...)
if (controller.isGrounded && velocity.y < 0){
velocity.y = -2f;
}
(...)
Other times, a level designer pieces things together and builds new components for a game designer to use
Or vice versa
This makes it even harder to distinguish:
- The moment they are building the pieces
- From the moment they are actually using those pieces to build a game