I Tried Making an FPS Game in JavaScript
Vložit
- čas přidán 14. 05. 2024
- GLSL Course: simondev.teachable.com/p/glsl...
Support me on Patreon: / simondevyt
Follow me on:
Twitter: / iced_coffee_dev
Instagram: / beer_and_code
Here I tried making a 3D first person shooter, all in JavaScript and Three.js. I took some code from a couple of my other tutorials, like first person camera controls and ammo.js stuff, bolted on a few free things from places like Sketchfab, and added some shooter gameplay. The code could totally be used as a starting point for somebody else wanting to make a little browser FPS.
Basically, I tried to code up a first person shooter skeleton in a few days, using nothing more than JavaScript and the browser. All the elements, HUD, etc. are in there and in workable states. There's tonnes more you could do obviously, but I think this can help you understand how you might structure things and use something like Three.js to get started on these types of projects. Making a basic first person shooter, even in JavaScript, isn't too difficult.
Droid Thing from Quaternius: quaternius.com/
"Anubis Bust" (skfb.ly/6RwNp) by lucasthx88 is licensed under Creative Commons Attribution (creativecommons.org/licenses/b....
"K-VRC | Love, Death + Robots" (skfb.ly/6XCCo) by ArbitraryCanary is licensed under Creative Commons Attribution (creativecommons.org/licenses/b....
"Buddha" (skfb.ly/QGxw) by hullo is licensed under Creative Commons Attribution (creativecommons.org/licenses/b....
"Human Skull" (skfb.ly/6RsWT) by Sergey Egelsky is licensed under Creative Commons Attribution (creativecommons.org/licenses/b....
"Heavy Assault Rifle" (skfb.ly/6RGPy) by pixelgrapher is licensed under Creative Commons Attribution (creativecommons.org/licenses/b.... - Věda a technologie
Everything in the video, the effects, even the graphs and animations, were all done with GLSL shaders. Learn how to do them yourself with my course: simondev.teachable.com/p/glsl-shaders-from-scratch
Support me on Patreon: www.patreon.com/simondevyt
nice!
Would you be willing to make a course around this? I’m interested in the GLSL course as well but crafting all this FPS project with an in-depth tutorial is most def something in extremely interested in. Willing to pay and all.
You’re literally the only person I’m finding whose documenting three.JS experiments this in depth 🥺
@@c0nsumption Yep, really depends on interest. I'd be happy to make a multi-hour version available.
@@simondev758 👏🏽 awesome. If you end up going for it please make an announcement as I’m for sure signing up!!!
voice sounds like text to speech
this guy makes me feel like the label "beginner" is far too generous for my current skill level
yeah hes a wizard. dont be dejected though, you could be too
Do be reminded that this is probably all in many days of work, we don't see his actual process of studying to get something working. We see the process of it WORKING, not fully being worked on.
You have me fully convinced I can build a "quicky" game engine from scratch in javascript to rival unreal- and I just learned how arrays work...😂
This is one of the few of the most impressive game design videos I've ever seen! Please, carry on! You. Are. Amazing!
Ever since I discovered your channel, I became super motivated by your creations. Thank you for bringing such awesome content to us! 🔥
I love those three js videos keep it up dude you're awesome! :)
I'm amazed once again, why are you making this look so easy, like others mentioned, I would definitely pay for a detailed course on all this with threejs. Do I have to separately learn game development and threejs because the info on making games with three is very limited?
Possibly. Game development is it's own thing, and three.js is a nice little 3d graphics library, but if you have 3d experience, then learning three.js specifically isn't required.
@@simondev758 I almost figured from the wiki pages you're looking up sometimes, I should leave threejs alone for a bit and focus on actual game dev concepts first, thank you for replying and the good content you're creating for us.
I’d say use a more solid, game focused engine for a bit to learn and understand the fundamentals.
It’s like learning to be a racing driver…
you can go out and get a focused team and pre-built car and focus on driving, or you can buy a kit car online and build it in your garage..
Threejs serves a super wide set of use cases, so i needs to be a flexible as possible, where a game engine knows a lot of the core requirements before you’ve even start.
I’d push yourself beyond any cordless game ends, “gamemaker” type things, and try at least Unity.
If you want a less intense engine there’s stuff like Godot (which has more code requirements)
There are good web based game engines too, Pixi and phaser will make EXCELENT 2d games and have a strong legacy and community.
For 3D there’s PlayCanvas which is a game engine built on three, it does a lot of the heavy lifting for you but I’m not sure how I feel about it yet..
Lastly there’s BabylonJS which wasn’t burdened by all the outdated shit three has so support and is honestly a pretty great rendering engine.
They have an excellent Node system and a good community, although pretty isolated from the rest of the JS world…
TLDR: get Unity, buy the stuff you can’t figure out, and go deeper on game #2, or 3 or 4 etc…
damn I wanna learn javascript this is like really really hard?
Amazing content. Thanks for sharing your knowledge.
Woowww, this looks amazing 😍! Wish I had those skills or at least half of them 😅 - you make complicated things look so easy
Simon dev always has great explanation while going through his process, and I always get a good laugh at some of his dialogue. Lol, stay awesome
Great idea dude. Like always, not disappointing content.
Love your videos! Keep up the good work. Your experements are always interesting to watch.
I would love to see a video about the performance difference between a JS/web based game like this and an in engine one like in Gdot or Unity.
That is an AWESOME idea!
Wow! This is so cool! I would love to use this codebase as a beginning for a multiplayer FPS game. Running around and destroying people online would be so cool
This tutorial is amazing and you are really good at teaching !! great job sir !
hackers in my acc i did not comment this sorry bro
You are very good at explaining things. keep it up thank u
Damn, that’s amazing, love it!
Thank you man for sharing this stuff
I was quite hesitant on the artistic choice of placing random bleak large blocks on the map until you added those effects, dang those were cool!
Nice!! Amazing work, pls make a video about customize characters, like put armor or clothes in character.
damn that sky looks so amazing great job with that
Tip of the hat top you, truly. well done. you truly are a great online tutor.
This is super kool. Really like how you made the game and never knew using Javascript and Browser would give such detailed game. The movement looks good. The shader is spot on. Also the UI are on point. This looks like a really good game. keep it up! :)
Love your videos, keep it up! :D
Looks fantastic!
Awesome video! Thank you!
works, keep up the good work man
The shaders on this video makes your course my next purchase.
Amazing video!
Very well explained!
That's pretty much Quake III Arena. I LOVE it.
That's dope dude
How cool! Good job.
Every time you do something it's like those Minecraft videos when they said "I did some mining off camera" and comes with an entirely new scene.
Anyways, amazing video, I would like to see a more detail explanation on the skybox, looks really good.
Excellent stuff
Missed you bro
much respect as always, :)
Worked smoothly, tysm
absolutely unreal!
hanks lot Sir.. You helping us..
impressiv!
Those spiders brought me to fresh idea for next tutorial, how is about coding on skeletal meshes? (procedural animation, equipment using local matrices of bones for position etc.)
This thing can be found for unity but there is nothing for threjs out there
TNice tutorials comnt from you is legendary. Uncomplicated like your video!!!
Im going to point out and draw focus to how he canadianly says deckulls for decals... only because im jealous of how casual he makes this whole thing feel.. for real though I love watching your dev progress it's next level
Will stay tuned to your channal! Cheers!
thank you so much , it worked
Yay it's finally out!
WHAAAT A SKILL ... incredible
ITS WORK, its really helpful
Babylon just implemented Havok physics, and tests show it's got way better performance than ammo. Have you considered giving it a try? Might be fun for something like a Gary's Mod styled sandbox since Half Life 2 (the game Gary's Mod is modded from) uses Havok physics.
Man tNice tutorials is on of the best tutorial in general on youtube. Clear, simple, constant, good to listen. Thank you for sharing.
thank u helped me a lot
this is going to be great!
Everything sucks event me. *proceeds to create a masterpiece.*
You deserve much more recognition. Great video
So perfect
Wow you make this look easy even though it is not, got no idea how to write JS though
I hope you post a video with all the adobe cracks. As always, you are the best, the crack works great
Incredible
wow what a nice video !
Oh.. these are really good
It's just awesome
working fine thank you
It's cool as hell
Also, I really dig your tutorials. The only downside is that I learn how far behind I am in algorithms and whatnot. That has been my problem in game development since I started.
Game development takes a lonngggg time to because of the breadth of knowledge required. The nice thing is, it makes it fun to learn all of it.
@@simondev758 Oh yes, modern 3D games are so much more complex than when I first started in 1989. Those games are now known as "pixel art" games. How funny!
@@simondev758 Also, did you ever see Ultima Underworld? It was the first.
Great video as usual!
Have you tried Rapier and React-three-fiber?
Nope
thx work
the way you pronounced decal makes me want to cry
Deckkkkkle
Wow. Can you make a full tutorial on this?
incredible.
Works good, tnx
It's so cool, dude!
Looking forward to the source code for educational purposes.
willing to learn. Unless you already understand setups, then I gues sit's gonna be easier, but as a classically trained pianist I was blown
NICE!
"I'm not a violent guy" "I used Doom Ethernal as inspiration". Nice
amazing
very good
where I’d record one track of the soft and than use a second Edison to record scrubbing through the soft to mimic a wave table.
Let's do a game in javascript
>proceeds to write shader code
More and more engines and frameworks for games seem to be slowly moving to CSS and HTML for UI. It's pretty neat IMO.
Some examples include:
CS:GO
Source 2 Engine
Unity's Upcoming UI Toolkit (UXML)
S&Box
Escape from Tarkov
Truly? On desktop apps?
That’s only two engines
I still await the "I make a third person shooter" lol, miss your videos Simon hope life isnt getting too busy
Hey simon, nice work!! where can we find the repo?
With javascript you can make an online multiplayer , since it's for the web ,I'm sure it would be like a native language for such workload . Cool tutorial though!
I would title the video “I Tried Making an FPS Game in Java script”
Done :)
would this game only work in a browser or also natively on pc ?
Can’t wait to see the code, your first person player controller has evolved into probably the best around so I actually gasped when you said you started from scratch instead of copy pasting your old world like in other videos…
Awesome. Can you do this with a Rally Car Racing game? Where the player can actually control 4 wheel drive power slides around corners?
do you think I could make a low poly multiplayer game with js? I want to recreate an old game I used to love.
Does anyone have the link to the repo?
You probably get this all the time but…… You did a great job for JavaScript mate well done 5⭐️
bro my ass is still making black scenes with cubes 💀
"The nice thing about JS is that I can do this all in HTML and CSS" - says noone and never :D
It's f#$- awesome!!!
Ok, that was really impressive. JS did a surprisingly good job. Maybe I shouldn't be so mean to it all the time.
everyone knocks JavaScript for no reason... js can literally create Skyrim... if you had an overzealous game dev at the helm
@@Retrofire-47 so can assembly. it's just not a great choice
@@TopBagon What would be your suggestion for "high-production web" game development? WebGL/WebGPU, Canvas, something else entirely? Or do you just dislike the entire JavaScript language for game dev?
@@Retrofire-47 nah I think JS (or TS in particular) can be great for 2D web game development but it's way better to create 3D games in unity/ue5
Finite state machines... The every man's crude game entity AI.
Wow!
Hi, how can we add wall banging functionality to this or in general any fps that uses raycasts for shooting?
Also, when we shoot, i imagine raycasts are instantaneous calculations. Then how do you get the effect of the bullet firing and taking a fraction of a sec to hit?
The motivation for both these questions is valorant when you can wall bang and when u shoot a gun, you can see the trail and it doesn't hit the instance you shoot (the player can sometimes move out of the way and dodge)
I’m a web dev not a game dev but I am guessing the way it works is that the client is always Raycasting a cone in the direction the camera is looking. Then when you fire the shot you already know what you’re looking at, so you can invoke different animations depending on what material or entity you are currently aiming at.
Some clues that support this is the fact that there is hit detection just looking at an enemy, if I aim at an enemy they appear on radar.
Also I vaguely recall in CS there were commands you could use to see these vision lines
If I had to guess, I'd say that you spawn a bullet that travels forward at X velocity every frame, doing a limited raycast on that line segment.
@@simondev758 I think it’s a cone because of radar detection as well as flashbangs etc
@@yaboirairai i just saw a video of tenz playing with noobs and it that the spectators had enabled vision lines which were constant raycasts out from the gun's nozzle.
Can you explain why it is a cone? I saw your other comment regarding this but didn't quite understand it
PS. The video i am referring to is "which pro can kill more noobs?..." If you watch this, u can clearly see the raycasts enabled constantly so u were right about that
im sooo thankful for blueprints lol.
I dabbled in UE4 a bit. Blueprints are nice but man it takes forever to do anything with them.
grandpa of gamedev
Aw man, I'm not that old yet.
You just earned a sub Could you make a tutorial or share the code??
how do i add a i downloaded to my soft soft so i can resetup it?
Hi Simon, in this project are you using 'FirstPersonControls' or
'PerspectiveCamera' and then listening to keyboard and mouse inputs.
It's using the first person controls I built in my tutorial.
@@simondev758 okay, got it 😁
if you ask me you need to add some level editing tools like how people made levels in halo 3