Personally, I’m a fairly experienced game dev; I’ve shipped stuff on game consoles, PC, mobile… I’ve only been using Godot for half a year or so, but I’ve been doing gamedev professionally since the mid 1990s; I cut my teeth professionally on Saturn and PlayStation 1, and before that did Sega Genesis and Commodore 64 stuff as an amateur.
I concur with @TokyoFunkScene and @sixrobin – it’s all too easy when building a game (or any other complex software, really) to lose yourself in process, tools, and generally overengineering things. You need a handful of things to start working on a game:
- a suitable computer
- a git (or other revision control system of your choice) repo
- a reasonably fleshed-out idea (that is: hopefully more than “Vampire Survivors but with Smurfs” or some other “x meets y” thing; try for a couple of paragraphs that are mostly nouns and verbs)
- a game engine like Godot, Unreal, GMS, Unity…
The git repo isn’t strictly necessary, but it’s strongly advised, for a variety of reasons.
The game engine generally provides all the baseline stuff that every project needs. Your “library you always include” is the game engine; it has all the essentials.
There may be some special library you always wind up going to if your games have similar requirements; maybe you’ve always got talking heads RPG dialog and so always want the library that does that. But game engines mostly have you covered for the basics.
If you don’t have a firm idea what your game is (like, say, if your whole idea boils down to “StarCraft 2 but better” or somesuch… you’d be amazed how many people want to make a game that’s just some game they like with one minor irritation fixed…) then the first order of business is to get that sorted out. It is very easy to think you have a game design when what you actually have is a fuzzy picture of “wouldn’t it be cool if…” stuff and a very short, vague description.
You don’t have to plan down to the minutiae, and you should be prepared for your design to be a very live document that evolves rapidly. What you should have, though, is a reasonable idea of the core of what you want to make, and what makes it different/special. A couple of paragraphs of stripped down text (that is, no adjectives, stick to nouns and verbs) should do. You can get that together in 15 minutes, and if you can’t it means you don’t really have a coherent idea yet.
Once you have a coherent idea, it’s probably best to work on that directly. Don’t worry about menus or UI or whatever, start working on the core idea of the game. You may well find that once you start coding you discover you need to make (or want to make) drastic changes. You might find that what you thought was the fun part is kind of tedious, but there’s another part that’s actually great.
Sim City, for example, was famously the level design tool for Raid Over Bungling Bay; the people working with it noticed it was a lot of fun to just design the levels, so they turned it into its own game. Only a few of us remember ROBB any more, though it was a great game (the C64 had some amazing games…), but most people have heard of Sim City.
Don’t get hung up on ceremony and ritual; the actual game is the important part, the bit that has to be fun and you want people to enjoy. Jump on that, make something people want to play, and then add polish and the surrounding scaffolding. You aren’t trying to ship a file system layout or a set of project settings, you’re trying to ship a game.