Wow, that's a lot of info. There are people who study this stuff for years and are not even half way through, you know :D Well, let's see if I can give you some simple explanations, however, inb4, I really recommend taking things one step at a time and focus!
Explain how to make a game in JS like I'm 5.
The easiest way is to start out with a toolbox, which gives you a sandbox - just like the one you know from every other playground. You can use the tools in the box to create and sculpt the world, in which the game should unfold. Like building a sand castle and houses and bridges. However, in contrast to your playground sandbox, the toolbox also offers tools in order to make your fantasy come real! You can add intelligence to different parts. For example, you can tell the weather to change every now and then. Once you are happy with how the world works, you can start to create a protagonist. You will be able to put the story you want to tell into the sandbox by describing everything which happens and every possible action with the help of the toolbox. The game will be able to replay this story for everyone, which creates a shared fantasy experience, I guess. In the end, the toolbox gives you all you need to pack the sandbox with all its magic into a big box and send it to other people, so everyone can enjoy what you created.
I'm still learning JS. What should I learn?
If your aim is to create a game, stick to creating a game. You should not bother with how your computer draws stuff to the screen or how input works on a low level. That's why I recommend using a library or engine. Use it to build a small game, then a bigger one, etc. Make sure you finish each of them, because I know that it can be very frustrating to work on something for too long without results. You will get to your multiplayer FPS at some point, I promise, however creating big, complex applications has never been something you can just learn over night. The hands-on practice will help you a lot for when you build the real deal, however you can use the games prior to play around with different ideas and things you want to implement into the final game. Think of it as building small parts of your dream-game before building it. Maybe you find out that some mechanic you planned does not work, and can come up with a better one along the way :)
For your theoretical stuff, you should definitely take a look at gameprogrammingpatterns. It's C++, but most of it is important universally. Also check out other tips for game dev here on Hashnode (click on the "recent" filter button on the upper right hand side). There are some ideas on games you can build easily right now and from which you can build up to where you want to go.
Oh, and since your goal is to create a FPS in the browser, you will have to take a look at WASM, too. WASM requires you to learn a compiled language. While there are options, personally I recommend using Rust for its safeties, especially for multi-threading (at the moment, multi-threading is not possible in WASM, however they are actively working on that, and you will need it for performance reasons). Delay WASM for now, though, since it requires you to learn a new language and is quite a complex topic itself.
What game engine should I use, if I need an engine at all?
There are many possibilities out there, including pixi.js, Phaser (which is based on pixi.js), babylon.js, two.js and three.js. For quickly putting together a game, I recommend using Phaser. If you want to go more into programming and optimizing the code, take a look at Three.
How do I put ads in my website to make money?
Ads are definitely not something your players want to see, and in the beginning definitely not something to worry about. You can build a game for free, host it for free and distribute it for free. Only start to worry about money once you have a working product!
What you can do, later on, is register in one of many ad networks and just add the ads as HTML overlay. You are usually paid per view and per click.
However, only worry about that once you have a working game. Or leave the ads out. no one wants ads :)
How do servers work?
Servers are nothing more than computer programs, running on a computer on the internet 24/7. They wait for a client application on some user's machine to connect to them. Then they start to communicate, for example the client might send a username and password, and the server will take that as input and check if the credentials are correct. The client might send player coordinates, and the server has to send them to all connected players in the same world in proximity to the moving player. It's really just your regular input-processing-output process, only that the input comes from a network connection and the output might be to zero to infinite network connections.
You can write a server in NodeJS, which is nothing more than JavaScript, so you don't have to learn a new language, at least. All the cloud providers support Node.JS, and it can easily be dockerized, so you might swap it out for a more performant option later on (JavaScript is really bad at number-crunching, which is a vital part of what a game server has to do).
How do I push updates to the server?
Depending on how you host the server, you can deploy the server application using a command-line tool form your PC or you upload it via SFTP and restart the server application via SSH, or you push changes to a repository and let a continuous integration process do all the work for you (the last one would be my preferred option).
What Should I use, Google cloud, AWS ( Amazon Web Services) or should I use something else.
I'd start out with a free option, like Zeit. Once you get enough players, you should compare your needs and the costs to different platform options, and then decide on upgrading Zeit or going with another option. I have some experience with Azure and AWS, and both work quite well and are easy to use.
How do I make 3d models?
You probably want to take a look at Blender and Krita. There are tons of tutorial series on Youtube (like this one, getting you from zero to artist in a matter of days. Just make sure your blender version matches the one used in the video, or you'll have a bad time.
I know, this answer isn't very detailed, however there are book series about the topic. I recommend starting out with something simple and learn through hands-on practice. Create a number-guessing game, make a clone of Pong, Snake, Space Invaders, Flappy Bird, Minecraft. They can all be made in pure JS and pose new challenges, Work your way up, release the games to your friends and on the internet. Open up the source code, ask for feedback. Be open about learning from criticism.
Don't hesitate to come back here during your journey to show off your work, ask for feedback, or ask for help with a specific problem :)
Unbezahlte Werbung durch Nennung und Verlinkung von Personen, Organisationen oder Unternehmen.