Godot Multiplayer Q&A | Live
Ringkasan
TLDRO vídeo é uma sessão de perguntas e respostas de um criador de conteúdo para a sua comunidade no Discord. O criador aborda dúvidas sobre a criação de servidores de jogos, recomendações de provedores de serviços de cloud, e otimização de jogos multiplayer. Ele sugere iniciar com servidores simples para testes, usar serviços em nuvem como AWS para economizar custos, e atenta para a importância do monitoramento de recursos. Também discute o uso de Docker para facilitar a portabilidade entre provedores de cloud. Além disso, responde perguntas sobre problemas técnicos enfrentados por desenvolvedores amadores e dá dicas de otimização para jogos e configuração de servidores.
Takeaways
- 💡 Use AWS para hospedagem inicial a custo zero.
- 🛠️ Docker facilita a portabilidade entre clouds.
- 📈 Monitore o uso de CPU e memória com AWS CloudWatch.
- ⚙️ Inicie com instâncias pequenas e escale conforme necessário.
- 🤖 Personalização de personagens pode ser feita no Blender.
- 🔗 Considere opções como DigitalOcean e Hostinger.
- 🔒 Segurança é crítica em conexões P2P.
- 💸 Controle seu orçamento com alertas de uso de cloud.
- 🎮 Sincronização é vital em jogos multiplayer.
- 🌐 Explore serviços especializados: GD Sync, W4.
Garis waktu
- 00:00:00 - 00:05:00
O apresentador decide abordar perguntas do Discord e comentários do YouTube durante a transmissão, o que pode ser interessante para outros espectadores que também têm dúvidas. Ele menciona um projeto de um seguidor chamado Nova Leaf, que está fazendo progressos em mecanismos de destruição customizados. O apresentador encoraja seguidores a se inscreverem e a pedir novidades sobre o projeto.
- 00:05:00 - 00:10:00
É discutida a dúvida de um usuário sobre servidores para jogos multiplayer. Ele sugere iniciar com um servidor mínimo em um serviço de nuvem como AWS, mencionando que a AWS oferece uma quantidade gratuita de horas de execução. Ele compartilha sua experiência e outros recursos ou serviços que podem ser considerados.
- 00:10:00 - 00:15:00
O apresentador continua a discutir a melhor abordagem para servidores e arquitetura em nuvem para jogos, incluindo dicas sobre o uso de instances EC2 da AWS e o cuidado com custos não planejados. Ele também menciona seu interesse em cobrir o W4 para beta testers e o servidor de backend Silent Wolf em seus vídeos.
- 00:15:00 - 00:20:00
Continua discutindo servidores em nuvem e modelos de custo e desempenho, analisando diferentes serviços como AWS, Digital Ocean e Hostinger. Ele dá dicas sobre como começar pequeno e ajustar conforme necessário, considerando servidores para diferentes tipos de jogos, seja um mundo estático ou baseado em partidas.
- 00:20:00 - 00:25:00
Sugere como capturar instantâneos de desempenho de uma instância e seu uso de CPU máximo. Recomenda começar com pequenos servidores VPS para testes de desempenho e monitoramento. Discute diferentes arquiteturas de jogos e casos de uso para matchmaking com EC2 da AWS, ponderando sobre os custos.
- 00:25:00 - 00:30:00
O apresentador explica como instâncias do Amazon EC2 podem ser configuradas e usadas eficientemente para testes de jogos. Ele aconselha sobre como evitar surpresas na conta, configurando alertas de orçamento no AWS. Fala sobre usar Docker para fornecer flexibilidade na movimentação entre provedores de nuvem.
- 00:30:00 - 00:35:00
Amplia o debate sobre plataformas de nuvem, discutir contêineres Docker e a importância de menu modular para jogos com backend. Introduz conceitos como Kubernetes e a escalabilidade do ECS da AWS. Encaminha usuários ao servidor Discord para mais informações e compartilha seu desejo de testar W4 no futuro.
- 00:35:00 - 00:40:00
Segue para os comentários no YouTube, respondendo a questões sobre desenvolvimentos de backend para jogos multiplayer. Recomenda seguir tutoriais completos para melhor compreensão dos módulos utilizados para multiplayer. Oferece apoio via Discord para discutir serviços como W4 e GDsync.
- 00:40:00 - 00:45:00
Explica como manter a autoridade correta entre cliente e servidor no contexto de sincronização de jogos multiplayer. Menciona que problemas de sincronização são comuns e dependem de autoridade inadequada em inputs ou conexões erradas. Aconselha revisar condições de entrada e configuração.
- 00:45:00 - 00:50:00
Aborda uma melhor compreensão do conceito de sincronização em jogos multiplayer. Explica como a previsão do cliente e a reconciliação do servidor podem ser aplicadas em diversos tipos de jogos, incluindo corridas. Reforça que ajustes podem ser necessários para garantir sincronia perfeita para diferentes cenários.
- 00:50:00 - 00:55:00
Deixa claro que a abordagem para jogos multiplayer pode variar, especialmente com referências a uso de funções RPC e estratégias de gestão de inputs. Recomenda que os desenvolvedores avaliem essas abordagens para corrigir problemas típicos de sincronização e autoridade.
- 00:55:00 - 01:00:00
Discute como evitar que segredos do jogo sejam expostos ao separar código de servidor do código de cliente. Sugere ter projetos ou pastas separadas e excluir logicamente arquivos do cliente durante o build. Aconselha experimentação e a implementação de soluções de teste.
- 01:00:00 - 01:05:00
Respondendo a perguntas, ele fala sobre configuração de servidores dedicados e como garantir que funções importantes ocorram apenas no servidor. Expõe a necessidade de separar lógica de clientes e servidores para segurança e otimização de jogos.
- 01:05:00 - 01:10:00
Fornece insights sobre como a configuração de arquivos e caminhos devem ser geridos em projetos de servidor/cliente. Recomenda que o código do servidor não deve estar no cliente e menciona várias estratégias para gerenciar isso eficientemente.
- 01:10:00 - 01:15:00
Destaca desafios na criação de jogos multiplayer e diferenças entre P2P e servidores dedicados. Menciona o uso de relays para proteger IPs e as opções de matchmaking com servidores em nuvem. Reflete sobre o que pode ser feito internamente em um jogo e o que deve depender de infraestrutura externa.
- 01:15:00 - 01:21:07
Conclui a transmissão discutindo como planeja abordar novos tutoriais, especialmente sobre W4 e outras plataformas para jogos multiplayer, destacando a importância de segurança ao lidar com dados e IPs em redes.
Peta Pikiran
Pertanyaan yang Sering Diajukan
Quais serviços de cloud devo usar para hospedar servidores de jogos?
É recomendado começar com serviços que ofereçam servidores Linux, como AWS, que oferece um nível gratuito inicialmente. Google Cloud e Microsoft Azure também são opções viáveis.
Como posso configurar um servidor para meu jogo multiplayer?
Inicie com um servidor básico em qualquer provedor de cloud que suporte Linux e configure seu jogo como um servidor dedicado para testes.
Quais são algumas boas práticas para hospedar um jogo multiplayer?
Use serviços baseados na nuvem para iniciar instâncias apenas quando necessário. Monitore o uso de recursos como CPU e memória para otimizar os custos.
Como lidar com a carga de partidas de jogos multiplayer no servidor?
Considere hospedar várias instâncias de servidor em uma única instância básica se o recurso suportar, para otimizar os custos. Realize testes de desempenho para validar a carga suportada.
O que é ECS na AWS?
ECS é o Amazon Elastic Container Service, que permite a execução de contêineres usando Docker, proporcionando escalabilidade para aplicações.
Quais são as opções de servidores dedicados para jogos?
Além de AWS, existem outras opções como DigitalOcean, Hostinger e serviços mais especializados voltados para jogos, como GD Sync e W4.
Como posso monitorar o uso de recursos do servidor?
Você pode usar ferramentas do provedor de cloud, como AWS CloudWatch, para monitorar o uso de CPU, memória e disco de suas instâncias.
Como começar a criar um jogo multiplayer com personalização de personagens?
Para a customização de personagens, é possível usar ferramentas de modelagem 3D como Blender, e então programar a interação e personalização dos avatares no jogo.
Lihat lebih banyak ringkasan video
No SIM? No Problem!
Ecologia - Aula 05 - Interações biológicas e evolução
Micro-ondas - Mitos, Ciência e História (documentário)
Tracking Hurricane Francine | September 12, 2024
6. AQA A Level (7516-7517) SLR1 - 4.1.1 Intro to prog - Part 6, random numbers
Centro de Datos: infraestructura y características
- 00:00:00okay so today I'm going to do something
- 00:00:01different we are uh going to look at
- 00:00:05some questions that the Discord folks
- 00:00:08have been asking about and I figured I
- 00:00:10might as well just do this on stream in
- 00:00:12case somebody else wants to hear the
- 00:00:15answer to those questions uh so I'm
- 00:00:16going to go through a couple things in
- 00:00:18my Discord and there are about 15
- 00:00:23comments on YouTube I got to get through
- 00:00:25so let's just do it together today and
- 00:00:27see how it goes and if you have any
- 00:00:28questions if you're on uh let me know
- 00:00:32and I will do my best to at least
- 00:00:34investigate them or try to try to get
- 00:00:37you pointed in the right direction if I
- 00:00:39can so Nova Leaf uh you've been looking
- 00:00:42at you've been making something custom
- 00:00:44and it looks like you're doing some kind
- 00:00:45of Destruction uh mechanisms you've been
- 00:00:48building it yourself I've been watching
- 00:00:50your updates over the last few weeks um
- 00:00:52looks like you are making progress I did
- 00:00:54check this out the other day
- 00:00:57um I just wanted to check in on this
- 00:00:59again and see
- 00:01:04that pretty cool I don't I don't know
- 00:01:08where you're going with this or where
- 00:01:09he's going with this but it it looks
- 00:01:11cool um I'm excited to see what what
- 00:01:14what ends up coming of this so anyways
- 00:01:16Nova if you end up stopping by let me
- 00:01:18know um we got a couple more followers
- 00:01:21it looks like since the last stream
- 00:01:23looks like I got three three to four
- 00:01:25more so we're almost at that 20 Mark
- 00:01:27goal so if you guys are in the channel
- 00:01:29and you want to support us uh please
- 00:01:32give us a follow so we got ebi um wanted
- 00:01:35to purchase a virtual private server is
- 00:01:39that what that means I usually I'm
- 00:01:41usually refer to that VPC uh virtual
- 00:01:44private Cloud but I guess virtual
- 00:01:46private server um they want to run a
- 00:01:48build for multiplayer
- 00:01:50game so that's something
- 00:01:53like what kind of server configuration I
- 00:01:56need all right well that is like Nova
- 00:01:59said that's
- 00:02:00that's really hard
- 00:02:02to narrow down exactly what type of
- 00:02:05server you would need I would say that
- 00:02:07you could probably get away with
- 00:02:10starting out because because it sounds
- 00:02:13like you're starting out just start with
- 00:02:15a bare minimum server pick any cloud
- 00:02:18service that allows you to host Linux um
- 00:02:22so I guess maybe I could I'm going to
- 00:02:24reply to this person in real time um so
- 00:02:27I you know I would say use any cloud
- 00:02:31provider like AWS that's what I'm
- 00:02:34familiar with um or whatever and spin up
- 00:02:39the smallest uh Linux Linux server um
- 00:02:45build your game as a dedicated server
- 00:02:51and run it there uh this is great for
- 00:02:55testing I've done I've launched probably
- 00:02:58a million instances
- 00:03:00in my career and they are very handy you
- 00:03:04can SSH to them you can run commands to
- 00:03:06them you can monitor them uh with a with
- 00:03:08the cloud infrastructure like AWS AWS is
- 00:03:11a behemoth it's this massive product but
- 00:03:16there are some cheap ways with it like
- 00:03:18if you sign up you you can have you get
- 00:03:21like what was it um was it 500 hours I
- 00:03:23think it was like 500 hours a month of
- 00:03:25runtime so if you're new Game Dev and
- 00:03:28you just want to spin up a VPC for free
- 00:03:30uh yeah you got to have a credit card
- 00:03:32but consider consider looking at uh you
- 00:03:36know that kind of thing I I'm not
- 00:03:38plugging for AWS by any means but it's
- 00:03:40just what I know so I'm going to just
- 00:03:42transfer some knowledge but if you like
- 00:03:44a better cloud provider please check
- 00:03:46that out there are other services so I
- 00:03:50have an internal document of resources
- 00:03:54that I'm I'm just jotting down and I I
- 00:03:58guess I can share some of this
- 00:04:00but there are several different Services
- 00:04:05out there like I have AWS just kind of
- 00:04:07commented in the middle um from W4 which
- 00:04:10is a gdau specific product that is in
- 00:04:14very early beta and it is invite only or
- 00:04:18on request only and as a side note I
- 00:04:20actually just got access to it so I'm
- 00:04:22super excited to get into that um
- 00:04:26looking forward to see what comes at and
- 00:04:27I'll probably do some videos covering
- 00:04:29the W4 for folks cuz that those are made
- 00:04:31by like gdau senior gdau members and
- 00:04:33Silent wolf was something I just
- 00:04:35discovered the other day uh you could
- 00:04:37probably host it looks like a back-end
- 00:04:39service there they
- 00:04:41are doing this out of their own dime so
- 00:04:45they're going to do it until they can't
- 00:04:46do it anymore so if you're making a game
- 00:04:48that isn't going to be a big deal on the
- 00:04:50back end you can probably get away with
- 00:04:51using these guys for a little bit uh I
- 00:04:53actually like that idea I was thinking
- 00:04:55about running my own backend service
- 00:04:57like this where you just throw up a you
- 00:04:58know dedicated Linux server you have a
- 00:05:00nice interface um if you want me to make
- 00:05:02that for you guys for maybe like low
- 00:05:04cost or something let me know um cuz I
- 00:05:07was considering doing that as a side
- 00:05:09project uh GD sync is another one but
- 00:05:11they're PD P2P only so that that really
- 00:05:14doesn't uh work here in that situation I
- 00:05:17don't believe this question was P2P
- 00:05:20related digital ocean of course heroic
- 00:05:22Labs but hero glavs is really expensive
- 00:05:26I don't know how good their free tier is
- 00:05:29play Cloud flow so you get a oneclick
- 00:05:31server a 1 hour session for free
- 00:05:36hostinger and uh Microsoft of course
- 00:05:40yeah so I I really I really think that
- 00:05:43this is the best way to do it though
- 00:05:44just start small um run a couple tests
- 00:05:47with whatever I don't know what type of
- 00:05:48game like some people run multiple
- 00:05:51instances of their backend server on a
- 00:05:53single instance and there's nothing
- 00:05:55wrong with that as long as it can handle
- 00:05:57it as long as whatever instance you have
- 00:05:58and some of these Services I've been
- 00:06:01covering will probably vary in the
- 00:06:05resources like your compute you know how
- 00:06:07much uh the processor right so like
- 00:06:10compute and uh RAM and memory and that
- 00:06:12kind of thing how much hard drive or
- 00:06:15virtual storage do you have how much
- 00:06:18input and output can you transfer right
- 00:06:20so there's gigabyte limits likely for
- 00:06:23each one of these servers so consider
- 00:06:25that when you're weighing in the costs
- 00:06:28and look at each one of these services
- 00:06:30to make sure that it's it's going to
- 00:06:32make sense for your uh for whatever your
- 00:06:35game is so if you are
- 00:06:37running five instances of your backend
- 00:06:40server because you want to have five
- 00:06:42instances of your game or five maybe
- 00:06:44matches maybe you have like a match
- 00:06:46maker Style game uh that that could work
- 00:06:49too and you know start with that run
- 00:06:52some performance tests and just see how
- 00:06:55much you know run a I can't remember on
- 00:06:58top of my head if I remember I'll say it
- 00:06:59but anyways you can manage or uh capture
- 00:07:02like a performance snapshot of your
- 00:07:04instances some of those Services may not
- 00:07:06give you access to that some of them
- 00:07:09might I know AWS does you can see like
- 00:07:11your maximum CPU usage and if it looks
- 00:07:14like you're never hitting that on those
- 00:07:16small T2 instances right when you start
- 00:07:17out with AWS they give you that the free
- 00:07:21instances are like T2 micros and you
- 00:07:24might never hit the max memories or
- 00:07:26anything like that for whatever your
- 00:07:28game is so um and like I said it it
- 00:07:31really depends on the how you're running
- 00:07:33your game are you running a static world
- 00:07:34or a persistent world where it's going
- 00:07:37to be running all the time or is it
- 00:07:39going to be match based where maybe you
- 00:07:41don't want to have a server running all
- 00:07:42the time and you spin it up because you
- 00:07:44have this Matchmaker process um I was
- 00:07:47thinking about building an
- 00:07:49architecture kind of an example for the
- 00:07:52game I'm working on uh the that I
- 00:07:54started during the game Jam where you
- 00:07:56have like a
- 00:07:58Matchmaker that
- 00:08:00spins up ec2 instances which are under
- 00:08:03AWS right if somebody joins and they a
- 00:08:07match is made so they find somebody else
- 00:08:09wants to play then at that point we spin
- 00:08:11up an ec2 server on demand because if if
- 00:08:15you just have an ec2 server running
- 00:08:17you're going to blow through your free
- 00:08:18tier and if you don't have a free tier
- 00:08:19well either way you're going to have
- 00:08:22charges that will accumulate because
- 00:08:24you're just going to have that ec2
- 00:08:26instance waiting for people to play
- 00:08:28games on even though you're not even
- 00:08:30using it so that's if you just want to
- 00:08:33have a really quick access like if you
- 00:08:35have funding or something maybe I can
- 00:08:36consider doing that but if you don't
- 00:08:38have funding and you're doing this out
- 00:08:39of your own dime you know consider
- 00:08:40making an architecture like that where
- 00:08:42you spin up an instance and I think we
- 00:08:45can get away with it now
- 00:08:47because those ec2 instances spin up
- 00:08:50really fast now like before it would
- 00:08:52take like five minutes but those T2
- 00:08:54micros spin up super fast and there
- 00:08:56might even be more like um
- 00:09:00what's it like serverless style AWS
- 00:09:03resources I think they're going to be
- 00:09:04more expensive they're a newer
- 00:09:06technology and I haven't had a chance to
- 00:09:08play around with it so I do want to look
- 00:09:09into those one day and see if uh that's
- 00:09:13something that is realistic or as
- 00:09:15affordable because then you just tell it
- 00:09:17you can hone in on exact on the exact
- 00:09:21resources that you want like I need you
- 00:09:22know three c v virtual CPUs and this
- 00:09:26much RAM to handle this my resources so
- 00:09:28you can really dial it in and I I think
- 00:09:31I mean you can kind of do that with the
- 00:09:32Standalone instances but I think they
- 00:09:34have these more resource based models
- 00:09:38with some of their stuff um I think ECS
- 00:09:40is like a scalable product that they
- 00:09:42offer that might off might have that but
- 00:09:45I don't know if they offer that
- 00:09:45Standalone I'd have to look that up it's
- 00:09:47been a couple years since I've seen that
- 00:09:50so yeah so a small VPS this guy's this
- 00:09:53guy uh this person is correct um you're
- 00:09:56out five bucks and the thing that's nice
- 00:09:58about these so AWS is nice and you have
- 00:10:01a limited amount of hours that you get
- 00:10:02for free I think I said it was 500 free
- 00:10:05tier and I think that'll give us right
- 00:10:08into right into what we want let's
- 00:10:12see
- 00:10:16free oh I was way I was lowballing it
- 00:10:19it's 750 hours for the first 12 months
- 00:10:23per month so you get 750 hours of
- 00:10:25runtime
- 00:10:27so um if you're if you're testing 40
- 00:10:31hours a
- 00:10:32week uh 4 8 12 I mean you're not even
- 00:10:35going to hit that if you tested if you
- 00:10:38ran that server if you had like a day
- 00:10:40job or something you were running it 40
- 00:10:41hours a week you wouldn't you wouldn't
- 00:10:42even get near that so um yeah so
- 00:10:44consider I think my math is right on
- 00:10:46that 40 hours a week yeah so anyways
- 00:10:49consider whatever AWS or not I don't
- 00:10:51care or if you want pay for a you know
- 00:10:54you can and you can buy like like this
- 00:10:56person saying you can buy one of these
- 00:10:58vpcs from one of these providers and get
- 00:10:59it for like a flat $5 fee there the good
- 00:11:03thing about that is there's not going to
- 00:11:04be any surprises you're not going to be
- 00:11:07hit with a big Bill at the end of the
- 00:11:08month because those other companies like
- 00:11:11these ones down here are probably going
- 00:11:12to cap you at that whatever they're
- 00:11:15offering for that $5 amount whereas AWS
- 00:11:17if you exceed that you will be built for
- 00:11:20it um so what I always like to say is if
- 00:11:23you are using any of these big cloud
- 00:11:25providers like Google Red Hat Amazon uh
- 00:11:28Microsoft
- 00:11:29the first thing you need to do after
- 00:11:30your create account is figure out how to
- 00:11:32create a an alert that's going to email
- 00:11:36you on a threshold of a certain budget
- 00:11:40and I actually have a video for how to
- 00:11:41do that on AWS so if you want to look at
- 00:11:43how to do that just go back into my
- 00:11:45video history and find that video I
- 00:11:47really recommend doing that and they'll
- 00:11:48even and you can even set up
- 00:11:49notifications like you've hit 50% of
- 00:11:52your budget and if your budget's $1 well
- 00:11:55then you've you've hit 50 cents and if
- 00:11:56you don't want to spend a dollar then
- 00:11:58you need to
- 00:12:00um you know you need to make sure that
- 00:12:01you go in and cancel those uh or spin
- 00:12:04down those servers before you hit that
- 00:12:05so uh I think I've talked a lot to that
- 00:12:08and I don't I think whoever's on don't
- 00:12:10have any questions so I'm just going to
- 00:12:11move on but uh yeah in tribe yep you can
- 00:12:15definitely dockerize your uh you can
- 00:12:20definitely dockerize your your services
- 00:12:23so um there are the thing about Docker
- 00:12:26is most of these big
- 00:12:30providers these big cloud providers are
- 00:12:32going to support a
- 00:12:33Docker
- 00:12:35container so if you container eyes using
- 00:12:38Docker or whatever else the bigger
- 00:12:39competitor is you'll definitely be able
- 00:12:42to take whatever you've built and then
- 00:12:45move it to any cloud provider and
- 00:12:48they're like kubernetes the you know
- 00:12:50orchestration the scaling uh
- 00:12:53infrastructure and like AWS has one
- 00:12:55that's kind of proprietary I think it's
- 00:12:58ECS and and ECS is both for they support
- 00:13:01a kuber kubernetes
- 00:13:03u uh framework or just their own
- 00:13:06whatever ECS is and they support Docker
- 00:13:10so you can spin up different in scale
- 00:13:14using dockerized containers and that
- 00:13:16scalability that functionality there you
- 00:13:19can use on probably any of these big
- 00:13:22Services Red Hat Microsoft Amazon Google
- 00:13:25they're all going to allow you to uh use
- 00:13:27Docker so if you spend energy and put in
- 00:13:32the uh the effort to dockerize your
- 00:13:35Linux builds for uh your gdau back in
- 00:13:38then you've opened up really quick and
- 00:13:41easy way to deploy your Docker container
- 00:13:43anywhere you can do your Docker testing
- 00:13:46locally and you might even be able to
- 00:13:48simulate resources locally now I haven't
- 00:13:52used Docker in probably four or five
- 00:13:54years uh but I was using it pretty
- 00:13:57heavily before that so I have a lot of
- 00:13:59experience with Docker and I don't know
- 00:14:02if they had it back then but I have a
- 00:14:04feeling that you you can tailor local
- 00:14:06your local container uh to handle a
- 00:14:10specific set of resources so you know
- 00:14:12ebi that's another thing that I would
- 00:14:14consider uh so good good point there on
- 00:14:18tribe for that suggestion let's go to
- 00:14:20AWS um which I don't have any comments I
- 00:14:23guess somebody might have uploaded
- 00:14:25something so I don't know why it's
- 00:14:26showing a comment uh don't have anything
- 00:14:28on Unity this week not really doing much
- 00:14:32Unity at all lately maybe just answering
- 00:14:33some
- 00:14:35questions uh and uh we'll come back to
- 00:14:37gdau let's go to Game Dev and just see
- 00:14:40uh what what we've got here um so this
- 00:14:43person's been using uh been running into
- 00:14:46some problems with synchronization we we
- 00:14:48we had a look at that last week um or
- 00:14:50earlier this week I guess and we're I
- 00:14:53think we were able to get them unstuck
- 00:14:55for the most part I think they're having
- 00:14:57problems with capturing the mouse not
- 00:14:59exactly sure um so I'm going to just
- 00:15:02gloss over that looking to make zate
- 00:15:05it's been around for a while I'm going
- 00:15:06to look at making customize customizable
- 00:15:09characters and blender containing shape
- 00:15:11Keys among other things I'm not too
- 00:15:13familiar with you guys have any videos
- 00:15:14recommended uh separate head and model
- 00:15:15attaches the body certain IM not work
- 00:15:18together separate meshes and
- 00:15:20Gough um you know I don't have a ton of
- 00:15:23experience with this stuff this is like
- 00:15:24a different skill set the modeling side
- 00:15:27of things
- 00:15:29um you know in materials that's not my
- 00:15:31expertise hopefully somebody hopefully
- 00:15:33somebody's able to weigh in if you guys
- 00:15:35know of any you know any answers to this
- 00:15:38uh clothing yeah I I'm not I don't have
- 00:15:41any experience with this stuff so I'm
- 00:15:44not going to I'm not really going to
- 00:15:46comment um I have a little bit of
- 00:15:49experience
- 00:15:52separating animations uh not actually
- 00:15:55having a like the models the same like
- 00:15:58the the you know obviously we have this
- 00:16:00character model that I've been working
- 00:16:02with or character models over the last
- 00:16:03whatever year and you I I I have a uh a
- 00:16:08video or something I did where I
- 00:16:11separated the animations uh using an
- 00:16:13animation tree where you could have an
- 00:16:16animation State machine and separate out
- 00:16:19like your running animation so if it was
- 00:16:20pure running you would be running you
- 00:16:22know you would see his arms move around
- 00:16:24and that kind of thing but if he was
- 00:16:25running with a gun then I have a state
- 00:16:27that turns off like the top of the body
- 00:16:30and it follows the mouse so he can like
- 00:16:32aim up and down with that arm and it
- 00:16:34tracks like with the mouse and so you
- 00:16:37can run and do that at the same time so
- 00:16:39you can actually see their like head
- 00:16:40rotate Up and Down based on where they
- 00:16:42were looking now that's one way you can
- 00:16:44handle that but I think inverse
- 00:16:46kinematics might be a
- 00:16:50more better I want to say a better
- 00:16:52approach in the long run but their stuff
- 00:16:54uh gdau stuff was deprecated the time I
- 00:16:56made those videos so I didn't want to
- 00:16:57use a I wanted to find a different
- 00:16:59solution for that so that's the only
- 00:17:00thing I would say about that multiplayer
- 00:17:02synchronizer emits on a button pressed
- 00:17:04if that's your if that's your
- 00:17:09flow I'm I'm not exactly sure I would do
- 00:17:12it that way I would have to know a lot
- 00:17:14more information and I think an RPC is a
- 00:17:19better solution for that right because
- 00:17:21rpcs are your event based rpcs are your
- 00:17:24event-based
- 00:17:26mechanisms um and your synchron is where
- 00:17:29you want to synchronize and keep
- 00:17:31something in sync at all times like
- 00:17:32player health and and maybe positions
- 00:17:35and that kind of thing so I'm not I'm
- 00:17:37not sure if that's a good way to
- 00:17:38approach that so consider using rpc's
- 00:17:41Legion
- 00:17:43um I I don't know what this enumeration
- 00:17:47means I do not understand what they're
- 00:17:49saying with
- 00:17:50enumeration
- 00:17:52um and yeah Scott scota doesn't really
- 00:17:56do private messaging um
- 00:18:01and I don't know what this video mean
- 00:18:03rendering on dedicated server render
- 00:18:05different players in different scenes so
- 00:18:08that problem trying to
- 00:18:10render different players in different
- 00:18:14scenes
- 00:18:16is uh I don't know how trivial that is I
- 00:18:19talked about this the other day on at
- 00:18:22some point or I I wrote about it in here
- 00:18:24I can't exactly remember
- 00:18:26but you can turn turn
- 00:18:30off what you want to synchronize with
- 00:18:32your synchronization or your multiplayer
- 00:18:34synchronizer you can actually in I think
- 00:18:37it's called visibility and you can
- 00:18:40maybe so if you have a single server
- 00:18:44that all your players are connecting to
- 00:18:47and you're going to spawn a
- 00:18:49scene you can probably do either a
- 00:18:52custom spawn and only spawn it on a
- 00:18:54specific node I think you might be able
- 00:18:56to do that or you can spawn it and then
- 00:19:00turn off visibility for X players or
- 00:19:03turn it on for X players which however
- 00:19:06way you want to handle that so I think I
- 00:19:07think you can accomplish that it just it
- 00:19:10might not be a super trivial thing I do
- 00:19:12want to cover that I think I have a to
- 00:19:15do in my uh list of videos future videos
- 00:19:18where I want to cover this exact
- 00:19:20scenario uh but it would be helpful to
- 00:19:22know if you're if this is a persistent
- 00:19:24world like a single world if it's a
- 00:19:27Matchmaker world
- 00:19:29where or if it's like a maybe like I I
- 00:19:33know that someone was talking about this
- 00:19:34the other day there was a game uh there
- 00:19:37was a game
- 00:19:38where um all the players would still be
- 00:19:41there but you would be experiencing a
- 00:19:42different scene and that's to me just
- 00:19:45like a uh if it's even if it's a
- 00:19:47temporary world it's still a persistent
- 00:19:50world so I think that's uh something
- 00:19:52that I'm I'm going to look into
- 00:19:53eventually guys if you want uh there's a
- 00:19:55making the
- 00:19:57MMO um looks like they're using maybe a
- 00:19:59python back end uh and connecting goob
- 00:20:02to it I don't know I haven't seen it but
- 00:20:03if you're interested join the Discord
- 00:20:06and uh we've got some gurus and experts
- 00:20:09in there and I try to get in there as
- 00:20:11much as possible um a lot of times I get
- 00:20:13really busy with work and other things
- 00:20:15so I can't always get to it but let's
- 00:20:17move on um okay so Annie's got a
- 00:20:19question about a recent video I
- 00:20:23did there's a moment where the player
- 00:20:25name uh is set when a new player is
- 00:20:28added to the game my issue is that the
- 00:20:29player name solely depends on the new
- 00:20:31network ID yep uh which is given by the
- 00:20:33Callback uh what if I want to allow
- 00:20:35players to decide their names I already
- 00:20:37have a UI well then just make a
- 00:20:40different field have a different name
- 00:20:42field I mean that's uh that that's how I
- 00:20:44would do that you wouldn't you keep the
- 00:20:46name for your infrastructure I think
- 00:20:48right now you you could use a different
- 00:20:51field um if you watch go watch all of my
- 00:20:55videos and you'll see that uh some of
- 00:20:58them I use name some of them I use uh
- 00:21:00player ID to represent network ID for
- 00:21:04the checks that you need to do for
- 00:21:06managing your multiplayer sessions and
- 00:21:09and tracking you know where which pier
- 00:21:11is where and should this pier uh have
- 00:21:13access to certain things kind of like an
- 00:21:15authority problem there so if if you're
- 00:21:18confused about that uh I I think this is
- 00:21:22how he would I think you can set name
- 00:21:24here like that um if if let's see wrong
- 00:21:27place set players name but how do I do
- 00:21:29it probably found this U I don't know
- 00:21:30why you wouldn't set it there
- 00:21:35umie using synchronizer plays no play
- 00:21:38you want to add a synct property such as
- 00:21:39name and have it update only once yeah
- 00:21:41so that's that's a pretty good answer I
- 00:21:43think uh e Mario I think that's a pretty
- 00:21:47good answer uh I don't see why you
- 00:21:49wouldn't be able to set it there um I
- 00:21:52don't see
- 00:21:53why yeah just use a different field
- 00:21:59um like in your
- 00:22:04code you you can set it there or after
- 00:22:09your player enters the
- 00:22:13name or maybe uh have your
- 00:22:17server send an RPC after they join or
- 00:22:24connect that tells that uh that
- 00:22:29informs or that sets the name sets the
- 00:22:32name in all clients I like the idea of
- 00:22:37syncing once when the player
- 00:22:40spawns which is using your multiplayer
- 00:22:44synchronizer uh Set Set uh check the
- 00:22:50spawn
- 00:22:51checkbox set sync to
- 00:22:54never and that should do it so this is
- 00:22:57good I like this answer spoiler it's got
- 00:23:01annoying case uh you're using sockets I
- 00:23:04haven't used sockets yet with good do
- 00:23:07that is a little bit lower level um
- 00:23:09haven't reached to that point I'm
- 00:23:11covering everything high level right now
- 00:23:13so as to allow for all the newer
- 00:23:17developers to come in and not have to
- 00:23:20worry about managing the messages
- 00:23:21themselves and let's just rely on the
- 00:23:23higher level apis for now uh eventually
- 00:23:26if I can still do this channel for a
- 00:23:29considerable amount of time I will go
- 00:23:32and do more low lower level things uh
- 00:23:34but we'll see everything's okay the code
- 00:23:37is working except one case when the
- 00:23:38server reloads and closes all
- 00:23:40connections the D pulling proceeds to
- 00:23:42show up and connection State
- 00:23:43everything's okay well if you if the
- 00:23:45server reloads and closes
- 00:23:48connections I don't know what this is
- 00:23:50this like a web socket you may have to
- 00:23:54you may have to run through your reset
- 00:23:58uh con
- 00:23:59connection logic I I I'm not really
- 00:24:02following this not sure let's see
- 00:24:05uh Co working somewhere when server
- 00:24:08reloads close all connections good
- 00:24:09polling proceeds to show open connection
- 00:24:11State as everything is okay I can't find
- 00:24:13um yeah there should be I don't think I
- 00:24:16don't know if anybody's replied to them
- 00:24:18doesn't look like it I don't like to
- 00:24:21double dip there has to be a call back I
- 00:24:26I'm not sure if there's any
- 00:24:30I would I would it would be very
- 00:24:32unlikely if there wasn't a on disconnect
- 00:24:34call back or some kind of mechanism
- 00:24:37where you can hook into hey this
- 00:24:39connection dropped uh that would be very
- 00:24:41unlikely I I can't imagine there not
- 00:24:43being that so I would I would think that
- 00:24:45that's how they have to do that
- 00:24:48um so I'm just going to respond to that
- 00:24:50like that so let's see what Andy's got
- 00:24:52thanks for the reply list of players
- 00:24:55being shared across all peers sure um
- 00:24:59you can send it that way or you can have
- 00:25:03a dictionary that you
- 00:25:05synchronize uh which will update a
- 00:25:07players dictionary con all the players
- 00:25:09yep which is to make it work in Steam
- 00:25:12well I mean if if you're using the high
- 00:25:15level apis in Steam it would work the
- 00:25:18same way if you're going to use the
- 00:25:19lower level apis and send messages
- 00:25:21yourself then sure you'll have to uh you
- 00:25:26know manage those things accordingly um
- 00:25:29and you you if you're if you're like if
- 00:25:32you're not using rpcs which is the high
- 00:25:34level by the way if you didn't connect
- 00:25:36those two
- 00:25:37things if you're manually sending
- 00:25:39messages in Steam using their other uh
- 00:25:43gdau steam apis uh that are provided
- 00:25:45then yeah you're going to have to
- 00:25:47manually manage those synchronizations
- 00:25:49um that way yeah so I'm just saying I'm
- 00:25:53just going to repeat what I said that
- 00:25:54you can synchronize a dictionary of the
- 00:25:56players with some basic data uh don't
- 00:25:59sync complex
- 00:26:09objects like nodes or anything like that
- 00:26:12just what you
- 00:26:14need uh so you could do it that way or
- 00:26:17you can sync uh you can send
- 00:26:19rpcs um to keep a list of the the
- 00:26:22players you can
- 00:26:24also I I guess I guess I wouldn't do it
- 00:26:27that way either but your clients can
- 00:26:29also ask um every so often but then
- 00:26:31that's why would you do that just when a
- 00:26:34player joins or leaves you can always
- 00:26:35just um send an RPC to everybody hey a
- 00:26:39player left or hey a player joined and
- 00:26:41you can always update everybody um
- 00:26:44that's there that uh you know that needs
- 00:26:47that information um and maybe not
- 00:26:49everybody needs that information so yeah
- 00:26:51using rpcs could work um it's probably
- 00:26:54easier to do a sync but if you need to
- 00:26:57have some
- 00:26:58separations like team one or team two
- 00:27:00kind of thing then yeah you can you can
- 00:27:02definitely manage that manually more
- 00:27:03with some
- 00:27:05rpcs uh croy's got a question um I think
- 00:27:09I said that right I don't know um if I'm
- 00:27:10using multiplayer spawner for a player
- 00:27:12character on the server multiplayer
- 00:27:13author is being set however the client
- 00:27:15multipay authority of the player is set
- 00:27:17to one uh no um I I think the player
- 00:27:21itself is the the player it if you're
- 00:27:27let me just say hello first let me type
- 00:27:29it out and then I'll review it just to
- 00:27:32review let me find it really quick again
- 00:27:35uh so on a server multiplayer Authority
- 00:27:38is being set correctly um okay I'm not
- 00:27:41exactly sure what that means I'm
- 00:27:43guessing they are setting client
- 00:27:45authority to that Pier however on the
- 00:27:48client the multiplayer authority of the
- 00:27:49player set to one that is correct so if
- 00:27:51you are giving so I need a little bit
- 00:27:53more information so if if you read my
- 00:27:56reply
- 00:27:58uh I'm I'm saying that if you set the
- 00:28:02authority what you're going to set on
- 00:28:03the server uh if you set that
- 00:28:06Authority technically I'm not sure if it
- 00:28:09is set in the server but whenever you
- 00:28:11set it like on the enter tree function
- 00:28:14or if you use the on ready uh approaches
- 00:28:17I have a couple different approaches so
- 00:28:18go watch my whole video series so you
- 00:28:20can see the couple different ways I do
- 00:28:21it but if you're setting the authority
- 00:28:24to the local client which is going to be
- 00:28:27the network ID right so some string of
- 00:28:30eight numbers eight or nine characters
- 00:28:31whatever it is
- 00:28:33numbers if you just set the input so
- 00:28:36that the players inputs keyboard and
- 00:28:39mouse movements are client driven or
- 00:28:42client the client has a sole source of
- 00:28:44Truth so the client is telling the
- 00:28:45server that so you're setting client
- 00:28:46authority to input that's that case the
- 00:28:49player object itself itself will still
- 00:28:52be set to server Authority because what
- 00:28:55that means is your setting the authority
- 00:28:59over the inputs but it's your server who
- 00:29:02determines where it should actually be
- 00:29:05so if I teleport across the world
- 00:29:09because I was able to input something
- 00:29:12that was extraneous like in a racing
- 00:29:14game somehow if I was able to send an
- 00:29:17input that didn't make sense or
- 00:29:20something and I was able to move across
- 00:29:22the screen for example uh to the other
- 00:29:24side of the world your server will still
- 00:29:26have authority over that player be like
- 00:29:28uhuh you can't teleport you can't do
- 00:29:30that you can't cheat like that uh so
- 00:29:32that's kind of a rough example of that
- 00:29:35um so yeah I don't think that's a bug I
- 00:29:37think that's correct your input should
- 00:29:39not say one though your input should say
- 00:29:42the the network ID of the of the player
- 00:29:44so that's a good question uh can someone
- 00:29:46help me tutorial for dedicate server for
- 00:29:48Brack's game uh the dedicate Server
- 00:29:50doesn't even start doesn't start even if
- 00:29:52I add a ready function in the game man
- 00:29:53scripts anybody know it could
- 00:29:55be oh that's really vague um yeah I
- 00:29:59think you're going to have to thanks
- 00:30:01tribe I really think you're going to
- 00:30:02have to post some stuff um he said
- 00:30:05posting copy pasta and you posted it
- 00:30:06here that's cool whatever it's not a big
- 00:30:08deal
- 00:30:10um let's see what we got here uh
- 00:30:13dedicated server if OS feature are you
- 00:30:16building it are are you building a
- 00:30:17dedicated server
- 00:30:20um did you select
- 00:30:24the the dedicated
- 00:30:29server option when building I have
- 00:30:33definitely I that's not I'm not that's
- 00:30:36not a dumb thing just to ask because
- 00:30:39I've definitely done that I've I've
- 00:30:41built a game before and I went to deploy
- 00:30:45it and it just puked it didn't know I it
- 00:30:47just didn't make any sense and then I
- 00:30:49went back and realized that I actually
- 00:30:51just made a build of the game and not
- 00:30:52dedicated server uh so of course the
- 00:30:55feature would not be there and I I see
- 00:30:58what they're saying so what's happening
- 00:30:59is they're they're the game they're
- 00:31:03trying to do a dedicated server build
- 00:31:05and they're saying it's not starting um
- 00:31:07it's likely that they just built a
- 00:31:08client build and not a dedicated server
- 00:31:10build so that that does happen um I'm
- 00:31:13going to need some more information uh
- 00:31:16uh we'll do thanks um we'll do uh join
- 00:31:21the tester
- 00:31:23Squad under
- 00:31:25roles I do test
- 00:31:30uh from time to
- 00:31:32time well that's for me I mean I don't
- 00:31:35know other people can do that too
- 00:31:36anyways so anyone familiar with
- 00:31:38microphone nah no I am not uh trying to
- 00:31:41get the volume output my code is
- 00:31:42detecting the Spectrum analizer and
- 00:31:44returns um I'm going to just do a h not
- 00:31:47sure here uh and a thinky face because I
- 00:31:51don't know but I'm still going to look
- 00:31:54at their code because I'm curious so
- 00:31:55they've got a ready function
- 00:31:58trying to get the volume output my code
- 00:31:59is techic Spectrum analer I think but
- 00:32:01only return Zer Z when I attempt to get
- 00:32:02the frequency this is a cool problem a
- 00:32:05very cool problem I don't really know
- 00:32:06much so um if analyzer if they have an
- 00:32:10analyzer instance here uh they're
- 00:32:13getting the magnitude for frequency so
- 00:32:15they're getting the uh a magnitude for a
- 00:32:17range of frequency and it's just not
- 00:32:20printing uh return Z 0 so yeah it it you
- 00:32:25know I'm not sure I this sounds like a
- 00:32:27really cool problem though uh they have
- 00:32:29their analyzer instance
- 00:32:32um um yeah so not sure there all right
- 00:32:35so I think we've got through this and uh
- 00:32:37I'm gonna switch over to YouTube because
- 00:32:40I think we've got everybody kind of
- 00:32:43straightened out here Legion yeah man
- 00:32:45we're g to need some more info to help
- 00:32:46you out
- 00:32:47there um let's start the old video so
- 00:32:50six days ago so I haven't checked in on
- 00:32:52things in a while I have a question some
- 00:32:54have you ever tried W4 we were just
- 00:32:55talking about W4 uh how do do you think
- 00:32:58worth it to use is better option for
- 00:32:59multi honestly confused multiplayer
- 00:33:01theme I'm going to plumish my game on
- 00:33:02Steam maybe there's better option uh
- 00:33:04yeah so you can do that you can do all
- 00:33:08that stuff
- 00:33:09um I just checked on some stuff with W4
- 00:33:15and I am really excited
- 00:33:18because I come from a background with uh
- 00:33:21using um you know AWS and and and
- 00:33:24gamelift so I've used unity's multiplay
- 00:33:28I didn't get terribly deep into it
- 00:33:30because it was new and then the unity
- 00:33:31thing happened and then I switched to
- 00:33:32gdau but it's uh it looks like you can
- 00:33:36get an $800 credit so if you're into
- 00:33:39Unity check it out and I've used it it's
- 00:33:42really cool they have matchmaking they
- 00:33:44have
- 00:33:45scalability the matchmaking rules seem
- 00:33:48really customizable for whatever you're
- 00:33:51trying to do they allow you to create
- 00:33:54Unity builds and upload those builds and
- 00:33:57have you know they they will store your
- 00:33:59Builds on the server and then you can
- 00:34:01scale up to support your your matches or
- 00:34:04your game to you know host whatever
- 00:34:07backend uh you need to do with
- 00:34:09unity uh I believe they also offer some
- 00:34:13they uh at the time they didn't have
- 00:34:15certain things but I think they were
- 00:34:17going to offer
- 00:34:20additional like database
- 00:34:23storing let's see what else did they
- 00:34:27what what else they offer anyways I
- 00:34:29whatever they offered a bunch of support
- 00:34:31for things that you would need if you
- 00:34:33were a game developer and I think they
- 00:34:35were only going to grow and at the time
- 00:34:37they were still working through some of
- 00:34:39the stuff but the bottom line is you can
- 00:34:41host your backend game server there and
- 00:34:42you can scale it and you can create a
- 00:34:45Matchmaker uh and leverage that and if
- 00:34:49you don't want to get into building your
- 00:34:51own cloud infrastructure it was it it's
- 00:34:55a really cool thing like if you don't
- 00:34:56care about learning aw us and you don't
- 00:34:58want to deal with the permissions and
- 00:35:00all that stuff because there's a lot
- 00:35:01involved with it oh authentication and
- 00:35:03user authentication and and I I think
- 00:35:05they were offering that as well if you
- 00:35:07don't want to get into all that yourself
- 00:35:08and manage that which I totally get
- 00:35:11because there's a lot involved it's
- 00:35:12really hard for a beginner to come into
- 00:35:14you know a
- 00:35:16multiplayer game and that kind of thing
- 00:35:18and then be able
- 00:35:20to get into cloud and become and and
- 00:35:23have all those like gut instincts about
- 00:35:25where you need to watch out for security
- 00:35:27thing and that sort of
- 00:35:29thing there's just a lot to it and for a
- 00:35:31beginner it's a little daunting to do an
- 00:35:33AWS to do a Google red hat and that kind
- 00:35:35of thing now they do have products that
- 00:35:37are that really lower the barrier to
- 00:35:38entry and I don't want to steer anybody
- 00:35:41away from it because if you spend enough
- 00:35:43time you will get it like if yeah it's
- 00:35:45going to seem overwhelming and weird and
- 00:35:48confusing at first uh I have a few
- 00:35:50videos to hopefully make it a little bit
- 00:35:53more approachable um and then some of my
- 00:35:55videos aren't really for the beginning
- 00:35:57it might be for somebody that does have
- 00:35:59a AWS experience but just wants to learn
- 00:36:01more and I think a lot of my older Unity
- 00:36:04videos were based on cloud um Cloud
- 00:36:08products like gamelift and uh and that
- 00:36:10kind of thing we're more geared towards
- 00:36:12the more advanc user but some of the
- 00:36:15stuff I have on there like Lambda
- 00:36:16functions and Dynamo DB which is you
- 00:36:18know a really cool nosql database which
- 00:36:21I'm I'm going to do more videos on
- 00:36:23because I'm getting a lot of questions
- 00:36:24about how to store stuff and dynamoe EV
- 00:36:26is amazing and it's super cheap if not
- 00:36:27just free like for a really long time so
- 00:36:30I'm going to do some more on that and
- 00:36:32now that this I've gone off on this
- 00:36:34tangent about working with unity
- 00:36:37W4 is going to do the same thing and
- 00:36:40that's why I said all that is because I
- 00:36:42have experienced I've worked with all
- 00:36:44those products uh game lift and and and
- 00:36:48whatever this and whatever unity's
- 00:36:49version of
- 00:36:51now W4 is going to be doing that they're
- 00:36:55going to be offering cloudbased uh
- 00:36:58database uh authentication and I don't
- 00:37:00know exactly how they're going to do the
- 00:37:02auth authentication I don't know if
- 00:37:04they're just going to hook into generic
- 00:37:05oo stuff or they're going to like manage
- 00:37:07your users for you um like in AWS you
- 00:37:12can have a a Cognito server or Cognito
- 00:37:16instance and have all your you know your
- 00:37:18users there and you can do your you can
- 00:37:20add authentication through that um so I
- 00:37:25don't exactly know how their apis are
- 00:37:26going to be set up uh but but they're
- 00:37:27going to do scaling uh deploying your
- 00:37:29servers so to get back to this they're
- 00:37:33still in beta so they're not ready to go
- 00:37:36yet uh I think that yeah I I think that
- 00:37:40gdau is still like going through the
- 00:37:42growing paines now if you know anything
- 00:37:43about Linux servers I mean you can just
- 00:37:45start with any cloud service like I
- 00:37:47talked about at the beginning of the
- 00:37:48stream you can use AWS and just manage
- 00:37:50your own cluster and scale your backend
- 00:37:53accordingly as as you need to um if you
- 00:37:56put your game on
- 00:37:58Steam all that all steam is doing is
- 00:38:03let's just separate this out for a
- 00:38:04second so there's steam listing and then
- 00:38:07steam multiplayer steam listing is
- 00:38:10you're just listing your game to be
- 00:38:12available on Steam so think single
- 00:38:14player game you download the game you
- 00:38:16play the game and it's it's
- 00:38:18authenticated through your Steam account
- 00:38:20so you have a a way to track legitimate
- 00:38:23purchases that's your steam listing now
- 00:38:26steam multiplayer is
- 00:38:28P2P
- 00:38:30so you may not want a P2P game now I
- 00:38:33know that steam offers
- 00:38:36dedicated server or Anonymous hosting
- 00:38:39with their steam I have not played
- 00:38:42around with that yet I not I do not have
- 00:38:44experience with that yet but I know that
- 00:38:45those things are available so in theory
- 00:38:48you can use a dedicated server setup uh
- 00:38:51with steam I haven't played around with
- 00:38:53it so you can list your game on Steam
- 00:38:57and then use AWS to host your games back
- 00:39:00in because your game client can
- 00:39:03authenticate in Steam and then you can
- 00:39:06probably I I know you can authenticate
- 00:39:08using uh steam through gdau Steam so if
- 00:39:11you want to add gdau steam to your your
- 00:39:14gdau game which you will if you're going
- 00:39:16to list it on Steam uh your back end can
- 00:39:18use that steam credentials and
- 00:39:20authenticate to make sure that the calls
- 00:39:23or the API calls or to establish those
- 00:39:25connections are uh
- 00:39:27authorized using that steam client and
- 00:39:30those credentials uh back to your games
- 00:39:32back in regardless of where it's hosted
- 00:39:35so it can be hosted on AWS or anything
- 00:39:37like that so that was quite a bit um so
- 00:39:40I'm I'm gonna be like referred I'm going
- 00:39:42to publish the stream and I'll be like
- 00:39:43refer to this stream um W4 games I I
- 00:39:48mean definitely check them out I'm going
- 00:39:50to check them out soon uh I think we're
- 00:39:52going to maybe do a little collab or
- 00:39:53maybe I'll just do a tutorial on it and
- 00:39:56see where they're at I got to talk to
- 00:39:57them some more I'm in talks with them
- 00:39:58now a little bit um and they seem like
- 00:40:01it's promising I'm really excited about
- 00:40:04it I I think they're still kind of
- 00:40:05working through the pricing a little bit
- 00:40:07uh hopefully we see a pretty generous
- 00:40:09free tier um but yeah I um I think W4
- 00:40:13can be really good but you may want to
- 00:40:16start just hosting it somewhere else uh
- 00:40:19like on one of those Cloud providers and
- 00:40:21if you join our Discord I'm going to put
- 00:40:23a list of servers I'm actually going to
- 00:40:25write a note so I don't forget so drop
- 00:40:27by the server if you uh Discord server
- 00:40:29if you want to see a more comprehensive
- 00:40:30list of of uh resources there so I
- 00:40:32really like your tutorials wonder if you
- 00:40:34can help me start ship bridge game not
- 00:40:36sure what that means trying to figure
- 00:40:38out how to have multiple players for
- 00:40:40different for
- 00:40:41each different PCS each yeah again this
- 00:40:45goes back to that okay I have a multip
- 00:40:48backend or I have an instance that I
- 00:40:50want to spawn of different players into
- 00:40:53different scenes I don't have a solution
- 00:40:56off the top of my head head for that I'm
- 00:40:58going to have to come back to this I I I
- 00:41:01have I've had enough requests for this
- 00:41:03to do a video so I'm I'm really I'm
- 00:41:08going to refer back to what I said
- 00:41:10before is I think you can use the
- 00:41:11spawner and the visibility tools to to
- 00:41:15tackle this but I plan on doing a video
- 00:41:17on it I actually answered this question
- 00:41:20somewhere and I provided a feedback for
- 00:41:23it already um I will try to provide more
- 00:41:27information for that later so hopefully
- 00:41:30hopefully I can find something on that
- 00:41:32um but again I think that's going to
- 00:41:34require a little bit
- 00:41:36of you know massage and and shimming
- 00:41:39some things into place I I have I don't
- 00:41:42know I'm definitely going to I'm that's
- 00:41:44in the queue I'm going to do a video on
- 00:41:46that so I just don't know when so I've
- 00:41:48got a lot more right now to work through
- 00:41:50so we'll see if I can get to that um uh
- 00:41:53sooner than later now I hope to see your
- 00:41:56paid content on sites like you did me a
- 00:41:57I don't have any paid content I
- 00:42:00everything is on YouTube uh the patreon
- 00:42:03stuff I had listed some projects on
- 00:42:06there but I haven't listed for a while I
- 00:42:10I you need a machine translation
- 00:42:12function that okay so this is cool this
- 00:42:15is new I I'm not really familiar with
- 00:42:17that and I didn't know that there was a
- 00:42:19demand for that so I'm I I wonder if I
- 00:42:23can still offer it for
- 00:42:25free but then
- 00:42:28like just sticking on patreon uh I'll
- 00:42:30have to look into that yeah you know
- 00:42:32help me out if you have any more
- 00:42:33information because uh any kind of any
- 00:42:36kind of help with like that that could
- 00:42:38speed up my research would be greatly uh
- 00:42:41would be greatly appreciated and thanks
- 00:42:43for uh thanks for watching that this is
- 00:42:44the best Kau tutor multipor I've ever
- 00:42:47seen um thanks for the video uh when I
- 00:42:50join as a host the camera is jittering
- 00:42:51um cameras enabled position smoothing
- 00:42:54five pictures per second is there a
- 00:42:55solution cameras enabled of position
- 00:42:58smoothing with five pixels per second
- 00:43:00not really sure what he means
- 00:43:03there camera is enabled of position
- 00:43:06smoothing with five pixels a
- 00:43:08second are are they
- 00:43:11synchronizing yeah sometimes your camera
- 00:43:14will Jitter if you have it set up and I
- 00:43:17I've experienced this if you have it set
- 00:43:19up in a certain way I don't know I can't
- 00:43:21really detail that right now off the top
- 00:43:23of my head but I know there's a like
- 00:43:25especially in 3D worlds if your camera
- 00:43:28is nested um and maybe you don't have
- 00:43:30like a spring arm or something you could
- 00:43:32end up with some Jitters I've I've been
- 00:43:35able to get away with some of that I
- 00:43:36think by moving the by um I still put
- 00:43:40the camera underneath the player in my
- 00:43:41latest videos like especially this one
- 00:43:43this gdau 3D uh template that I've been
- 00:43:45working on and some of my older gdau 3D
- 00:43:48stuff but uh and yeah I have notic some
- 00:43:51Jitters and over time I feel like I'm
- 00:43:54getting better at it and I'm not really
- 00:43:55sure exactly what I did to get better at
- 00:43:57it maybe um you know I've added a spring
- 00:44:00arm I've added a sphere around the
- 00:44:03camera the Collision Sphere for the
- 00:44:06camera um and I I don't really
- 00:44:08experience it uh as much so um you know
- 00:44:12synchronization if you're synchronizing
- 00:44:14there another issue is Authority like
- 00:44:17maybe you're synchronizing the camera
- 00:44:19and you don't have it to set to client
- 00:44:21Authority maybe your server is fighting
- 00:44:22it that would be an extreme case I
- 00:44:24probably I don't think it's that but
- 00:44:26yeah again get back to me on that one
- 00:44:29I'm not exactly sure what to what to say
- 00:44:31with that um great tutorial wow well
- 00:44:34okay so these making the this whole
- 00:44:36making a gdau 3D uh so this playlist
- 00:44:40that I'm going through right now with uh
- 00:44:43making the video game I'm hesitating to
- 00:44:46call it a tutorial because I'm not
- 00:44:50really showing you guys how to do
- 00:44:53anything I'm showing you how I develop
- 00:44:56or how I struggle through these things
- 00:44:58and uh I'm I'm trying new things I'm
- 00:45:04experimenting going through the motions
- 00:45:06of development and and banging my head
- 00:45:07against it I I'm not able to work on it
- 00:45:10every day so I I'm struggling a little
- 00:45:12bit more like my last stream that I just
- 00:45:15wrapped up last week to this week I
- 00:45:19forgot that I had broke something and
- 00:45:22and needed to fix it still so when I
- 00:45:24jumped into the latest stream uh which
- 00:45:26will probably be out next week uh I I
- 00:45:29had some problems I think I'll cut it
- 00:45:30down in editing so it won't be as
- 00:45:32obvious but if you were on the stream
- 00:45:34yeah it was it was a little difficult so
- 00:45:36it's not really a tutorial it's just
- 00:45:38kind of me going through it and banging
- 00:45:40my head against it you can call it a
- 00:45:42tutorial for better lack of word I guess
- 00:45:44what maybe it's a a live Dev stream cool
- 00:45:48uh thank you for appreciating it I
- 00:45:52appreciate you watching it and um I'm
- 00:45:54excited that there are people that are
- 00:45:57interested in seeing that um I I'm kind
- 00:46:00of in a mode where I'm super busy with
- 00:46:02some stuff uh with some other
- 00:46:03responsibilities outside of the channel
- 00:46:05so I'm not able to do full tutorials
- 00:46:07right now but like I mentioned before
- 00:46:09there are some things I do have in the
- 00:46:11queue like W4 and multiplayer scenes and
- 00:46:14splitting those things up and that sort
- 00:46:15of thing that I want and even GD sync I
- 00:46:17want to get to um and uh I can only do
- 00:46:20so much a day so thanks for watching uh
- 00:46:23but you're saying you're interested in
- 00:46:24creating a P2P multiplayer game over the
- 00:46:25internet as as possible that one hosts
- 00:46:27the game and the PC provides the IP port
- 00:46:30of the Matchmaker like you showed your
- 00:46:31ads or you need a dedicated server
- 00:46:33always yes uh it is absolutely possible
- 00:46:37steam will do this out of the box for
- 00:46:40you so if you want to use steam they
- 00:46:44will they will allow you to you can use
- 00:46:47steam's P2P you can use the highle steam
- 00:46:50P2P apis uh this video right here is one
- 00:46:53I think this uses the Standalone Uh
- 00:46:56custom build of gdau which I wouldn't
- 00:46:58really recommend using I would stick
- 00:47:00with the I'm just seeing if I have it up
- 00:47:02already I would stick with the other
- 00:47:05steam version where it using an
- 00:47:07extension I think that's a little bit
- 00:47:09more promising um and the developer is
- 00:47:11actively developing that I think they're
- 00:47:13both developers are maintaining them but
- 00:47:15I just like the extension version rather
- 00:47:17than using a custom gdau version that
- 00:47:18just kind of smells a little funky with
- 00:47:20in terms of long-term
- 00:47:22management um but cool yeah I I think
- 00:47:26you can definitely do that with P2P uh
- 00:47:28there are ways to do it without steam so
- 00:47:32what you can do here is you can create a
- 00:47:35Matchmaker and you can have a relay that
- 00:47:39you host in AWS you can probably do that
- 00:47:42through like a Lambda function just like
- 00:47:44what whatever you're referring to I
- 00:47:45believe you're referring to my
- 00:47:46matchmaker Series so yeah if you're
- 00:47:48interested to go check that out um you
- 00:47:50don't always need a dedicated server but
- 00:47:52you need a relay server which like I
- 00:47:54just said could be like a Lambda
- 00:47:56function
- 00:47:57W4 uh GD sync
- 00:48:01and um some of the other services I
- 00:48:04can't remember top of my head do provide
- 00:48:05you PDP
- 00:48:07matchmaking uh there's another big AAU
- 00:48:09one I I keep forgetting it but um they
- 00:48:12they will provide you those relay
- 00:48:14services and they allow you to connect
- 00:48:16P2P and run that kind of thing I'm going
- 00:48:19to do a video on GD sync I believe in
- 00:48:22the next couple months I hope hopefully
- 00:48:24I can get to it uh once I get through
- 00:48:27this multiplayer template and I get to a
- 00:48:29stopping point then I'm going to try to
- 00:48:31focus on some more tutorial based videos
- 00:48:34um and at that point I will probably
- 00:48:35give you a solution to this using GD
- 00:48:37sync again you can use steam you can
- 00:48:40also
- 00:48:41use uh like a Nat punch through I think
- 00:48:44is the name
- 00:48:47netfox uh offers that through this
- 00:48:51product called nor and he's actually
- 00:48:54hosting a relay server for super cheap
- 00:48:56so take advantage of it while you while
- 00:48:58you can while it's out there for testing
- 00:49:00uh he's done a fork of something and um
- 00:49:04let's see nap punch through is not
- 00:49:07always a viable option so if you want
- 00:49:10read up about what nap punch through is
- 00:49:12I I do have some resources on that that
- 00:49:15I can also share and if you're
- 00:49:17interested read up on that but uh
- 00:49:19they're they're basically saying if you
- 00:49:20can't do that um that he's he has a
- 00:49:24different uh solution and I'm not
- 00:49:26exactly sure what it's doing behind the
- 00:49:28scenes uh you can read up on more there
- 00:49:31nap punch through Alternatives um I can
- 00:49:33try to post some followup answers for
- 00:49:36this uh and with some links if I can
- 00:49:38find it but yeah you can definitely do
- 00:49:40it that way um and I believe what you'll
- 00:49:42do is um there's two ways you can
- 00:49:46approach it off the top of my head where
- 00:49:50if you want a player connect directly to
- 00:49:53your
- 00:49:55computer I I know if I would recommend
- 00:49:57doing this for like a
- 00:49:59production like you're having strangers
- 00:50:01connect to your computer I don't know
- 00:50:04that just seems a little insecure uh I I
- 00:50:08I guess you could do it if you if you
- 00:50:10knew you were playing with your friends
- 00:50:11or maybe that is common I'm not terribly
- 00:50:15familiar with that setup because of that
- 00:50:18like weird like I'm a little sked out by
- 00:50:19having people to corre connect directly
- 00:50:21my to my computer but if you were
- 00:50:23playing with friends you didn't care or
- 00:50:26you were planning on just playing with a
- 00:50:28small group of friends or a small group
- 00:50:30uh small set of people and in this you
- 00:50:32know you didn't really care and you were
- 00:50:34telling people hey we're going to
- 00:50:36connect directly to your computer you
- 00:50:38would have to open the port on your
- 00:50:40router so that those people can connect
- 00:50:43to the game running on your local PC and
- 00:50:46then you would probably have to forward
- 00:50:48that Port I think back to your computer
- 00:50:51I think maybe not maybe that can be
- 00:50:54handled directly it depends uh on your
- 00:50:56router and your computer's configuration
- 00:50:58your firewalls configuration and that
- 00:51:00kind of thing and your even your IP or
- 00:51:02your um internet provider they they may
- 00:51:05even have some weird restrictions on all
- 00:51:06that hopefully you live in a re a region
- 00:51:09where they don't do that but anyways
- 00:51:11what other companies are doing is there
- 00:51:13uh so I guess the way just to finish
- 00:51:15that up is like the way that would work
- 00:51:17is I think you could have like a relay
- 00:51:18server where you connect to like refer
- 00:51:21like like what I did with this AWS thing
- 00:51:23where you have like a Matchmaker like
- 00:51:25relay Server Like A that a Lambda
- 00:51:27function that just spins up when you
- 00:51:28need it super low cost of any cost at
- 00:51:31all have your clients connect to that
- 00:51:35and then once you have let's say you
- 00:51:36have four people 2v2
- 00:51:38match or um and then like one guy's a
- 00:51:41host like one guy's marked as a host so
- 00:51:43he's he created the match right so he
- 00:51:46would make a call to that Lambda
- 00:51:48function uh the Lambda would uh would
- 00:51:50run and it would you you could do like a
- 00:51:53websocket approach like what I did in
- 00:51:55that video and he can be marked as the
- 00:51:57host and then what you can do is once
- 00:52:02you have everybody in the match
- 00:52:04connected and ready to go and the game
- 00:52:06is ready to start you could send them
- 00:52:09your IP address and they you can just
- 00:52:12send like a a request to okay everybody
- 00:52:15connect to that person's IP address and
- 00:52:17they would all connect to your IP
- 00:52:18address now I I don't think it's as
- 00:52:20simple as that I think there are
- 00:52:22other technical things that I just
- 00:52:25talked about that you may have to do to
- 00:52:28allow people to connect back to your
- 00:52:30server I don't want to talk to that off
- 00:52:31the top of my head because I haven't
- 00:52:34done a whole lot of work on that I have
- 00:52:36done research in the past and like I
- 00:52:37said there are some other ways to do
- 00:52:38that but you can look into that so
- 00:52:41that's like one column and then the
- 00:52:43another solution that I know off the top
- 00:52:45of my head is a relay server so I
- 00:52:48believe that's what like norray is doing
- 00:52:51uh for netfox and um there's this is
- 00:52:54what a lot of the
- 00:52:56cloud services are offering where you do
- 00:52:59have like a Matchmaker just like you
- 00:53:01know like I did with my AWS thing but
- 00:53:05instead of you giving out your IP
- 00:53:09address they just have a server with
- 00:53:11your game backend running right so
- 00:53:14there's like kind of two architecture
- 00:53:17components here there's like your
- 00:53:18Matchmaker thing and that lives in its
- 00:53:19own thing and then I mean it can be on
- 00:53:22the same server but it's cheaper to just
- 00:53:24do it as a Lambda function uh or a
- 00:53:26server Lambda is AWS product for like a
- 00:53:29serverless server so it just like only
- 00:53:31runs when you need it um and then you'll
- 00:53:33have your game server hosted somewhere
- 00:53:35else um it can be on a whole other cloud
- 00:53:38service or it can be on AWS or wherever
- 00:53:41and all it acts as is is a relay server
- 00:53:44so all your clients are still playing
- 00:53:47P2P but you have a relay server where
- 00:53:50all the connections and commands and
- 00:53:52data transfer relay are relayed through
- 00:53:55so nobody knows knows anybody's IP
- 00:53:57address you can probably do this
- 00:54:00yourself and have a you know a
- 00:54:02standalone or a relay that everybody
- 00:54:04connects to and runs the game that way
- 00:54:08and it's technically I guess PTP because
- 00:54:11you're still you know connecting to
- 00:54:14other people's uh maybe one player is
- 00:54:18like the game server and you're just
- 00:54:19using this as a relay so that you hide
- 00:54:22those IP addresses and I think maybe
- 00:54:25what I said was a little confus using
- 00:54:26cuz it sounded like I I did say that
- 00:54:29your game server would be hosted in
- 00:54:31relay but that's not accurate I think
- 00:54:33what would happen is the game itself
- 00:54:36would assign one of the people as like
- 00:54:38the host or uh this you know the true
- 00:54:41Authority and then the relay is just
- 00:54:43like a relay for the data that gets
- 00:54:45passed back and forth now that's a
- 00:54:47little technical uh I don't know off the
- 00:54:49top of my head anybody that's doing that
- 00:54:51I mean I mean I know GD sync and W4 I
- 00:54:53think and several other people are going
- 00:54:55to provide that service but if you want
- 00:54:56to do it yourself I'm sure there's
- 00:54:59probably 10 different implementations on
- 00:55:00the internet on how to run relay servers
- 00:55:03for P2P games and I don't think you need
- 00:55:05to have to you're not g to you're not
- 00:55:07going to be locked into gdau or anything
- 00:55:09you could probably make a python server
- 00:55:10or a node server and just have everybody
- 00:55:12connect to that and you somehow have to
- 00:55:15figure out how to Mark somebody as the
- 00:55:17host and make them be the you know the
- 00:55:20source of Truth for that so off the top
- 00:55:22of my head I don't know exactly how to
- 00:55:23do that but definitely look into that
- 00:55:25and I'm probably going to link to the
- 00:55:27stream to this person so they have an
- 00:55:28idea of where to go instead of leaving a
- 00:55:30lengthy comment uh great so let me go
- 00:55:35here uh hey so I tried it out mostly
- 00:55:37work okay so they done the problem is
- 00:55:38when testing three more players second
- 00:55:40player will not work for third player
- 00:55:41basically players will not be able to
- 00:55:42see the movements other players who join
- 00:55:44how do you fix this
- 00:55:47uh this sounds like an authority
- 00:55:50problem um anytime that you don't have
- 00:55:57X player seeing X thing from another
- 00:56:00player is like an authority problem um
- 00:56:04where your
- 00:56:05synchronizer either isn't set up
- 00:56:08correctly or your inputs aren't set up
- 00:56:10correctly and you're not cor you're uh
- 00:56:14you're not you know those POs the
- 00:56:17positions of the movements are the the
- 00:56:19the property the position properties and
- 00:56:21getting synced uh
- 00:56:23correctly yeah I'm going to need a
- 00:56:25little bit more information
- 00:56:26because this is a common problem I run
- 00:56:29into this problem if you've watched my
- 00:56:31stream on this making a gdo 3D
- 00:56:34multiplayer template I've ran into that
- 00:56:36problem and I fixed it and it's it's
- 00:56:39always like you're synchronizing
- 00:56:41something's wrong or you know there's a
- 00:56:43conditional missing and you just got to
- 00:56:46just got to take a step back think about
- 00:56:49what am I doing here where is this data
- 00:56:51going who has control of this data it's
- 00:56:54probably you're just synchronizing it a
- 00:56:55little in correctly but yeah uh hello
- 00:56:57what's better system for what's a better
- 00:56:59system for racing games I don't think
- 00:57:01there is a better system I I if you're
- 00:57:03referring to lag compensation with
- 00:57:06netfox um I I I I I'm guessing that netf
- 00:57:12fox will be able to handle that cuz
- 00:57:15racing is just sinking position
- 00:57:18so lag compensation is perfect for that
- 00:57:23uh I think that netf fox may have some
- 00:57:25impr improvements that will help but I I
- 00:57:29think I think that um client side
- 00:57:33prediction and server reconciliation
- 00:57:34should work fine so the algorithm client
- 00:57:37side prediction and server
- 00:57:38reconciliation is just kind of a a term
- 00:57:41we use for that algorithm where you
- 00:57:45immediately apply your players
- 00:57:47movements and at the same time you send
- 00:57:50those movements those inputs not
- 00:57:53movements but the inputs back to the
- 00:57:54server so you show the player move
- 00:57:56whether it's a car or a character and
- 00:57:59your server makes sure that it's correct
- 00:58:01and then it sends that data back to your
- 00:58:03client and your client's
- 00:58:06like or your server basically telling
- 00:58:08your client hey this is what actually
- 00:58:10happened and if that's what actually
- 00:58:12happened then you don't need to correct
- 00:58:14anything um if there was a correction
- 00:58:17and like the player was like over here
- 00:58:19like the two previous movement nodes
- 00:58:21were like this like it was like one two
- 00:58:24three right and these movement M were
- 00:58:26actually over here well then you would
- 00:58:27just reconcile that player to rerun
- 00:58:31those results in like a frame and then
- 00:58:33you would see the player kind of snap or
- 00:58:35lurp or however you want to smooth it
- 00:58:37out over to where they should be so
- 00:58:38that's kind of like what re that's what
- 00:58:40that does so when we say client side
- 00:58:42prediction we're basically just taking
- 00:58:44inputs so key mouse and keyboard inputs
- 00:58:47running them through hopefully a
- 00:58:49deterministic movement code meaning it
- 00:58:51the same code on their server and client
- 00:58:53should give the same movement output so
- 00:58:55really you should never see a problem
- 00:58:58unless you have a lag Spike and you lose
- 00:59:00data uh and maybe some data never
- 00:59:03reaches your server that's okay we can
- 00:59:05still reconcile those things maybe
- 00:59:07you're actually a little bit over to the
- 00:59:09left further than you thought you
- 00:59:11were whatever that's just you know the
- 00:59:13nature of multiplayer games uh and our
- 00:59:16internet our current internet technology
- 00:59:18so I think this algorithm should work
- 00:59:21fine I think netfox should be a good
- 00:59:23start if you are um concerned about it
- 00:59:27not working the only gotcha that I can
- 00:59:31see the only Improvement off the top of
- 00:59:32my head right now is as part of that
- 00:59:36algorithm this this client side
- 00:59:39prediction there are different aspects
- 00:59:42to it that can
- 00:59:44be exercised or implemented and it's not
- 00:59:47like there's one way to do this right
- 00:59:49there's several ways to do this there's
- 00:59:51several like improvements on how you can
- 00:59:53do this implementation of that and one
- 00:59:56Improvement and if you there's several
- 00:59:58videos on the internet about this with
- 01:00:01like unity and even gdau I think the
- 01:00:03Game Dev uh Channel I can't remember the
- 01:00:05name of it but it's like one of the big
- 01:00:07early gdau multiplayer channels he's got
- 01:00:09a ton of videos out there Game Dev
- 01:00:11Central game development Central I think
- 01:00:13that's the name of the channel go watch
- 01:00:15their series there's like 20 videos
- 01:00:17they're not very long just go watch all
- 01:00:19of them if you're really interested
- 01:00:20because it's very helpful I think
- 01:00:22everybody's watched them
- 01:00:24um and uh I think I've even linked to
- 01:00:27them at the in the description of this
- 01:00:29video
- 01:00:31but one of the things that he does that
- 01:00:34netf fox doesn't is there's a uh this
- 01:00:39capability where your player is rendered
- 01:00:43in current time but everybody else has
- 01:00:46rendered 100 milliseconds in the past
- 01:00:49and they claim in that channel that
- 01:00:52that's industry standard I've read in
- 01:00:54multiple places that that's actually
- 01:00:56true so your competitive first-person
- 01:00:58games will render all the players 100
- 01:01:01milliseconds behind and the idea is that
- 01:01:03you don't really notice that as a human
- 01:01:05like you're not going to really see that
- 01:01:07currently net Fox I don't
- 01:01:11believe renders all the other people 100
- 01:01:14milliseconds they render them as fast as
- 01:01:17possible um and I think what that 100
- 01:01:20millisecond render in the past will do
- 01:01:22is it gives you a buffer of 100
- 01:01:24milliseconds no no matter what the lag
- 01:01:27is you always have a 100 millisecond lag
- 01:01:31that's baked in that won't be noticeable
- 01:01:33so any So This Server reconciliation
- 01:01:36part should be much smoother because
- 01:01:39you're going to have less error
- 01:01:40correction because you give yourself
- 01:01:42that 100 millisecond buffer no matter
- 01:01:45what for all the other players in your
- 01:01:46game right so if you have a 10 V10 match
- 01:01:49you are going to see yourself in current
- 01:01:51time but everybody else is going to be
- 01:01:53100 milliseconds behind and that's not
- 01:01:55really enough time for you to miss those
- 01:01:57like head shot calculations uh so and
- 01:02:00again those are all going to be
- 01:02:02calculated should be calculated on your
- 01:02:03server and then corrected and reconciled
- 01:02:06if if it was actually happening on the
- 01:02:08client now there are some serious
- 01:02:10improvements and optimizations to this
- 01:02:13algorithm I believe valve or not valve
- 01:02:15was it valve yeah whoever call
- 01:02:17Counterstrike people uh I think it was
- 01:02:19Val um I believe they have a even I I
- 01:02:24don't know if it was Counter-Strike
- 01:02:25there is some game out there that I just
- 01:02:26saw an article on I have it linked
- 01:02:28somewhere I might go dig it up but they
- 01:02:31made additional improvements to this to
- 01:02:34those twitch you know firstperson games
- 01:02:37uh recently that are supposed to be
- 01:02:40really even more accurate and it's it's
- 01:02:43about when you take time stamps and how
- 01:02:46accurate that time stamp is and how
- 01:02:49accurate your lag compensation is
- 01:02:51because it's not an exact science it it
- 01:02:55is a
- 01:02:56best case scenario you're making an
- 01:02:58algorithm to handle the generic you know
- 01:03:01the general Public's network connections
- 01:03:03and how you reconcile those those lags
- 01:03:06uh between uh or or the um the delay and
- 01:03:09latency uh between all those connections
- 01:03:12so anyways that's a mouthful for such a
- 01:03:14simple question but I think this should
- 01:03:16be fine I'm going to try to post some
- 01:03:18more links to this later and let's get
- 01:03:21going through
- 01:03:23this um
- 01:03:27chat GPT if I get uh is to check the
- 01:03:31peers Authority and compare it with the
- 01:03:33current peers network ID this makes it
- 01:03:36possible for example to perform beh only
- 01:03:38uh on or from the peer initiating action
- 01:03:41what's the difference between RBC call
- 01:03:42local because this is case we're making
- 01:03:44sure that annotated method is called
- 01:03:46we're also making sure that the
- 01:03:48annotated method is called only on the
- 01:03:50client that initiated the RPC call
- 01:03:53asking chat GPT I've never asked chat
- 01:03:55GPT I I can't imagine chat GPT is just a
- 01:04:01language they don't the AI doesn't know
- 01:04:04these answers it's just a language
- 01:04:07whatever that is called processor that
- 01:04:09just puts the next word in front uh if
- 01:04:13get multiplayer Authority is equal to
- 01:04:15yeah that's how you
- 01:04:17get is this
- 01:04:19client is
- 01:04:21this instance of my player what if it's
- 01:04:24on my machine or the server someone's
- 01:04:26else machine you're
- 01:04:28checking is the authority equal to that
- 01:04:30Pier so this is good for if you're
- 01:04:33checking to see is it client side
- 01:04:35Authority or you know which this is a
- 01:04:38good check to make sure that we don't do
- 01:04:41things on the wrong Pier like this is
- 01:04:45where if you want to make sure that
- 01:04:47inputs are
- 01:04:48only produced from my authority my
- 01:04:52client Authority this is like a good
- 01:04:53check for that um and that that's what
- 01:04:56they're saying that's what they're
- 01:04:57saying uh but for example uh to perform
- 01:05:00only from the period initiate the action
- 01:05:02right so what's difference between that
- 01:05:05and call local call
- 01:05:08local
- 01:05:10is an an annotation uh or a parameter to
- 01:05:14this annotation that means that you can
- 01:05:18also call to the
- 01:05:21local Pier that's that's initiating the
- 01:05:24RPC call so if if you're on a
- 01:05:27client and you make an RPC call by
- 01:05:29default it should call to all other
- 01:05:33clients by
- 01:05:34default and if you add call except for
- 01:05:38the one you're on right so your RPC is
- 01:05:40just like send a message everybody
- 01:05:42except myself like the default RPC
- 01:05:44implementation um now if you add call
- 01:05:47local it says call everybody else and
- 01:05:50myself
- 01:05:53so I'm not really sure
- 01:05:56I mean other than we're making sure the
- 01:05:58ant is call for only on the client that
- 01:06:00initiated it I'm not exactly sure what
- 01:06:04the use case is um these are really good
- 01:06:07questions and I think this is just part
- 01:06:09of multiplayer development is you know
- 01:06:11you've it's really confusing and you the
- 01:06:15tools that you use tend to differ
- 01:06:17slightly they're very similar between
- 01:06:19engines but um they do differ slightly
- 01:06:22where like they don't translate exact
- 01:06:24and like Unity has like much more
- 01:06:26powerful uh tools for certain parts
- 01:06:29about multiplayer and that gdau doesn't
- 01:06:31have yet and uh but we'll get there and
- 01:06:34uh yeah there's a whole there
- 01:06:36aren't many Service uh many videos or
- 01:06:40resources out there in multiplayer which
- 01:06:41is why you know I'm I'm doing this netf
- 01:06:44fox have oh we got a netfox question
- 01:06:46about C well I have netf Fox
- 01:06:49open uh GD script GD script so I don't
- 01:06:54think they support C
- 01:06:56yeah it's just a GD script extension I
- 01:06:59don't think they have support for that
- 01:07:01yet hey netfox you got to list your
- 01:07:04Discord on here they've got a Discord
- 01:07:06now um so here's
- 01:07:10netfox uh Discord and uh Discord let's
- 01:07:14do that I don't think they'll mind I'd
- 01:07:18be curious how character date and items
- 01:07:19inventory play I'm work go oh yeah yeah
- 01:07:22so um I'm definitely planning on I'm
- 01:07:25doing more I I'm yeah saving things to
- 01:07:29the database player logins there are so
- 01:07:32many different services to approach this
- 01:07:34like where do I start well I'm probably
- 01:07:36going to start with steam because
- 01:07:38everybody lists their game on Steam
- 01:07:40steam authentication should be pretty
- 01:07:43straightforward I got a heart face so um
- 01:07:48let's just leave a heart back and you
- 01:07:50know I there's so many ways to do
- 01:07:52databases I mean that's what you mean by
- 01:07:54inventories you know synchronizing we're
- 01:07:55going to get to that I do play to make
- 01:07:57MPL game and I have a question if
- 01:07:58someone's data M the code would they
- 01:07:59find out secrets that that only the
- 01:08:02server
- 01:08:03executes for example when the secret
- 01:08:05boss trigger is possible um yeah if you
- 01:08:09if you deploy if you build your if your
- 01:08:14server code is with your client code
- 01:08:17which right now I've been doing just for
- 01:08:20all my demos just because I think that's
- 01:08:23a little bit more advanced um
- 01:08:26and I just haven't had the time to do a
- 01:08:28separate video on that but if you are
- 01:08:31serious yeah you can structure your game
- 01:08:34in a way that's slightly different where
- 01:08:36you have your server code especially if
- 01:08:39you're if you're using highle
- 01:08:42apis it may be a little harder to get
- 01:08:46away with this like the the built-in
- 01:08:48gdau highle multiplayer apis and maybe
- 01:08:51not but the idea is that you would have
- 01:08:53your server code
- 01:08:56separate from your client code meaning
- 01:08:58you're not going to have shared server
- 01:09:02code in the same file
- 01:09:05so the better way to do it okay so
- 01:09:08there's a couple different ways you can
- 01:09:09have separate projects you can have a
- 01:09:10client in a server but if you're using
- 01:09:12highle apis that's going to be difficult
- 01:09:14because you're what you're going to have
- 01:09:15to do is make sure is that you manage
- 01:09:18the paths that your project is
- 01:09:21structured because your rpcs and your
- 01:09:23synchronizations are going to look for
- 01:09:25that node path and those must be
- 01:09:26identical so if you have uh a player
- 01:09:30object or some World object and in there
- 01:09:33there's a synchronizer or an RPC
- 01:09:35wherever that node and script that that
- 01:09:38rpz exists on has to be identical path
- 01:09:43on both client server or else it won't
- 01:09:45work like player slash input slash
- 01:09:49player synchronizer that same path must
- 01:09:52be the same if you're going to if you're
- 01:09:54going to have an RPC there even if you
- 01:09:56don't use that RPC on your client I'm
- 01:09:58pretty sure that if you read the gdau
- 01:10:00documentation which I was looking at
- 01:10:01yesterday or the day before uh that was
- 01:10:03one of their big warnings that they had
- 01:10:06maybe that will change in the future the
- 01:10:08next thing to consider so that was like
- 01:10:09separate projects the next thing to
- 01:10:11consider is um you can do separate
- 01:10:16projects but don't use the high level
- 01:10:17multiplayer apis meaning you're using
- 01:10:19the lower level maybe you have a UDP
- 01:10:21connection maybe TCP um and you're just
- 01:10:25going to be connecting to some server
- 01:10:28then you're not using highle apis at
- 01:10:30that point you're just sending data then
- 01:10:33then you can manage it however you want
- 01:10:35you don't have to worry about paths
- 01:10:37being the same because you're just
- 01:10:38sending data to some end point or some
- 01:10:42through some socket through some
- 01:10:43connection and then that you know server
- 01:10:46or client whatever respectively just
- 01:10:48knows how to process that data because
- 01:10:49you have to build all that um that's
- 01:10:52message sending and that's a whole other
- 01:10:54thing I haven't gotten to that yet
- 01:10:55eventually I plan on doing that and then
- 01:10:57you can separate out your client server
- 01:10:59and that's probably a lot easier you can
- 01:11:01also have another option is to have a
- 01:11:03shared project with your network code
- 01:11:06that both projects use that way you
- 01:11:08don't have to worry about the paths
- 01:11:09lining up because you built a separate
- 01:11:12like module or extension or something
- 01:11:14for your game that both games inherit
- 01:11:16from now there's complexities and those
- 01:11:18things that I've named because now
- 01:11:20you're managing separate projects you're
- 01:11:22you got to make sure things are imported
- 01:11:23correctly and you have to make sure that
- 01:11:24if you a shared project that you
- 01:11:27maintain the same version between the
- 01:11:28client server because if you don't then
- 01:11:30they're going to mismatch maybe you have
- 01:11:31some logic in one that you didn't share
- 01:11:33in the other okay so that's separate
- 01:11:35projects another way to do it is to
- 01:11:36handle it in different folders where you
- 01:11:38have like a client folder or a client
- 01:11:40folder section and you have a server
- 01:11:42folder section and then when you do your
- 01:11:43dedicated server build or you build your
- 01:11:45clients uh for hosting on Steam for
- 01:11:49example you just exclude the server
- 01:11:52folders for your client builds and
- 01:11:54that's what I would recommend recommend
- 01:11:55doing or you can exclude specific files
- 01:11:59um I don't think
- 01:12:03that when I was talking about how RPC
- 01:12:06paths have to uh be in the same path I
- 01:12:08don't think you need to have the server
- 01:12:11version of that like if you had um
- 01:12:15trying to think what I'm trying to say
- 01:12:16so if you call an RPC from a server file
- 01:12:19that should only really be called from
- 01:12:21the server I don't know if that same
- 01:12:23file has to exist on your client as as
- 01:12:25well um I I'm I'm guessing no the way
- 01:12:30I'm thinking about it like so if you had
- 01:12:31like all your server rpcs in one file um
- 01:12:34for like your player I don't think that
- 01:12:37you necessarily have to have those on
- 01:12:39the client but if you do just don't put
- 01:12:41any logic in those like let's say you do
- 01:12:45have to have those rpcs um on both
- 01:12:48client server you could have like a a
- 01:12:50shared file that will have your RPC
- 01:12:53stubbed out but just don't put your
- 01:12:55server logic in there like for example
- 01:12:58if a
- 01:13:01player if you have a secret and you have
- 01:13:06a client side um well technically what I
- 01:13:09would do is I would so for this
- 01:13:13example I think you would have like some
- 01:13:16object that maybe only exists on your
- 01:13:18server like maybe you can find a way to
- 01:13:20not you know put like if you when you
- 01:13:22ship your client don't put that object
- 01:13:25there and that object would have a ont
- 01:13:28trigger effect through you know on
- 01:13:31bodybody collision or on body Ender or
- 01:13:33something like that and your server I
- 01:13:35mean you can have it on the client
- 01:13:37that's fine whatever you just ignore it
- 01:13:38but on the server side when that trigger
- 01:13:41happens call to some function and then
- 01:13:44have that function uh make an RPC call
- 01:13:48to that or or do some action and that is
- 01:13:52only on the server and because you you
- 01:13:55excluded those files from your client
- 01:13:56build um I'm going to I'm rambling a lot
- 01:13:59about this but I think the best way to
- 01:14:01do this is to experiment try something
- 01:14:03really easy where you create a build for
- 01:14:07your client and exclude your server uh
- 01:14:10the server files or scripts that are
- 01:14:13going to actually do the secrets and so
- 01:14:16if they do data mind your client all
- 01:14:19they're going to see is maybe a
- 01:14:22collision that makes an RPC call to the
- 01:14:24back end and or I wouldn't even do it
- 01:14:27that way if you're trying to be super
- 01:14:28secretive you could still have the
- 01:14:30Collision but it just doesn't do
- 01:14:31anything on the client maybe just
- 01:14:32ignores it and then you you can manually
- 01:14:35you can do a detect yeah I'm kind of
- 01:14:37thinking out loud here um if you're if
- 01:14:41you're I guess maybe I don't know how
- 01:14:44you would not be able to not put that on
- 01:14:46the client but you could have a check
- 01:14:49that's
- 01:14:51like if
- 01:14:53server uh
- 01:14:55only uh only add this uh signal only
- 01:14:58connect the signal the on enter body
- 01:15:00signal if it's on a server so like if
- 01:15:03Authority you know only add this signal
- 01:15:06so maybe that you wherever that signal
- 01:15:10lives is in another script and nobody
- 01:15:13knows what that signal does and you just
- 01:15:15exclude that script from the server uh
- 01:15:17from the client build and you only use
- 01:15:19that uh script on the server so that
- 01:15:22could totally so you can you still might
- 01:15:24have to have like some of the initial
- 01:15:26setup that could be exposed so people
- 01:15:27maybe people would see that you know I
- 01:15:30don't know you're going to have to work
- 01:15:31through this and really figure that out
- 01:15:32I like this problem and I think I would
- 01:15:35like to do a video on this eventually um
- 01:15:39so I'm gonna actually just write a note
- 01:15:41so I don't forget to do it and the last
- 01:15:44one I'm going to look at
- 01:15:46today got stuck on the jump stuff yeah
- 01:15:50so what's happening is jump jump can be
- 01:15:54handled different ways like in various
- 01:15:57approaches over the last year and maybe
- 01:16:01I've used an RPC for some of my jumps
- 01:16:03maybe I use a sync variable for some of
- 01:16:05my jumps uh the input type has changed
- 01:16:08from you know on pressed to get strength
- 01:16:12get input strength uh it really depends
- 01:16:14on what you're trying to do with jump
- 01:16:16and I think in in this tutorial I the 3D
- 01:16:21tutorial the jump mechanisms there I I
- 01:16:23like a little bit better um and and I'm
- 01:16:26actually doing State machine jump right
- 01:16:29now with this and one of the things I'm
- 01:16:31addressing in this stream and not part
- 01:16:34four but I guess part five which will
- 01:16:35come out next week is the actual
- 01:16:37implementation of the jump Logic the
- 01:16:40start of the jump logic so I don't have
- 01:16:42it finished but I think what jump will
- 01:16:44be split up into is jump up and then a
- 01:16:48fall state so you know you're going to
- 01:16:52move to the jump up state or jump state
- 01:16:54by hitting space bar but then you have
- 01:16:56to fall down and that should be like a
- 01:16:59different state should be a different
- 01:17:00animation because fall State can happen
- 01:17:03if you just run off a ledge so if you
- 01:17:04detect that you're falling down change
- 01:17:07your player if not on ground oh you're
- 01:17:10in Fall state or if you jump up then
- 01:17:12transition to a fall State until you hit
- 01:17:14the ground and then once you're on
- 01:17:15ground again then you move back to idle
- 01:17:17or moving or run or walk state or
- 01:17:19whatever uh so I think that's kind of
- 01:17:22covers what's going on with this but
- 01:17:24yeah you're going to have to do some
- 01:17:25stuff the the do jump thing that I did
- 01:17:27in in this
- 01:17:29example may not be the best you might
- 01:17:32find some improvements I'm sure there's
- 01:17:34an improvement on it I just need I
- 01:17:35wanted to have something just really
- 01:17:36basic working so yeah there's definitely
- 01:17:38some more work to be done there all
- 01:17:40right well I'm I'm going to wrap up with
- 01:17:42these couple comments here and thanks
- 01:17:44for coming by I'm just going to get
- 01:17:45through these uh questions really quick
- 01:17:48and then I'm going to bail uh and uh
- 01:17:52yeah this was good um appreciate you
- 01:17:54stopping by uh so this person was saying
- 01:17:57uh they had a
- 01:17:59typo uh when they were doing the what
- 01:18:03was I saying did you select the dedicate
- 01:18:05oh here we go today I tested Brack's
- 01:18:07game with pgp over steam with the friend
- 01:18:09Connection work perfectly I got
- 01:18:10thousands of strange warnings yeah yeah
- 01:18:13I opened that um so yeah thanks for that
- 01:18:17guys uh and uh so I'm I'm I'm done with
- 01:18:21Discord for today uh and this person was
- 01:18:23asking about uh
- 01:18:26uh they were saying the zooms were a
- 01:18:27little Annoying and yeah I totally get
- 01:18:29it uh can uh but I got something good
- 01:18:32things I can spawn and hit kill
- 01:18:33multiplayer enemies but anybody join
- 01:18:34later he will see enemy ghosts enemy but
- 01:18:36if anyone joins later he will see enemy
- 01:18:38ghosts
- 01:18:41um yeah I think I think you have to
- 01:18:44despawn from the server um yeah I think
- 01:18:48there's a way to despawn off the top of
- 01:18:50my head I think you just uh I think you
- 01:18:52can Q free on the server and that should
- 01:18:55do it
- 01:18:59um yeah you basically have to remove
- 01:19:01them I think you have to do a despawn by
- 01:19:03running a q free all right so let's see
- 01:19:08what else kind of I think I had some
- 01:19:13more yeah I'm I'm not going to do nakama
- 01:19:17anytime soon I I
- 01:19:19I I really it's really expensive uh and
- 01:19:23it it looks really good and it looks
- 01:19:25really feature like when I say good I
- 01:19:28just mean it the feature sets seem
- 01:19:30pretty strong and I think it's a a
- 01:19:32really comprehensive uh multiplayer
- 01:19:35solution I just don't I think it's going
- 01:19:37to be a while before I get to them um
- 01:19:40there was a multiplayer there's another
- 01:19:43big gdau YouTuber um he just did a
- 01:19:46nakama server I don't know if it's
- 01:19:49public though so I would check I would
- 01:19:53look around for that I don't have his
- 01:19:56channel on the top of my head right now
- 01:19:58but yeah I would I would just check to
- 01:20:00see if um man I wish I could wish I
- 01:20:04could post to that really quick um what
- 01:20:08was his name oh oh fine point
- 01:20:12CGI fine
- 01:20:15point CGI yeah you know I'm not GNA be
- 01:20:18able to get to everything but maybe
- 01:20:19somebody else did um so yeah you guys
- 01:20:22just uh bunch YouTubers out there doing
- 01:20:25some good stuff so all right I think I
- 01:20:27think I got through everything all right
- 01:20:28well that was a good stream uh I'm glad
- 01:20:31I got I got you some help today um I
- 01:20:34gotta finish up replying to some of
- 01:20:35these folks but I'm gonna sign off now
- 01:20:39and I'm gonna start streaming I'm going
- 01:20:42to try to stream more regularly
- 01:20:44throughout the week just to get this
- 01:20:46template wrapped up
- 01:20:49and uh move on to the next thing and I'm
- 01:20:52going to try to just stream my
- 01:20:53development process a little a little
- 01:20:54bit more and uh try to get used to that
- 01:20:57setup thank you so much for coming by
- 01:20:59and uh stay connected and we'll uh we'll
- 01:21:02talk soon
- multiplayer
- servidores de jogos
- AWS
- Docker
- otimização de jogos
- cloud computing
- game development
- desenvolvimento de jogos
- personalização de personagens