Idea: I've always been interested in procedural world generation, so I wanted to see if I could create my own world. The initial idea was to have the player try to survive as long as possible as they searched through an endless desert for food and water. In researching terrain generation techniques, I came across a pretty good tutorial on chunked terrain generation that implemented the marching squares algorithm. I had a lot of fun just flying through the terrain in the editor that I decided to focus on making a game out of it.
What went right: I more or less completed what I had set out to do, and the resulting game is actually kind of fun. I pushed myself to focus on getting something playable instead of getting fixated on premature optimizations or secondary features that don't matter as much. This was also my first time using Unity in a couple months, and it was nice to get back into it.
What went wrong: There's not a whole lot of "game" to it. I wanted to add in some actual objectives, but some of my choices ended up being limited by technical limitations and decisions I made earlier on. I also got stuck trying to solve some interesting tech problems instead of focusing on creating interesting/fun gameplay.
All of the terrain and collision meshes are generated at runtime as you move through the world. Unfortunately, Unity has to do a lot of behind-the-scenes computation when you assign new collision meshes, which means that performance takes a pretty big hit every couple seconds as new terrain chunks are created. The solution was to only generate collision meshes in a smaller area directly around the player instead of on every single chunk. Unfortunately this means that things like bullets and missiles become more difficult to implement since they would end up flying through terrain that is further away from the player.
If I had more time, I could go a couple different ways with this. I could make it combat-oriented, or I could make some sort of racing type game.
What I learned: If I want to make fun games, I should focus on finding the parts of experiences that are fun and iterating on those instead of technical problems (which can be fun to investigate and solve, but don't necessarily lead to fun gameplay). I also learned a bit about noise algorithms and terrain generation. I'd like to tackle something like this in the future.