Networking in C++ Part #4: MMO - Designing Passivity

Поділитися
Вставка
  • Опубліковано 13 лют 2021
  • In this video I look at how we treat the client as a passive observer of the ongoing game simulation. Thinking in this manner trivialises the interactions required for the MMO game.
    Source:github.com/OneLoneCoder/Javid...
    Patreon: / javidx9
    UA-cam: / javidx9
    / javidx9extra
    Discord: / discord
    Twitter: / javidx9
    Twitch: / javidx9
    GitHub: www.github.com/onelonecoder
    Homepage: www.onelonecoder.com
  • Наука та технологія

КОМЕНТАРІ • 166

  • @welderlourenco3426
    @welderlourenco3426 3 роки тому +191

    There’s something different about this entire channel, about you. I can’t quite enunciate it. Particularly, you went from unknown to number one go-to programming channel. Serious “clicks” happening after watching your videos. Thank you so much for taking time out of your life to create such wonderful content.

    • @javidx9
      @javidx9  3 роки тому +37

      Thank you Welder, such a kind thing to say and certainly much appreciated! Im pleased things click for you, makes it all worth while!

    • @Filaxsan
      @Filaxsan 3 роки тому +10

      Totally agree! Thanks a lot Javid!

    • @itsyourenotyour9101
      @itsyourenotyour9101 3 роки тому +20

      It's because he covers popular topics and is an excellent teacher. Instead of teaching you how to abstract apples and oranges from a fruit class, he will use more practical examples that interest people. Plus, he has that accent which gives you that happy feeling of being narrated a storybook before bedtime.

    • @markrayne5382
      @markrayne5382 3 роки тому +1

      He is awesome, and imo probably the best coder I've seen on UA-cam but I wish he would make these kind of videos or even a separate series using more common frameworks and libraries rather than his olc library, that's a big reason why I don't watch very much any more. In reality most companies are going to ask for experience with well established frameworks and libraries. I mean don't get me wrong I think it's amazing that he wrote his own easy to use library that has little dependencies but as I mentioned companies won't be asking "have you got any experience using the one lone coders library". I wish he would use libraries,APIs and frameworks like opengl,SDL,windows.h,FLTK or even QT. A fan can dream though.

    • @javidx9
      @javidx9  3 роки тому +14

      Hmmm. Those libraries require you actually know how to solve problems before you can use them. On their own they are useless. If all you see here is pixel game engine, and not the broader scopes, the data structures, the analysis, the algorithm theory, the general application of computer science to solving problems, then that's a shame. I take a fundamentally different approach to delivering those topics by quite deliberately not aligning with specific vendors, and empirically I'd say it's successful. People watch the stuff and port it to all sorts of platforms, framework's, languages and hardware, because the principles don't change regardless of the library used (or abused 😄)

  • @thehambone1454
    @thehambone1454 Рік тому +41

    Is video 5 still in the works?! This has been a wonderful series!

  • @Will-vj5bc
    @Will-vj5bc Рік тому +4

    You are a great teacher Javid. I hope this series makes a comeback.

  • @UKDeus
    @UKDeus 3 роки тому

    Fantastic video again @javidx9.
    The time you spend condensing and articulating these complex topics is greatly appreciated. Looking forward to many more videos to come.

  • @alexmassy
    @alexmassy 2 роки тому +3

    Absolutly fantastics 4 parts ! Thanks a lot ! Truly help me get the "intuition" and "concept" of it !

  • @Slendergo
    @Slendergo 3 роки тому

    I love this series, I hope there's a lot more episodes to come for it, just the videos I've wanted for years

  • @jamdonut
    @jamdonut 3 роки тому

    everytime you post it re-ignites my fire to watch while picking back up my project

  • @herrdingenz6295
    @herrdingenz6295 3 роки тому +4

    finally part 4 .. thank you Javid :)

  • @prince5922
    @prince5922 3 роки тому +26

    So happy to see you make it over 200k Subs Javid, you deserve it and more!

    • @javidx9
      @javidx9  3 роки тому +9

      Thank you Tyson! Scary Stuff XD

  • @irene1307
    @irene1307 3 роки тому

    New vid - new upvote. Your videos are just so good and easy to process.

  • @learningchannel5937
    @learningchannel5937 3 роки тому +4

    This is one of the best channels on UA-cam !

  • @wowLinh
    @wowLinh 3 роки тому

    Great video, as usual. Very nice explained... I missed your videos and this is a great comeback

  • @stolenruby8689
    @stolenruby8689 3 роки тому +3

    Nice! I've been waiting for this!

  • @Noobificado
    @Noobificado 3 роки тому +1

    Extremely helpful. Thank you for making these videos.

  • @rehatsingh456
    @rehatsingh456 3 роки тому

    This series upto this video has taught me so much about network architecture and networking. Thanks so much! :D

  • @Phroggster
    @Phroggster 3 роки тому +12

    Thanks for this Javid! You do such a good job of breaking giant software engineering topics up into bite-sized chunks and explaining them clearly for the masses. I hope that someday you're able to transition to doing coding training full-time, assuming that's something you'd even want to do, simply because you're so well-versed at it.

    • @javidx9
      @javidx9  3 роки тому +9

      Thanks Phroggster - Id love to do YT full time, but its not possible since I dont run any ads... Will have to stay a hobby for now!

  • @nahianshabab724
    @nahianshabab724 3 роки тому

    This is so informative and lucid. Great job

  • @Crysis762
    @Crysis762 3 роки тому

    Can't wait for the next episode ! It really is super interesting

  • @pygmee6412
    @pygmee6412 3 роки тому +17

    Very impressive how you can take such an intricate topic and make it feel so natural.
    Will you address hacked client? And how to prevent them?
    If the server is truely completely passive then it would be quite simple to teleport and so on.
    Either way this is a fabulous introduction and I'm sure it will inspire many!

    • @immortaldev1489
      @immortaldev1489 3 роки тому +8

      This can be presented with client prediction and server authorive movement, there's articles and videos that'll explain it much better than me

  • @user-fy4iq6if4z
    @user-fy4iq6if4z 3 роки тому

    I just found this tutorial and extrmly excited. awsome man

  • @adamwulf
    @adamwulf 3 роки тому

    really enjoying this series :)

  • @bkucenski
    @bkucenski 3 роки тому +2

    One of the tricks I used to have lots of objects was the server would use a linked list of objects. Then it would use the memory location on the server as the player id on the clients. That might be less clever when dealing with untrusted clients. But you could always have an array of valid player ids to check against. When a message comes in from a client, you validate the memory location is valid and then you don't have to actually search in memory for the object, you can go directly to it.

    • @javidx9
      @javidx9  3 роки тому +1

      I use a similar trick when interfacing with Lua scripts, simply using the address of an object as it's uid in the script, also handy for finding the original object again. But yeah requires a bit of trust.

  • @sigmundfreud4472
    @sigmundfreud4472 3 роки тому +2

    Awesome, it’s here!

  • @nielsevant9358
    @nielsevant9358 3 роки тому +1

    Hell ,and I'm here watching on 5am. Just wow

  • @akaDL
    @akaDL Рік тому +5

    Pleaseeeee part 5 where is it!

  • @SourceCodeDeleted
    @SourceCodeDeleted 3 роки тому

    I think this channel is THE best game development channel. All those others fail in comparison - Even Unreal Engine tutorials I think are poor in comparison.

  • @maxsalov9521
    @maxsalov9521 2 роки тому

    So good. Thx for c++ networking tutorials. Before videos I think write self-protocol very hard, but I continuous coding my DataBase Product. JSON library parse easy body package ASIO sockets.

  • @Ferenc-Racz
    @Ferenc-Racz 3 роки тому

    great tutorial!!! wow! clear and understable. respect. :)

  • @tedchirvasiu
    @tedchirvasiu 3 роки тому

    Can't wait for part 5

  • @user-rm5wx9bq7f
    @user-rm5wx9bq7f 8 місяців тому

    The best tutorial Ive ever seen

  • @mursitkc5328
    @mursitkc5328 3 роки тому

    You are great man. Thanks a lot👏👏

  • @ashadodhiawala5039
    @ashadodhiawala5039 3 роки тому +18

    When are you going to make a video on top down city based crime game. Btw love your video

    • @javidx9
      @javidx9  3 роки тому +19

      it "may" see a resurgence in a slightly different form on twitch later this year.

    • @glowiever
      @glowiever 3 роки тому +1

      even better make it multiplayer lol Xd

  • @tasheido
    @tasheido 3 роки тому +4

    Well first of all let me congratulate you on your videos tutorials, they are great! I have been away from programming for a very long time having programmed mostly microcontrollers in c in the past, but i have taken this pandemic as an opportunity to finally dedicate my time to self learn c++, so i got bjarne's books and im progressing along... this series is of special interest for me not really for games but i am digesting your ideas and dapting them to (try) code an audio modem with networking acess to use over radio. Maybe its more than i can grasp with my current knowledge but having a goal helps. These concepts are hard to digest and its easy to get lost on the details and miss the big picture i guess that's something normal to "sort of begginners" like me. Still they provide a great source of help and again thank you javid. If you had to reccomend any kind of book or learning resource for c++ with a view not so much to teach you the language but more on general good practice strategies to solve programming problems what would those be? Is there any must read stuff? I am not much into games but its funny more and more i find that the problems posed by games are an exellent resource to adapt to other stuff, and a great learning resource in general. This comment is getting way too long! All the best and keep them coming! P.S. If you get the time to push on your audio series it would be appretiated!

    • @javidx9
      @javidx9  3 роки тому

      Thanks Tasheido, Youve hit the nail on the head, games often present problems that are present in every other field, they just happen to be an entertaining way to learn about them. As for books, Im sorry but im a bit useless - Ive not read a programming book in a long time, so anything I have read would be woefully out of date (and out of print). My advice is to just get your hands dirty and start coding, but also realise that complex topics like networking do require you to have an understanding of the basics of computer systems, data structures, algorithms. Learning the syntax of a language is one thing, learning how to speak it is totally different, and that comes with hands-on practice and plenty of failure. Other than the famous Essential C++ book list on StakOverflow, I have nothing to recommend.

    • @tasheido
      @tasheido 3 роки тому +1

      @@javidx9Well i still have my (reading and coding) hands full for the moment, still i think i can manage on self learning and keep motivated with what i have right now.
      Its also funny how youtube came about to be at the same time a huge repository of crap and probably one of the best and more complete learning tools out there.. there are complete university level courses available on almost every other subject...that duality is food for thought. Cheers!

  • @juanjosejimenezrama
    @juanjosejimenezrama Рік тому +1

    I'm really interested in that topic, and I would appreciate it if you could create more videos about it. Thank you so much

  • @glowiever
    @glowiever 3 роки тому

    nice I like it. reminiscing of old dream :)

  • @RTSEnjoyer
    @RTSEnjoyer 10 місяців тому

    thank you for the tutorial, easy s tier in this topic

  • @oddminngdev9844
    @oddminngdev9844 3 роки тому

    Awesome ! Thanks a lot ~

  • @jamesmillerjo
    @jamesmillerjo 3 роки тому +16

    10:10 Isn't this model prone to client hacks and modulated packets?

    • @russellcoight8287
      @russellcoight8287 3 роки тому +4

      Yes. The 'safer' approach is to send input to the server. However, to offset the the latency, you do client side prediction

  • @andrewaquilina7546
    @andrewaquilina7546 3 роки тому +1

    thank you

  • @seabass6106
    @seabass6106 3 роки тому

    superb!

  • @TsingYiTube
    @TsingYiTube 3 роки тому +4

    Thanks a lot Javidx. I played with your example and found after server restart, clients do not auto reconnect and resume communication, will part 5 add this feature? 😊

  • @ciberman
    @ciberman 2 роки тому +4

    I can't find part 5

  • @rezp5706
    @rezp5706 3 роки тому

    great video

  • @sky4ce09
    @sky4ce09 3 роки тому +23

    some things shall always be left up to the server since cheating exists

  • @Otakutaru
    @Otakutaru 3 роки тому +3

    Your use of C is too nice and round all around. Wish I knew about unordered_map when tasked to do some projects.

    • @furitty
      @furitty 3 роки тому

      i always used to use my own very slow and bad implementation of a map before I realized that unordered_map existed.

  • @WavePlayz
    @WavePlayz 3 роки тому +3

    I love you love you... love you

  • @soleypas
    @soleypas 3 роки тому

    Please please make the 5th part.
    Thank you so much!

  • @RealEngineer
    @RealEngineer 3 роки тому

    You’re UA-cam channel is pure gold!

  • @Shadow-bc5nr
    @Shadow-bc5nr 3 роки тому

    Hi @javidx9. Thanks for your great tutorial. I've been working on a hero-based, top-down shooter game for a while. Would you give me some hint about how may I predict/reconcile, hero's abilities (Jumping, dashing, etc) smoothly for high latencies? Do you know any source about it?

  • @hangxu2358
    @hangxu2358 Рік тому

    I like your video and you .mr javidx

  • @spicycanjam
    @spicycanjam 3 роки тому

    holy smokes you lovely human being i love you

  • @kaiweiyeo4279
    @kaiweiyeo4279 3 роки тому

    Hi David Jones, thanks for the videos. Would you be making an engine using the Vulkan API?

  • @1J03B
    @1J03B 3 роки тому +1

    Awesome video series! I have a question. When I tried making a multiplayer game years ago, I wasted most of my time accidentally reading/writing the wrong data, data in the wrong order, or the wrong types to/from packets (this was udp). Do you know of a good way to solve this problem?
    Eventually, I had the idea to define a class for each type of message that could be sent, and give it properties for each piece of data in that message. Then, I figured out a way to automatically read/write all of a Message object's properties to/from a packet without having to list them again. The problem was that it was kinda ugly and probably had some overhead. I'm hoping there's a common pattern to solve this problem...

    • @javidx9
      @javidx9  3 роки тому +1

      Certainly, from a safety perspective, there is little more effective that having defined structs for all your messages, that way nothing comes a surprise when you are allocating memory at the other end...

    • @1J03B
      @1J03B 3 роки тому

      @@javidx9 Ok, sounds like I was on the right track then, thanks. I'd love to see your implementation of that if you address that problem

  • @itsME-dc4vm
    @itsME-dc4vm 3 роки тому +2

    nice ;D

  • @mehulajax21
    @mehulajax21 3 роки тому +1

    Waiting for part 5.

  • @Ferenc-Racz
    @Ferenc-Racz 3 роки тому

    Will you create a playlist to this series?

  • @jfour6591
    @jfour6591 20 днів тому

    Great channel, Part 5 and beyond?

  • @eddthulhu5020
    @eddthulhu5020 3 роки тому +1

    Hey. I'm following this series and first of all thanks for the videos, they are great and your way of explaining things is pretty interesting.
    The thing is, could anyone point me directions on how could I implement the client with GameMaker? Right now I can connect the server with a GameMaker client and I'm trying to send messages with the same strcture of the ones that we use on the server, but I don't know exactly how could I do it.
    Thanks :D

  • @kayrauckilinc
    @kayrauckilinc 3 роки тому

    I must advice you to use Ctrl+Shift+S instead of holding Snippet tool at taskbar other than that excellent series!!

  • @Czeckie
    @Czeckie 3 роки тому +3

    This is awesome. It sparks a question though, how can server validate that the client code is official distribution and not some cheater's version? If I'm not mistaken, in this setup clients are able to update description of every player.

    • @publicmmi
      @publicmmi 3 роки тому +1

      That could only be prevented on client't side with some anti cheat mechanisms. But you can not prevent cheat you can just make it hard to cheat.Thats what mp most games do.

  • @zlatkogjuroski3235
    @zlatkogjuroski3235 11 місяців тому +1

    Hi, can you suggest any books on this topics, and also from the previous 3 videos? Thanks, these 4 videos are awesome, any new ones?

  • @MarSe32m
    @MarSe32m 3 роки тому +5

    Sorry for a nooby question but can a client send some malicious position and velocity such that they can kinda ”speedhack”?

    • @javidx9
      @javidx9  3 роки тому +7

      At the moment, absolutely they can, so not a noob question at all, a very astute one instead!

    • @publicmmi
      @publicmmi 3 роки тому +3

      Server could do some consistency check and so reveal invalid client data and ban the client.

  • @goldenlava1019
    @goldenlava1019 3 роки тому +1

    Great video, I tried making a game after part 3 and was wondering why it was so slow. Not till this video did I realize that I was only processing one message per frame on the client side. (:

    • @javidx9
      @javidx9  3 роки тому +4

      This video does the opposite! The clients are literally flooding the server with unnecessary messages. We will look at that in next episode.

    • @yllsheremeti7844
      @yllsheremeti7844 2 роки тому +1

      @@javidx9 When are you gonna continue this series? Please upload more youre literally the best :(

    • @a.aspden
      @a.aspden Рік тому +1

      @@javidx9 Awesome series. Please continue! :)

  • @renecabuhan1675
    @renecabuhan1675 3 роки тому

    Your very talented sir. I saw ur other video coding with java , and now here u are coding with another language again..

  • @AMildCaseOfCovid
    @AMildCaseOfCovid 3 роки тому

    Javid, did you ever implement OPC-based communication in your work?

  • @trungthanhbp
    @trungthanhbp 3 роки тому

    pls create playlist on this, thank you :D

  • @JakariaYT
    @JakariaYT 3 роки тому +1

    Do you think you will ever go over the basics of C++? Been trying to learn it after being stuck in C# for a while.

    • @javidx9
      @javidx9  3 роки тому +1

      I'm unsure, there's many many many beginning C++ videos, I don't think I can add anything different. Maybe!

  • @renanmoura2168
    @renanmoura2168 3 роки тому

    Javid can you or someone here tell me if the channel have a list of good resources to learn cpp and do amazing things like you do on your videos? if not where can I find such thing?

  • @cryptigo
    @cryptigo 3 роки тому

    my god, i think im in love with you.

  • @josealvim1556
    @josealvim1556 3 роки тому +2

    Hi, any reason not to use std::map as opposed to std::unordered_map?
    Given that you are using integers as keys and they are already ordered and quite fast to compare,
    I'd expect map to yield no worse code than unordered_map would.
    EDIT:
    std::hash seems to be the identity.
    Furthermore, Godbolt.org seems to show that using map over unordered_map yields *more* machine code (on gcc-10 with with O3, O2 and Ofast I think).
    So, that at least seems to argue in against (ordered) map, the end size was roughly 1.5× the size of my little test.
    Although I didn't do a lot of tests, or profiled it, binary size can be misleading for speed :v

    • @absalomdraconis
      @absalomdraconis 3 роки тому +1

      std::map requires a tree structure internally, and thus performance depends on how deep you have to search.
      I don't recall the details of unordered_map, but from what he said it's a hash table, which means that as long as the hash function doesn't assign two items to the same space, the lookup will be constant _regardless_ of where the data is stored for anything that is stored in said map. More particular, it'll approximate the hash function invocation, + an array element lookup.

    • @josealvim1556
      @josealvim1556 3 роки тому

      @@absalomdraconis That makes sense, because the bucket for ints is trivial, since the hash function can be just the identity.
      Thanks

  • @berkenerenusar6607
    @berkenerenusar6607 3 роки тому

    Hey sir, what do you think about nim-lang?

  • @wesleythomas6858
    @wesleythomas6858 3 роки тому

    Just wondering. For the horde or alliance?

  • @AlbertRyanstein
    @AlbertRyanstein 2 роки тому

    Hi Javid, I've been dabbling with packets with sfml and can create multiple instances of my game and connect to a server through sfml api, would you suggest I leave that for the moment and look at something like this series instead. I want to be able to support hundreds of connections. Do you have a few starting points for me? I've watched most of the first vid in this series... Do you think SFML if coded well could handle this for me, and I just grab some concepts from here etc, or do you have a resource you can recommend. Thank you

  • @madr3563
    @madr3563 Рік тому

    I am looking for Linux Tutorial to build Socket with Command Line Interface chat room connected by room username and password so its to connect two client.
    Kinda like a private chat but the server can consist of a lot of room

  • @cheaterman49
    @cheaterman49 3 роки тому +1

    10:30 While your approach is nice in principle, it's harder to make it safe ; but I would argue optimistic updates on an action-based system is pretty complicated and you want to keep things simple. But having implemented some simple demos with action-based systems and no optimistic updates, I can tell you it's usually good enough, even for fast-paced games like racing or FPS ; and the server-authoritative design makes the whole thing easier to secure.
    34:30 Mmh maybe it went a bit quick during the implementation and I didn't see, but since you're treating the player as just another entity, its position gets refreshed by server each frame, which negates any potential lag benefit one would have by using positions instead of actions?

  • @eddievega741
    @eddievega741 2 роки тому

    Hi javidx new to the channel, there is problem with the collision detection, when colliding with the corner between two solid tiles, the character slides to the side
    on it's own, i think the issue is the because the first tile checked tries to slide the character around it's corner but since there's a solid wall next to it, it only moves you in the other axis, it's quite the bug, any tips on how to solve it

    • @javidx9
      @javidx9  2 роки тому +1

      Sure, it's easily solved by sorting all potential collision candidates before resolution. I discuss this in my Rectangles video, but it's not included in this demo for clarity.

  • @99secure11
    @99secure11 2 роки тому

    how can i add the ability to send msgs (char*) from the server to a certain client

  • @TheZenytram
    @TheZenytram 3 роки тому +1

    how much more complex things get after this?
    it is pretty simple so far.

  • @WyMustIGo
    @WyMustIGo 3 роки тому +3

    One downside that's pretty bad with this method is if the client knows all the player positions, it means they can also cheat. This means another player can't be hidden behind something, stealth, etc.

    • @furitty
      @furitty 3 роки тому

      You can implement an anti-cheat that checks how much you've told the server to be moving and if it's more than you can travel in that time or just irregular, you force-teleport the player back

    • @WyMustIGo
      @WyMustIGo 3 роки тому +3

      @@furitty Better yet, you just use a better design. This is very poor

    • @furitty
      @furitty 3 роки тому

      @@WyMustIGo I don't think it is. This is what minecraft and a lot of other bigger games use.

    • @WyMustIGo
      @WyMustIGo 3 роки тому +3

      @@furitty Well, you are wrong.

    • @AileTheAlien
      @AileTheAlien 3 роки тому

      @@furitty it's far easier to prevent cheating if the server runs its own simulations from player movement commands, and only gives clients the specific information that should be visible to the specific players. Otherwise you get into the mess of trying to validate the client, validate the validator, ... which ends with rootkits in players' machines to ensure they're running the game "correctly". (Which should still be bypassible in hardware, although it would be more difficult.) If the server is king, players trying to cheat their personal simulations can only cheat themselves - it doesn't matter where you think your character is, if your opponents can snipe you at your real position on the server. Keep in mind, servers can be a lot more powerful than any computer an individual player is likely to own, because it's a large company running the things.

  • @travisflesher8798
    @travisflesher8798 3 роки тому

    javidx9 is the world's smartest man.

  • @furitty
    @furitty 3 роки тому

    What if the player lags out while walking into air and not a wall? What about diagonal movement? It'll look like they're moving somewhere they potentially aren't moving to on all the other clients because they don't know if they stopped moving or not. Or maybe I'm missing something

    • @javidx9
      @javidx9  3 роки тому +1

      Clearly you are if you didn't watch previous video about diagonal movement, as suggested. If a player lags out, it's not too bad as the velocity vector will keep them going, and the collision detection will keep them in bounds, it may yield a corrective jump though later.

    • @furitty
      @furitty 3 роки тому

      @@javidx9 By diagonal movement I meant that a Player will (seem to) be moving to the left/right if they lag out while walking diagonally into a horizontal wall, but I guess that doesn't really matter unless you have a connection with someone on the moon

  • @Otakutaru
    @Otakutaru 3 роки тому +2

    Yes yes... upload the next video already where you make it minecraft 2.0

  • @anhnguyen-un3th
    @anhnguyen-un3th 3 роки тому

    how long have you been studying c++ ?

  • @GNARGNARHEAD
    @GNARGNARHEAD 3 роки тому +1

    banananana neo, bananananana sporin..

  • @gower1973
    @gower1973 3 роки тому

    What about player to player collision, right now they are just walking through each other

  • @longdashes
    @longdashes 3 роки тому

    I was looking for something like this for years. I love you man, have my babies.

  • @vachila643
    @vachila643 3 роки тому +1

    Networking and C++
    I challenge you to tell me a harder combination
    Awesome stuff, loving your tutorials ^_^

    • @javidx9
      @javidx9  3 роки тому +3

      Thanks Vachila! Hmmm, harder than Networking and C++? In my experience, anything involving javascript... XD

    • @absalomdraconis
      @absalomdraconis 3 роки тому +1

      Any language that features "comefrom" as an alternative to other branching systems...

    • @vachila643
      @vachila643 3 роки тому

      @@javidx9 Really? 0_0
      I do love JavaScript though, it's like a native language to me, been porting your tutorials to JavaScript all this while xD (they've been loads helpful, thank you for making them!)
      Tried porting the 3D engine series, but as always, JS had reference issues and I got lazy, didn't finish it

    • @vachila643
      @vachila643 3 роки тому

      @@absalomdraconis Huh, I'm confused?

  • @dorjderemnamsraijav5182
    @dorjderemnamsraijav5182 3 роки тому +6

    Why do I feel like Javid studied electrical engineering in his bachelors, or am I right?

    • @___xyz___
      @___xyz___ 3 роки тому +1

      π = e = 3

    • @CykPykMyk
      @CykPykMyk 3 роки тому +1

      @@___xyz___ jesus christ

    • @___xyz___
      @___xyz___ 3 роки тому +1

      @@CykPykMyk sin(x) = x ∀(0 ≤ x ≤ 1)

    • @vilkillian
      @vilkillian 3 роки тому +1

      @@___xyz___ sin(x)/x = 1 when x -> 0

  • @andreymoura9865
    @andreymoura9865 2 роки тому +1

    My dream is to make a Channel jusy like yours in my language. There's no such thing here

  • @Furkan-ll4gy
    @Furkan-ll4gy 3 роки тому

    Can you make box2d tutrorial on oclengine pls

  • @vasy4321
    @vasy4321 3 роки тому +6

    now that the server does none of the work, how do you prevent hackers from going through walls :P

    • @javidx9
      @javidx9  3 роки тому +2

      lol, well the server will be given some jobs to do, one of which may play a role in anti-cheating, as it stands though the other clients could do the checks.

    • @sirynka
      @sirynka 3 роки тому

      Ano also any player can pretend as he is someone else so can manipulate other characters data.

    • @javidx9
      @javidx9  3 роки тому +3

      @@sirynka Resolving that though is a one liner. Currently the player only has write access to the system via PlayerUpdate message. If the server receives this message it knows the id of the client that sent it. If that id does not match the id in the message, simply reject it, ban the client. Literal one liner.

    • @vasy4321
      @vasy4321 3 роки тому

      @javidx9 better randomizer those ids then, haha

    • @javidx9
      @javidx9  3 роки тому +1

      Why?

  • @billowen3285
    @billowen3285 3 роки тому

    This should all be the same for C right? After trying to learn C++ I've decided I should really just get my head around C first

    • @javidx9
      @javidx9  3 роки тому +3

      Not really unfortunately. I use a lot of c++ specific ideas and tools here. Also, there are fewer and fewer reasons to learn C before C++ anymore, if it helps code in C, in C++!

  • @vova-ri2qu
    @vova-ri2qu 3 роки тому

    Oo

  • @theunbearables
    @theunbearables 9 місяців тому

    9:46 "this doesn't work" in regards to the server doing most of the position crunching is a small error, though I'm sure you're already aware. It's needed for cheating prevention and that rabbit hole

  • @futuza
    @futuza 3 роки тому +2

    Doesn't this trust the clients a bit too much? Seems easy to make a pseudo client that can teleport :P

  • @michaelmahn4373
    @michaelmahn4373 3 роки тому +1

    0:43 I know that these videos are free and I really appreciate that. They're great! But please understand that I don't criticise stuff because I hate you or am thankless.
    I criticise because I consider respectful, constructive feedback as a gift. I also appreciate people critising me, because it gives me a chance to improve and understand what people disliked. Of course that doesn't mean that you have to incorporate that criticism, that's up to you. But it's better if people criticise than if they just press the dislike button or stop watching your videos without ever telling you why, isn't it?
    I criticise because I think your videos are great and feel that you care about your content and want to know what you could improve.
    I consider "people should not criticise me, because I provide my content for free" to be an unhealthy mindset.
    And I've always felt that many STEM people feel the same way. We enjoy rational discussions without taking dissenting opinions as a personal insult. That's why I enjoy working in this field.
    Of course there are also people who just write hateful and abusive "criticism". They're douchebags, no argument there.
    Hope I didn't sound like a dick. I sincerely didn't mean it like that. Just felt like something I had to say.

  • @FrostGamingHype
    @FrostGamingHype 3 роки тому

    tell me how to make a font size bigger in cmd window im working on my own game engine i thought you tech the best so here im
    well you are the legend of programming history not javid the great javid

  • @AI-ec2qb
    @AI-ec2qb 3 роки тому

    After you said Enough Scribbling, let's get to coding.... My brain CPU shutdown 😴

  • @r1pfake521
    @r1pfake521 3 роки тому

    Yet an other video that wasn't shown on my notifications or start page even when im subbed and have the bell set to "all" wtf is going on UA-cam

  • @MikeNugget
    @MikeNugget 3 роки тому

    Could you make detailed review of uNetworking/uWebSockets lib please?