Welcome to the community! Always happy to see new aspiring devs.
There is two ways to go about getting started, two philosophies:
- Focusing on small projects
- Focusing on skills
The is definitely a learning curve depending on what kind of game you want to make. Some people will ask you 'what kind of game do you want to make?' and the issue is that even simple games requires a lot of fundamentals, so people will tell you to make games you want to make, but really simplify your ideas, don't try anything ambitious. I've even heard the rule that your first game shouldn't take you more than a month. The issue is, for new devs, without knowing anything, they have no way to tell how complex an idea is, or how long it will take. Doing small projects just to get some experience with some mechanics and learning tools is good, but I think its better to frame those kinds of experiences as "focusing on skills"
I suggest focusing on skills, because phrasing things in terms of 'skills' is a good way to break down a lot of the complexity when it comes to games and how to make games. Say for example, you want to make an open world, 2D like, zelda experience or something, with quests, characters that can join you, loot and collectables. Most people start making games because they found something that really inspired them, but each feature a dev wants to implement requires their own skills and experience. Making an inventory in code is one set of skill, learning how to manage datatypes is another set of skills (even if you are still using simpler languages like python, you still need to understand concepts such as "objects/Classes" and Object oriented programming), and then trying to set up a User interface is a whole other set of skills, and that's just the inventory. There's even a famus blog post about the complexity of simple things, like adding doors to a game.
So game making can be challenging, where's a good place to start.
I fear that lots of users on this site will tend to suggest things such as Renpy, Twine, RPGMaker, and maybe unity. I want to again mention the philosophy about, focusing on skills. Depending on what kind of projects you want to do in the future, there is a right and a wrong way to start.
Do you want to tell a story? Twine and RPGMaker are often used.
Do you want to focus on showing off art, Renpy (a visual novel engine) is very very popular on this site (you'll probably get the most help with this engine since lots of users here use renpy).
Both twine and rpg maker can be used to show off art, but are really good at dumping lots of text, while renpy is better for shorter bits of text (aka dialog).
With renpy, you can learn python to give the engine more power and start to do some pretty crazy things, such as simulating interactable phones, interactable maps, and make a game that isn't a visual novel, but this requires learning lots of tricks and ways to manipulate renpy's default behavior.
But what if you aren't sure, or you want to do other kinds of games, or implement custom game mechanics? While it is possible to implement different kinds of games and mechanics with the above tools (twine is often used for multi-branching stories, or having a player character with stats, for text based games such as for dungeon crawling using only text), these more or less requires a good understanding of the engine, how to work with the engine, and seeing how other people did something because it may not be entirely clear how to go about something.
For the most part, renpy and twine are the most popular, with renpy focusing more on visual, and twine allowing you to use mostly text to substitute for art. But what if these aren't the kinds of games you want to make. what if you want something a bit more interactive, such as a platformer, an RPG, or maybe a visual novel with more complex character AI? In those case, as you become more skilled and familiar with your tool, you'll start to run into an issue. Twine, Renpy, and RPGMaker are specialized tools, they make it easy to make different kinds of games, but they start to limit you when you start to do more complex things.
The moment you want to do something more, is when you have to relearn a lot to switch to a new tool. Now a days, lots of programming languages implement (OOP aka Object-Oriented-Programming). When you learn the concepts of OOP, and how code behaves in general (vairables, datatypes, scope), it can be easier to switch to a new programming language, but the issue with that is none of the above really use general progarmming languages. If you want Java, I think Java tends to be used with Twine (which is still a pretty powerful tool), renpy is kinda python like, it uses python, but its not true python since it runs through a special interpeter and is formated to interact with Renpy's own scripts. RPG maker is just a tool, idk if you can actually program with it. But when all else fails, Unity or Unreal Engine 4 (Godot is also a unity competitor that is slowly making a name for itself).
The choice depends on what kinds of games you want to do in the far future, and which tool will work for you best in the long run. However, if you want to start off in hard mode, I would recommend Unity, mainly because you can us C# which I think is the best programming language. But, that's only if you need to deal with code. You only need to deal with code when you want to do or make something that can't be done by the tool. RPGMaker makes an interactable RPG like those in the 90's, but you can't change how objects behave or add too many affects with puzzles and game interactions being limited to only what is pre programmed. Twine is an HTML something, I think lots of people use the 'sugarcube' plug in to make twine more powerful (often used with lots of games but I forget what it does) so it only opens up in a browser as a text focused interface, so no interactable chaarcters or maps (but hey, maybe there's plug ins to give it more features for this), and I've seen people do incredible things with renpy, but it still has some limitations. If you wanted to do visual effects like animated characters or physics based animation on a character's outfit, not possible. Again, worst case is, you want something, but have to develop it yourself, which is the only reason you have to start looking into code.
So if you want to focus on ideas and games mainly revolving around art and story, you'd probably want to 'focus on projects' and getting familiar with how your tool works. I'd suggest twine or renpy, and you'll probably get lot of help from others on this site as you try to do things with the tools.
But if you know that you want to do more complex ideas or ideas that doesn't sound possible with these tools (typically if you want your games to focus more on game mechanics, or if you are more inspired by game mechanic ideas than you are about story/art), then you I'd actually recommend focusing on developing 'skills' because it will be your programming skill that maters more, not so much the tool you use. I'd strongly recommend Unity and learning about C# (Microsoft's 'better' version of java). If you are learning code, C is basic variables, scope, and flow control, C++ introduces OOP (such as what can be found in java), C# is better because safer code, automatic memory management, but it handles OOP a bitt different from Java but is more powerful (With java they don't allow you to do some things because they didn't trust the devs to be safe, which C# found solutions for), and has a robust exception system that makes it easier to figure out whats going wrong. Unreal uses C++, which I don't advice for new devs nowadays because the code is unsafe (easy to make code that breaks) and you have to worry about memory management, and unreal is focused more on FPS games so so its annoying trying to make other types of games using it, but it looks great. After picking an engine, its about identifynig what things you want to try, such as trying to get a character sprite to move around, which involves the slowest phase of googling how to do every small thing.