5 ms·
For whatever reason, I’ve been helping people solve problems with their games for something close to 20 years. I have a particular memory from 2004, where someb
by dietrichepp 5y ago
For whatever reason, I’ve been helping people solve problems with their games for something close to 20 years. I have a particular memory from 2004, where somebody sent me the source code to their game and I fixed the 3D transformation code in it and explained what was going on. It was a bit more cumbersome without GitHub, Pastebin, or Stack Overflow.
Over that course you see a lot of people come into the community, have all sorts of beautiful visions and grand ideas, run face-first into the harsh reality that they are ill-equipped to realize their dream, work on arcane technical aspects of their code with the dubious goal of developing some kind of interesting skill, and eventually burn out.
The thing is—I agree with the first point that “most developers will never finish their game” but I think the wrong lessons are being taken here.
If you try to understand the problem, there multiple contributing factors which explain why amateur developers fail to make games, and once you start to understand these factors, you can nudge people in the right direction or at least give them a map of the territory.
- Cause: The gap between skills and vision is large. Mitigation: Reduce game scope, study relevant skills, work with teammates.
- Cause: The gap between skills and vision is unknown. Mitigation: Complete small projects to get a better idea of what skills you have and a better ability to estimate the size of projects.
- Cause: The developer never finishes any projects. Mitigation: Game jams and short deadlines.
- Cause: Projects fail to attrition—the developer’s interest wanes over time, and the project gets less fun over time. Mitigation: Shorter timelines, smaller projects.
- Cause: Poor technology choices. Mitigation: Use mainstream / popular technology such as Unity, Unreal, Godot, etc, and give yourself a limited number of passes to pick a weird technology.
- Cause: Deep, unexpected technical problems with the game. Mitigation: Start by making games that are more similar to existing games made by teams with similar resources and experience levels, until you have more expertise.
- Cause: The game looks terrible. Mitigation: Work on a team with an artist. Or dedicate time to studying art, and find an art style that you are comfortable with that does not require too much effort.
- Cause: Can’t figure out how to solve basic programming problems without a tutorial. Mitigation: Work on a team with a programmer. Or dedicate time to studying programming.
- Cause: Design choices unexpectedly cause high workload. Mitigation: Make prototypes to test critical design choices.
- Cause: Iteration time is too long. Mitigation: Use technology that supports faster iteration times.
This stuff seems obvious and yet there are so many obvious things that typically go wrong in a failed project. “I never considered working with teammates” is common enough. “I don’t want to give up my idea of an action RPG with Metroidvania platforming segments and a massive branching storyline” is a common enough type of problem. These problems can be solved much more easily when people working on games spend time in contact with people who have the experience—professional game developers or successful amateurs are one obvious choice, but school is another good choice. You can make the same mistakes over and over again, it helps to have other people around to point it out for you.
> I myself have abandoned 2 dozen games, in platforms ranging from PhaserJs to Unity to Godot.
This is, frankly, a bit worrying. It reminds me of Schopenhauer’s take on will, how he calls will “blind incessant impulse without knowledge”. We feel the strong urge to make games, but these incessant impulses must somehow be tempered and refined if they are going to achieve anything.
- mLuby 5y agoWhat a great cause/mitigation list! Have you given a talk or written more in depth on this? If so I for one would be interested in it.
- dietrichepp 5y agoI wrote an article specifically for the Nintendo 64 homebrew community: https://www.moria.us/blog/2021/07/9-reasons-why-nintendo-64-homebrew-projects-fail https://www.moria.us/blog/2021/07/9-reasons-why-nintendo-64-...
- mattbrewsbytes 5y agoThese are great points, many of which would apply to indie software development or side projects too. Your point on Iteration time (and tangentially scope, workload and never finishing) do you think agile practices can help? I'm thinking of the concept of focusing on a vertical slice, not a minimum viable product (MVP) or any particular capital "A" Agile framework. In a CRUD webapp this concept could be a user login, on its own it doesn't do much but its a functional part of the app - vertical slice in the sense that it cuts across all parts of the tech stack - UI, app server, and database. In game development maybe this could be something that focuses on building something functioning that involves artwork, music/sounds, animation and data (state of some kind). For example, a fully working character model that can jump, shoot, collect objects, whatever.
- dietrichepp 5y agoThe three things I see in game development are prototypes, vertical slices, and MVPs. All exist to get quick feedback on something. Prototypes let you test out some particular gameplay mechanic or a bit of core gameplay to see if your designs are viable (or you could prototype something else, like graphics, of course). Vertical slices are a small but complete section of the game with polished assets and everything works, but it might be very short, and these exist to help you get funding or make publishing deals for the complete game. MVPs are there to test out the market. As an amateur, I think prototypes are just the bee’s knees. They can be as ugly or as unpolished as you like, and you can just print debugging information straight to the screen. Even if they don’t turn into real games they’re often valuable, because prototype #10 might refine various ideas from prototypes #2, #4, and #7, and turn into a viable game.