Adding Player Movement | How to Make a Multiplayer Game - Part 2

  Рет қаралды 38,908

Tom Weiland

Tom Weiland

Күн бұрын

Пікірлер: 349
@tomweiland
@tomweiland 2 жыл бұрын
*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 *Important links:* Source code ► github.com/tom-weiland/RiptideSampleFPS/tree/part2 Discord server ► tomweiland.net/discord RiptideNetworking repo ► github.com/tom-weiland/RiptideNetworking Check out my devlogs ► kzbin.info/aero/PLXkn83W0QkfmQI9lUzi--TxJaOFYIN7Q4 Support me via GitHub Sponsors ► github.com/sponsors/tom-weiland
@the_ssd
@the_ssd 2 жыл бұрын
Hi, I am working on a P2P system for Riptide. I have 1 question. Message message1 = Message.CreateRaw(); message1.Add(message2.Bytes, false); are message1 and message2 the same?
@ramsey2155
@ramsey2155 2 жыл бұрын
hi, ​@@the_ssd you can ask your question on the Tom Weiland discord server it is a lovely place where you can find answers to your questions and do other things
@the_ssd
@the_ssd 2 жыл бұрын
@@ramsey2155 Thank, you I forgot about the server
@AkshayGupta-dd4ht
@AkshayGupta-dd4ht 2 жыл бұрын
Right Now I am working on Battle Royal Game Like Pubg, I saw THIS .... my request is that can you provide the completed project of your game, So I can Upgrade/ Change my project to RiptideNetworking
@tomweiland
@tomweiland 2 жыл бұрын
@@AkshayGupta-dd4ht the source code is on GitHub.
@teomanefe
@teomanefe 2 жыл бұрын
I'm waiting for this tutorial series to progress a bit to start my multiplayer project. Online stuff is quite confusing, but your explanation is really good. Thanks for these!
@tomweiland
@tomweiland 2 жыл бұрын
👍
@CAPTINBIBBA
@CAPTINBIBBA 2 жыл бұрын
👍
@jaaaaaaaaaaaaaay
@jaaaaaaaaaaaaaay 2 жыл бұрын
👍
@WarTutel
@WarTutel 2 жыл бұрын
👍
@f8chillyt
@f8chillyt 2 жыл бұрын
Yes! I hope these come out more often, I'm really starting to understand Riptide!
@tomweiland
@tomweiland 2 жыл бұрын
I hope so too 😂
@WalterMan
@WalterMan 2 жыл бұрын
Same! They are VERY useful! I just subbed lol
@jacobwoodman4488
@jacobwoodman4488 2 жыл бұрын
Hey everyone, if you don't want to lose 10 minutes like me at 8:50, be sure that you have Run in Background enabled in Edit->Project Settings->Player->Resolution & Presentation on your server, or else it won't run while tabbed out, making you think you messed up the movement implementation. Also not sure if I missed this, but you will also want to tag your player camera as Main Camera, so that Unity knows to switch to the player camera when you connect.
@tomweiland
@tomweiland 2 жыл бұрын
It'd be good if Run in Background was enabled by default, although I suppose that could cause undesired behavior in singleplayer games.
@laval_70
@laval_70 2 жыл бұрын
Been working on developing my game since the last episode. Event though I've already got my movement working watching these are still really interesting!
@tomweiland
@tomweiland 2 жыл бұрын
That's great :D
@jc3d299
@jc3d299 2 жыл бұрын
Awesome tutorial! Everything is clear and I really love the labels telling us which script is actually being seen. Thank you very much for the time you put in this and can't wait for next video.
@tomweiland
@tomweiland 2 жыл бұрын
Glad you've found it helpful :)
@n0n3x
@n0n3x 2 жыл бұрын
I ABSOLUTELY LOVE it! I'm currently making a game, which you can see on my channel, and I really need to start working on the multiplayer part. And this is PERFECT for what I was lookin for! Thank you so much mate!!!
@tomweiland
@tomweiland 2 жыл бұрын
Glad you like it :)
@sarpsays
@sarpsays 2 жыл бұрын
Tom, I just wanted to say thanks for all these videos. You really helped me out with your multiplayer game tutorials and with them my Indie RPG game is now fully multiplayer. Even across the world with simple port forwarding. So fun to be able to share and play what you worked on together with others! (although the whole new networking bugs aren't nearly as fun...)
@tomweiland
@tomweiland 2 жыл бұрын
Awesome :D
@radishmouse22
@radishmouse22 2 жыл бұрын
Lets go part 2. Love the good work man, this new networking solution is great and shows of your hard work.
@tomweiland
@tomweiland 2 жыл бұрын
I'm just glad people are finally actually using it 😅
@not__nugget
@not__nugget 2 жыл бұрын
Super cool video! I admit I have lost pretty much all my desire to work on games ever since I got my job as a software engineer, but watching this stuff surely helps rekindle that inspiration. One suggestion I have so far is in regards to sending inputs, and is actually an issue which I was also attempting to solve in an elegant way. Instead of allocating a large array of boolean values (a collection of yes/no answers) you can send a single number which behaves as a bit-flag (or a collection of yes/no answers) that can be sent much easier and with much less bandwidth. Of course the complexity increases the more complex a game becomes, but thankfully this can be created and expanded very easily using enums in C#. By assigning the value of each enum entry to a power of 2 (up to the maximum value the underlying value type can support), you can not only send the inputs as a single number, but you can also set them explicity by type and name. At the end of the day, a bool array works wonders, especially for smaller games with already minimal transport loads, but I love looking for any way to optimize, and this is a phenominal candidate!
@tomweiland
@tomweiland 2 жыл бұрын
Riptide's AddBools method actually already packs 8 bools into each byte, so you can use a regular bool array (which is definitely easier to understand for people who've never used bitshifting) and still get the same bandwidth efficiency as doing it manually. Of course, you can also do it your way-in some situations it may be easier to not have to deal with an array at all. Here's the code if you're interested: github.com/tom-weiland/RiptideNetworking/blob/b063398f96faa068534d3e1ea7591ae9a6f0080d/RiptideNetworking/RiptideNetworking/Message.cs#L391-L403
@savaciousbcrumb7191
@savaciousbcrumb7191 2 жыл бұрын
i know it’ll be a bit before the next vid but do you have an idea in mind about what it’ll be about??
@tomweiland
@tomweiland 2 жыл бұрын
Probably shooting/damage or dealing with scene changes, not 100% sure though.
@destructionindustries7485
@destructionindustries7485 2 жыл бұрын
This is absolutely amazing. I CONFIRM that I just made it work connecting from an android galaxy phone to unity running on a windows laptop. So this thing is also cross platform. Thank you very much for all your time. Will donate as soon as I get the chance.
@tomweiland
@tomweiland 2 жыл бұрын
Glad you're liking it :D
@FICHEKK
@FICHEKK 2 жыл бұрын
Hey, I'd love to point out that you might reconsider your message creation with "Enum" base class as method parameter for the following reasons: 1. Passing any concrete enumeration will cause a boxing allocation. 2. Nothing stops anyone from passing an invalid out of range value by using an enum whose integral type is int, uint, long or ulong (or even short/sbyte and using negative values). What I suggest as an alternative is to create an extension method on your enum as such: public static ushort Id(this MessageType messageType) => (ushort) messageType; Usage is very simple, but more importantly, is compile time safe: Message.Create(MessageType.SomeValue.Id()); Hope you find this useful and thanks for the videos! :)
@tomweiland
@tomweiland 2 жыл бұрын
But why? The overload that takes in an Enum is just there for convenience-the Create method that takes a ushort as the ID is still there and accessible, so nothing is stopping you from adding that extension method if you want it. I don't see a reason to remove the method again, especially now that it's already in use and removing it would be a breaking change to the library...
@FICHEKK
@FICHEKK 2 жыл бұрын
@@tomweiland I understand the convenience, however, convenience is not always the optimal solution unfortunately. Since message creation is something that can happen hundreds of times per second, you are allocating a lot of unnecessary garbage for no reason. This comment was purely a suggestion of something you might have not been aware of. I am just saying that if you want your library to be faster and safer for your users, you should probably deprecate that method. At the end of the day, it is your library and you decide what's the best. :)
@mehmetchad
@mehmetchad 2 жыл бұрын
Came from Dani's video s still watching your videos. Your tutorial s are really helpful
@tomweiland
@tomweiland 2 жыл бұрын
Glad to hear it :D
@samarthsaxena4853
@samarthsaxena4853 2 жыл бұрын
Lovely stuff sir. Gotta be real cool if someone like Dani learnt his basics through these.
@tomweiland
@tomweiland 2 жыл бұрын
Well he technically used my old tutorials, but these are much better 😅
@samarthsaxena4853
@samarthsaxena4853 2 жыл бұрын
@@tomweiland Yes sir. The old tutorial series was super awesome too, but this one is more explained and easier for beginners like me. What's more is that you got to movement in 2 tutorials only, after which we can start to implement our own ideas. Really cool Sir.
@Kristopher_Logan
@Kristopher_Logan 2 жыл бұрын
if you have rigidbody components on your objects, you can pass in your players current velocity and that could help smooth out the players position between updates.
@tomweiland
@tomweiland 2 жыл бұрын
I mean...not _really,_ at least not in any meaningful way, considering that a player's velocity can literally reverse in an instant.
@memecraftgamer8311
@memecraftgamer8311 2 жыл бұрын
Literally just found part 1 and part 2 came out 2 minutes ago lol
@darrenshingler9413
@darrenshingler9413 2 жыл бұрын
Same! I just checked back on the channel yesterday and finished part 1, Now part 2 is out 1 hour later
@tomweiland
@tomweiland 2 жыл бұрын
Good timing :P
@zerohidz
@zerohidz 2 жыл бұрын
I definetely began to learn networking and multiplayer stuff at the best time. (Becouse you started to upload this new series.)
@tomweiland
@tomweiland 2 жыл бұрын
😅
@gustavaggeboe7014
@gustavaggeboe7014 2 жыл бұрын
Can’t wait for next tutorial. You’re awesome my man
@tomweiland
@tomweiland 2 жыл бұрын
Hopefully soon 🤞
@backpacklv4
@backpacklv4 2 жыл бұрын
I'm so excited I found this! I'm planning to build a multiplayer game for me and a bunch of friends to get into gamedev, and honestly I love that I found this since I got no experience in networking and almost none in game developing. I'm really looking forward to your next video about movement prediction!
@tomweiland
@tomweiland 2 жыл бұрын
Do you at least have some prior programming experience? Multiplayer stuff is quite literally the "deep end" of game dev, and although jumping straight into it with no experience building games isn't the end of the world, the learning curve will be extraordinarily steep if you're simultaneously learning the basics of programming, so just be aware of that. Either way, best of luck with your project :)
@backpacklv4
@backpacklv4 2 жыл бұрын
@@tomweiland Oh, absolutely! I've worked as a C# back-end programmer for 3 years, now I'm working as a full-stack.
@tomweiland
@tomweiland 2 жыл бұрын
In that case you'll probably be fine 👍
@backpacklv4
@backpacklv4 2 жыл бұрын
@@tomweiland Oh I am not worried at all, I'm really excited to learn more about this and overcome whatever challenges I run into.
@K3rhos
@K3rhos Жыл бұрын
Question here ! I'm making a game with a lot of entities, Player, Props and Vehicles, with a lot of high speed movements etc... Honestly I feel I would prefer to send position from clients to the server and simply send back infos to the all other clients (except the one sending the data), because it's less laggy this way from the client that actually drive a car for example, sending inputs is a good way to prevent cheating but add a lot of inputs lagg, so what do you recommend ?
@tomweiland
@tomweiland Жыл бұрын
Virtually all fast-paced competitive games don't let the clients decide anything and only have them send inputs to the server, because they want to prevent cheating as much as possible. They hide the input lag that comes with that approach by having the client predict the server's response (while waiting for said response) so that something happens immediately upon pressing a key, and then once the client receives the response it reconciles its prediction with the newly received authoritative state to avoid desyncs. The concept is called _client prediction_ and there are a number of articles & videos out there discussing/explaining it. However, if you don't really care about potential cheaters, then it's a big waste of time to maintain server authority.
@K3rhos
@K3rhos Жыл бұрын
@@tomweiland Okay, thanks for your fast answer, yeah my game is not going to be really competive, there will be minigames and everything with cars and other entities, but I feel it's cheaper, it's not going to be an FPS competive game, so I think I'm okay with the classic: Send client position -> Server -> Send back to other clients. I'm handling some stuff only server side, like the time of day, the current weather etc... it's all decided by the server and redirected to the clients.
@zengakukatsu
@zengakukatsu 2 жыл бұрын
You make good videos, I am excited for client prediction tutorial.
@tomweiland
@tomweiland 2 жыл бұрын
😅
@Kristopher_Logan
@Kristopher_Logan 2 жыл бұрын
I took a different approach with my setup. instead of having a client and a server, the client and server are one program. in this way I have setup a client-server configuration where the player can be the host and clients connect to him/her the the server player information gets sent to connected clients just like any other player. works quite nicely actually and makes it way easier to test things since I do not have to juggle two projects.
@tomweiland
@tomweiland 2 жыл бұрын
Yeah that works. There's also a demo project in the repo set up this way if you want to check it out.
@inevitable.3991
@inevitable.3991 2 жыл бұрын
@@tomweiland Yes but doesn't that make it less secure since the server side code is available to the player?
@tomweiland
@tomweiland 2 жыл бұрын
@@inevitable.3991 yeah, but if you want a client to be able to host a server, you have to give them the server code. Obviously if you just want players to create _rooms,_ you can still have your official servers running those, but if you're building a co-op game or something not-super competitive then you're wasting money to prevent cheating in a context where there's not much incentive to cheat 🤷‍♂
@dr.albitros4242
@dr.albitros4242 2 жыл бұрын
When his viewers needed him the most
@tomweiland
@tomweiland 2 жыл бұрын
🦸‍♂️
@pedroabedombrowski8915
@pedroabedombrowski8915 2 жыл бұрын
Hey Tom! Great tutorial! Looking forward to the next episodes with excitement! I really enjoyed RipTide!
@tomweiland
@tomweiland 2 жыл бұрын
Glad you liked it :)
@donavilon
@donavilon 2 жыл бұрын
Really nice vid bro! I'm having some issues getting my own player movement calculation done but its for lack of knowledge Thanks a lot for the video!
@tomweiland
@tomweiland 2 жыл бұрын
Glad it was helpful :)
@nipzipz208
@nipzipz208 2 жыл бұрын
Bruh my first game will be a multyplayer game this gonna be hell but you make it like a heaven
@tomweiland
@tomweiland 2 жыл бұрын
Buckle up :P
@nipzipz208
@nipzipz208 2 жыл бұрын
Bruh I ma finish my game next year school making things hard
@OmegaCosmos
@OmegaCosmos 2 жыл бұрын
Love the videos and Riptide! Been pulling my hair out trying to get Photon working but nothing was working. I saw your videos and moved to Riptide and everything just works!!
@tomweiland
@tomweiland 2 жыл бұрын
Glad to hear it :)
@muratcan118
@muratcan118 Жыл бұрын
Hi. My character does not move on the Client side. But it acts on the server side. I couldn't solve the problem. What can be the problem ?
@tomweiland
@tomweiland Жыл бұрын
Join the Discord server and ask there. Troubleshooting stuff like this here in the comments section is a pain.
@Enrique_editz
@Enrique_editz 2 жыл бұрын
Great Vid Tom, also how can I switch to the first person camera when I press connect, because the screen gets stuck there whenever I press it, thanks
@tomweiland
@tomweiland 2 жыл бұрын
Does your local player prefab not have a camera attached? Normally whichever camera is activated last becomes the one that is visible-if that's not working you, you may have to add some code to disable the main camera when the local player is spawned.
@Retr-eo5uz
@Retr-eo5uz 2 жыл бұрын
Hey Tom! I have a question, so I am using the PlayerHosted Config, so when the client updates it's movement it's smooth, but when the server-client does it, it takes like 1s for each update.
@tomweiland
@tomweiland 2 жыл бұрын
Not sure what would be causing that. Your best bet is to ask on Discord though, as troubleshooting here in the comments is a pain.
@grimrebadullavlogs
@grimrebadullavlogs 2 жыл бұрын
4:48 Hello, I'm creating a top down game and I'm using your tutorial so I'm a bit confused If I can use Vector2 instead of Vector3 because I'm creating a 2D top down game. I hope you can help me 🥺
@tomweiland
@tomweiland 2 жыл бұрын
As I said in my response to your other comment (and in the video), just take the code in the Move method and replace it with whatever you want. How would you make movement in a 2D game? Literally just take that and put it in the Move method. As long as you call SendMovement at the end (and change the Vector3 that's being sent to a Vector2), you'll be fine from a networking point of view.
@grimrebadullavlogs
@grimrebadullavlogs 2 жыл бұрын
@@tomweiland thanks bro 🔥
@zooilogical00k
@zooilogical00k 2 жыл бұрын
Great stuff, I hope you implement support for browser games in the future!
@tomweiland
@tomweiland 2 жыл бұрын
Yeah I'm hoping I'll get around to it eventually-might be a while though.
@zooilogical00k
@zooilogical00k 2 жыл бұрын
Awesome!
@JelowGames
@JelowGames 2 жыл бұрын
hey I saw you answer comments so i wanted to ask you how did you learn all of this. any particular course, tutorial? please let me know
@tomweiland
@tomweiland 2 жыл бұрын
I got into networking over 4 years ago with the help of some tutorials that are no longer on KZbin, but once I had the basics from there working, I kind of just went off on my own-reading a lot of documentation, googling anything I didn't know, and most importantly, just spending a lot of time trying things and working out problems. 4 years of dealing with multiplayer stuff on an almost daily basis eventually gave me a relatively good understanding of it 😅
@딩가딩가-e2n
@딩가딩가-e2n 2 жыл бұрын
Hi again! I have question about the animator part as well! My code on animator .setbool("isMoving"), true) -> doesn't change the animator "ismoving" to true at all, what would be a problem?
@tomweiland
@tomweiland 2 жыл бұрын
Does your bool's name have the same spelling & capitalization as in the animator window? If that snippet you posted there is copy/pasted from your code, then you have an extra closing parenthesis-it should be _.SetBool("IsMoving", true)._
@딩가딩가-e2n
@딩가딩가-e2n 2 жыл бұрын
@@tomweiland I debugged it and found out the reason, it was because when I spawn the character, it is local character but I followed all the steps through your video, what would be reason why I'm calling local character while you create just a plyaer?
@randomguy-gb9ge
@randomguy-gb9ge 2 жыл бұрын
When is part 3 coming out? What's it about?
@tomweiland
@tomweiland 2 жыл бұрын
Hopefully soon, and it'll be about interpolation/smoothing out movement.
@Kristopher_Logan
@Kristopher_Logan Жыл бұрын
I used this to create a multiplayer server with a map editing system where the client side, if the logged in user is an admin or a builder, the can edit the game map and upload map objects to the server. I figured out a method for transferring mesh data from client side to the server using a multi-step uploading procedure. same thing for uploading map part location data. and downloading that data to connected clients. just need to setup the functions that turn mesh data into gameobjects and I can make a blank server, with the ability to upload gameobjects to it from a client logged into the server as an admin. Also made threaded saving and loading for server data
@tomweiland
@tomweiland Жыл бұрын
Nice.
@eleocraft278
@eleocraft278 2 жыл бұрын
There is an error in the animator, on the transition from PlayerSprint to PlayerIdle: you checked two times for IsMoving, but never for IsSprinting. Minor error, just noticed. great tutorial
@tomweiland
@tomweiland 2 жыл бұрын
Oh true 😅 Although it actually doesn't matter in that case because if the player isn't moving, he's obviously not sprinting either, so just checking IsMoving is enough.
@thereborne5219
@thereborne5219 2 жыл бұрын
what do i do if my game is based of moving by clicking? and not keys
@tomweiland
@tomweiland 2 жыл бұрын
Client sends the target/clicked position to the server > server moves player in that direction > server sends position updates to clients. It's just a matter of swapping out what kind of input you're sending to the server.
@sanaytyagi1125
@sanaytyagi1125 2 жыл бұрын
Great video and really well explained! I was wondering, when you are working with multiplayer shooting, would you make the code server-side or client-side. I was trying to implement it and i used client-side, but i’m not sure if that will bring any issues along with it, thank you!
@tomweiland
@tomweiland 2 жыл бұрын
Either works, and which is better depends on your goals. Letting clients handle hit detection is easier, but it leaves the door wide open for cheaters. If you care about preventing cheating as much as possible, you'll want to have the server do hit detection instead.
@sanaytyagi1125
@sanaytyagi1125 2 жыл бұрын
@@tomweiland Alright, got it, thanks!
@tuetidy
@tuetidy 2 жыл бұрын
Tom your video is great man but Ive got one question Is it possible to use some of your old tutorial in this series like for an example I want to use the old player shooting tutorial in this new riptide networking project.
@tomweiland
@tomweiland 2 жыл бұрын
Yeah just use the same/similar logic but change out the Packet-related code for Message-compatible stuff.
@tuetidy
@tuetidy 2 жыл бұрын
@@tomweiland Ah i c... thanks Tom! truly appreaciate it
@ndrcreates_per
@ndrcreates_per Жыл бұрын
How can we pervent code duplication in server & client? Networkmanager shares many implementations in both server & client. Shared library with inheritence maybe?
@tomweiland
@tomweiland Жыл бұрын
You could use a local Unity package to share code & assets, but what's usually better is to have both the server and client in the same project. I just think that when first getting into multiplayer development, it's easier to understand the separation between server and client if they're in separate projects.
@ndrcreates_per
@ndrcreates_per Жыл бұрын
Yeah you're right, i think having the client and the server in the same project is the most valid approach and is going to be awesome when you define the server from an Rest API so we can know who is the server and who is the client on multiple devices. the thing i amazed by that is, How does the Mirror and Photon managed to create their tool and the unity server wont be necessary for using those solutions. @@tomweiland
@NewbNinjas
@NewbNinjas 2 жыл бұрын
Hey Tom, is there a Part 3 out yet?
@tomweiland
@tomweiland 2 жыл бұрын
Yep :)
@rasool4886
@rasool4886 2 жыл бұрын
Next vid will be on 5th of March right?
@tomweiland
@tomweiland 2 жыл бұрын
I have a lot of other work to do in the coming weeks so I'm not really sure when the next one will be out...
@conghoannguyen446
@conghoannguyen446 2 жыл бұрын
it's an awesome playlist ever. thank you so much and I wonder how many videos you will create in this series??
@tomweiland
@tomweiland 2 жыл бұрын
4 or 5 probably?
@딩가딩가-e2n
@딩가딩가-e2n 2 жыл бұрын
Hi, I'm also wondering about the next video, what it would be about and when it could be released! Also it'd be great to know how many videos will be released after this!
@tomweiland
@tomweiland 2 жыл бұрын
It's out right now, but it'll probably be the last one for now :)
@딩가딩가-e2n
@딩가딩가-e2n 2 жыл бұрын
@@tomweiland Woahhhhhh What a perfect time! lol I Thank you so much!
@ramsey2155
@ramsey2155 2 жыл бұрын
finally
@tomweiland
@tomweiland 2 жыл бұрын
Yep 😅
@ramsey2155
@ramsey2155 2 жыл бұрын
@@tomweiland so, we have achieved the infinite lore
@pigeon8986
@pigeon8986 Жыл бұрын
does reliable translate to tcp connenction and unreliable to udp or does that have nothing to do with it?, the server socket is obviusly created in a multicast configuration but TCP or UDP?
@tomweiland
@tomweiland Жыл бұрын
Riptide doesn't use TCP. The default transport is UDP-only, with a custom reliability implementation on top of that.
@Tatshino
@Tatshino 2 жыл бұрын
Great video! Easy to follow along, I just have 1 tiny problem...A and D move forward and backward. Might you be able to help on this? and my character moves diagonally when adding the cameracontroller...
@tomweiland
@tomweiland 2 жыл бұрын
Make sure the correct inputs are being mapped to the right axis/direction: github.com/tom-weiland/RiptideSampleFPS/blob/part2/Server/Assets/Scripts/PlayerMovement.cs#L40-L56
@devactorgamedev
@devactorgamedev Жыл бұрын
How would u add Rigidbody movement to this script?
@tomweiland
@tomweiland Жыл бұрын
It should just be a matter of replacing the CharacterController-related stuff in the Move method with your desired rigidbody-based movement logic.
@edenbwicey7250
@edenbwicey7250 2 жыл бұрын
My god your back, now when is the pirate game coming bag?
@tomweiland
@tomweiland 2 жыл бұрын
I'm really itching to get back to work on it, but I want to get the Riptide tutorials done so I don't have to keep switching focus (and so I don't waste algorithm boosts on more tutorials).
@edenbwicey7250
@edenbwicey7250 2 жыл бұрын
Ye man I totally understand! I love the pirate game and this riptide thingy looks really good and useful!!
@zehsofficial
@zehsofficial 2 жыл бұрын
I'm very curious about how you'd implement scene switching
@tomweiland
@tomweiland 2 жыл бұрын
Just sending over the scene's ID/build index should do it.
@simpledrudgery938
@simpledrudgery938 2 жыл бұрын
how do i connect buttons? for example i want a timer to be same with the client and server. the timer stops at 5 seconds and can only proceed to 0 if a button from server is pressed how do you do that
@tomweiland
@tomweiland 2 жыл бұрын
What do you mean by "if a button from server is pressed"? The server shouldn't have any buttons as it should be an application which runs without direct input. You should probably join the Discord server and ask there-it'll be easier to understand your problem and help you than here in the comments.
@btarg1
@btarg1 2 жыл бұрын
Can we have a tutorial on how to add third-person models with animations that other players can see? I want the characters to be humanoid and walk/run with smooth animations
@tomweiland
@tomweiland 2 жыл бұрын
Uh...isn't that what we already have? You can see other players and their models have a small "run" animation. Obviously they're not humanoid, but what kind of model & animations you use really isn't related to networking.
@gameranon
@gameranon 2 жыл бұрын
@@tomweiland I think what he means is 3rd person. Where you can see your own character as well with animations. You have 1st person. Though should be easy to adapt. You would just need an animation controller on your localPlayer prefab setup the same way and then attach the script to local player as well. Since it's movement speed based animating, should just work. Will be testing myself. Good videos by the way and looking forward to #3
@gameranon
@gameranon 2 жыл бұрын
Also, animations should be triggered via server as well depending on the type of game you are developing as well. A fighting game for example or 3rd person type argp game. You don't want attacks happening without an animation or cheating via non-server oriented attacks.
@inevitable.3991
@inevitable.3991 2 жыл бұрын
No, I think he means that the other players should be visible as human models instead of beans. This can be easily done by replacing the bean with the player model and replacing the animations with the imported human animations. I have done this in my project a while ago and it was very easy.
@ty-xq7bl
@ty-xq7bl 2 жыл бұрын
Is this only compatible with myself acting as a server or can I rent a server to use? I plan to have multiplayer PVP matches of 8 people but there could be multiple matches in the server.
@tomweiland
@tomweiland 2 жыл бұрын
You can rent a server.
@spsv1490
@spsv1490 2 жыл бұрын
Thanks for your awesome tutorial
@tomweiland
@tomweiland 2 жыл бұрын
No problem :)
@ActionGamingLegends
@ActionGamingLegends 2 жыл бұрын
Bro when part 3 will come I was waiting ❤️
@tomweiland
@tomweiland 2 жыл бұрын
Hopefully this weekend, but I said the same thing last week 😅
@111111desk
@111111desk 2 жыл бұрын
This is great and all, but my big question is how will you make the client side version exporting work, if all of the server code is running in engine. Will there be the ability for players to host their own servers using the game itself? Do we have to manually make the threading for the server side? (tho this will be answered when i look at the source code)
@tomweiland
@tomweiland 2 жыл бұрын
If you want players to be able to host their own servers you need to either give them access to the server application or include the server code in the client project. You don't have to do any threading for it to work, that's entirely up to you though.
@111111desk
@111111desk 2 жыл бұрын
@@tomweiland a documentation for this would be really nice. Since the tutorials are really fast paced straying from them becomes really hard, as some things seem to lack direct explanation on what to do for side cases. E.X. a dedicated c# server receiving messages. the solution I came up with was having the player dictionary be outside the player class, and a new player being added using the onClientJoin event.
@tomweiland
@tomweiland 2 жыл бұрын
I'm not sure I understand how "a dedicated c# server receiving messages" is an example of something "[lacking] direct explanation on what to do for side cases", or how the solution that you came up with addresses/solves the supposed problem... The server in the video receives messages-what "side cases" are you referring to that need more explanation? What does moving the players dictionary outside of the Player class do to help your problem? I recommend joining the Discord server if you want to discuss this further, as KZbin doesn't always send me a notification when someone replies to me, so I can't guarantee I'll see/respond to any further replies. All classes, methods, properties, etc. are technically documented via XML comments, which should show up in your IDE's intellisense. Maybe I'll write some more elaborate/"official" documentation at some point, but that probably won't happen at least for a few months because I don't have much spare time and it's not high on the priority list (since everything already has an explanation of what it does/how to use it).
@Galiyo_118
@Galiyo_118 Жыл бұрын
on player.cs on line 63 player.Movement.SetInput(message.GetBools(6), message.GetVector3()); it says error player movement does not contain definition for SetInput Please help me
@tomweiland
@tomweiland Жыл бұрын
Apparently your movement class doesn't have a SetInput method.
@RSKG
@RSKG 2 жыл бұрын
Part 2 letsss go!!!!!!! How many parts will be there ? last multiplayer series was like 18 from what I remember
@RSKG
@RSKG 2 жыл бұрын
Also is your pirate game gonna be using riptide or you will stay with what you used before
@tomweiland
@tomweiland 2 жыл бұрын
The old series has 11 parts, not really sure how many this one will have-probably at least 5 or 6, but it kind of depends on whether we hit the goal I've set on GitHub Sponsors. The pirate game has been using Riptide for quite a while now, even before it was officially released.
@inevitable.3991
@inevitable.3991 2 жыл бұрын
My animator changes states based on the input. How can I access the input arrays of the other players and pass it as a parameter for their animators?
@tomweiland
@tomweiland 2 жыл бұрын
Send the inputs to the other clients. Or have the server determine the animator state and send that over instead.
@spsv1490
@spsv1490 2 жыл бұрын
How to create rooms and allow players to join rooms in this networking or can I implement that ??
@tomweiland
@tomweiland 2 жыл бұрын
Running a server for each room and then having another server tell clients which room server to connect to is probably the most straightforward way.
@conquestcity4647
@conquestcity4647 2 жыл бұрын
Great video would love to see more
@tomweiland
@tomweiland 2 жыл бұрын
There will definitely be more, I'm just not sure how soon...
@bolagadalla
@bolagadalla 2 жыл бұрын
Your code and tutorials are awesome. I have one question about this package tho, a lot of the games now allows players to create rooms where they can join in and play, and each room have a limit for the amount of players that can join that room. So i was wondering, how would you do that with this package? is it already implemented? If not, do you think it would be better to have that as the default? where the default would be 1 room and that would have the max limit of player, however the number of rooms can be increased. Or is that already implemented in the package?
@bolagadalla
@bolagadalla 2 жыл бұрын
Actually, now that i think about it, I can create a singleton class Rooms, which will hold a dictionary of string and Room. Room would have a list of connected players and a max of x players. and add a method to the EventHandler "ClientConnected" that would add the player to one of the rooms or specified room (if slot available). And just i would just use the "Send" method to Send to each player in the room.
@tomweiland
@tomweiland 2 жыл бұрын
Yeah something like that, but keep in mind that if your game gains any significant amount of traction, you'll need to run multiple servers to handle all the players, so it may just be easier to have each server function as a single room.
@lassebekke3369
@lassebekke3369 2 жыл бұрын
What is the futher progress on movement? will we see later that it´s possible to turn around etc?
@tomweiland
@tomweiland 2 жыл бұрын
What do you mean? You should be able to turn around already...
@inevitable.3991
@inevitable.3991 2 жыл бұрын
I know this isn't related to the video, but how do I call a function in the client code from the server code? I have tried setting a bool and passing it on but there is a delay.
@tomweiland
@tomweiland 2 жыл бұрын
Send a message (no need to add any data to it) to the client, and then call the method in question from inside the client's message handler.
@inevitable.3991
@inevitable.3991 2 жыл бұрын
@@tomweiland Thank you.
@kreskot2
@kreskot2 2 жыл бұрын
I Just wanted to Say that i really appreciate your hard work on this, i'm finishing my Mirror multiplayer game (which taught me a lot), and i started thinking about using your solution. I wanted to ask if it would be enough for bigger multiplayer games, or should I Just code my own solution?
@tomweiland
@tomweiland 2 жыл бұрын
It should be enough for bigger multiplayer games, although that still heavily depends on how well you optimize what data you're sending and when. Obviously you're going to have a much better-running game (regardless of what networking solution you use) if you only send data to players that's relevant to them-for example, they don't need to know about where another player is if they're out of view distance (and they probably shouldn't know anyways, as that will make it easy to build cheats). Riptide is pretty fast, and I'm not sure if there's much that can be done to make it any faster than it is, apart from maybe getting into writing unsafe C# 🤔 Unless you want to build your own solution for the learning experience, I'd definitely recommend using something that already exists.
@kreskot2
@kreskot2 2 жыл бұрын
@@tomweiland Thanks for the tips! I thought that I would need a networking that is "outside" unity, like your previous one (where things were printed in cmd etc.), but i think i'll give this one a try.
@tomweiland
@tomweiland 2 жыл бұрын
Riptide is completely independent from Unity-there's a console app demo in the repo which demonstrates this. However, Unity also has a server build mode which strips out the graphics, sounds, etc. and basically just gives you a console app.
@kreskot2
@kreskot2 2 жыл бұрын
@@tomweiland Alright, anyway thanks for the tips
@d0c_dev
@d0c_dev 2 жыл бұрын
Thx for the tutorial mate, it's 1:41am and im still trying to make this work with my rigidbody character controller, he moves in the server but not in the client but the server works so yayyyy
@tomweiland
@tomweiland 2 жыл бұрын
If he's moving on the server, he should be moving on the client...unless you accidentally removed the code that sends the position updates to clients?
@d0c_dev
@d0c_dev 2 жыл бұрын
@@tomweiland Update, got it working turns out i was missing the player script on the NetPlayer, now struggling to understand how to use the server to handle stuff like shooting, quite hard to understand as i never used stuff like pointers, static, get; private set; and stuff
@d0c_dev
@d0c_dev 2 жыл бұрын
Finally got the workflow in, after hours of trying to understand the server code i managed to send and receive a message :)
@dmrdev9934
@dmrdev9934 2 жыл бұрын
one little question why are we using static void on messagehandlers?
@tomweiland
@tomweiland 2 жыл бұрын
Message handler methods have to be static because if you made them instance methods Riptide would somehow need an instance of the class to actually call the method, and the return type has to be void because handler methods don't return anything.
@bakiprogamer6595
@bakiprogamer6595 2 жыл бұрын
hi Tom I have problem with my multiplayer game: it's all fine when only one player is one the server he can jump and move normally but when 2nd player join the server one client is moving both players in the game and they jump really weird... what can be the problem? I am using PlayerHosting so my server is in the same project as clients. I tried joining your discord server to ask there but I am getting an error: Whoops... Unable to accept invite
@tomweiland
@tomweiland 2 жыл бұрын
Do you have the PlayerController script attached to both the player and local player prefabs? Or is it spawning in 2 local player prefabs for some reason?
@bakiprogamer6595
@bakiprogamer6595 2 жыл бұрын
@@tomweiland I forgot to mention that I am using rigidbody and the server is spawning players perfectly but then when 2nd player connects I receive very strange bug mention above...
@bakiprogamer6595
@bakiprogamer6595 2 жыл бұрын
Do you have any idea what can be an issue? Pls help
@dashingwarrior3187
@dashingwarrior3187 2 жыл бұрын
I have an issue relating when new clients join the server. The scenario is a client joins the server and rotates backwards 180 degrees, then a new client joins that server, the first client that joined will now have their controls reversed. How do I avoid this effect.
@tomweiland
@tomweiland 2 жыл бұрын
This doesn't happen in the demos or the sample project, so you must have done something differently-unfortunately I'm not sure what that might be. Your best bet is probably to compare your code to mine (you can find it on GitHub).
@dashingwarrior3187
@dashingwarrior3187 2 жыл бұрын
​@@tomweiland​ So I launched the sample project and in it does not create the same problems as in my project. In my project at the beginning of each scripts I added the name of What project they where associated with, There's also only one Riptide networking and one Message Extensions script that the client and server share. I might have put the wrong script name in the wrong place, but would having only one Riptide networking and one Message Extensions script cause issues in this scenario.
@dashingwarrior3187
@dashingwarrior3187 2 жыл бұрын
K I fixed the issue. I just took the needed code from the sample project, change the name of the scripts to my desired name for them and swap them for the ones in my project. I think just I put the wrong script name in the wrong place some where the first time. Also having only one Riptide networking and one Message Extensions script that the client and server share was not the problem.
@xidax.mp4955
@xidax.mp4955 2 жыл бұрын
very epic tom- marley
@tomweiland
@tomweiland 2 жыл бұрын
👌
@Red.chicken
@Red.chicken 2 жыл бұрын
remember me, I live in your head rent-free.
@tomweiland
@tomweiland 2 жыл бұрын
You do?
@Red.chicken
@Red.chicken 2 жыл бұрын
@@tomweiland So sea of thieves
@ty-xq7bl
@ty-xq7bl 2 жыл бұрын
Ty so much bro, i was able to get it working!
@tomweiland
@tomweiland 2 жыл бұрын
👌
@Krafter37
@Krafter37 2 жыл бұрын
Hi, will you implement as well a masterServer like system to start and end servers ? Nice video :)
@tomweiland
@tomweiland 2 жыл бұрын
Probably not, as that gets into the devops side of things.
@-._63
@-._63 2 жыл бұрын
Hi Tom. What about tickrate? FixedUpdate for set player position. Or I should to use animations in my 2d game?
@tomweiland
@tomweiland 2 жыл бұрын
I'm not really sure what you're asking. What about tick rate? Player movement _is_ being calculated in FixedUpdate, but I'm not sure what that has to do with whether or not you should use animations...
@-._63
@-._63 2 жыл бұрын
Sry. I mean: Should I'm to change time settings for fix lags of player movement?
@dcrubro
@dcrubro 2 жыл бұрын
@@-._63 To fix laggy movement you need to implement client-side prediction which is a whole another topic.
@-._63
@-._63 2 жыл бұрын
ok
@piepkareldegrote4712
@piepkareldegrote4712 2 жыл бұрын
I love this so much. thanks a lot for your great work
@tomweiland
@tomweiland 2 жыл бұрын
Glad you like it!
@Spyboi666
@Spyboi666 2 жыл бұрын
Is riptide net support large amount of clients? Like MMO, Battle royale, etc?
@tomweiland
@tomweiland 2 жыл бұрын
Yeah, but whether you pull that off is more up to you and how you code and optimize your game than anything else.
@calv.io.n8080
@calv.io.n8080 2 жыл бұрын
Hey Tom! How many videos are going to be in this series?
@tomweiland
@tomweiland 2 жыл бұрын
I'm not really sure yet.
@iDabbl
@iDabbl 2 жыл бұрын
Your videos are really helpful, but as a beginner programmer, I do not understand a lot of it. I was wondering how I could make it so that there is a single player option in addition to the "connect" option.
@tomweiland
@tomweiland 2 жыл бұрын
That depends on your game. I'm pretty sure games like Minecraft actually run a local server when you're playing singleplayer, which is why it's possible to let others connect to you via LAN so easily. Unless you want to basically build a whole separate singleplayer version of your game, you'll have to do something like that.
@nemethszabolcs9239
@nemethszabolcs9239 2 жыл бұрын
Hello Tom. Currently Im working with your old networking system on RPG game. I would like to ask what u think I should switch to the new networking system or stay with rpg the old one. Thanks for your answer. Liked & Subscribed
@tomweiland
@tomweiland 2 жыл бұрын
Definitely switch, Riptide is just vastly superior in literally every way. The old code is a mess and has multiple issues 😅
@nemethszabolcs9239
@nemethszabolcs9239 2 жыл бұрын
@@tomweiland okey. Im staring to study your new project. Thanks a lot.
@piep8056
@piep8056 2 жыл бұрын
@@tomweiland its hard to switch when there are only 2 videos about riptide tho :(
@tomweiland
@tomweiland 2 жыл бұрын
@@piep8056 except that these 2 videos have covered just as much (and more) as the first 7 videos of the old series...
@nemethszabolcs9239
@nemethszabolcs9239 2 жыл бұрын
@@tomweiland Bro I woroted what about talking before. TP- movement , enemy spawning, enemy movement, atack system. ... Over6 client server freeze out :)
@robertholl8914
@robertholl8914 2 жыл бұрын
Thanks for this, dead chuffed your releasing these tutorials and making the source code available! Just wondering if the server being a Unity client was best performance dedicated server you had in your travels or if its just ease of use for these tutorials?
@tomweiland
@tomweiland 2 жыл бұрын
_"if the server being a Unity client was best performance dedicated server you had"_ In comparison to what? Obviously you could use a console app instead and build everything (physics, collisions, transforms, etc.) yourself and it'd probably be more performant, but it'd also be a crazy amount of extra work-trust me, I tried it and it sucked. You can watch my "2 years of game dev" video for more about that experience. It's honestly similar to deciding whether to use a game engine for a singleplayer game. You could probably squeeze out a bunch of extra performance if you built your own custom engine, but you have to ask yourself if that's really worth it. Do you want to build a game and actually release it at some point, or do you want to spend all your time building the engine and never getting around to the game itself? Multiplayer development is already inherently more complex and time-consuming, so at least in my opinion, a Unity server is good enough. The performance I'm sacrificing is well worth the saved time and effort of building literally _everything_ from scratch.
@inevitable.3991
@inevitable.3991 2 жыл бұрын
When building the project from Unity, you have the option to make it a 'Headless build'. Which means it will act as a regular console app.
@wils991
@wils991 2 жыл бұрын
I have an odd question to ask. I seem to be having an issue when running both the client and server. if I click connect in the client I have to click on the server for it to update, and same with movement I have to be pressing the keys then click on the server and the player will move. Has anyone else had this problem? I believe its to do with unity or windows.
@wils991
@wils991 2 жыл бұрын
Update: it a setting in unity, I will link how to do it here for anyone else. answers.unity.com/questions/42509/stop-unity-pausing-when-it-loses-focus.html
@tomweiland
@tomweiland 2 жыл бұрын
You need to enable "run in background" in the project settings. Unity seems to have changed the setting's default value for some reason-Unity 2020 has it enabled by default, but I think 2021 and newer versions have it disabled by default.
@TheRealBillyB
@TheRealBillyB 2 жыл бұрын
im looking to make a 2d multiplayer shooter, would this networking model work for that? I'm planning to release on steam first and then expand later if the game gains traction so idk yet what networking solution to go with
@tomweiland
@tomweiland 2 жыл бұрын
Yes, what networking solution you use really has nothing to do with how many dimensions your game has.
@TheRealBillyB
@TheRealBillyB 2 жыл бұрын
@@tomweiland as a complete beginner to both coding and game design would you recommend me building my game using a style like this? or the steamworks and mirror style? I plan to release on steam to begin with and hope to expand later
@tomweiland
@tomweiland 2 жыл бұрын
When I was first starting with multiplayer, I remember disliking UNet (Mirror is basically an improved, community-maintained version of that). When I tried Mirror several years later, I didn't like that either because it felt like it did too much for me, and as soon as I wanted to do something that wasn't officially supported, it became really complex and messy. However, by that point I was used (and addicted) to the freedom, flexibility, and control that solutions like Riptide offer, so I'm probably at least a little biased. Mirror may be more convenient and easier to get into, but in my opinion I'm not sure that's actually a good thing in the long run, especially if your goal is to _learn_ how multiplayer stuff works. What you choose to use is really up to you and what your goals are. Do you just want to build a small game that works asap? Mirror is probably the way to go, as long as you don't mind it doing a lot of things for you under the hood. Are you aiming for a much bigger/long-term project that requires more flexibility and control? Are you trying to learn as much as possible? Riptide (or something like it) will probably serve you better then. Much like Mirror, Riptide also has a Steam transport, so it integrates pretty seamlessly with Steam's networking. All that being said though, if you're really a "complete beginner to both coding and game design", I would recommend not touching multiplayer at all just yet. Getting into networking with no programming experience, no familiarity with Unity, and no understanding of how to debug & resolve errors is setting yourself up for a lot of pain and frustration. It's like trying to learn to swim, but instead of doing so in the shallow end of a pool, you go do it in the ocean on a day with 10-foot waves. It can probably be done, but it'll require a strong will to _actually learn_ (not just copy/pasting stuff and relying on others for everything) and a _LOT_ of patience, motivation, and determination, otherwise you'll just end up drowning (aka giving up). Building some small singleplayer games first would probably be wiser, as it allows you to familiarize yourself with Unity, learn basic programming skills, and encounter & learn to solve common errors on your own, without the added complexity of networking making everything 100x more difficult and confusing.
@TheRealBillyB
@TheRealBillyB 2 жыл бұрын
@@tomweiland I thank you for your advice and for the lengthy response. I have messed around with coding before but strictly following tutorials so I have like the super beginner understanding of it, same with unity. As for the multiplayer part, I know it’s probably not the greatest idea to start with but I have an amazing game idea that I want to capitalize on. My plan was to build something show worthy and find someone who knows networking better for the debugging parts of it but I would like to learn as well so it won’t be all “do this for me” Anyways as for right now I’d probably be better off with something that does more for me at least for the early build of the game so I might go with mirror just to start, I would love more control later down the road tho
@nikolaipavlov2179
@nikolaipavlov2179 2 жыл бұрын
Can you please make a litle fast tutorial on how to make register and login for the project
@tomweiland
@tomweiland 2 жыл бұрын
Unlikely. I haven't tried it myself, and as someone who is by no means an expert on cybersecurity, I wouldn't feel comfortable teaching people how to deal with something like that. One mistake or oversight and I'm responsible for a lot of compromised/vulnerable projects. I'll personally probably just end up using Steam's login system, or I'll use something like Firebase so I don't have to be responsible for the security side of things.
@nikolaipavlov2179
@nikolaipavlov2179 2 жыл бұрын
@@tomweiland but how could users have acounts conection and save their progres
@firkedis
@firkedis 2 жыл бұрын
Bro where is part 3 it's been 1 month
@tomweiland
@tomweiland 2 жыл бұрын
Well I have plenty of other things to do, and these first 2 videos already show you pretty much everything you need to know about Riptide, so I'm not really in a rush...
@firkedis
@firkedis 2 жыл бұрын
@@tomweiland oh ok
@patelawesomevideos7199
@patelawesomevideos7199 Жыл бұрын
Stupid question but when make a map i have to upload it to server and client right
@tomweiland
@tomweiland Жыл бұрын
The server needs at least everything physics/collisions/logic related, and the client needs at least everything visual/audio related.
@patelawesomevideos7199
@patelawesomevideos7199 Жыл бұрын
@@tomweiland thanks
@АрсланАлиев-ц1щ
@АрсланАлиев-ц1щ 2 жыл бұрын
Create please a video about player-hosted demo
@tomweiland
@tomweiland 2 жыл бұрын
There's a player hosted demo project in the GitHub repo, but I probably won't be making a video on it.
@АрсланАлиев-ц1щ
@АрсланАлиев-ц1щ 2 жыл бұрын
@@tomweiland Thanks, I just didn't know about this demo.
@IvanArantes
@IvanArantes 2 жыл бұрын
Hey, I followed your tutorial and tried to connect 2 clients. Im not sure if it was expected, but both clients were acting as local. whenever I moved one, both were moving together. Even though they had different IDs.
@tomweiland
@tomweiland 2 жыл бұрын
That's not expected-make sure you've assigned the appropriate prefabs to be spawned depending on whether the ID is the local client's ID or not. If that doesn't help, join the Discord server and ask there.
@kllik4748
@kllik4748 2 жыл бұрын
Hello, many thanks for great tutorials ! There is a problem with player rotation, the rotation works only for local player. There is no data send from client to server and to all clients about rotation, please add this in next tutorial.
@tomweiland
@tomweiland 2 жыл бұрын
Then you must have done something differently, because rotation works for all players in my project. Rotation data definitely _is_ sent to all clients unless you missed something.
@kllik4748
@kllik4748 2 жыл бұрын
@@tomweiland Hello, you are right. There is rotation and works perfect! I just added a cube to check rotation in the wrong spot, after checking your part2 tutorial for few times, I just figured what was wrong :D Thank you!
@Finneganmac
@Finneganmac 2 жыл бұрын
I thought you weren’t a fan of character controllers? Why the sudden switch from rigid body player movement?
@tomweiland
@tomweiland 2 жыл бұрын
Because the focus here is multiplayer, not specifically the best way to implement movement. While I still dislike the CharacterController just as much (at least in my own projects), it gets the job done and is easier to set up than rigidbody movement so it's better in tutorials like this.
@spsv1490
@spsv1490 2 жыл бұрын
Do Animations sync through networks and can client see the animations ?
@tomweiland
@tomweiland 2 жыл бұрын
Only if you make them sync.
@spsv1490
@spsv1490 2 жыл бұрын
@@tomweiland how to do that ??
@subzero4787
@subzero4787 2 жыл бұрын
here comes part 2
@tomweiland
@tomweiland 2 жыл бұрын
Finally :P
@Spyboi666
@Spyboi666 2 жыл бұрын
And also, I'm planning to make a game in a scene that has only have 2 controller (or something idk), npc and players Only 1 npc and some players Which is good: Do I need to implement server side movement, health, everything and do prediction Or just let the client calculate the movement, but the server still manages the health value
@tomweiland
@tomweiland 2 жыл бұрын
That depends if you care about preventing cheating. If not, then client-authoritative logic is fine.
@almond_robin
@almond_robin 2 жыл бұрын
Love Your content and i really enjoy following these tutorials, but i just wanted to know does Riptide Support IPV6?
@tomweiland
@tomweiland 2 жыл бұрын
Yep :)
@hamsandwich1766
@hamsandwich1766 2 жыл бұрын
is part 2 in the works currently or u working on other stuff
@tomweiland
@tomweiland 2 жыл бұрын
You mean part 3? I've done some of the planning, haven't recorded anything yet though.
@SuperGamePlayOfficial
@SuperGamePlayOfficial 2 жыл бұрын
Best tutorial ever
@tomweiland
@tomweiland 2 жыл бұрын
:D
@subzero4787
@subzero4787 2 жыл бұрын
this is good but the drawback is when you apply for job they only accept photon
@tomweiland
@tomweiland 2 жыл бұрын
Depends on the job.
@subzero4787
@subzero4787 2 жыл бұрын
@@tomweiland yes sir... where i live game industries use photon only...
@That1Dev15
@That1Dev15 2 жыл бұрын
When will RiptideNetworking have the functionality for banning players/ips and stuff like that?
@tomweiland
@tomweiland 2 жыл бұрын
That's not really something that belongs within Riptide-that's a job for you code. Maintain a list of banned players' UUIDs and then just disconnect them as soon as they connect. Riptide v2.0.0 will let you outright reject connections, so that'll be an option instead of having to let them connect and then immediately disconnecting them.
@CAESAR_IS_GOD_mohammadisaloser
@CAESAR_IS_GOD_mohammadisaloser 2 жыл бұрын
DUDE... do you have a vid that explains how to use xbox/etc. joystick to move from slow to fast (possibly using range?) based on how far you push the joystick? like if I move the joystick 0.1 forward he moves at 1 speed if I move the joystick 0.2 forward he moves at 2 speed, 1.0 = 10 speed etc. etc. I cannot find ANYTHING on this subject !!!!!! and I feel like this should be basic WTF??!!!!!!
@tomweiland
@tomweiland 2 жыл бұрын
You're not wrong about it being basic. Sample the input, send the float to the server and then process it however you like.
@CAESAR_IS_GOD_mohammadisaloser
@CAESAR_IS_GOD_mohammadisaloser 2 жыл бұрын
@@tomweiland This helped me out if you were wondering "Just get the controller inputs and then when you calculate the moveDirection, don't normalize it. This you will get faster if the controller inputs are higher :D"
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,5 МЛН
ТВОИ РОДИТЕЛИ И ЧЕЛОВЕК ПАУК 😂#shorts
00:59
BATEK_OFFICIAL
Рет қаралды 7 МЛН
Smart Sigma Kid #funny #sigma
00:33
CRAZY GREAPA
Рет қаралды 28 МЛН
Multiplayer In Unity3D - The REAL Options? (NEW unity networking & more?)
13:28
Jason Weimann (GameDev)
Рет қаралды 106 М.
How I Fixed the Ocean in My Pirate Game
6:04
Tom Weiland
Рет қаралды 84 М.
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 41 МЛН
Can AI Code a Horror Game? Watch ChatGPT Try
8:06
BadGameDev
Рет қаралды 1,2 МЛН
I Made the Same Game in 8 Engines
12:34
Emeral
Рет қаралды 4,2 МЛН
How To Do Client Prediction [Unity Tutorial/C#]
11:46
Ajackster
Рет қаралды 32 М.
2 Years of Game Dev - Making a Multiplayer Pirate Game in Unity
16:47
Every Softlock in Portal
43:08
Marblr
Рет қаралды 991 М.
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,5 МЛН