I Tried Making an FPS Game in JavaScript

Sdílet
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

Komentáře • 261

  • @simondev758
    @simondev758  Před rokem +40

    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

    • @crowbr
      @crowbr Před rokem +1

      nice!

    • @c0nsumption
      @c0nsumption Před rokem +2

      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 🥺

    • @simondev758
      @simondev758  Před rokem +5

      @@c0nsumption Yep, really depends on interest. I'd be happy to make a multi-hour version available.

    • @c0nsumption
      @c0nsumption Před rokem +1

      @@simondev758 👏🏽 awesome. If you end up going for it please make an announcement as I’m for sure signing up!!!

    • @katsurakotaro
      @katsurakotaro Před rokem

      voice sounds like text to speech

  • @Retrofire-47
    @Retrofire-47 Před rokem +453

    this guy makes me feel like the label "beginner" is far too generous for my current skill level

    • @socio637
      @socio637 Před rokem +25

      yeah hes a wizard. dont be dejected though, you could be too

    • @somefin3322
      @somefin3322 Před rokem +24

      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.

  • @programmingjobesch7291
    @programmingjobesch7291 Před rokem +28

    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...😂

  • @Ecrios
    @Ecrios Před 8 měsíci +8

    This is one of the few of the most impressive game design videos I've ever seen! Please, carry on! You. Are. Amazing!

  • @baguette2652
    @baguette2652 Před rokem +8

    Ever since I discovered your channel, I became super motivated by your creations. Thank you for bringing such awesome content to us! 🔥

  • @PotatoGodzilla
    @PotatoGodzilla Před rokem +3

    I love those three js videos keep it up dude you're awesome! :)

  • @SuperPicolin0
    @SuperPicolin0 Před rokem +125

    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?

    • @simondev758
      @simondev758  Před rokem +23

      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.

    • @SuperPicolin0
      @SuperPicolin0 Před rokem +14

      @@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.

    • @Desopolis
      @Desopolis Před rokem +7

      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…

    • @werrutkyupnext
      @werrutkyupnext Před rokem

      damn I wanna learn javascript this is like really really hard?

  • @cmcdonough2
    @cmcdonough2 Před rokem +1

    Amazing content. Thanks for sharing your knowledge.

  • @hamsteroncoffee
    @hamsteroncoffee Před rokem +2

    Woowww, this looks amazing 😍! Wish I had those skills or at least half of them 😅 - you make complicated things look so easy

  • @chamonmath7688
    @chamonmath7688 Před rokem +2

    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

  • @kosa-tv
    @kosa-tv Před rokem +5

    Great idea dude. Like always, not disappointing content.

  • @TurtleFul
    @TurtleFul Před rokem +5

    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.

  • @chonkydog6262
    @chonkydog6262 Před rokem +3

    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

  • @oaksBFL
    @oaksBFL Před rokem +2

    This tutorial is amazing and you are really good at teaching !! great job sir !

    • @oaksBFL
      @oaksBFL Před rokem +1

      hackers in my acc i did not comment this sorry bro

  • @IxZOMBxI
    @IxZOMBxI Před rokem +1

    You are very good at explaining things. keep it up thank u

  • @jchaloupka007
    @jchaloupka007 Před rokem +5

    Damn, that’s amazing, love it!

  • @nurazizalimustofa5087
    @nurazizalimustofa5087 Před rokem +1

    Thank you man for sharing this stuff

  • @paulo1940
    @paulo1940 Před 17 dny

    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!

  • @crowbr
    @crowbr Před rokem +2

    Nice!! Amazing work, pls make a video about customize characters, like put armor or clothes in character.

  • @giorgijankhoteli5803
    @giorgijankhoteli5803 Před rokem +1

    damn that sky looks so amazing great job with that

  • @covenantersoldier9165
    @covenantersoldier9165 Před rokem +1

    Tip of the hat top you, truly. well done. you truly are a great online tutor.

  • @KamranWali
    @KamranWali Před rokem +4

    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! :)

  • @LikezYou
    @LikezYou Před rokem +1

    Love your videos, keep it up! :D

  • @Skeffles
    @Skeffles Před rokem +1

    Looks fantastic!

  • @loun.exXe3
    @loun.exXe3 Před rokem +2

    Awesome video! Thank you!

  • @minayoussef5730
    @minayoussef5730 Před rokem +1

    works, keep up the good work man

  • @unicornsteroids
    @unicornsteroids Před rokem +5

    The shaders on this video makes your course my next purchase.
    Amazing video!

  • @cabelogold6687
    @cabelogold6687 Před rokem +2

    Very well explained!

  • @ViciousViscount
    @ViciousViscount Před rokem +4

    That's pretty much Quake III Arena. I LOVE it.

  • @Mohta69
    @Mohta69 Před rokem +3

    That's dope dude

  • @TheAwesomeTrunk
    @TheAwesomeTrunk Před rokem +2

    How cool! Good job.

  • @LuisCassih
    @LuisCassih Před rokem +1

    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.

  • @spaceymen
    @spaceymen Před rokem +1

    Excellent stuff

  • @Fallen_Ninja
    @Fallen_Ninja Před rokem +2

    Missed you bro

  • @mulualemtekle6094
    @mulualemtekle6094 Před rokem +2

    much respect as always, :)

  • @wesleytiago4121
    @wesleytiago4121 Před rokem

    Worked smoothly, tysm

  • @billcolak5253
    @billcolak5253 Před rokem +2

    absolutely unreal!

  • @Di4Fourr
    @Di4Fourr Před rokem +2

    hanks lot Sir.. You helping us..

  • @kasali2739
    @kasali2739 Před rokem +5

    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

  • @ionutrosca6326
    @ionutrosca6326 Před rokem +2

    TNice tutorials comnt from you is legendary. Uncomplicated like your video!!!

  • @srsherman7
    @srsherman7 Před 9 měsíci

    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

  • @ibrahimgaming3587
    @ibrahimgaming3587 Před rokem +2

    Will stay tuned to your channal! Cheers!

  • @tutosrivegamerTRG
    @tutosrivegamerTRG Před rokem +1

    thank you so much , it worked

  • @swoorp
    @swoorp Před rokem +4

    Yay it's finally out!

  • @amestresys9175
    @amestresys9175 Před rokem +2

    WHAAAT A SKILL ... incredible

  • @saberwulf6857
    @saberwulf6857 Před rokem

    ITS WORK, its really helpful

  • @maximumcockage6503
    @maximumcockage6503 Před 7 měsíci +1

    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.

  • @bruniomhars
    @bruniomhars Před rokem +3

    Man tNice tutorials is on of the best tutorial in general on youtube. Clear, simple, constant, good to listen. Thank you for sharing.

  • @Okyo01
    @Okyo01 Před rokem +1

    thank u helped me a lot

  • @mikaelprevitera9552
    @mikaelprevitera9552 Před rokem

    this is going to be great!

  • @NaiyoGames
    @NaiyoGames Před rokem +4

    Everything sucks event me. *proceeds to create a masterpiece.*

  • @josh_can_annimate3108
    @josh_can_annimate3108 Před rokem +1

    You deserve much more recognition. Great video

  • @yresze2885
    @yresze2885 Před rokem +2

    So perfect

  • @d0c_dev
    @d0c_dev Před rokem +3

    Wow you make this look easy even though it is not, got no idea how to write JS though

  • @julianeprado9691
    @julianeprado9691 Před rokem

    I hope you post a video with all the adobe cracks. As always, you are the best, the crack works great

  • @mohsinrahman8391
    @mohsinrahman8391 Před 5 měsíci +1

    Incredible

  • @godbibo
    @godbibo Před rokem +2

    wow what a nice video !

  • @rajsonu3156
    @rajsonu3156 Před rokem

    Oh.. these are really good

  • @rizoscreativosofficial8
    @rizoscreativosofficial8 Před rokem +1

    It's just awesome

  • @wirten69
    @wirten69 Před rokem

    working fine thank you

  • @atharvkumar2564
    @atharvkumar2564 Před rokem +2

    It's cool as hell

  • @GregoryTheGr8ster
    @GregoryTheGr8ster Před rokem +2

    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.

    • @simondev758
      @simondev758  Před rokem

      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.

    • @GregoryTheGr8ster
      @GregoryTheGr8ster Před rokem

      @@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!

    • @GregoryTheGr8ster
      @GregoryTheGr8ster Před rokem

      @@simondev758 Also, did you ever see Ultima Underworld? It was the first.

  • @MartinAlix
    @MartinAlix Před rokem +2

    Great video as usual!
    Have you tried Rapier and React-three-fiber?

  • @emreonal8221
    @emreonal8221 Před rokem

    thx work

  • @cyrusguest4975
    @cyrusguest4975 Před rokem +3

    the way you pronounced decal makes me want to cry

  • @rodrigofernandes6449
    @rodrigofernandes6449 Před rokem +4

    Wow. Can you make a full tutorial on this?

  • @drawmaster77
    @drawmaster77 Před rokem +1

    incredible.

  • @danielfirminovillaverde7794

    Works good, tnx

  • @zxc3387
    @zxc3387 Před rokem +2

    It's so cool, dude!
    Looking forward to the source code for educational purposes.

  • @g_a_b_b_o-gabbopower5134

    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

  • @MegalithicEnt
    @MegalithicEnt Před rokem +1

    NICE!

  • @nikkossta
    @nikkossta Před rokem +1

    "I'm not a violent guy" "I used Doom Ethernal as inspiration". Nice

  • @baoleizhao4614
    @baoleizhao4614 Před rokem +1

    amazing

  • @eftifeev
    @eftifeev Před rokem +2

    very good

  • @robertocarlosfarfansanchez6111

    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.

  • @realfl495
    @realfl495 Před 3 měsíci

    Let's do a game in javascript
    >proceeds to write shader code

  • @Variapolis
    @Variapolis Před rokem +5

    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

  • @FaislQurishi
    @FaislQurishi Před 2 měsíci

    I still await the "I make a third person shooter" lol, miss your videos Simon hope life isnt getting too busy

  • @dre4085
    @dre4085 Před rokem

    Hey simon, nice work!! where can we find the repo?

  • @jasonl9266
    @jasonl9266 Před 20 dny

    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!

  • @ibingeyt6077
    @ibingeyt6077 Před rokem +2

    I would title the video “I Tried Making an FPS Game in Java script”

  • @Cos3D
    @Cos3D Před 9 měsíci

    would this game only work in a browser or also natively on pc ?

  • @Desopolis
    @Desopolis Před rokem +1

    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…

  • @FPdesignfab
    @FPdesignfab Před rokem

    Awesome. Can you do this with a Rally Car Racing game? Where the player can actually control 4 wheel drive power slides around corners?

  • @boot-strapper
    @boot-strapper Před 7 měsíci

    do you think I could make a low poly multiplayer game with js? I want to recreate an old game I used to love.

  • @boot-strapper
    @boot-strapper Před 7 měsíci

    Does anyone have the link to the repo?

  • @AwgustRushOfficial
    @AwgustRushOfficial Před rokem +1

    You probably get this all the time but…… You did a great job for JavaScript mate well done 5⭐️

  • @guccidevel
    @guccidevel Před 11 měsíci +2

    bro my ass is still making black scenes with cubes 💀

  • @stadnikds
    @stadnikds Před měsícem +1

    "The nice thing about JS is that I can do this all in HTML and CSS" - says noone and never :D

  • @martinemanuel8239
    @martinemanuel8239 Před rokem +2

    It's f#$- awesome!!!

  • @davidmurphy563
    @davidmurphy563 Před rokem +10

    Ok, that was really impressive. JS did a surprisingly good job. Maybe I shouldn't be so mean to it all the time.

    • @Retrofire-47
      @Retrofire-47 Před rokem +2

      everyone knocks JavaScript for no reason... js can literally create Skyrim... if you had an overzealous game dev at the helm

    • @TopBagon
      @TopBagon Před rokem +3

      @@Retrofire-47 so can assembly. it's just not a great choice

    • @Retrofire-47
      @Retrofire-47 Před rokem +2

      @@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?

    • @TopBagon
      @TopBagon Před rokem +3

      @@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

  • @andrewallbright658
    @andrewallbright658 Před rokem +2

    Finite state machines... The every man's crude game entity AI.

  • @SchweinchenHorst
    @SchweinchenHorst Před 3 měsíci +1

    Wow!

  • @anonymoussloth6687
    @anonymoussloth6687 Před rokem +1

    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)

    • @yaboirairai
      @yaboirairai Před rokem

      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

    • @simondev758
      @simondev758  Před rokem +1

      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.

    • @yaboirairai
      @yaboirairai Před rokem

      @@simondev758 I think it’s a cone because of radar detection as well as flashbangs etc

    • @anonymoussloth6687
      @anonymoussloth6687 Před rokem

      @@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

  • @Nubbley
    @Nubbley Před rokem +1

    im sooo thankful for blueprints lol.

    • @simondev758
      @simondev758  Před rokem +1

      I dabbled in UE4 a bit. Blueprints are nice but man it takes forever to do anything with them.

  • @WalmartVaxei
    @WalmartVaxei Před rokem +2

    grandpa of gamedev

  • @anthonymaacaron2313
    @anthonymaacaron2313 Před měsícem +1

    You just earned a sub Could you make a tutorial or share the code??

  • @jorgeenriquelayibanez814

    how do i add a i downloaded to my soft soft so i can resetup it?

  • @rakshitshetty6958
    @rakshitshetty6958 Před rokem

    Hi Simon, in this project are you using 'FirstPersonControls' or
    'PerspectiveCamera' and then listening to keyboard and mouse inputs.

  • @davidmcbride5357
    @davidmcbride5357 Před rokem

    if you ask me you need to add some level editing tools like how people made levels in halo 3