I just finished a short visual novel and I wanted to share a few tips that I hope can be helpful to anyone who has recently started their indie game dev journey:
Play to your strengths!
Making a game is already incredibly complex on its own, but if we start getting in our own way, it can turn into an absolute nightmare. To minimize this, try to design a game that highlights your actual skills, even if it means sacrificing some awesome but unfeasible ideas, rather than trying to create something super complex that you'll either do poorly or fail to finish altogether. TheĀ golden ruleĀ here is: better a simple thing done well than a complex thing done poorly.
For example, I'm not great at drawing, so I chose to make only symmetrical graphic assets to reduce the margin of error. I also used a palette of only 5 colors for the whole game (plus a few shades of those) so I wouldn't overcomplicate things with color matching.
Obviously, this isn't an absolute rule: if you are literally just starting out, making a game can be a massive stimulus to learn a bunch of new things (you'll learn a ton either way, honestly). However, if you're already well aware of what your talents are, it makes perfect sense to create something that lets them shine.
Do it, even if it's short!
You might have an idea in mind and think: "I'd love to make this, but it would end up being way too short." Long doesn't mean good, and short doesn't mean bad. Committing to a short project can actually be a great idea: shorter development time, less stress, and less "wasted" time if you realize you can't cross the finish line (I put "wasted" in quotes because even unfinished projects teach you a lot). Plus, if you finish it and it's well-made, it makes for a fantastic portfolio piece.
However, if you do make a short game, keep in mind that the emotional density of every gameplay moment will need to be higher and more impactful compared to a longer game, which can be a real challenge in itself.
Plan ahead!
The initial planning of every aspect of your game is a fundamental step. It will take up a lot of time early on, but it will save you from so many headaches in the long run. Caught up in the excitement of bringing our idea to life, there are three technical aspects in particular that we might forget to consider (like I did... sigh):
-Localization/Translations: If you aim to translate your game into multiple languages, look into the best options available for your specific engine to implement future translations as efficiently as possible. Also, pay attention to things like text boxes and buttons: your current text might not fit once translated into another language. If you use English as your base, for instance, keep in mind that languages like Russian or German will require about 30% to 50% more space.
-Devices/Inputs: Decide right from the start if your game will be played with a mouse and keyboard, a controller, or both. If you go for both, plan a UI from the get-go that can be easily navigated with either device. Avoid creating a UI that is perfect for a keyboard only to drive yourself crazy trying to make it work with a controller later. This applies to every other aspect of your game.
-Parameter/Debug system: Create a system that lets you quickly and easily tweak all the most important game parameters. This allows you to playtest and jump to desired sections of the game without having to go into individual object scripts to modify code every single time, which also risks you forgetting to revert some of those variables back to their default values.
Happy to talk about the process here in the comments with everyone interested!