How to Make a Multiplayer Game in Unity | Connecting Clients to a Server - Part 1

Поделиться
HTML-код
  • Опубликовано: 12 янв 2025

Комментарии • 947

  • @tomweiland
    @tomweiland  3 года назад +48

    *Riptide v2.0.0 is out now:* riptide.tomweiland.net/manual/updates/release-notes/v2.0.0.html
    Quite a few things have been renamed in v2 which will make it slightly more difficult to follow along with the video, so I recommend using v1.1.0 while watching the tutorials and then updating your project afterwards with the help of the upgrade guide (on the NEW docs site): riptide.tomweiland.net/manual/updates/guides/update-to-v2.html
    Part 2: ruclips.net/video/tYTswQf3Wkw/видео.html
    *Links to stuff in the video:*
    Source code ► github.com/tom-weiland/RiptideSampleFPS/tree/part1
    Discord server ► tomweiland.net/discord
    RiptideNetworking repo ► github.com/tom-weiland/RiptideNetworking
    Riptide's Steam transport repo ► github.com/tom-weiland/RiptideSteamTransport
    Commonly used ports list ► en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
    Check out my devlogs ► ruclips.net/p/PLXkn83W0QkfmQI9lUzi--TxJaOFYIN7Q4
    Support me via GitHub Sponsors ► github.com/sponsors/tom-weiland
    *Other FAQ*
    Does this work for 2D games?
    _Yes. The network code works independently of how many dimensions your game has._

    • @NapkinHolder_AH
      @NapkinHolder_AH 3 года назад

      Thank you so muchhh

    • @fortnitegiftcard8541
      @fortnitegiftcard8541 3 года назад

      Is making a server better using riptide or using your old networking tutorials code?

    • @enderduck4253
      @enderduck4253 3 года назад +2

      @@fortnitegiftcard8541 definitely Riptide. It's like he mentioned in the video. Riptide is cleaner and easier to work with. And a test conducted a while ago showed it to be 10 times more resource efficient than the previous solution.

    • @hassananwar2431
      @hassananwar2431 3 года назад

      Please show client and server prediction
      It'd be soo helpful

    • @fortnitegiftcard8541
      @fortnitegiftcard8541 3 года назад

      @@enderduck4253 thanks

  • @spacecatsfilms3955
    @spacecatsfilms3955 3 года назад +169

    The constant reminders of which file you're editing is a big step up from your older videos, looking forward to see more from you

    • @tomweiland
      @tomweiland  3 года назад +13

      Definitely, and they're essential if I want to have the footage zoomed in like that 😅

  • @NapkinHolder_AH
    @NapkinHolder_AH 3 года назад +34

    Omg I'm so excited for this. I've been waiting for a brand new networking system to use without money. I thank you so much!!

    • @tomweiland
      @tomweiland  3 года назад +8

      Yeah Riptide is free to use, but keep in mind that renting servers (which you'll need to do for any sort of public release) will still cost you money, regardless of what networking system you use.

    • @Kristopher_Logan
      @Kristopher_Logan 3 года назад

      @@tomweiland I have been having trouble with that. I rented a VPS but I do not think it is publicly accessible from the internet, I uploaded my server to it, fired it up but could not connect

    • @subarunatsuki1902
      @subarunatsuki1902 2 года назад

      Did you make it?

  • @Looneybat
    @Looneybat 3 года назад +62

    I knows it's been said a lot but you really are amazing, thank you for putting your time and effort into these great videos

    • @tomweiland
      @tomweiland  3 года назад +2

      Thanks for the kind words 😅

  • @consolenoob
    @consolenoob 2 года назад +25

    Cheers man, I am into netcode & backend development for multiplayer games. I cannot thank you enough for how your library is a golden learning-source for me. Hopefully, I will be able to contribute your netcode too!

    • @tomweiland
      @tomweiland  2 года назад +2

      Glad to hear it's been helpful :D

  • @KunamyMC
    @KunamyMC 2 года назад +3

    Hey Tom, I've been following you for 2 years now and your content just keeps getting better and better! Whether the videos, or the multiplayer solutions! Riptide is fucking awesome!

    • @tomweiland
      @tomweiland  2 года назад

      Thank you! I'm always looking to improve the work I do-glad you like it :D

  • @FlubsYT
    @FlubsYT 3 года назад +4

    No way you have just uploaded this right before I wanted to come back to your tutorials as my programing knowledge got better since I first found your channel. I'm really looking forward to this tutorial series!

    • @tomweiland
      @tomweiland  3 года назад +1

      Impeccable timing 👌

  • @spidernh
    @spidernh 3 года назад +10

    I like how this solution seems like a balance between your old solution, where you had to write everything and I didn't understand it, and Mirror, where I could understand it easily but didn't know exactly what was going on since I wasn't controlling everything. I'm excited to see more of this series!

    • @tomweiland
      @tomweiland  3 года назад +4

      Yeah, I feel like Riptide is a good middle ground between the two. It saves you the pain of writing the really low level network code (which you most likely wouldn't ever need to modify anyways), but leaves the higher level stuff up to you so that you're fully in control of what's going on.

  • @lowearthsurfer
    @lowearthsurfer 2 года назад +4

    This video covered all the bases and went even further beyond. I want to extend my deepest gratitude in how much effort you've put into the tutorial, material and production of this video. This boosted my confidence in applying this new concept to my unity project.

    • @tomweiland
      @tomweiland  2 года назад +1

      Thanks for the kind words, glad you liked it :D

  • @RugbugRedfern
    @RugbugRedfern 3 года назад +6

    Very cool! Can't wait to see what people make with this!

    • @SirJustinn
      @SirJustinn 3 года назад

      Hey rudbugg thank you for your tutorials alsooo

    • @tomweiland
      @tomweiland  3 года назад

      Yes, that'll be interesting to see...

  • @almond_robin
    @almond_robin 3 года назад +2

    THANK YOU SO MUCH. I followed your old tutorial to make some multiplayer games and I'm so excited about Riptide. Makes it much easier.

    • @tomweiland
      @tomweiland  3 года назад

      It's _sooo_ much better :P

  • @zehsofficial
    @zehsofficial 3 года назад +4

    Perfect timing for starting up this new multiplayer networking series! I recently built my gaming pc so I'm back up with Unity game dev. I can't wait to see what you'll make with it. Good touch on showing if you're either working on the Server or Client project/code. Huge improvement in quality compared to your previous tutorial series!

    • @tomweiland
      @tomweiland  3 года назад +2

      Yeah, it's an upgrade on all fronts. The code is better and so are the videos :P

  • @donavilon
    @donavilon 2 года назад +3

    Nice tutorial bro, really well explained and with a simple tag reminding you in what script are you working, so simple, so clean, so effective. Really good bro thanks a lot!

  • @laval_70
    @laval_70 3 года назад +1

    I gotta say this new networking solution i miles better than the old one. I previously used the old one and had several problems. Looking forward to more of this series!

    • @tomweiland
      @tomweiland  3 года назад

      I agree. For the last few months I've been so over how bad the old code is that every time someone asked for help with a problem they were having I just wanted to tell them to use Riptide, but until now that wasn't feasible because there was no tutorial 😅

  • @CodemasterJamal
    @CodemasterJamal 3 года назад +3

    The graphics for your game are amazing. I was wondering when Riptide came out and so far, I'm very impressed.

    • @tomweiland
      @tomweiland  3 года назад +1

      Glad you like it :)

    • @CodemasterJamal
      @CodemasterJamal 3 года назад

      @@tomweiland Yeah, some parts of it kind of reminds me of DarkRift but, it's greatly simplified.

  • @Kristopher_Logan
    @Kristopher_Logan 5 месяцев назад

    I got my ServerClient Configuration working, and trasmitted by first message to the server. I already had a setup going called UML that I am using for Educational Content. You tutorial really helped me alot - now I just need to set things up so there are two message types, client and server. messages from clients need to be blocked from accessing server functions. since it all uses my UML system, I just need to setup a dictionary that checks for keywords that clients are not allowed to use - such as shut down server commands and whatnot. I already have most of the stuff done, its just networking that needs to be completed, and thanks to this, I am way farther ahead.
    I had used riptide in the past in an effort to make an RPG maker with online features. the rpg maker failed, but riptide did not. hence why I am coming back here again to use it. Thank you for such a great tool.

    • @tomweiland
      @tomweiland  3 месяца назад

      Glad I could help :)

  • @ataz1522
    @ataz1522 3 года назад +3

    Simply lovely, muchly needed. Thank you, Tom Weiland.

  • @cradle_of_chaos
    @cradle_of_chaos 3 года назад +1

    Good to see you back on RUclips Tom!

    • @tomweiland
      @tomweiland  3 года назад +1

      It's good to be back 😅

  • @tiagomartins5487
    @tiagomartins5487 3 года назад +11

    I've seen all your videos about networking, I'm so looking forward to it. Are you going to cover important topics like client side prediction or lag compensation in your video series? I really hope so. thank you tom i love your channel

    • @tomweiland
      @tomweiland  3 года назад +6

      I've got making a client prediction tutorial set as a "reward" for hitting the current goal on GitHub Sponsors, so yes, that will probably happen eventually.

    • @tiagomartins5487
      @tiagomartins5487 3 года назад

      @@tomweiland glad to hear that, thanks for the tutorials, they are very useful

  • @NewbNinjas
    @NewbNinjas 2 года назад

    I love it when people go above and beyond like this .... you sir are a gent and have earned a Ko-Fi on me.

    • @tomweiland
      @tomweiland  2 года назад

      Glad you found it useful! I appreciate any and all support, but if it's all the same to you, I think I prefer GitHub Sponsors over Ko-fi 😅

  • @suprecam9880
    @suprecam9880 2 года назад +8

    Tom, just had to leave a comment and say thank you for the videos. You’re the only person on RUclips who has ever covered this topic, authoritative multiplayer, in a way that not only makes sense, but does it right and feels professional. So many have tried. You are making a great contribution to the indie MP game developer community.
    Would love to hear about how you managed to learn all of this, are you self taught, did you work for a studio, or is it from schooling? Just curious. Thanks again, keep making great tutorials!

    • @tomweiland
      @tomweiland  2 года назад +5

      Thank you for the kind words, I'm glad you've found the videos helpful :D
      I'm entirely self-taught-I got started with networking through some videos that no longer exist, and after that I just spent a lot of time working with this stuff, googling things I didn't know/understand and reading a _lot_ of documentation.

  • @tsunamidev
    @tsunamidev 2 года назад +1

    damn. i learned from photon tutorials so far AND THIS IS SO MUCH CLEARER AND BETTER. (the photon ones were good too, they just werent what im looking for)
    Your explanations are great, and this system really solves a lot of problems i had before and for the first time i feel like in the future id be able to expand upon the tutorial to make a good game id be proud of. thank you so much for developing and preparing riptide for us, and when ill have the money you can bet ill support you. good job man!

    • @tomweiland
      @tomweiland  2 года назад

      Thank you for the kind words! I'm glad you've found Riptide/these tutorials helpful :D

  • @_Jam1
    @_Jam1 3 года назад +3

    Personally, i think a video explaining the methods that rapid uses in detail would be really cool. It will definitely help with solving more complex problems.

    • @tomweiland
      @tomweiland  3 года назад +3

      You mean you want an explanation of Riptide's internals? That's unlikely to happen-it'd take forever and most people wouldn't really benefit much from that knowledge (because they just want to get on with making their game). The source code _is_ pretty well commented though, so I think you could probably make sense of the majority of it without a video explaining it all.

    • @_Jam1
      @_Jam1 3 года назад +2

      @@tomweiland yeah i didnt think many people would be interested. Its more i was interested in the steps you took with riptide compared to your original tutorial

  • @phee3D
    @phee3D 3 года назад

    even the tutorial itself makes a lot more sense than your previous series. What I mean is, in the previous tutorials it was more of a "follow what I'm doing" kind of thing with explanations sprinkled in here and there and many people who weren't interested in understanding how the code works or didn't have enough knowledge to understand how it works didn't have a great time. This makes a lot more sense because now you're just showing how to use your multiplayer system instead of building it and anyone interested in understanding how it works can just read the source code. Big brain move right there

    • @tomweiland
      @tomweiland  3 года назад +1

      Yeah, I didn't do a great job of explaining things in the old tutorials, and they (especially the earlier ones) were much too fast. This is definitely a major improvement on all fronts 😅

  • @vintoncerf7562
    @vintoncerf7562 2 года назад +6

    Note to all new viewers: Server.Tick() method was replaced with Server.Update()

    • @tomweiland
      @tomweiland  2 года назад

      Yes, in v2.0.0, which is why I recommend using v1.1.0 while watching the tutorials, and then using the upgrade guide to update your project afterwards: riptide.tomweiland.net/manual/updates/guides/updating-to-v2.html

    • @ikhwanmz
      @ikhwanmz 2 года назад

      @@tomweiland how about for client?

  • @gordonbeeman5387
    @gordonbeeman5387 Год назад +1

    This is lovely, I love this way of networking things. Thanks really much for bringing this to Unity.

  • @chrisfonte4987
    @chrisfonte4987 3 года назад +4

    Interesting. I’ve been following your other networking tutorials, is this going to be a similar series? And if so do you think the previous tutorials are going to be helpful still?

    • @tomweiland
      @tomweiland  3 года назад +5

      The previous tutorials might be beneficial because you'll be writing all the low level code yourself. On the other hand, I didn't do the greatest job at explaining all that so it may not actually help you learn anything.
      In this series we don't write the super low level stuff and just stick to what applies to the process of setting up mechanics in a multiplayer environment, so these videos will probably also be more beginner friendly.

  • @morienopi
    @morienopi 3 года назад

    This is going to be my favourite series of all time

    • @tomweiland
      @tomweiland  3 года назад +1

      How can you tell so soon 😅

  • @K3rhos
    @K3rhos Год назад

    Exactly what I needed, I'm coming back after like 3 years without working with Unity, and I recently wanted to do some networking, I just took my old networking code from your old tutorials and slowy tried to remake everything properly, fixing issues and stuff, and I quickly became to conclusion: "This thing is garbage lol !" I have a lot of performance issues and everything with the old net code, issues when disconnecting, time out issues and more. Since I'm making a complexe game that manage a lot of entities at the same time, I need something stable and efficient !
    And I just saw your new tutorial, and I don't wanted to go with Mirror or other stuff like that, Riptide seems to be exactly what I wanted.

    • @tomweiland
      @tomweiland  Год назад

      Nice, welcome back to game dev :D

    • @starzstorz9477
      @starzstorz9477 3 дня назад

      @@tomweiland "Nice, welcome back to game dev :D" this phrase sound so poetic omg i cant 😭

  • @dumbdev9795
    @dumbdev9795 2 года назад +1

    Idk how i could have missed this vid, but damn nice api. Having so much fun with it. In comparison to mirror its way easier to understand aswell. I know exactly what each method does and know exactly what my possibilities are with this. Thanks a lot.

    • @tomweiland
      @tomweiland  2 года назад

      I tried to name and structure everything as naturally and logically as possible, so it's great to hear you're finding it easy to understand :D

  • @radishmouse22
    @radishmouse22 3 года назад

    OMG, I love this new solution and how easy it is to use. This is so cool and I can tell how much you worked on it. I would definitely recommend this solution to others in the multiplayer game dev scene. I used your old solution in a game before and this is a HUGE step up. Can't wait for the future tutorials!

    • @tomweiland
      @tomweiland  3 года назад +1

      You, sir, sound like you understand Riptide's supremacy on a spiritual level 😂

    • @radishmouse22
      @radishmouse22 3 года назад

      @@tomweiland also, I love the convenience of adding to unity’s package manager. Just a one click update!

  • @imgekko4142
    @imgekko4142 3 года назад

    Nice step up in production quality for this video, top job Tom!

    • @tomweiland
      @tomweiland  3 года назад

      Thanks, glad you like it :D

  • @PrzygodazUnity
    @PrzygodazUnity 3 года назад

    Holy shit,
    Your TPC/UDP connection series was first thing i tried to do when i started using Unity! Now you give something like this for free. Thanks a lot!

  • @extream_salty-_-7711
    @extream_salty-_-7711 3 года назад +1

    Hi i've used ur old network solution and found it very nice and handy!!
    Good to see that there is way more to do.
    Scince you had anounced an a devlog that u are working on an updated verion ive waited every day till it is out now

    • @tomweiland
      @tomweiland  3 года назад +1

      Haha yeah it's finally here :P

  • @rgwritescode809
    @rgwritescode809 3 года назад +1

    Niiiice! New series! Keep up the good work man!

    • @tomweiland
      @tomweiland  3 года назад +1

      Yeah, and this time it's not at light speed 😂

    • @rgwritescode809
      @rgwritescode809 3 года назад

      @@tomweiland I really want to thank you for the before series on multiplayer setup, you taught me a lot! Can't wait to see how this series goes, for sure I will learn a lot from this too.

    • @tomweiland
      @tomweiland  3 года назад +1

      Glad to hear it! I'm hoping to get into some more advanced stuff in this series, seeing as how Riptide takes care of most of the basics.

  • @RobLang
    @RobLang 3 года назад

    Not used RipTide but you're absolutely spot on with Mirror. Looking forward to seeing how this tutorial series progresses, great job, Tom!

    • @tomweiland
      @tomweiland  3 года назад

      Glad to hear I didn't say anything dumb about Mirror 😂

    • @ruhitrai6015
      @ruhitrai6015 3 года назад

      @@tomweiland bro can you teach slowly :((

  • @santiferreyra3104
    @santiferreyra3104 2 года назад

    Flaco no te conozco, vi literal medio video tuyo, ya te envíe guita. Sos todo un profesional. Da gusto ver tutoriales así. Da gusto todo el trabajo que haces con la libreria Riptide !

    • @tomweiland
      @tomweiland  2 года назад

      You sent me money? When? On what platform? I don't think I got anything...
      Glad you like the tutorials though!

  • @Ferenc-Racz
    @Ferenc-Racz 3 года назад +1

    I really enyoed your older networking tutorials as well, and I will follow this series also. Thank you for your knowledge sharing. respect! :)

    • @tomweiland
      @tomweiland  3 года назад

      Glad you've found them helpful :)

  • @Rahat2056
    @Rahat2056 3 года назад

    I literally just subscribed minutes ago. The timing is impeccable.

  • @TheIronicRaven
    @TheIronicRaven 3 года назад +1

    You're the best and your videos are making my dream game a reality! Thank you so much!

  • @teomanefe
    @teomanefe 3 года назад

    I'm really looking forward to this series. My goal is to build a small MMO game, but I never know where to start. This seems perfect!

  • @lucadifelice3479
    @lucadifelice3479 3 года назад +1

    I remember watching your old multiplayer tutorial almost 2 years ago when I was in grade 8!

    • @tomweiland
      @tomweiland  3 года назад

      Haha yeah it was about time for an upgrade :P

    • @lucadifelice3479
      @lucadifelice3479 3 года назад

      @@tomweiland you are really talented with this stuff, keep it up!

  • @MSCardinal
    @MSCardinal 3 года назад +1

    The Return of the King!

    • @tomweiland
      @tomweiland  3 года назад

      😳

    • @MSCardinal
      @MSCardinal 3 года назад

      @@tomweiland Thx for the heart and your content! You have literally the most helpful videos when it comes to networking with Unity. Keep it up! 😊

  • @potsaenamo714
    @potsaenamo714 3 года назад

    Real thanks to Tom :3. I'm utterly exasperated on making multiplayer, and now. I found Tom. Everything works!!! You're a good teacher UwU.

  • @larner6903
    @larner6903 3 года назад

    Hi Tom, thank you i have been waiting on your Riptide tutorials with great anticipation and i can say going through this part i am really looking forward to the next :) keep up the outstanding work.

  • @colin529
    @colin529 3 года назад

    Dude I love all of your videos! You're doing a great job and I'm honestly surprised how good you are at this networking stuff. Keep up the good work!

  • @maddocksjos
    @maddocksjos 3 года назад

    Hey nice. Been waiting to see what you were working on. You have not disappointed

  • @ActiveYellow1
    @ActiveYellow1 2 года назад

    I just wanted to say thank you for your hard work and for this tutorial. It is really appreciated.

    • @tomweiland
      @tomweiland  2 года назад

      Glad it's been helpful :)

  • @btarg1
    @btarg1 2 года назад +1

    Your tutorials are great, I would love to see even more!

    • @tomweiland
      @tomweiland  2 года назад

      There will definitely be more at some point :)

  • @ImHamsome
    @ImHamsome 3 года назад

    Finally very glad to see a new network tutorial looking forward to it :D

    • @tomweiland
      @tomweiland  3 года назад +1

      Yeah it took a while :P

  • @hansa5867
    @hansa5867 Год назад

    This makes me very happy as I from the get go made my game with online as a potential feature. So modifying my game to support this should be very simply.

  • @eboatwright_
    @eboatwright_ 3 года назад

    This is awesome! I don't use Unity anymore, but still checking out your videos. :D

    • @tomweiland
      @tomweiland  3 года назад

      What are you using now? Unreal?

    • @eboatwright_
      @eboatwright_ 3 года назад

      @@tomweiland Nah, the Rust programming language with a few libraries called Macroquad, and HECS :D

  • @CertraX
    @CertraX 2 года назад

    This is exactly what I need. Great video man

  • @bakerfx4968
    @bakerfx4968 3 года назад

    Thank you! Looks great! I can’t wait to get into it tonight!

  • @calcumalations1235
    @calcumalations1235 3 года назад +1

    Cant waiit for episode 2, i really want to try making a FPS, ive got my ideas down but i want to make a base before i implement them

    • @tomweiland
      @tomweiland  3 года назад

      Hopefully this weekend 🤞

    • @calcumalations1235
      @calcumalations1235 3 года назад

      @@tomweiland that makes me lucky lol, if I can get the basic things ready I think I can try do it solo for learning purposes, weekends are basically the only time I can code properly

  • @vakqdev
    @vakqdev 3 года назад +1

    The return of the king…

  • @milosancheztv8432
    @milosancheztv8432 Год назад

    These tutorial are so good it is almost a crime

  • @457Deniz457
    @457Deniz457 3 года назад +2

    Wow Unity should really send you some money.
    Awesome what u just released here❗🔥👌🤩

    • @tomweiland
      @tomweiland  3 года назад +2

      That would be nice 😂

  • @ZaneyOG
    @ZaneyOG 3 года назад

    Truly man, thank you. A couple of friends and I are making a first person survival game in the vein of DayZ and Deadside. However, we want to make it open source and implement multiplayer while keeping the complexity elsewhere to a minimum. I genuinely can't express my gratitude enough for making this incredible video and not just allowing others to benefit off of your hard work and talent, but teach them to implement it themselves! I am on the edge of my seat waiting for another video and am excited to learn more!

    • @tomweiland
      @tomweiland  3 года назад

      I'm glad you've found it helpful! Hopefully the next one will be out within the next 2 weeks-good luck with your project :)

  • @ty-xq7bl
    @ty-xq7bl 2 года назад

    Really really looking forward to how this works out. I was wondering at 8:14 why the UIManager singleton is defined twice. Thanks!

    • @tomweiland
      @tomweiland  2 года назад

      It's not. The private _singleton is the one that actually holds the reference and when used like this is known as the "backing field" of the property (the public Singleton). The public Singleton is the one intended for actual use/access in your code, and it functions more like 2 methods than a field-one for setting _singleton's value, the other for getting/retrieving _singleton's value.
      Properties basically allow you to more finely control read/write access, as well as executing logic when the value is being set or retrieved. You can read more here: docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties

    • @ty-xq7bl
      @ty-xq7bl 2 года назад

      @@tomweiland Thank you!
      EDIT: Nvm, ill just download the github project for now!
      I have finished following the guide but there is an error which is referring to the line
      Message message = Message.Create(MessageSendMode.unreliable,ServerToClientId.playerMovement);
      in the Client/PlayerController script;
      Argument 2: cannot convert from 'ClientToServerId' to 'ushort'
      This is strange because the other ToServerID commands seem fine.

  • @joeyscott2256
    @joeyscott2256 3 года назад

    Wow, Riptide is pretty sweet, great job.

  • @MaxIzrin
    @MaxIzrin Год назад

    Works well, thank you.
    Couldn't get the Message Handler to work, kept saying there's no handler for the given ID.
    Got around it by using the message received event, on client.
    Nice and simple over all.

    • @tomweiland
      @tomweiland  Год назад +1

      If it's complaining that there's no handler for an ID despite you definitely having a handler method set up for that ID (with the attribute), the method's parameters are probably incorrect. Server-side message handlers are defined by having two parameters (a ushort and a Message instance) and will only be detected/used by Server instances. Client-side message handlers are defined by having only one parameter (a Message instance) and will only be detected/used by Client instances.
      What probably happened is that your handler method was supposed to be for the client side (or vice versa) but didn't have the appropriate parameters and was therefore not used.

  • @tp-xk8ns
    @tp-xk8ns 3 года назад

    Awesome ❤️❤️, can't wait to see next part 😁

  • @StarriApps
    @StarriApps 3 года назад +2

    This is really awesome! Really looking forward to the complete series! Is this udp or tcp based or both? 🌟

    • @tomweiland
      @tomweiland  3 года назад +1

      Riptide's default transport uses only UDP.

    • @enderduck4253
      @enderduck4253 3 года назад +1

      It's RUDP or Reliable UDP, so you're retaining UDP's speed but you can still send information reliably if you need to.

  • @RasmusLeonid
    @RasmusLeonid 3 года назад

    For some reason, I was skeptical at first, but I'm glad I started using riptide instead of the old solution. it's so much better to work with. Also, I noticed if I had two clients/projects running at once with the old solution, if I wasn't tabbed in, the game would run at like 1FPS, which made testing on one machine very annoying. Idk if that was caused by the networking, but one of the first things I noticed after implementing riptide, was that I no longer had this issue. Also nice that you're working on a transport for steam. Another cool thing would be a transport for epic online services, since(if I understood it right) they offer pretty much the same features as steam, but it works independent from epic launcher and is designed to work on literally every platform.

    • @straightafitness
      @straightafitness 3 года назад

      i have a question: is there a player that has a specified client that is host and not a server?

    • @tomweiland
      @tomweiland  3 года назад +1

      I'm glad you're enjoying Riptide! I've added the Epic transport to my things-to-look-into-eventually list, but I have no idea how soon I'll get around to that. I'm also not sure how that would work considering Riptide is built in C#-is there a C# API/wrapper for their online services stuff?
      _"if I had two clients/projects running at once with the old solution, if I wasn't tabbed in, the game would run at like 1FPS"_
      That's very strange...my initial thought was that maybe you had the Run in Background option disabled in one/both of your projects, but if that was the case it should stop completely when you tab out, not run it 1fps 🤔
      The old networking solution is/was substantially slower than Riptide, but unless you've got quite an old computer, I don't think the networking solution alone (in otherwise equally performance-intense projects) would make a large enough performance difference to go from 1fps to no noticeable lag...

    • @RasmusLeonid
      @RasmusLeonid 3 года назад

      @@tomweiland Sweet! EOS has a C# SDK but their documentation is far worse then the one from streamworks, and there is way less information about it from what I could see. Maybe that's just because I'm somewhat used to the steamworks stuff now though.
      About the 1fps thing, I'm also having my doubts that it was caused by the networking alone, but at least I don't seem to have the issue at the moment.

  • @swagmuffin411gaming8
    @swagmuffin411gaming8 3 года назад

    Heck yeah bro! I am so happy it came.

    • @tomweiland
      @tomweiland  3 года назад

      It certainly took long enough :P

    • @swagmuffin411gaming8
      @swagmuffin411gaming8 3 года назад

      @@tomweiland nah man! I know it takes time to create quality content! Especially when you have to produce quality code along with it! You're a legend. Keep up the great work! I am starting development on my dream game and I hope to use you networking solution because all the other ones did too much (like you said in the video). So thank you! Keep up the great work brother.

  • @joshuafhiggins
    @joshuafhiggins 2 года назад

    Thanks!

    • @tomweiland
      @tomweiland  2 года назад +1

      Glad I could help, thanks for the Super Thanks 😄

  • @elaivelite
    @elaivelite 3 года назад +1

    It's amazing to find so quality tutorial! Thank you so much! I have a question: why Riptide, not Photon you choose?

    • @tomweiland
      @tomweiland  3 года назад +1

      I've never used Photon, but the idea of having an arbitrary CCU limit imposed on me just for using a certain solution (even if you host your own servers) doesn't really appeal to me. Also most of the people I've talked to who have used Photon said they didn't really like it 😅

  • @mehmetchad
    @mehmetchad 3 года назад +1

    WOHA NEW SERIES LETS GO

  • @danielspears5984
    @danielspears5984 2 года назад

    Can’t wait for next video Tom

  • @joshuafhiggins
    @joshuafhiggins 3 года назад

    POGCHAMP, I would totally donate to keep this project running if I could!

    • @tomweiland
      @tomweiland  3 года назад +1

      Don't worry about it if you can't, and definitely don't give me money you need for yourself :P

  • @famoviem4157
    @famoviem4157 3 года назад +1

    Yeahh ❤️
    Thanks tom.
    Quick question, in this series you'll implement create room? if don't, it possible to implement create room using this series?
    anyway thanks for this 🙏

    • @tomweiland
      @tomweiland  3 года назад

      I don't think I'll cover lobby systems in this series, but it's definitely possible to implement that with Riptide.

  • @HitsquadYT
    @HitsquadYT 3 года назад

    I love your content thx for making this great video please keep posting 😃

  • @stefan429
    @stefan429 3 года назад

    aww bless the new tutorials!!

    • @tomweiland
      @tomweiland  3 года назад

      It took a while but #1 is finally here 😅

  • @JustSomeBricks
    @JustSomeBricks 2 года назад

    Hello. I am fairly new to Unity and when following the step at 11:30 I couldn't attach the UsernameField to the slot you managed to drop it in. When I tried, it gave me a circle with a diagonal line in it and when I let go of the mouse button on top of it it just disapeared.

    • @tomweiland
      @tomweiland  2 года назад

      That means that either the username field game object doesn't have an InputField component attached, or the field in your code is not of type InputField.

    • @JustSomeBricks
      @JustSomeBricks 2 года назад

      There is an InputField component attached, so it's probably because of the second reason. How can I make the field in my code of type InputField? Sorry but I know pretty much nothing so could you be specific? One more thing, I am now unable to attach the UIManager as a component.

    • @tomweiland
      @tomweiland  2 года назад

      If you don't know how to change a field's type, then you may want to re-think tackling multiplayer at this stage. It'd be wiser to learn some basic C#/Unity stuff first while building singleplayer games (which is _much_ simpler than multiplayer).
      Either way, I'm not sure how to explain how to change a field type without sending an image or something (which obviously isn't possible in RUclips comments), so you should probably just go compare your code to mine on GitHub.

  • @dyconcz
    @dyconcz 2 года назад +2

    If I wanted to have more servers in my game that would host more PCs, would I just duplicate the script and change the IP address and port?

    • @tomweiland
      @tomweiland  2 года назад

      No, you'd run multiple server applications. Look into devops, Docker containers, and Kubernetes.

  • @EwrybodyTube
    @EwrybodyTube 3 года назад

    I like it a lot. I definitely will use that in my feature projects

  • @vedantkadam2147
    @vedantkadam2147 3 года назад

    Man thats really awesome ,Thankyou bro helped me a alot

  • @youssefgaaloul
    @youssefgaaloul 2 года назад

    In my case it connects and disconnects in the pace of the update method, that means that I get infinite outputs in the console stating: "(CLIENT): Disconnected from server (initiated locally)."
    In your video it comes only once, why?
    edit: another question is, how do you enable the suggestions of Visual Studio on what to write or information, about the method you used 5:05

    • @tomweiland
      @tomweiland  2 года назад +1

      _"In your video it comes only once, why?"_
      The real question is why does yours not show up only once :P
      I have no idea what you might've done to get this behaviour, so you should probably join the Discord server and ask there, as troubleshooting here in the comments is a pain.
      Those VS suggestions should be enabled by default, but if you don't have them, maybe do some googling about enabling intellisense in Visual Studio?

  • @santiferreyra3104
    @santiferreyra3104 2 года назад

    You really are amazing dude !

  • @oieraizpun5139
    @oieraizpun5139 3 года назад

    I was waiting for this!

  • @lukass1604
    @lukass1604 2 года назад

    I don't know if you've already done this in newer versions of this framework but you could wrap your Client.Connect method which takes a string with another method. Then you would avoid the exposed string parameter. Something like this:
    public void ConnectClient(ushort ip, ushort port) => Client.Connect($"{ip}:{port});
    then only expose this method.

    • @tomweiland
      @tomweiland  2 года назад

      I mean you can wrap it yourself if you like, but Riptide's connect method won't receive a wrapper like that as not all transports take an IP and port as the host address. For example, the Steam transport needs a Steam ID to connect to-a wrapper that takes an IP and port wouldn't work for that at all.

  • @fluffypancakes1281
    @fluffypancakes1281 2 года назад +2

    So, the way this networking solution works, is it run on the creator's router and computer? Or is it run on specific servers, or by the computer which is hosting the room?

    • @tomweiland
      @tomweiland  2 года назад

      That's entirely your choice, but if you're publicly releasing your game you probably don't want to be running the server on your personal computer.

  • @haihu5758
    @haihu5758 3 года назад

    Yes I have been waiting for this

  • @Amlesh810
    @Amlesh810 2 года назад

    @Tom Weiland please help me u have selected ConnectClicked at 11:40 but in my case there is no option for connectclicked...what should i do for this

    • @tomweiland
      @tomweiland  2 года назад +1

      Make sure your UIManager has a _public_ ConnectClicked method.

    • @Amlesh810
      @Amlesh810 2 года назад

      @@tomweiland Thank u sir...this is very helpful for me and it works .

  • @honakna2117
    @honakna2117 2 года назад +2

    I am new into networking in C#. I have only used Photon before and I didn't like it for the same reasons you said, If I want to test it with someone else what will i do with the server? Will i build it or leave it like that and what will the other ones do with server?
    Sorry for asking a lot of questions but i really don't know😅😅

    • @tomweiland
      @tomweiland  2 года назад

      You can build the server or run it in the editor. In order to have a friend connect from a different network, you'll need to portforward the port that the server is listening on (in your router settings) and then change the IP that clients connect to to your public IP.

    • @honakna2117
      @honakna2117 2 года назад

      Meaning that the server should be always running on my machine right?
      Cuz i really want to use Riptide

    • @tomweiland
      @tomweiland  2 года назад

      If you release your game, you'll always want a server running (otherwise players wouldn't be able to connect and play), but you definitely don't want to do that on your own computer unless it's only your friends/people you trust playing. Even then, having your computer on 24/7 is suboptimal, so you'd most likely want/have to pay for server hosting.

    • @honakna2117
      @honakna2117 2 года назад

      Thanks alot♥️

  • @ThatGamePerson
    @ThatGamePerson 3 года назад

    Wow did you read my mind? I literally just started working on something like this to play around with

    • @tomweiland
      @tomweiland  3 года назад

      I wish I had that ability 😅

  • @AkshayGupta-dd4ht
    @AkshayGupta-dd4ht 3 года назад

    I think I got what I want because there is some problem with your old code but old is gold I thank you for that too. looking forward to it and very excited, then NO WAY HOME🤣🤣

  • @luccabollani377
    @luccabollani377 2 года назад

    Wow! New tutorials! Awesome!

    • @tomweiland
      @tomweiland  2 года назад

      It took a bit longer than I'd hoped :P

  • @UsmanDev
    @UsmanDev 3 года назад

    Solid Tutorial!

  • @danuvip
    @danuvip 3 года назад

    finally another chance to get into multiplayer! thanks god!

  • @acez28
    @acez28 3 года назад

    Can't wait for part 2

  • @Nervniyak
    @Nervniyak 3 года назад +1

    How would you proceed with making Host&Play option? A lot of players have no idea what dedicated server is or how to run it. How do we implement it while having client and server as 2 different projects?

    • @tomweiland
      @tomweiland  3 года назад +1

      You can combine the client and server code into one project if you want to allow players to host games.

    • @Nervniyak
      @Nervniyak 2 года назад

      @@tomweiland But how would you do that, if you already have dedicated server project built with it's own "mindset". Are games really built as one project for host&play and dedicated?
      I saw that unity's sample FPS has custom tools to create different builds for client and dedicated server from one project. But it was beyond my comprehension. And I remember Unet which allowed to host and join out of the box.
      Because general gamer doesn't know anything about hosting dedicated server all they want is to buy game in Steam, launch it and press Host (to Host & Join via Steamworks). Dedicated is good for games where regular players are not supposed to host lobbies.

    • @tomweiland
      @tomweiland  2 года назад

      Take a look at the PlayerHostedDemo in the RiptideNetworking repo, or at the example scene in the RiptideSteamTransport repo.

  • @treeadam5298
    @treeadam5298 2 года назад

    hey tom i cant seem to open the folder that you open at 15:35 in the video because the website got updated

    • @tomweiland
      @tomweiland  2 года назад

      Which folder? What website? I only see code at 15:35...did you mean a different timestamp?

    • @treeadam5298
      @treeadam5298 2 года назад

      @@tomweiland yes the time stamp

    • @treeadam5298
      @treeadam5298 2 года назад

      its 15:35 to 15:45 UnityPackage folder on the Github

    • @treeadam5298
      @treeadam5298 2 года назад

      also the project im making is 2d does this tutorial support 2d or only 3d

    • @tomweiland
      @tomweiland  2 года назад

      Oh I see what you mean now. You can find the folder as it was by looking at the v1.2.0 (or earlier) state of the project: github.com/tom-weiland/RiptideNetworking/tree/v1.2.0
      I've made a lot of changes since then which will be in v2.0.0, but I'd recommend following the tutorials using the same version as I did at the time and updating after, as I've renamed quite a few things which may cause confusion if you're trying to follow along.
      Riptide doesn't care if your project is 2D or 3D, but obviously you'll want to change some of the code in the tutorials (like the movement logic) since that is built for 3D.

  • @CiarantDev
    @CiarantDev 2 года назад +1

    stupid question but is there a way to play with other poeple without using port foward ?

    • @tomweiland
      @tomweiland  2 года назад +1

      A lot of games run relay servers and have the servers hosting games, so even when you click "host" and it _seems_ like you're hosting the game, you're technically not-you just have get special permissions that allow you to change game settings and stuff. You can also use relay services like Steam's networking.

  • @ethankuhrts2799
    @ethankuhrts2799 3 года назад +2

    Seems great so far, one thing I've been wondering since your previous networking solution, is there a way to run a client and a server in the same instance at a time for example someone may want to host and play at the same time and let friends connect to them. are there any big complications to changing to that sort of setup on my project?

    • @tomweiland
      @tomweiland  3 года назад +1

      I actually just added a player-hosted demo project to the repo the other day: github.com/tom-weiland/RiptideNetworking/tree/main/Demos/Unity/PlayerHostedDemo
      However, it's making use of a feature (the auto message relay stuff) that will be in v1.2.0 (hoping to release that in the next few days) but which doesn't exist yet in the current version.

  • @rollo4048
    @rollo4048 2 года назад

    Hi! I am at 19:40 when using build the ui is not there and going back to the editor I cannot see both players

    • @tomweiland
      @tomweiland  2 года назад +1

      Did you not add any UI? Do you have the correct scenes added in the build settings? I'm not sure what else might be the problem.

    • @rollo4048
      @rollo4048 2 года назад

      Thanks! Turns out I did not build the correct scene

  • @drland963
    @drland963 2 года назад

    cant wait to part 2 👍👍👍

    • @tomweiland
      @tomweiland  2 года назад

      Should be out in the next few days :)

  • @eleocraft278
    @eleocraft278 3 года назад +1

    Is it possible to use riptide to make a localhost game like most multiplayer survival games (and for example muck from Dani)? Or do I need to pay for servers

    • @tomweiland
      @tomweiland  3 года назад +1

      Yep, you can build lobby based games with it, and if you want to avoid server hosting costs you can use something like Steam's relay services (which is what Muck does). You'll need Riptide's Steam transport if you want to do that though, and like I mentioned in the video, it's functional but still in development: github.com/tom-weiland/RiptideSteamTransport

    • @eleocraft278
      @eleocraft278 3 года назад

      @@tomweiland ok thanks, this is exactly what I wanted to know. Looks like I will be using riptide for the game I am working on 👍

  • @CasperWoude
    @CasperWoude 3 года назад +1

    I love the content! I'm sorry if this is posted somewhere but in that case I've missed it, but do you already know when the next part is going to be released? I get that creating this high quality content is time consuming so no pressure, just curious!

    • @tomweiland
      @tomweiland  3 года назад +1

      Hopefully within the next 2 weeks, although I want to push out an update for Riptide before then so it kind of depends on how long that takes.