Godot Multiplayer Q&A | Live

01:21:07
https://www.youtube.com/watch?v=YMdYD-3jMFA

概要

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.

収穫

  • 💡 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.

タイムライン

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

もっと見る

マインドマップ

Mind Map

よくある質問

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

ビデオをもっと見る

AIを活用したYouTubeの無料動画要約に即アクセス!
字幕
en
オートスクロール:
  • 00:00:00
    okay so today I'm going to do something
  • 00:00:01
    different we are uh going to look at
  • 00:00:05
    some questions that the Discord folks
  • 00:00:08
    have been asking about and I figured I
  • 00:00:10
    might as well just do this on stream in
  • 00:00:12
    case somebody else wants to hear the
  • 00:00:15
    answer to those questions uh so I'm
  • 00:00:16
    going to go through a couple things in
  • 00:00:18
    my Discord and there are about 15
  • 00:00:23
    comments on YouTube I got to get through
  • 00:00:25
    so let's just do it together today and
  • 00:00:27
    see how it goes and if you have any
  • 00:00:28
    questions if you're on uh let me know
  • 00:00:32
    and I will do my best to at least
  • 00:00:34
    investigate them or try to try to get
  • 00:00:37
    you pointed in the right direction if I
  • 00:00:39
    can so Nova Leaf uh you've been looking
  • 00:00:42
    at you've been making something custom
  • 00:00:44
    and it looks like you're doing some kind
  • 00:00:45
    of Destruction uh mechanisms you've been
  • 00:00:48
    building it yourself I've been watching
  • 00:00:50
    your updates over the last few weeks um
  • 00:00:52
    looks like you are making progress I did
  • 00:00:54
    check this out the other day
  • 00:00:57
    um I just wanted to check in on this
  • 00:00:59
    again and see
  • 00:01:04
    that pretty cool I don't I don't know
  • 00:01:08
    where you're going with this or where
  • 00:01:09
    he's going with this but it it looks
  • 00:01:11
    cool um I'm excited to see what what
  • 00:01:14
    what ends up coming of this so anyways
  • 00:01:16
    Nova if you end up stopping by let me
  • 00:01:18
    know um we got a couple more followers
  • 00:01:21
    it looks like since the last stream
  • 00:01:23
    looks like I got three three to four
  • 00:01:25
    more so we're almost at that 20 Mark
  • 00:01:27
    goal so if you guys are in the channel
  • 00:01:29
    and you want to support us uh please
  • 00:01:32
    give us a follow so we got ebi um wanted
  • 00:01:35
    to purchase a virtual private server is
  • 00:01:39
    that what that means I usually I'm
  • 00:01:41
    usually refer to that VPC uh virtual
  • 00:01:44
    private Cloud but I guess virtual
  • 00:01:46
    private server um they want to run a
  • 00:01:48
    build for multiplayer
  • 00:01:50
    game so that's something
  • 00:01:53
    like what kind of server configuration I
  • 00:01:56
    need all right well that is like Nova
  • 00:01:59
    said that's
  • 00:02:00
    that's really hard
  • 00:02:02
    to narrow down exactly what type of
  • 00:02:05
    server you would need I would say that
  • 00:02:07
    you could probably get away with
  • 00:02:10
    starting out because because it sounds
  • 00:02:13
    like you're starting out just start with
  • 00:02:15
    a bare minimum server pick any cloud
  • 00:02:18
    service that allows you to host Linux um
  • 00:02:22
    so I guess maybe I could I'm going to
  • 00:02:24
    reply to this person in real time um so
  • 00:02:27
    I you know I would say use any cloud
  • 00:02:31
    provider like AWS that's what I'm
  • 00:02:34
    familiar with um or whatever and spin up
  • 00:02:39
    the smallest uh Linux Linux server um
  • 00:02:45
    build your game as a dedicated server
  • 00:02:51
    and run it there uh this is great for
  • 00:02:55
    testing I've done I've launched probably
  • 00:02:58
    a million instances
  • 00:03:00
    in my career and they are very handy you
  • 00:03:04
    can SSH to them you can run commands to
  • 00:03:06
    them you can monitor them uh with a with
  • 00:03:08
    the cloud infrastructure like AWS AWS is
  • 00:03:11
    a behemoth it's this massive product but
  • 00:03:16
    there are some cheap ways with it like
  • 00:03:18
    if you sign up you you can have you get
  • 00:03:21
    like what was it um was it 500 hours I
  • 00:03:23
    think it was like 500 hours a month of
  • 00:03:25
    runtime so if you're new Game Dev and
  • 00:03:28
    you just want to spin up a VPC for free
  • 00:03:30
    uh yeah you got to have a credit card
  • 00:03:32
    but consider consider looking at uh you
  • 00:03:36
    know that kind of thing I I'm not
  • 00:03:38
    plugging for AWS by any means but it's
  • 00:03:40
    just what I know so I'm going to just
  • 00:03:42
    transfer some knowledge but if you like
  • 00:03:44
    a better cloud provider please check
  • 00:03:46
    that out there are other services so I
  • 00:03:50
    have an internal document of resources
  • 00:03:54
    that I'm I'm just jotting down and I I
  • 00:03:58
    guess I can share some of this
  • 00:04:00
    but there are several different Services
  • 00:04:05
    out there like I have AWS just kind of
  • 00:04:07
    commented in the middle um from W4 which
  • 00:04:10
    is a gdau specific product that is in
  • 00:04:14
    very early beta and it is invite only or
  • 00:04:18
    on request only and as a side note I
  • 00:04:20
    actually just got access to it so I'm
  • 00:04:22
    super excited to get into that um
  • 00:04:26
    looking forward to see what comes at and
  • 00:04:27
    I'll probably do some videos covering
  • 00:04:29
    the W4 for folks cuz that those are made
  • 00:04:31
    by like gdau senior gdau members and
  • 00:04:33
    Silent wolf was something I just
  • 00:04:35
    discovered the other day uh you could
  • 00:04:37
    probably host it looks like a back-end
  • 00:04:39
    service there they
  • 00:04:41
    are doing this out of their own dime so
  • 00:04:45
    they're going to do it until they can't
  • 00:04:46
    do it anymore so if you're making a game
  • 00:04:48
    that isn't going to be a big deal on the
  • 00:04:50
    back end you can probably get away with
  • 00:04:51
    using these guys for a little bit uh I
  • 00:04:53
    actually like that idea I was thinking
  • 00:04:55
    about running my own backend service
  • 00:04:57
    like this where you just throw up a you
  • 00:04:58
    know dedicated Linux server you have a
  • 00:05:00
    nice interface um if you want me to make
  • 00:05:02
    that for you guys for maybe like low
  • 00:05:04
    cost or something let me know um cuz I
  • 00:05:07
    was considering doing that as a side
  • 00:05:09
    project uh GD sync is another one but
  • 00:05:11
    they're PD P2P only so that that really
  • 00:05:14
    doesn't uh work here in that situation I
  • 00:05:17
    don't believe this question was P2P
  • 00:05:20
    related digital ocean of course heroic
  • 00:05:22
    Labs but hero glavs is really expensive
  • 00:05:26
    I don't know how good their free tier is
  • 00:05:29
    play Cloud flow so you get a oneclick
  • 00:05:31
    server a 1 hour session for free
  • 00:05:36
    hostinger and uh Microsoft of course
  • 00:05:40
    yeah so I I really I really think that
  • 00:05:43
    this is the best way to do it though
  • 00:05:44
    just start small um run a couple tests
  • 00:05:47
    with whatever I don't know what type of
  • 00:05:48
    game like some people run multiple
  • 00:05:51
    instances of their backend server on a
  • 00:05:53
    single instance and there's nothing
  • 00:05:55
    wrong with that as long as it can handle
  • 00:05:57
    it as long as whatever instance you have
  • 00:05:58
    and some of these Services I've been
  • 00:06:01
    covering will probably vary in the
  • 00:06:05
    resources like your compute you know how
  • 00:06:07
    much uh the processor right so like
  • 00:06:10
    compute and uh RAM and memory and that
  • 00:06:12
    kind of thing how much hard drive or
  • 00:06:15
    virtual storage do you have how much
  • 00:06:18
    input and output can you transfer right
  • 00:06:20
    so there's gigabyte limits likely for
  • 00:06:23
    each one of these servers so consider
  • 00:06:25
    that when you're weighing in the costs
  • 00:06:28
    and look at each one of these services
  • 00:06:30
    to make sure that it's it's going to
  • 00:06:32
    make sense for your uh for whatever your
  • 00:06:35
    game is so if you are
  • 00:06:37
    running five instances of your backend
  • 00:06:40
    server because you want to have five
  • 00:06:42
    instances of your game or five maybe
  • 00:06:44
    matches maybe you have like a match
  • 00:06:46
    maker Style game uh that that could work
  • 00:06:49
    too and you know start with that run
  • 00:06:52
    some performance tests and just see how
  • 00:06:55
    much you know run a I can't remember on
  • 00:06:58
    top of my head if I remember I'll say it
  • 00:06:59
    but anyways you can manage or uh capture
  • 00:07:02
    like a performance snapshot of your
  • 00:07:04
    instances some of those Services may not
  • 00:07:06
    give you access to that some of them
  • 00:07:09
    might I know AWS does you can see like
  • 00:07:11
    your maximum CPU usage and if it looks
  • 00:07:14
    like you're never hitting that on those
  • 00:07:16
    small T2 instances right when you start
  • 00:07:17
    out with AWS they give you that the free
  • 00:07:21
    instances are like T2 micros and you
  • 00:07:24
    might never hit the max memories or
  • 00:07:26
    anything like that for whatever your
  • 00:07:28
    game is so um and like I said it it
  • 00:07:31
    really depends on the how you're running
  • 00:07:33
    your game are you running a static world
  • 00:07:34
    or a persistent world where it's going
  • 00:07:37
    to be running all the time or is it
  • 00:07:39
    going to be match based where maybe you
  • 00:07:41
    don't want to have a server running all
  • 00:07:42
    the time and you spin it up because you
  • 00:07:44
    have this Matchmaker process um I was
  • 00:07:47
    thinking about building an
  • 00:07:49
    architecture kind of an example for the
  • 00:07:52
    game I'm working on uh the that I
  • 00:07:54
    started during the game Jam where you
  • 00:07:56
    have like a
  • 00:07:58
    Matchmaker that
  • 00:08:00
    spins up ec2 instances which are under
  • 00:08:03
    AWS right if somebody joins and they a
  • 00:08:07
    match is made so they find somebody else
  • 00:08:09
    wants to play then at that point we spin
  • 00:08:11
    up an ec2 server on demand because if if
  • 00:08:15
    you just have an ec2 server running
  • 00:08:17
    you're going to blow through your free
  • 00:08:18
    tier and if you don't have a free tier
  • 00:08:19
    well either way you're going to have
  • 00:08:22
    charges that will accumulate because
  • 00:08:24
    you're just going to have that ec2
  • 00:08:26
    instance waiting for people to play
  • 00:08:28
    games on even though you're not even
  • 00:08:30
    using it so that's if you just want to
  • 00:08:33
    have a really quick access like if you
  • 00:08:35
    have funding or something maybe I can
  • 00:08:36
    consider doing that but if you don't
  • 00:08:38
    have funding and you're doing this out
  • 00:08:39
    of your own dime you know consider
  • 00:08:40
    making an architecture like that where
  • 00:08:42
    you spin up an instance and I think we
  • 00:08:45
    can get away with it now
  • 00:08:47
    because those ec2 instances spin up
  • 00:08:50
    really fast now like before it would
  • 00:08:52
    take like five minutes but those T2
  • 00:08:54
    micros spin up super fast and there
  • 00:08:56
    might even be more like um
  • 00:09:00
    what's it like serverless style AWS
  • 00:09:03
    resources I think they're going to be
  • 00:09:04
    more expensive they're a newer
  • 00:09:06
    technology and I haven't had a chance to
  • 00:09:08
    play around with it so I do want to look
  • 00:09:09
    into those one day and see if uh that's
  • 00:09:13
    something that is realistic or as
  • 00:09:15
    affordable because then you just tell it
  • 00:09:17
    you can hone in on exact on the exact
  • 00:09:21
    resources that you want like I need you
  • 00:09:22
    know three c v virtual CPUs and this
  • 00:09:26
    much RAM to handle this my resources so
  • 00:09:28
    you can really dial it in and I I think
  • 00:09:31
    I mean you can kind of do that with the
  • 00:09:32
    Standalone instances but I think they
  • 00:09:34
    have these more resource based models
  • 00:09:38
    with some of their stuff um I think ECS
  • 00:09:40
    is like a scalable product that they
  • 00:09:42
    offer that might off might have that but
  • 00:09:45
    I don't know if they offer that
  • 00:09:45
    Standalone I'd have to look that up it's
  • 00:09:47
    been a couple years since I've seen that
  • 00:09:50
    so yeah so a small VPS this guy's this
  • 00:09:53
    guy uh this person is correct um you're
  • 00:09:56
    out five bucks and the thing that's nice
  • 00:09:58
    about these so AWS is nice and you have
  • 00:10:01
    a limited amount of hours that you get
  • 00:10:02
    for free I think I said it was 500 free
  • 00:10:05
    tier and I think that'll give us right
  • 00:10:08
    into right into what we want let's
  • 00:10:12
    see
  • 00:10:16
    free oh I was way I was lowballing it
  • 00:10:19
    it's 750 hours for the first 12 months
  • 00:10:23
    per month so you get 750 hours of
  • 00:10:25
    runtime
  • 00:10:27
    so um if you're if you're testing 40
  • 00:10:31
    hours a
  • 00:10:32
    week uh 4 8 12 I mean you're not even
  • 00:10:35
    going to hit that if you tested if you
  • 00:10:38
    ran that server if you had like a day
  • 00:10:40
    job or something you were running it 40
  • 00:10:41
    hours a week you wouldn't you wouldn't
  • 00:10:42
    even get near that so um yeah so
  • 00:10:44
    consider I think my math is right on
  • 00:10:46
    that 40 hours a week yeah so anyways
  • 00:10:49
    consider whatever AWS or not I don't
  • 00:10:51
    care or if you want pay for a you know
  • 00:10:54
    you can and you can buy like like this
  • 00:10:56
    person saying you can buy one of these
  • 00:10:58
    vpcs from one of these providers and get
  • 00:10:59
    it for like a flat $5 fee there the good
  • 00:11:03
    thing about that is there's not going to
  • 00:11:04
    be any surprises you're not going to be
  • 00:11:07
    hit with a big Bill at the end of the
  • 00:11:08
    month because those other companies like
  • 00:11:11
    these ones down here are probably going
  • 00:11:12
    to cap you at that whatever they're
  • 00:11:15
    offering for that $5 amount whereas AWS
  • 00:11:17
    if you exceed that you will be built for
  • 00:11:20
    it um so what I always like to say is if
  • 00:11:23
    you are using any of these big cloud
  • 00:11:25
    providers like Google Red Hat Amazon uh
  • 00:11:28
    Microsoft
  • 00:11:29
    the first thing you need to do after
  • 00:11:30
    your create account is figure out how to
  • 00:11:32
    create a an alert that's going to email
  • 00:11:36
    you on a threshold of a certain budget
  • 00:11:40
    and I actually have a video for how to
  • 00:11:41
    do that on AWS so if you want to look at
  • 00:11:43
    how to do that just go back into my
  • 00:11:45
    video history and find that video I
  • 00:11:47
    really recommend doing that and they'll
  • 00:11:48
    even and you can even set up
  • 00:11:49
    notifications like you've hit 50% of
  • 00:11:52
    your budget and if your budget's $1 well
  • 00:11:55
    then you've you've hit 50 cents and if
  • 00:11:56
    you don't want to spend a dollar then
  • 00:11:58
    you need to
  • 00:12:00
    um you know you need to make sure that
  • 00:12:01
    you go in and cancel those uh or spin
  • 00:12:04
    down those servers before you hit that
  • 00:12:05
    so uh I think I've talked a lot to that
  • 00:12:08
    and I don't I think whoever's on don't
  • 00:12:10
    have any questions so I'm just going to
  • 00:12:11
    move on but uh yeah in tribe yep you can
  • 00:12:15
    definitely dockerize your uh you can
  • 00:12:20
    definitely dockerize your your services
  • 00:12:23
    so um there are the thing about Docker
  • 00:12:26
    is most of these big
  • 00:12:30
    providers these big cloud providers are
  • 00:12:32
    going to support a
  • 00:12:33
    Docker
  • 00:12:35
    container so if you container eyes using
  • 00:12:38
    Docker or whatever else the bigger
  • 00:12:39
    competitor is you'll definitely be able
  • 00:12:42
    to take whatever you've built and then
  • 00:12:45
    move it to any cloud provider and
  • 00:12:48
    they're like kubernetes the you know
  • 00:12:50
    orchestration the scaling uh
  • 00:12:53
    infrastructure and like AWS has one
  • 00:12:55
    that's kind of proprietary I think it's
  • 00:12:58
    ECS and and ECS is both for they support
  • 00:13:01
    a kuber kubernetes
  • 00:13:03
    u uh framework or just their own
  • 00:13:06
    whatever ECS is and they support Docker
  • 00:13:10
    so you can spin up different in scale
  • 00:13:14
    using dockerized containers and that
  • 00:13:16
    scalability that functionality there you
  • 00:13:19
    can use on probably any of these big
  • 00:13:22
    Services Red Hat Microsoft Amazon Google
  • 00:13:25
    they're all going to allow you to uh use
  • 00:13:27
    Docker so if you spend energy and put in
  • 00:13:32
    the uh the effort to dockerize your
  • 00:13:35
    Linux builds for uh your gdau back in
  • 00:13:38
    then you've opened up really quick and
  • 00:13:41
    easy way to deploy your Docker container
  • 00:13:43
    anywhere you can do your Docker testing
  • 00:13:46
    locally and you might even be able to
  • 00:13:48
    simulate resources locally now I haven't
  • 00:13:52
    used Docker in probably four or five
  • 00:13:54
    years uh but I was using it pretty
  • 00:13:57
    heavily before that so I have a lot of
  • 00:13:59
    experience with Docker and I don't know
  • 00:14:02
    if they had it back then but I have a
  • 00:14:04
    feeling that you you can tailor local
  • 00:14:06
    your local container uh to handle a
  • 00:14:10
    specific set of resources so you know
  • 00:14:12
    ebi that's another thing that I would
  • 00:14:14
    consider uh so good good point there on
  • 00:14:18
    tribe for that suggestion let's go to
  • 00:14:20
    AWS um which I don't have any comments I
  • 00:14:23
    guess somebody might have uploaded
  • 00:14:25
    something so I don't know why it's
  • 00:14:26
    showing a comment uh don't have anything
  • 00:14:28
    on Unity this week not really doing much
  • 00:14:32
    Unity at all lately maybe just answering
  • 00:14:33
    some
  • 00:14:35
    questions uh and uh we'll come back to
  • 00:14:37
    gdau let's go to Game Dev and just see
  • 00:14:40
    uh what what we've got here um so this
  • 00:14:43
    person's been using uh been running into
  • 00:14:46
    some problems with synchronization we we
  • 00:14:48
    we had a look at that last week um or
  • 00:14:50
    earlier this week I guess and we're I
  • 00:14:53
    think we were able to get them unstuck
  • 00:14:55
    for the most part I think they're having
  • 00:14:57
    problems with capturing the mouse not
  • 00:14:59
    exactly sure um so I'm going to just
  • 00:15:02
    gloss over that looking to make zate
  • 00:15:05
    it's been around for a while I'm going
  • 00:15:06
    to look at making customize customizable
  • 00:15:09
    characters and blender containing shape
  • 00:15:11
    Keys among other things I'm not too
  • 00:15:13
    familiar with you guys have any videos
  • 00:15:14
    recommended uh separate head and model
  • 00:15:15
    attaches the body certain IM not work
  • 00:15:18
    together separate meshes and
  • 00:15:20
    Gough um you know I don't have a ton of
  • 00:15:23
    experience with this stuff this is like
  • 00:15:24
    a different skill set the modeling side
  • 00:15:27
    of things
  • 00:15:29
    um you know in materials that's not my
  • 00:15:31
    expertise hopefully somebody hopefully
  • 00:15:33
    somebody's able to weigh in if you guys
  • 00:15:35
    know of any you know any answers to this
  • 00:15:38
    uh clothing yeah I I'm not I don't have
  • 00:15:41
    any experience with this stuff so I'm
  • 00:15:44
    not going to I'm not really going to
  • 00:15:46
    comment um I have a little bit of
  • 00:15:49
    experience
  • 00:15:52
    separating animations uh not actually
  • 00:15:55
    having a like the models the same like
  • 00:15:58
    the the you know obviously we have this
  • 00:16:00
    character model that I've been working
  • 00:16:02
    with or character models over the last
  • 00:16:03
    whatever year and you I I I have a uh a
  • 00:16:08
    video or something I did where I
  • 00:16:11
    separated the animations uh using an
  • 00:16:13
    animation tree where you could have an
  • 00:16:16
    animation State machine and separate out
  • 00:16:19
    like your running animation so if it was
  • 00:16:20
    pure running you would be running you
  • 00:16:22
    know you would see his arms move around
  • 00:16:24
    and that kind of thing but if he was
  • 00:16:25
    running with a gun then I have a state
  • 00:16:27
    that turns off like the top of the body
  • 00:16:30
    and it follows the mouse so he can like
  • 00:16:32
    aim up and down with that arm and it
  • 00:16:34
    tracks like with the mouse and so you
  • 00:16:37
    can run and do that at the same time so
  • 00:16:39
    you can actually see their like head
  • 00:16:40
    rotate Up and Down based on where they
  • 00:16:42
    were looking now that's one way you can
  • 00:16:44
    handle that but I think inverse
  • 00:16:46
    kinematics might be a
  • 00:16:50
    more better I want to say a better
  • 00:16:52
    approach in the long run but their stuff
  • 00:16:54
    uh gdau stuff was deprecated the time I
  • 00:16:56
    made those videos so I didn't want to
  • 00:16:57
    use a I wanted to find a different
  • 00:16:59
    solution for that so that's the only
  • 00:17:00
    thing I would say about that multiplayer
  • 00:17:02
    synchronizer emits on a button pressed
  • 00:17:04
    if that's your if that's your
  • 00:17:09
    flow I'm I'm not exactly sure I would do
  • 00:17:12
    it that way I would have to know a lot
  • 00:17:14
    more information and I think an RPC is a
  • 00:17:19
    better solution for that right because
  • 00:17:21
    rpcs are your event based rpcs are your
  • 00:17:24
    event-based
  • 00:17:26
    mechanisms um and your synchron is where
  • 00:17:29
    you want to synchronize and keep
  • 00:17:31
    something in sync at all times like
  • 00:17:32
    player health and and maybe positions
  • 00:17:35
    and that kind of thing so I'm not I'm
  • 00:17:37
    not sure if that's a good way to
  • 00:17:38
    approach that so consider using rpc's
  • 00:17:41
    Legion
  • 00:17:43
    um I I don't know what this enumeration
  • 00:17:47
    means I do not understand what they're
  • 00:17:49
    saying with
  • 00:17:50
    enumeration
  • 00:17:52
    um and yeah Scott scota doesn't really
  • 00:17:56
    do private messaging um
  • 00:18:01
    and I don't know what this video mean
  • 00:18:03
    rendering on dedicated server render
  • 00:18:05
    different players in different scenes so
  • 00:18:08
    that problem trying to
  • 00:18:10
    render different players in different
  • 00:18:14
    scenes
  • 00:18:16
    is uh I don't know how trivial that is I
  • 00:18:19
    talked about this the other day on at
  • 00:18:22
    some point or I I wrote about it in here
  • 00:18:24
    I can't exactly remember
  • 00:18:26
    but you can turn turn
  • 00:18:30
    off what you want to synchronize with
  • 00:18:32
    your synchronization or your multiplayer
  • 00:18:34
    synchronizer you can actually in I think
  • 00:18:37
    it's called visibility and you can
  • 00:18:40
    maybe so if you have a single server
  • 00:18:44
    that all your players are connecting to
  • 00:18:47
    and you're going to spawn a
  • 00:18:49
    scene you can probably do either a
  • 00:18:52
    custom spawn and only spawn it on a
  • 00:18:54
    specific node I think you might be able
  • 00:18:56
    to do that or you can spawn it and then
  • 00:19:00
    turn off visibility for X players or
  • 00:19:03
    turn it on for X players which however
  • 00:19:06
    way you want to handle that so I think I
  • 00:19:07
    think you can accomplish that it just it
  • 00:19:10
    might not be a super trivial thing I do
  • 00:19:12
    want to cover that I think I have a to
  • 00:19:15
    do in my uh list of videos future videos
  • 00:19:18
    where I want to cover this exact
  • 00:19:20
    scenario uh but it would be helpful to
  • 00:19:22
    know if you're if this is a persistent
  • 00:19:24
    world like a single world if it's a
  • 00:19:27
    Matchmaker world
  • 00:19:29
    where or if it's like a maybe like I I
  • 00:19:33
    know that someone was talking about this
  • 00:19:34
    the other day there was a game uh there
  • 00:19:37
    was a game
  • 00:19:38
    where um all the players would still be
  • 00:19:41
    there but you would be experiencing a
  • 00:19:42
    different scene and that's to me just
  • 00:19:45
    like a uh if it's even if it's a
  • 00:19:47
    temporary world it's still a persistent
  • 00:19:50
    world so I think that's uh something
  • 00:19:52
    that I'm I'm going to look into
  • 00:19:53
    eventually guys if you want uh there's a
  • 00:19:55
    making the
  • 00:19:57
    MMO um looks like they're using maybe a
  • 00:19:59
    python back end uh and connecting goob
  • 00:20:02
    to it I don't know I haven't seen it but
  • 00:20:03
    if you're interested join the Discord
  • 00:20:06
    and uh we've got some gurus and experts
  • 00:20:09
    in there and I try to get in there as
  • 00:20:11
    much as possible um a lot of times I get
  • 00:20:13
    really busy with work and other things
  • 00:20:15
    so I can't always get to it but let's
  • 00:20:17
    move on um okay so Annie's got a
  • 00:20:19
    question about a recent video I
  • 00:20:23
    did there's a moment where the player
  • 00:20:25
    name uh is set when a new player is
  • 00:20:28
    added to the game my issue is that the
  • 00:20:29
    player name solely depends on the new
  • 00:20:31
    network ID yep uh which is given by the
  • 00:20:33
    Callback uh what if I want to allow
  • 00:20:35
    players to decide their names I already
  • 00:20:37
    have a UI well then just make a
  • 00:20:40
    different field have a different name
  • 00:20:42
    field I mean that's uh that that's how I
  • 00:20:44
    would do that you wouldn't you keep the
  • 00:20:46
    name for your infrastructure I think
  • 00:20:48
    right now you you could use a different
  • 00:20:51
    field um if you watch go watch all of my
  • 00:20:55
    videos and you'll see that uh some of
  • 00:20:58
    them I use name some of them I use uh
  • 00:21:00
    player ID to represent network ID for
  • 00:21:04
    the checks that you need to do for
  • 00:21:06
    managing your multiplayer sessions and
  • 00:21:09
    and tracking you know where which pier
  • 00:21:11
    is where and should this pier uh have
  • 00:21:13
    access to certain things kind of like an
  • 00:21:15
    authority problem there so if if you're
  • 00:21:18
    confused about that uh I I think this is
  • 00:21:22
    how he would I think you can set name
  • 00:21:24
    here like that um if if let's see wrong
  • 00:21:27
    place set players name but how do I do
  • 00:21:29
    it probably found this U I don't know
  • 00:21:30
    why you wouldn't set it there
  • 00:21:35
    umie using synchronizer plays no play
  • 00:21:38
    you want to add a synct property such as
  • 00:21:39
    name and have it update only once yeah
  • 00:21:41
    so that's that's a pretty good answer I
  • 00:21:43
    think uh e Mario I think that's a pretty
  • 00:21:47
    good answer uh I don't see why you
  • 00:21:49
    wouldn't be able to set it there um I
  • 00:21:52
    don't see
  • 00:21:53
    why yeah just use a different field
  • 00:21:59
    um like in your
  • 00:22:04
    code you you can set it there or after
  • 00:22:09
    your player enters the
  • 00:22:13
    name or maybe uh have your
  • 00:22:17
    server send an RPC after they join or
  • 00:22:24
    connect that tells that uh that
  • 00:22:29
    informs or that sets the name sets the
  • 00:22:32
    name in all clients I like the idea of
  • 00:22:37
    syncing once when the player
  • 00:22:40
    spawns which is using your multiplayer
  • 00:22:44
    synchronizer uh Set Set uh check the
  • 00:22:50
    spawn
  • 00:22:51
    checkbox set sync to
  • 00:22:54
    never and that should do it so this is
  • 00:22:57
    good I like this answer spoiler it's got
  • 00:23:01
    annoying case uh you're using sockets I
  • 00:23:04
    haven't used sockets yet with good do
  • 00:23:07
    that is a little bit lower level um
  • 00:23:09
    haven't reached to that point I'm
  • 00:23:11
    covering everything high level right now
  • 00:23:13
    so as to allow for all the newer
  • 00:23:17
    developers to come in and not have to
  • 00:23:20
    worry about managing the messages
  • 00:23:21
    themselves and let's just rely on the
  • 00:23:23
    higher level apis for now uh eventually
  • 00:23:26
    if I can still do this channel for a
  • 00:23:29
    considerable amount of time I will go
  • 00:23:32
    and do more low lower level things uh
  • 00:23:34
    but we'll see everything's okay the code
  • 00:23:37
    is working except one case when the
  • 00:23:38
    server reloads and closes all
  • 00:23:40
    connections the D pulling proceeds to
  • 00:23:42
    show up and connection State
  • 00:23:43
    everything's okay well if you if the
  • 00:23:45
    server reloads and closes
  • 00:23:48
    connections I don't know what this is
  • 00:23:50
    this like a web socket you may have to
  • 00:23:54
    you may have to run through your reset
  • 00:23:58
    uh con
  • 00:23:59
    connection logic I I I'm not really
  • 00:24:02
    following this not sure let's see
  • 00:24:05
    uh Co working somewhere when server
  • 00:24:08
    reloads close all connections good
  • 00:24:09
    polling proceeds to show open connection
  • 00:24:11
    State as everything is okay I can't find
  • 00:24:13
    um yeah there should be I don't think I
  • 00:24:16
    don't know if anybody's replied to them
  • 00:24:18
    doesn't look like it I don't like to
  • 00:24:21
    double dip there has to be a call back I
  • 00:24:26
    I'm not sure if there's any
  • 00:24:30
    I would I would it would be very
  • 00:24:32
    unlikely if there wasn't a on disconnect
  • 00:24:34
    call back or some kind of mechanism
  • 00:24:37
    where you can hook into hey this
  • 00:24:39
    connection dropped uh that would be very
  • 00:24:41
    unlikely I I can't imagine there not
  • 00:24:43
    being that so I would I would think that
  • 00:24:45
    that's how they have to do that
  • 00:24:48
    um so I'm just going to respond to that
  • 00:24:50
    like that so let's see what Andy's got
  • 00:24:52
    thanks for the reply list of players
  • 00:24:55
    being shared across all peers sure um
  • 00:24:59
    you can send it that way or you can have
  • 00:25:03
    a dictionary that you
  • 00:25:05
    synchronize uh which will update a
  • 00:25:07
    players dictionary con all the players
  • 00:25:09
    yep which is to make it work in Steam
  • 00:25:12
    well I mean if if you're using the high
  • 00:25:15
    level apis in Steam it would work the
  • 00:25:18
    same way if you're going to use the
  • 00:25:19
    lower level apis and send messages
  • 00:25:21
    yourself then sure you'll have to uh you
  • 00:25:26
    know manage those things accordingly um
  • 00:25:29
    and you you if you're if you're like if
  • 00:25:32
    you're not using rpcs which is the high
  • 00:25:34
    level by the way if you didn't connect
  • 00:25:36
    those two
  • 00:25:37
    things if you're manually sending
  • 00:25:39
    messages in Steam using their other uh
  • 00:25:43
    gdau steam apis uh that are provided
  • 00:25:45
    then yeah you're going to have to
  • 00:25:47
    manually manage those synchronizations
  • 00:25:49
    um that way yeah so I'm just saying I'm
  • 00:25:53
    just going to repeat what I said that
  • 00:25:54
    you can synchronize a dictionary of the
  • 00:25:56
    players with some basic data uh don't
  • 00:25:59
    sync complex
  • 00:26:09
    objects like nodes or anything like that
  • 00:26:12
    just what you
  • 00:26:14
    need uh so you could do it that way or
  • 00:26:17
    you can sync uh you can send
  • 00:26:19
    rpcs um to keep a list of the the
  • 00:26:22
    players you can
  • 00:26:24
    also I I guess I guess I wouldn't do it
  • 00:26:27
    that way either but your clients can
  • 00:26:29
    also ask um every so often but then
  • 00:26:31
    that's why would you do that just when a
  • 00:26:34
    player joins or leaves you can always
  • 00:26:35
    just um send an RPC to everybody hey a
  • 00:26:39
    player left or hey a player joined and
  • 00:26:41
    you can always update everybody um
  • 00:26:44
    that's there that uh you know that needs
  • 00:26:47
    that information um and maybe not
  • 00:26:49
    everybody needs that information so yeah
  • 00:26:51
    using rpcs could work um it's probably
  • 00:26:54
    easier to do a sync but if you need to
  • 00:26:57
    have some
  • 00:26:58
    separations like team one or team two
  • 00:27:00
    kind of thing then yeah you can you can
  • 00:27:02
    definitely manage that manually more
  • 00:27:03
    with some
  • 00:27:05
    rpcs uh croy's got a question um I think
  • 00:27:09
    I said that right I don't know um if I'm
  • 00:27:10
    using multiplayer spawner for a player
  • 00:27:12
    character on the server multiplayer
  • 00:27:13
    author is being set however the client
  • 00:27:15
    multipay authority of the player is set
  • 00:27:17
    to one uh no um I I think the player
  • 00:27:21
    itself is the the player it if you're
  • 00:27:27
    let me just say hello first let me type
  • 00:27:29
    it out and then I'll review it just to
  • 00:27:32
    review let me find it really quick again
  • 00:27:35
    uh so on a server multiplayer Authority
  • 00:27:38
    is being set correctly um okay I'm not
  • 00:27:41
    exactly sure what that means I'm
  • 00:27:43
    guessing they are setting client
  • 00:27:45
    authority to that Pier however on the
  • 00:27:48
    client the multiplayer authority of the
  • 00:27:49
    player set to one that is correct so if
  • 00:27:51
    you are giving so I need a little bit
  • 00:27:53
    more information so if if you read my
  • 00:27:56
    reply
  • 00:27:58
    uh I'm I'm saying that if you set the
  • 00:28:02
    authority what you're going to set on
  • 00:28:03
    the server uh if you set that
  • 00:28:06
    Authority technically I'm not sure if it
  • 00:28:09
    is set in the server but whenever you
  • 00:28:11
    set it like on the enter tree function
  • 00:28:14
    or if you use the on ready uh approaches
  • 00:28:17
    I have a couple different approaches so
  • 00:28:18
    go watch my whole video series so you
  • 00:28:20
    can see the couple different ways I do
  • 00:28:21
    it but if you're setting the authority
  • 00:28:24
    to the local client which is going to be
  • 00:28:27
    the network ID right so some string of
  • 00:28:30
    eight numbers eight or nine characters
  • 00:28:31
    whatever it is
  • 00:28:33
    numbers if you just set the input so
  • 00:28:36
    that the players inputs keyboard and
  • 00:28:39
    mouse movements are client driven or
  • 00:28:42
    client the client has a sole source of
  • 00:28:44
    Truth so the client is telling the
  • 00:28:45
    server that so you're setting client
  • 00:28:46
    authority to input that's that case the
  • 00:28:49
    player object itself itself will still
  • 00:28:52
    be set to server Authority because what
  • 00:28:55
    that means is your setting the authority
  • 00:28:59
    over the inputs but it's your server who
  • 00:29:02
    determines where it should actually be
  • 00:29:05
    so if I teleport across the world
  • 00:29:09
    because I was able to input something
  • 00:29:12
    that was extraneous like in a racing
  • 00:29:14
    game somehow if I was able to send an
  • 00:29:17
    input that didn't make sense or
  • 00:29:20
    something and I was able to move across
  • 00:29:22
    the screen for example uh to the other
  • 00:29:24
    side of the world your server will still
  • 00:29:26
    have authority over that player be like
  • 00:29:28
    uhuh you can't teleport you can't do
  • 00:29:30
    that you can't cheat like that uh so
  • 00:29:32
    that's kind of a rough example of that
  • 00:29:35
    um so yeah I don't think that's a bug I
  • 00:29:37
    think that's correct your input should
  • 00:29:39
    not say one though your input should say
  • 00:29:42
    the the network ID of the of the player
  • 00:29:44
    so that's a good question uh can someone
  • 00:29:46
    help me tutorial for dedicate server for
  • 00:29:48
    Brack's game uh the dedicate Server
  • 00:29:50
    doesn't even start doesn't start even if
  • 00:29:52
    I add a ready function in the game man
  • 00:29:53
    scripts anybody know it could
  • 00:29:55
    be oh that's really vague um yeah I
  • 00:29:59
    think you're going to have to thanks
  • 00:30:01
    tribe I really think you're going to
  • 00:30:02
    have to post some stuff um he said
  • 00:30:05
    posting copy pasta and you posted it
  • 00:30:06
    here that's cool whatever it's not a big
  • 00:30:08
    deal
  • 00:30:10
    um let's see what we got here uh
  • 00:30:13
    dedicated server if OS feature are you
  • 00:30:16
    building it are are you building a
  • 00:30:17
    dedicated server
  • 00:30:20
    um did you select
  • 00:30:24
    the the dedicated
  • 00:30:29
    server option when building I have
  • 00:30:33
    definitely I that's not I'm not that's
  • 00:30:36
    not a dumb thing just to ask because
  • 00:30:39
    I've definitely done that I've I've
  • 00:30:41
    built a game before and I went to deploy
  • 00:30:45
    it and it just puked it didn't know I it
  • 00:30:47
    just didn't make any sense and then I
  • 00:30:49
    went back and realized that I actually
  • 00:30:51
    just made a build of the game and not
  • 00:30:52
    dedicated server uh so of course the
  • 00:30:55
    feature would not be there and I I see
  • 00:30:58
    what they're saying so what's happening
  • 00:30:59
    is they're they're the game they're
  • 00:31:03
    trying to do a dedicated server build
  • 00:31:05
    and they're saying it's not starting um
  • 00:31:07
    it's likely that they just built a
  • 00:31:08
    client build and not a dedicated server
  • 00:31:10
    build so that that does happen um I'm
  • 00:31:13
    going to need some more information uh
  • 00:31:16
    uh we'll do thanks um we'll do uh join
  • 00:31:21
    the tester
  • 00:31:23
    Squad under
  • 00:31:25
    roles I do test
  • 00:31:30
    uh from time to
  • 00:31:32
    time well that's for me I mean I don't
  • 00:31:35
    know other people can do that too
  • 00:31:36
    anyways so anyone familiar with
  • 00:31:38
    microphone nah no I am not uh trying to
  • 00:31:41
    get the volume output my code is
  • 00:31:42
    detecting the Spectrum analizer and
  • 00:31:44
    returns um I'm going to just do a h not
  • 00:31:47
    sure here uh and a thinky face because I
  • 00:31:51
    don't know but I'm still going to look
  • 00:31:54
    at their code because I'm curious so
  • 00:31:55
    they've got a ready function
  • 00:31:58
    trying to get the volume output my code
  • 00:31:59
    is techic Spectrum analer I think but
  • 00:32:01
    only return Zer Z when I attempt to get
  • 00:32:02
    the frequency this is a cool problem a
  • 00:32:05
    very cool problem I don't really know
  • 00:32:06
    much so um if analyzer if they have an
  • 00:32:10
    analyzer instance here uh they're
  • 00:32:13
    getting the magnitude for frequency so
  • 00:32:15
    they're getting the uh a magnitude for a
  • 00:32:17
    range of frequency and it's just not
  • 00:32:20
    printing uh return Z 0 so yeah it it you
  • 00:32:25
    know I'm not sure I this sounds like a
  • 00:32:27
    really cool problem though uh they have
  • 00:32:29
    their analyzer instance
  • 00:32:32
    um um yeah so not sure there all right
  • 00:32:35
    so I think we've got through this and uh
  • 00:32:37
    I'm gonna switch over to YouTube because
  • 00:32:40
    I think we've got everybody kind of
  • 00:32:43
    straightened out here Legion yeah man
  • 00:32:45
    we're g to need some more info to help
  • 00:32:46
    you out
  • 00:32:47
    there um let's start the old video so
  • 00:32:50
    six days ago so I haven't checked in on
  • 00:32:52
    things in a while I have a question some
  • 00:32:54
    have you ever tried W4 we were just
  • 00:32:55
    talking about W4 uh how do do you think
  • 00:32:58
    worth it to use is better option for
  • 00:32:59
    multi honestly confused multiplayer
  • 00:33:01
    theme I'm going to plumish my game on
  • 00:33:02
    Steam maybe there's better option uh
  • 00:33:04
    yeah so you can do that you can do all
  • 00:33:08
    that stuff
  • 00:33:09
    um I just checked on some stuff with W4
  • 00:33:15
    and I am really excited
  • 00:33:18
    because I come from a background with uh
  • 00:33:21
    using um you know AWS and and and
  • 00:33:24
    gamelift so I've used unity's multiplay
  • 00:33:28
    I didn't get terribly deep into it
  • 00:33:30
    because it was new and then the unity
  • 00:33:31
    thing happened and then I switched to
  • 00:33:32
    gdau but it's uh it looks like you can
  • 00:33:36
    get an $800 credit so if you're into
  • 00:33:39
    Unity check it out and I've used it it's
  • 00:33:42
    really cool they have matchmaking they
  • 00:33:44
    have
  • 00:33:45
    scalability the matchmaking rules seem
  • 00:33:48
    really customizable for whatever you're
  • 00:33:51
    trying to do they allow you to create
  • 00:33:54
    Unity builds and upload those builds and
  • 00:33:57
    have you know they they will store your
  • 00:33:59
    Builds on the server and then you can
  • 00:34:01
    scale up to support your your matches or
  • 00:34:04
    your game to you know host whatever
  • 00:34:07
    backend uh you need to do with
  • 00:34:09
    unity uh I believe they also offer some
  • 00:34:13
    they uh at the time they didn't have
  • 00:34:15
    certain things but I think they were
  • 00:34:17
    going to offer
  • 00:34:20
    additional like database
  • 00:34:23
    storing let's see what else did they
  • 00:34:27
    what what else they offer anyways I
  • 00:34:29
    whatever they offered a bunch of support
  • 00:34:31
    for things that you would need if you
  • 00:34:33
    were a game developer and I think they
  • 00:34:35
    were only going to grow and at the time
  • 00:34:37
    they were still working through some of
  • 00:34:39
    the stuff but the bottom line is you can
  • 00:34:41
    host your backend game server there and
  • 00:34:42
    you can scale it and you can create a
  • 00:34:45
    Matchmaker uh and leverage that and if
  • 00:34:49
    you don't want to get into building your
  • 00:34:51
    own cloud infrastructure it was it it's
  • 00:34:55
    a really cool thing like if you don't
  • 00:34:56
    care about learning aw us and you don't
  • 00:34:58
    want to deal with the permissions and
  • 00:35:00
    all that stuff because there's a lot
  • 00:35:01
    involved with it oh authentication and
  • 00:35:03
    user authentication and and I I think
  • 00:35:05
    they were offering that as well if you
  • 00:35:07
    don't want to get into all that yourself
  • 00:35:08
    and manage that which I totally get
  • 00:35:11
    because there's a lot involved it's
  • 00:35:12
    really hard for a beginner to come into
  • 00:35:14
    you know a
  • 00:35:16
    multiplayer game and that kind of thing
  • 00:35:18
    and then be able
  • 00:35:20
    to get into cloud and become and and
  • 00:35:23
    have all those like gut instincts about
  • 00:35:25
    where you need to watch out for security
  • 00:35:27
    thing and that sort of
  • 00:35:29
    thing there's just a lot to it and for a
  • 00:35:31
    beginner it's a little daunting to do an
  • 00:35:33
    AWS to do a Google red hat and that kind
  • 00:35:35
    of thing now they do have products that
  • 00:35:37
    are that really lower the barrier to
  • 00:35:38
    entry and I don't want to steer anybody
  • 00:35:41
    away from it because if you spend enough
  • 00:35:43
    time you will get it like if yeah it's
  • 00:35:45
    going to seem overwhelming and weird and
  • 00:35:48
    confusing at first uh I have a few
  • 00:35:50
    videos to hopefully make it a little bit
  • 00:35:53
    more approachable um and then some of my
  • 00:35:55
    videos aren't really for the beginning
  • 00:35:57
    it might be for somebody that does have
  • 00:35:59
    a AWS experience but just wants to learn
  • 00:36:01
    more and I think a lot of my older Unity
  • 00:36:04
    videos were based on cloud um Cloud
  • 00:36:08
    products like gamelift and uh and that
  • 00:36:10
    kind of thing we're more geared towards
  • 00:36:12
    the more advanc user but some of the
  • 00:36:15
    stuff I have on there like Lambda
  • 00:36:16
    functions and Dynamo DB which is you
  • 00:36:18
    know a really cool nosql database which
  • 00:36:21
    I'm I'm going to do more videos on
  • 00:36:23
    because I'm getting a lot of questions
  • 00:36:24
    about how to store stuff and dynamoe EV
  • 00:36:26
    is amazing and it's super cheap if not
  • 00:36:27
    just free like for a really long time so
  • 00:36:30
    I'm going to do some more on that and
  • 00:36:32
    now that this I've gone off on this
  • 00:36:34
    tangent about working with unity
  • 00:36:37
    W4 is going to do the same thing and
  • 00:36:40
    that's why I said all that is because I
  • 00:36:42
    have experienced I've worked with all
  • 00:36:44
    those products uh game lift and and and
  • 00:36:48
    whatever this and whatever unity's
  • 00:36:49
    version of
  • 00:36:51
    now W4 is going to be doing that they're
  • 00:36:55
    going to be offering cloudbased uh
  • 00:36:58
    database uh authentication and I don't
  • 00:37:00
    know exactly how they're going to do the
  • 00:37:02
    auth authentication I don't know if
  • 00:37:04
    they're just going to hook into generic
  • 00:37:05
    oo stuff or they're going to like manage
  • 00:37:07
    your users for you um like in AWS you
  • 00:37:12
    can have a a Cognito server or Cognito
  • 00:37:16
    instance and have all your you know your
  • 00:37:18
    users there and you can do your you can
  • 00:37:20
    add authentication through that um so I
  • 00:37:25
    don't exactly know how their apis are
  • 00:37:26
    going to be set up uh but but they're
  • 00:37:27
    going to do scaling uh deploying your
  • 00:37:29
    servers so to get back to this they're
  • 00:37:33
    still in beta so they're not ready to go
  • 00:37:36
    yet uh I think that yeah I I think that
  • 00:37:40
    gdau is still like going through the
  • 00:37:42
    growing paines now if you know anything
  • 00:37:43
    about Linux servers I mean you can just
  • 00:37:45
    start with any cloud service like I
  • 00:37:47
    talked about at the beginning of the
  • 00:37:48
    stream you can use AWS and just manage
  • 00:37:50
    your own cluster and scale your backend
  • 00:37:53
    accordingly as as you need to um if you
  • 00:37:56
    put your game on
  • 00:37:58
    Steam all that all steam is doing is
  • 00:38:03
    let's just separate this out for a
  • 00:38:04
    second so there's steam listing and then
  • 00:38:07
    steam multiplayer steam listing is
  • 00:38:10
    you're just listing your game to be
  • 00:38:12
    available on Steam so think single
  • 00:38:14
    player game you download the game you
  • 00:38:16
    play the game and it's it's
  • 00:38:18
    authenticated through your Steam account
  • 00:38:20
    so you have a a way to track legitimate
  • 00:38:23
    purchases that's your steam listing now
  • 00:38:26
    steam multiplayer is
  • 00:38:28
    P2P
  • 00:38:30
    so you may not want a P2P game now I
  • 00:38:33
    know that steam offers
  • 00:38:36
    dedicated server or Anonymous hosting
  • 00:38:39
    with their steam I have not played
  • 00:38:42
    around with that yet I not I do not have
  • 00:38:44
    experience with that yet but I know that
  • 00:38:45
    those things are available so in theory
  • 00:38:48
    you can use a dedicated server setup uh
  • 00:38:51
    with steam I haven't played around with
  • 00:38:53
    it so you can list your game on Steam
  • 00:38:57
    and then use AWS to host your games back
  • 00:39:00
    in because your game client can
  • 00:39:03
    authenticate in Steam and then you can
  • 00:39:06
    probably I I know you can authenticate
  • 00:39:08
    using uh steam through gdau Steam so if
  • 00:39:11
    you want to add gdau steam to your your
  • 00:39:14
    gdau game which you will if you're going
  • 00:39:16
    to list it on Steam uh your back end can
  • 00:39:18
    use that steam credentials and
  • 00:39:20
    authenticate to make sure that the calls
  • 00:39:23
    or the API calls or to establish those
  • 00:39:25
    connections are uh
  • 00:39:27
    authorized using that steam client and
  • 00:39:30
    those credentials uh back to your games
  • 00:39:32
    back in regardless of where it's hosted
  • 00:39:35
    so it can be hosted on AWS or anything
  • 00:39:37
    like that so that was quite a bit um so
  • 00:39:40
    I'm I'm gonna be like referred I'm going
  • 00:39:42
    to publish the stream and I'll be like
  • 00:39:43
    refer to this stream um W4 games I I
  • 00:39:48
    mean definitely check them out I'm going
  • 00:39:50
    to check them out soon uh I think we're
  • 00:39:52
    going to maybe do a little collab or
  • 00:39:53
    maybe I'll just do a tutorial on it and
  • 00:39:56
    see where they're at I got to talk to
  • 00:39:57
    them some more I'm in talks with them
  • 00:39:58
    now a little bit um and they seem like
  • 00:40:01
    it's promising I'm really excited about
  • 00:40:04
    it I I think they're still kind of
  • 00:40:05
    working through the pricing a little bit
  • 00:40:07
    uh hopefully we see a pretty generous
  • 00:40:09
    free tier um but yeah I um I think W4
  • 00:40:13
    can be really good but you may want to
  • 00:40:16
    start just hosting it somewhere else uh
  • 00:40:19
    like on one of those Cloud providers and
  • 00:40:21
    if you join our Discord I'm going to put
  • 00:40:23
    a list of servers I'm actually going to
  • 00:40:25
    write a note so I don't forget so drop
  • 00:40:27
    by the server if you uh Discord server
  • 00:40:29
    if you want to see a more comprehensive
  • 00:40:30
    list of of uh resources there so I
  • 00:40:32
    really like your tutorials wonder if you
  • 00:40:34
    can help me start ship bridge game not
  • 00:40:36
    sure what that means trying to figure
  • 00:40:38
    out how to have multiple players for
  • 00:40:40
    different for
  • 00:40:41
    each different PCS each yeah again this
  • 00:40:45
    goes back to that okay I have a multip
  • 00:40:48
    backend or I have an instance that I
  • 00:40:50
    want to spawn of different players into
  • 00:40:53
    different scenes I don't have a solution
  • 00:40:56
    off the top of my head head for that I'm
  • 00:40:58
    going to have to come back to this I I I
  • 00:41:01
    have I've had enough requests for this
  • 00:41:03
    to do a video so I'm I'm really I'm
  • 00:41:08
    going to refer back to what I said
  • 00:41:10
    before is I think you can use the
  • 00:41:11
    spawner and the visibility tools to to
  • 00:41:15
    tackle this but I plan on doing a video
  • 00:41:17
    on it I actually answered this question
  • 00:41:20
    somewhere and I provided a feedback for
  • 00:41:23
    it already um I will try to provide more
  • 00:41:27
    information for that later so hopefully
  • 00:41:30
    hopefully I can find something on that
  • 00:41:32
    um but again I think that's going to
  • 00:41:34
    require a little bit
  • 00:41:36
    of you know massage and and shimming
  • 00:41:39
    some things into place I I have I don't
  • 00:41:42
    know I'm definitely going to I'm that's
  • 00:41:44
    in the queue I'm going to do a video on
  • 00:41:46
    that so I just don't know when so I've
  • 00:41:48
    got a lot more right now to work through
  • 00:41:50
    so we'll see if I can get to that um uh
  • 00:41:53
    sooner than later now I hope to see your
  • 00:41:56
    paid content on sites like you did me a
  • 00:41:57
    I don't have any paid content I
  • 00:42:00
    everything is on YouTube uh the patreon
  • 00:42:03
    stuff I had listed some projects on
  • 00:42:06
    there but I haven't listed for a while I
  • 00:42:10
    I you need a machine translation
  • 00:42:12
    function that okay so this is cool this
  • 00:42:15
    is new I I'm not really familiar with
  • 00:42:17
    that and I didn't know that there was a
  • 00:42:19
    demand for that so I'm I I wonder if I
  • 00:42:23
    can still offer it for
  • 00:42:25
    free but then
  • 00:42:28
    like just sticking on patreon uh I'll
  • 00:42:30
    have to look into that yeah you know
  • 00:42:32
    help me out if you have any more
  • 00:42:33
    information because uh any kind of any
  • 00:42:36
    kind of help with like that that could
  • 00:42:38
    speed up my research would be greatly uh
  • 00:42:41
    would be greatly appreciated and thanks
  • 00:42:43
    for uh thanks for watching that this is
  • 00:42:44
    the best Kau tutor multipor I've ever
  • 00:42:47
    seen um thanks for the video uh when I
  • 00:42:50
    join as a host the camera is jittering
  • 00:42:51
    um cameras enabled position smoothing
  • 00:42:54
    five pictures per second is there a
  • 00:42:55
    solution cameras enabled of position
  • 00:42:58
    smoothing with five pixels per second
  • 00:43:00
    not really sure what he means
  • 00:43:03
    there camera is enabled of position
  • 00:43:06
    smoothing with five pixels a
  • 00:43:08
    second are are they
  • 00:43:11
    synchronizing yeah sometimes your camera
  • 00:43:14
    will Jitter if you have it set up and I
  • 00:43:17
    I've experienced this if you have it set
  • 00:43:19
    up in a certain way I don't know I can't
  • 00:43:21
    really detail that right now off the top
  • 00:43:23
    of my head but I know there's a like
  • 00:43:25
    especially in 3D worlds if your camera
  • 00:43:28
    is nested um and maybe you don't have
  • 00:43:30
    like a spring arm or something you could
  • 00:43:32
    end up with some Jitters I've I've been
  • 00:43:35
    able to get away with some of that I
  • 00:43:36
    think by moving the by um I still put
  • 00:43:40
    the camera underneath the player in my
  • 00:43:41
    latest videos like especially this one
  • 00:43:43
    this gdau 3D uh template that I've been
  • 00:43:45
    working on and some of my older gdau 3D
  • 00:43:48
    stuff but uh and yeah I have notic some
  • 00:43:51
    Jitters and over time I feel like I'm
  • 00:43:54
    getting better at it and I'm not really
  • 00:43:55
    sure exactly what I did to get better at
  • 00:43:57
    it maybe um you know I've added a spring
  • 00:44:00
    arm I've added a sphere around the
  • 00:44:03
    camera the Collision Sphere for the
  • 00:44:06
    camera um and I I don't really
  • 00:44:08
    experience it uh as much so um you know
  • 00:44:12
    synchronization if you're synchronizing
  • 00:44:14
    there another issue is Authority like
  • 00:44:17
    maybe you're synchronizing the camera
  • 00:44:19
    and you don't have it to set to client
  • 00:44:21
    Authority maybe your server is fighting
  • 00:44:22
    it that would be an extreme case I
  • 00:44:24
    probably I don't think it's that but
  • 00:44:26
    yeah again get back to me on that one
  • 00:44:29
    I'm not exactly sure what to what to say
  • 00:44:31
    with that um great tutorial wow well
  • 00:44:34
    okay so these making the this whole
  • 00:44:36
    making a gdau 3D uh so this playlist
  • 00:44:40
    that I'm going through right now with uh
  • 00:44:43
    making the video game I'm hesitating to
  • 00:44:46
    call it a tutorial because I'm not
  • 00:44:50
    really showing you guys how to do
  • 00:44:53
    anything I'm showing you how I develop
  • 00:44:56
    or how I struggle through these things
  • 00:44:58
    and uh I'm I'm trying new things I'm
  • 00:45:04
    experimenting going through the motions
  • 00:45:06
    of development and and banging my head
  • 00:45:07
    against it I I'm not able to work on it
  • 00:45:10
    every day so I I'm struggling a little
  • 00:45:12
    bit more like my last stream that I just
  • 00:45:15
    wrapped up last week to this week I
  • 00:45:19
    forgot that I had broke something and
  • 00:45:22
    and needed to fix it still so when I
  • 00:45:24
    jumped into the latest stream uh which
  • 00:45:26
    will probably be out next week uh I I
  • 00:45:29
    had some problems I think I'll cut it
  • 00:45:30
    down in editing so it won't be as
  • 00:45:32
    obvious but if you were on the stream
  • 00:45:34
    yeah it was it was a little difficult so
  • 00:45:36
    it's not really a tutorial it's just
  • 00:45:38
    kind of me going through it and banging
  • 00:45:40
    my head against it you can call it a
  • 00:45:42
    tutorial for better lack of word I guess
  • 00:45:44
    what maybe it's a a live Dev stream cool
  • 00:45:48
    uh thank you for appreciating it I
  • 00:45:52
    appreciate you watching it and um I'm
  • 00:45:54
    excited that there are people that are
  • 00:45:57
    interested in seeing that um I I'm kind
  • 00:46:00
    of in a mode where I'm super busy with
  • 00:46:02
    some stuff uh with some other
  • 00:46:03
    responsibilities outside of the channel
  • 00:46:05
    so I'm not able to do full tutorials
  • 00:46:07
    right now but like I mentioned before
  • 00:46:09
    there are some things I do have in the
  • 00:46:11
    queue like W4 and multiplayer scenes and
  • 00:46:14
    splitting those things up and that sort
  • 00:46:15
    of thing that I want and even GD sync I
  • 00:46:17
    want to get to um and uh I can only do
  • 00:46:20
    so much a day so thanks for watching uh
  • 00:46:23
    but you're saying you're interested in
  • 00:46:24
    creating a P2P multiplayer game over the
  • 00:46:25
    internet as as possible that one hosts
  • 00:46:27
    the game and the PC provides the IP port
  • 00:46:30
    of the Matchmaker like you showed your
  • 00:46:31
    ads or you need a dedicated server
  • 00:46:33
    always yes uh it is absolutely possible
  • 00:46:37
    steam will do this out of the box for
  • 00:46:40
    you so if you want to use steam they
  • 00:46:44
    will they will allow you to you can use
  • 00:46:47
    steam's P2P you can use the highle steam
  • 00:46:50
    P2P apis uh this video right here is one
  • 00:46:53
    I think this uses the Standalone Uh
  • 00:46:56
    custom build of gdau which I wouldn't
  • 00:46:58
    really recommend using I would stick
  • 00:47:00
    with the I'm just seeing if I have it up
  • 00:47:02
    already I would stick with the other
  • 00:47:05
    steam version where it using an
  • 00:47:07
    extension I think that's a little bit
  • 00:47:09
    more promising um and the developer is
  • 00:47:11
    actively developing that I think they're
  • 00:47:13
    both developers are maintaining them but
  • 00:47:15
    I just like the extension version rather
  • 00:47:17
    than using a custom gdau version that
  • 00:47:18
    just kind of smells a little funky with
  • 00:47:20
    in terms of long-term
  • 00:47:22
    management um but cool yeah I I think
  • 00:47:26
    you can definitely do that with P2P uh
  • 00:47:28
    there are ways to do it without steam so
  • 00:47:32
    what you can do here is you can create a
  • 00:47:35
    Matchmaker and you can have a relay that
  • 00:47:39
    you host in AWS you can probably do that
  • 00:47:42
    through like a Lambda function just like
  • 00:47:44
    what whatever you're referring to I
  • 00:47:45
    believe you're referring to my
  • 00:47:46
    matchmaker Series so yeah if you're
  • 00:47:48
    interested to go check that out um you
  • 00:47:50
    don't always need a dedicated server but
  • 00:47:52
    you need a relay server which like I
  • 00:47:54
    just said could be like a Lambda
  • 00:47:56
    function
  • 00:47:57
    W4 uh GD sync
  • 00:48:01
    and um some of the other services I
  • 00:48:04
    can't remember top of my head do provide
  • 00:48:05
    you PDP
  • 00:48:07
    matchmaking uh there's another big AAU
  • 00:48:09
    one I I keep forgetting it but um they
  • 00:48:12
    they will provide you those relay
  • 00:48:14
    services and they allow you to connect
  • 00:48:16
    P2P and run that kind of thing I'm going
  • 00:48:19
    to do a video on GD sync I believe in
  • 00:48:22
    the next couple months I hope hopefully
  • 00:48:24
    I can get to it uh once I get through
  • 00:48:27
    this multiplayer template and I get to a
  • 00:48:29
    stopping point then I'm going to try to
  • 00:48:31
    focus on some more tutorial based videos
  • 00:48:34
    um and at that point I will probably
  • 00:48:35
    give you a solution to this using GD
  • 00:48:37
    sync again you can use steam you can
  • 00:48:40
    also
  • 00:48:41
    use uh like a Nat punch through I think
  • 00:48:44
    is the name
  • 00:48:47
    netfox uh offers that through this
  • 00:48:51
    product called nor and he's actually
  • 00:48:54
    hosting a relay server for super cheap
  • 00:48:56
    so take advantage of it while you while
  • 00:48:58
    you can while it's out there for testing
  • 00:49:00
    uh he's done a fork of something and um
  • 00:49:04
    let's see nap punch through is not
  • 00:49:07
    always a viable option so if you want
  • 00:49:10
    read up about what nap punch through is
  • 00:49:12
    I I do have some resources on that that
  • 00:49:15
    I can also share and if you're
  • 00:49:17
    interested read up on that but uh
  • 00:49:19
    they're they're basically saying if you
  • 00:49:20
    can't do that um that he's he has a
  • 00:49:24
    different uh solution and I'm not
  • 00:49:26
    exactly sure what it's doing behind the
  • 00:49:28
    scenes uh you can read up on more there
  • 00:49:31
    nap punch through Alternatives um I can
  • 00:49:33
    try to post some followup answers for
  • 00:49:36
    this uh and with some links if I can
  • 00:49:38
    find it but yeah you can definitely do
  • 00:49:40
    it that way um and I believe what you'll
  • 00:49:42
    do is um there's two ways you can
  • 00:49:46
    approach it off the top of my head where
  • 00:49:50
    if you want a player connect directly to
  • 00:49:53
    your
  • 00:49:55
    computer I I know if I would recommend
  • 00:49:57
    doing this for like a
  • 00:49:59
    production like you're having strangers
  • 00:50:01
    connect to your computer I don't know
  • 00:50:04
    that just seems a little insecure uh I I
  • 00:50:08
    I guess you could do it if you if you
  • 00:50:10
    knew you were playing with your friends
  • 00:50:11
    or maybe that is common I'm not terribly
  • 00:50:15
    familiar with that setup because of that
  • 00:50:18
    like weird like I'm a little sked out by
  • 00:50:19
    having people to corre connect directly
  • 00:50:21
    my to my computer but if you were
  • 00:50:23
    playing with friends you didn't care or
  • 00:50:26
    you were planning on just playing with a
  • 00:50:28
    small group of friends or a small group
  • 00:50:30
    uh small set of people and in this you
  • 00:50:32
    know you didn't really care and you were
  • 00:50:34
    telling people hey we're going to
  • 00:50:36
    connect directly to your computer you
  • 00:50:38
    would have to open the port on your
  • 00:50:40
    router so that those people can connect
  • 00:50:43
    to the game running on your local PC and
  • 00:50:46
    then you would probably have to forward
  • 00:50:48
    that Port I think back to your computer
  • 00:50:51
    I think maybe not maybe that can be
  • 00:50:54
    handled directly it depends uh on your
  • 00:50:56
    router and your computer's configuration
  • 00:50:58
    your firewalls configuration and that
  • 00:51:00
    kind of thing and your even your IP or
  • 00:51:02
    your um internet provider they they may
  • 00:51:05
    even have some weird restrictions on all
  • 00:51:06
    that hopefully you live in a re a region
  • 00:51:09
    where they don't do that but anyways
  • 00:51:11
    what other companies are doing is there
  • 00:51:13
    uh so I guess the way just to finish
  • 00:51:15
    that up is like the way that would work
  • 00:51:17
    is I think you could have like a relay
  • 00:51:18
    server where you connect to like refer
  • 00:51:21
    like like what I did with this AWS thing
  • 00:51:23
    where you have like a Matchmaker like
  • 00:51:25
    relay Server Like A that a Lambda
  • 00:51:27
    function that just spins up when you
  • 00:51:28
    need it super low cost of any cost at
  • 00:51:31
    all have your clients connect to that
  • 00:51:35
    and then once you have let's say you
  • 00:51:36
    have four people 2v2
  • 00:51:38
    match or um and then like one guy's a
  • 00:51:41
    host like one guy's marked as a host so
  • 00:51:43
    he's he created the match right so he
  • 00:51:46
    would make a call to that Lambda
  • 00:51:48
    function uh the Lambda would uh would
  • 00:51:50
    run and it would you you could do like a
  • 00:51:53
    websocket approach like what I did in
  • 00:51:55
    that video and he can be marked as the
  • 00:51:57
    host and then what you can do is once
  • 00:52:02
    you have everybody in the match
  • 00:52:04
    connected and ready to go and the game
  • 00:52:06
    is ready to start you could send them
  • 00:52:09
    your IP address and they you can just
  • 00:52:12
    send like a a request to okay everybody
  • 00:52:15
    connect to that person's IP address and
  • 00:52:17
    they would all connect to your IP
  • 00:52:18
    address now I I don't think it's as
  • 00:52:20
    simple as that I think there are
  • 00:52:22
    other technical things that I just
  • 00:52:25
    talked about that you may have to do to
  • 00:52:28
    allow people to connect back to your
  • 00:52:30
    server I don't want to talk to that off
  • 00:52:31
    the top of my head because I haven't
  • 00:52:34
    done a whole lot of work on that I have
  • 00:52:36
    done research in the past and like I
  • 00:52:37
    said there are some other ways to do
  • 00:52:38
    that but you can look into that so
  • 00:52:41
    that's like one column and then the
  • 00:52:43
    another solution that I know off the top
  • 00:52:45
    of my head is a relay server so I
  • 00:52:48
    believe that's what like norray is doing
  • 00:52:51
    uh for netfox and um there's this is
  • 00:52:54
    what a lot of the
  • 00:52:56
    cloud services are offering where you do
  • 00:52:59
    have like a Matchmaker just like you
  • 00:53:01
    know like I did with my AWS thing but
  • 00:53:05
    instead of you giving out your IP
  • 00:53:09
    address they just have a server with
  • 00:53:11
    your game backend running right so
  • 00:53:14
    there's like kind of two architecture
  • 00:53:17
    components here there's like your
  • 00:53:18
    Matchmaker thing and that lives in its
  • 00:53:19
    own thing and then I mean it can be on
  • 00:53:22
    the same server but it's cheaper to just
  • 00:53:24
    do it as a Lambda function uh or a
  • 00:53:26
    server Lambda is AWS product for like a
  • 00:53:29
    serverless server so it just like only
  • 00:53:31
    runs when you need it um and then you'll
  • 00:53:33
    have your game server hosted somewhere
  • 00:53:35
    else um it can be on a whole other cloud
  • 00:53:38
    service or it can be on AWS or wherever
  • 00:53:41
    and all it acts as is is a relay server
  • 00:53:44
    so all your clients are still playing
  • 00:53:47
    P2P but you have a relay server where
  • 00:53:50
    all the connections and commands and
  • 00:53:52
    data transfer relay are relayed through
  • 00:53:55
    so nobody knows knows anybody's IP
  • 00:53:57
    address you can probably do this
  • 00:54:00
    yourself and have a you know a
  • 00:54:02
    standalone or a relay that everybody
  • 00:54:04
    connects to and runs the game that way
  • 00:54:08
    and it's technically I guess PTP because
  • 00:54:11
    you're still you know connecting to
  • 00:54:14
    other people's uh maybe one player is
  • 00:54:18
    like the game server and you're just
  • 00:54:19
    using this as a relay so that you hide
  • 00:54:22
    those IP addresses and I think maybe
  • 00:54:25
    what I said was a little confus using
  • 00:54:26
    cuz it sounded like I I did say that
  • 00:54:29
    your game server would be hosted in
  • 00:54:31
    relay but that's not accurate I think
  • 00:54:33
    what would happen is the game itself
  • 00:54:36
    would assign one of the people as like
  • 00:54:38
    the host or uh this you know the true
  • 00:54:41
    Authority and then the relay is just
  • 00:54:43
    like a relay for the data that gets
  • 00:54:45
    passed back and forth now that's a
  • 00:54:47
    little technical uh I don't know off the
  • 00:54:49
    top of my head anybody that's doing that
  • 00:54:51
    I mean I mean I know GD sync and W4 I
  • 00:54:53
    think and several other people are going
  • 00:54:55
    to provide that service but if you want
  • 00:54:56
    to do it yourself I'm sure there's
  • 00:54:59
    probably 10 different implementations on
  • 00:55:00
    the internet on how to run relay servers
  • 00:55:03
    for P2P games and I don't think you need
  • 00:55:05
    to have to you're not g to you're not
  • 00:55:07
    going to be locked into gdau or anything
  • 00:55:09
    you could probably make a python server
  • 00:55:10
    or a node server and just have everybody
  • 00:55:12
    connect to that and you somehow have to
  • 00:55:15
    figure out how to Mark somebody as the
  • 00:55:17
    host and make them be the you know the
  • 00:55:20
    source of Truth for that so off the top
  • 00:55:22
    of my head I don't know exactly how to
  • 00:55:23
    do that but definitely look into that
  • 00:55:25
    and I'm probably going to link to the
  • 00:55:27
    stream to this person so they have an
  • 00:55:28
    idea of where to go instead of leaving a
  • 00:55:30
    lengthy comment uh great so let me go
  • 00:55:35
    here uh hey so I tried it out mostly
  • 00:55:37
    work okay so they done the problem is
  • 00:55:38
    when testing three more players second
  • 00:55:40
    player will not work for third player
  • 00:55:41
    basically players will not be able to
  • 00:55:42
    see the movements other players who join
  • 00:55:44
    how do you fix this
  • 00:55:47
    uh this sounds like an authority
  • 00:55:50
    problem um anytime that you don't have
  • 00:55:57
    X player seeing X thing from another
  • 00:56:00
    player is like an authority problem um
  • 00:56:04
    where your
  • 00:56:05
    synchronizer either isn't set up
  • 00:56:08
    correctly or your inputs aren't set up
  • 00:56:10
    correctly and you're not cor you're uh
  • 00:56:14
    you're not you know those POs the
  • 00:56:17
    positions of the movements are the the
  • 00:56:19
    the property the position properties and
  • 00:56:21
    getting synced uh
  • 00:56:23
    correctly yeah I'm going to need a
  • 00:56:25
    little bit more information
  • 00:56:26
    because this is a common problem I run
  • 00:56:29
    into this problem if you've watched my
  • 00:56:31
    stream on this making a gdo 3D
  • 00:56:34
    multiplayer template I've ran into that
  • 00:56:36
    problem and I fixed it and it's it's
  • 00:56:39
    always like you're synchronizing
  • 00:56:41
    something's wrong or you know there's a
  • 00:56:43
    conditional missing and you just got to
  • 00:56:46
    just got to take a step back think about
  • 00:56:49
    what am I doing here where is this data
  • 00:56:51
    going who has control of this data it's
  • 00:56:54
    probably you're just synchronizing it a
  • 00:56:55
    little in correctly but yeah uh hello
  • 00:56:57
    what's better system for what's a better
  • 00:56:59
    system for racing games I don't think
  • 00:57:01
    there is a better system I I if you're
  • 00:57:03
    referring to lag compensation with
  • 00:57:06
    netfox um I I I I I'm guessing that netf
  • 00:57:12
    fox will be able to handle that cuz
  • 00:57:15
    racing is just sinking position
  • 00:57:18
    so lag compensation is perfect for that
  • 00:57:23
    uh I think that netf fox may have some
  • 00:57:25
    impr improvements that will help but I I
  • 00:57:29
    think I think that um client side
  • 00:57:33
    prediction and server reconciliation
  • 00:57:34
    should work fine so the algorithm client
  • 00:57:37
    side prediction and server
  • 00:57:38
    reconciliation is just kind of a a term
  • 00:57:41
    we use for that algorithm where you
  • 00:57:45
    immediately apply your players
  • 00:57:47
    movements and at the same time you send
  • 00:57:50
    those movements those inputs not
  • 00:57:53
    movements but the inputs back to the
  • 00:57:54
    server so you show the player move
  • 00:57:56
    whether it's a car or a character and
  • 00:57:59
    your server makes sure that it's correct
  • 00:58:01
    and then it sends that data back to your
  • 00:58:03
    client and your client's
  • 00:58:06
    like or your server basically telling
  • 00:58:08
    your client hey this is what actually
  • 00:58:10
    happened and if that's what actually
  • 00:58:12
    happened then you don't need to correct
  • 00:58:14
    anything um if there was a correction
  • 00:58:17
    and like the player was like over here
  • 00:58:19
    like the two previous movement nodes
  • 00:58:21
    were like this like it was like one two
  • 00:58:24
    three right and these movement M were
  • 00:58:26
    actually over here well then you would
  • 00:58:27
    just reconcile that player to rerun
  • 00:58:31
    those results in like a frame and then
  • 00:58:33
    you would see the player kind of snap or
  • 00:58:35
    lurp or however you want to smooth it
  • 00:58:37
    out over to where they should be so
  • 00:58:38
    that's kind of like what re that's what
  • 00:58:40
    that does so when we say client side
  • 00:58:42
    prediction we're basically just taking
  • 00:58:44
    inputs so key mouse and keyboard inputs
  • 00:58:47
    running them through hopefully a
  • 00:58:49
    deterministic movement code meaning it
  • 00:58:51
    the same code on their server and client
  • 00:58:53
    should give the same movement output so
  • 00:58:55
    really you should never see a problem
  • 00:58:58
    unless you have a lag Spike and you lose
  • 00:59:00
    data uh and maybe some data never
  • 00:59:03
    reaches your server that's okay we can
  • 00:59:05
    still reconcile those things maybe
  • 00:59:07
    you're actually a little bit over to the
  • 00:59:09
    left further than you thought you
  • 00:59:11
    were whatever that's just you know the
  • 00:59:13
    nature of multiplayer games uh and our
  • 00:59:16
    internet our current internet technology
  • 00:59:18
    so I think this algorithm should work
  • 00:59:21
    fine I think netfox should be a good
  • 00:59:23
    start if you are um concerned about it
  • 00:59:27
    not working the only gotcha that I can
  • 00:59:31
    see the only Improvement off the top of
  • 00:59:32
    my head right now is as part of that
  • 00:59:36
    algorithm this this client side
  • 00:59:39
    prediction there are different aspects
  • 00:59:42
    to it that can
  • 00:59:44
    be exercised or implemented and it's not
  • 00:59:47
    like there's one way to do this right
  • 00:59:49
    there's several ways to do this there's
  • 00:59:51
    several like improvements on how you can
  • 00:59:53
    do this implementation of that and one
  • 00:59:56
    Improvement and if you there's several
  • 00:59:58
    videos on the internet about this with
  • 01:00:01
    like unity and even gdau I think the
  • 01:00:03
    Game Dev uh Channel I can't remember the
  • 01:00:05
    name of it but it's like one of the big
  • 01:00:07
    early gdau multiplayer channels he's got
  • 01:00:09
    a ton of videos out there Game Dev
  • 01:00:11
    Central game development Central I think
  • 01:00:13
    that's the name of the channel go watch
  • 01:00:15
    their series there's like 20 videos
  • 01:00:17
    they're not very long just go watch all
  • 01:00:19
    of them if you're really interested
  • 01:00:20
    because it's very helpful I think
  • 01:00:22
    everybody's watched them
  • 01:00:24
    um and uh I think I've even linked to
  • 01:00:27
    them at the in the description of this
  • 01:00:29
    video
  • 01:00:31
    but one of the things that he does that
  • 01:00:34
    netf fox doesn't is there's a uh this
  • 01:00:39
    capability where your player is rendered
  • 01:00:43
    in current time but everybody else has
  • 01:00:46
    rendered 100 milliseconds in the past
  • 01:00:49
    and they claim in that channel that
  • 01:00:52
    that's industry standard I've read in
  • 01:00:54
    multiple places that that's actually
  • 01:00:56
    true so your competitive first-person
  • 01:00:58
    games will render all the players 100
  • 01:01:01
    milliseconds behind and the idea is that
  • 01:01:03
    you don't really notice that as a human
  • 01:01:05
    like you're not going to really see that
  • 01:01:07
    currently net Fox I don't
  • 01:01:11
    believe renders all the other people 100
  • 01:01:14
    milliseconds they render them as fast as
  • 01:01:17
    possible um and I think what that 100
  • 01:01:20
    millisecond render in the past will do
  • 01:01:22
    is it gives you a buffer of 100
  • 01:01:24
    milliseconds no no matter what the lag
  • 01:01:27
    is you always have a 100 millisecond lag
  • 01:01:31
    that's baked in that won't be noticeable
  • 01:01:33
    so any So This Server reconciliation
  • 01:01:36
    part should be much smoother because
  • 01:01:39
    you're going to have less error
  • 01:01:40
    correction because you give yourself
  • 01:01:42
    that 100 millisecond buffer no matter
  • 01:01:45
    what for all the other players in your
  • 01:01:46
    game right so if you have a 10 V10 match
  • 01:01:49
    you are going to see yourself in current
  • 01:01:51
    time but everybody else is going to be
  • 01:01:53
    100 milliseconds behind and that's not
  • 01:01:55
    really enough time for you to miss those
  • 01:01:57
    like head shot calculations uh so and
  • 01:02:00
    again those are all going to be
  • 01:02:02
    calculated should be calculated on your
  • 01:02:03
    server and then corrected and reconciled
  • 01:02:06
    if if it was actually happening on the
  • 01:02:08
    client now there are some serious
  • 01:02:10
    improvements and optimizations to this
  • 01:02:13
    algorithm I believe valve or not valve
  • 01:02:15
    was it valve yeah whoever call
  • 01:02:17
    Counterstrike people uh I think it was
  • 01:02:19
    Val um I believe they have a even I I
  • 01:02:24
    don't know if it was Counter-Strike
  • 01:02:25
    there is some game out there that I just
  • 01:02:26
    saw an article on I have it linked
  • 01:02:28
    somewhere I might go dig it up but they
  • 01:02:31
    made additional improvements to this to
  • 01:02:34
    those twitch you know firstperson games
  • 01:02:37
    uh recently that are supposed to be
  • 01:02:40
    really even more accurate and it's it's
  • 01:02:43
    about when you take time stamps and how
  • 01:02:46
    accurate that time stamp is and how
  • 01:02:49
    accurate your lag compensation is
  • 01:02:51
    because it's not an exact science it it
  • 01:02:55
    is a
  • 01:02:56
    best case scenario you're making an
  • 01:02:58
    algorithm to handle the generic you know
  • 01:03:01
    the general Public's network connections
  • 01:03:03
    and how you reconcile those those lags
  • 01:03:06
    uh between uh or or the um the delay and
  • 01:03:09
    latency uh between all those connections
  • 01:03:12
    so anyways that's a mouthful for such a
  • 01:03:14
    simple question but I think this should
  • 01:03:16
    be fine I'm going to try to post some
  • 01:03:18
    more links to this later and let's get
  • 01:03:21
    going through
  • 01:03:23
    this um
  • 01:03:27
    chat GPT if I get uh is to check the
  • 01:03:31
    peers Authority and compare it with the
  • 01:03:33
    current peers network ID this makes it
  • 01:03:36
    possible for example to perform beh only
  • 01:03:38
    uh on or from the peer initiating action
  • 01:03:41
    what's the difference between RBC call
  • 01:03:42
    local because this is case we're making
  • 01:03:44
    sure that annotated method is called
  • 01:03:46
    we're also making sure that the
  • 01:03:48
    annotated method is called only on the
  • 01:03:50
    client that initiated the RPC call
  • 01:03:53
    asking chat GPT I've never asked chat
  • 01:03:55
    GPT I I can't imagine chat GPT is just a
  • 01:04:01
    language they don't the AI doesn't know
  • 01:04:04
    these answers it's just a language
  • 01:04:07
    whatever that is called processor that
  • 01:04:09
    just puts the next word in front uh if
  • 01:04:13
    get multiplayer Authority is equal to
  • 01:04:15
    yeah that's how you
  • 01:04:17
    get is this
  • 01:04:19
    client is
  • 01:04:21
    this instance of my player what if it's
  • 01:04:24
    on my machine or the server someone's
  • 01:04:26
    else machine you're
  • 01:04:28
    checking is the authority equal to that
  • 01:04:30
    Pier so this is good for if you're
  • 01:04:33
    checking to see is it client side
  • 01:04:35
    Authority or you know which this is a
  • 01:04:38
    good check to make sure that we don't do
  • 01:04:41
    things on the wrong Pier like this is
  • 01:04:45
    where if you want to make sure that
  • 01:04:47
    inputs are
  • 01:04:48
    only produced from my authority my
  • 01:04:52
    client Authority this is like a good
  • 01:04:53
    check for that um and that that's what
  • 01:04:56
    they're saying that's what they're
  • 01:04:57
    saying uh but for example uh to perform
  • 01:05:00
    only from the period initiate the action
  • 01:05:02
    right so what's difference between that
  • 01:05:05
    and call local call
  • 01:05:08
    local
  • 01:05:10
    is an an annotation uh or a parameter to
  • 01:05:14
    this annotation that means that you can
  • 01:05:18
    also call to the
  • 01:05:21
    local Pier that's that's initiating the
  • 01:05:24
    RPC call so if if you're on a
  • 01:05:27
    client and you make an RPC call by
  • 01:05:29
    default it should call to all other
  • 01:05:33
    clients by
  • 01:05:34
    default and if you add call except for
  • 01:05:38
    the one you're on right so your RPC is
  • 01:05:40
    just like send a message everybody
  • 01:05:42
    except myself like the default RPC
  • 01:05:44
    implementation um now if you add call
  • 01:05:47
    local it says call everybody else and
  • 01:05:50
    myself
  • 01:05:53
    so I'm not really sure
  • 01:05:56
    I mean other than we're making sure the
  • 01:05:58
    ant is call for only on the client that
  • 01:06:00
    initiated it I'm not exactly sure what
  • 01:06:04
    the use case is um these are really good
  • 01:06:07
    questions and I think this is just part
  • 01:06:09
    of multiplayer development is you know
  • 01:06:11
    you've it's really confusing and you the
  • 01:06:15
    tools that you use tend to differ
  • 01:06:17
    slightly they're very similar between
  • 01:06:19
    engines but um they do differ slightly
  • 01:06:22
    where like they don't translate exact
  • 01:06:24
    and like Unity has like much more
  • 01:06:26
    powerful uh tools for certain parts
  • 01:06:29
    about multiplayer and that gdau doesn't
  • 01:06:31
    have yet and uh but we'll get there and
  • 01:06:34
    uh yeah there's a whole there
  • 01:06:36
    aren't many Service uh many videos or
  • 01:06:40
    resources out there in multiplayer which
  • 01:06:41
    is why you know I'm I'm doing this netf
  • 01:06:44
    fox have oh we got a netfox question
  • 01:06:46
    about C well I have netf Fox
  • 01:06:49
    open uh GD script GD script so I don't
  • 01:06:54
    think they support C
  • 01:06:56
    yeah it's just a GD script extension I
  • 01:06:59
    don't think they have support for that
  • 01:07:01
    yet hey netfox you got to list your
  • 01:07:04
    Discord on here they've got a Discord
  • 01:07:06
    now um so here's
  • 01:07:10
    netfox uh Discord and uh Discord let's
  • 01:07:14
    do that I don't think they'll mind I'd
  • 01:07:18
    be curious how character date and items
  • 01:07:19
    inventory play I'm work go oh yeah yeah
  • 01:07:22
    so um I'm definitely planning on I'm
  • 01:07:25
    doing more I I'm yeah saving things to
  • 01:07:29
    the database player logins there are so
  • 01:07:32
    many different services to approach this
  • 01:07:34
    like where do I start well I'm probably
  • 01:07:36
    going to start with steam because
  • 01:07:38
    everybody lists their game on Steam
  • 01:07:40
    steam authentication should be pretty
  • 01:07:43
    straightforward I got a heart face so um
  • 01:07:48
    let's just leave a heart back and you
  • 01:07:50
    know I there's so many ways to do
  • 01:07:52
    databases I mean that's what you mean by
  • 01:07:54
    inventories you know synchronizing we're
  • 01:07:55
    going to get to that I do play to make
  • 01:07:57
    MPL game and I have a question if
  • 01:07:58
    someone's data M the code would they
  • 01:07:59
    find out secrets that that only the
  • 01:08:02
    server
  • 01:08:03
    executes for example when the secret
  • 01:08:05
    boss trigger is possible um yeah if you
  • 01:08:09
    if you deploy if you build your if your
  • 01:08:14
    server code is with your client code
  • 01:08:17
    which right now I've been doing just for
  • 01:08:20
    all my demos just because I think that's
  • 01:08:23
    a little bit more advanced um
  • 01:08:26
    and I just haven't had the time to do a
  • 01:08:28
    separate video on that but if you are
  • 01:08:31
    serious yeah you can structure your game
  • 01:08:34
    in a way that's slightly different where
  • 01:08:36
    you have your server code especially if
  • 01:08:39
    you're if you're using highle
  • 01:08:42
    apis it may be a little harder to get
  • 01:08:46
    away with this like the the built-in
  • 01:08:48
    gdau highle multiplayer apis and maybe
  • 01:08:51
    not but the idea is that you would have
  • 01:08:53
    your server code
  • 01:08:56
    separate from your client code meaning
  • 01:08:58
    you're not going to have shared server
  • 01:09:02
    code in the same file
  • 01:09:05
    so the better way to do it okay so
  • 01:09:08
    there's a couple different ways you can
  • 01:09:09
    have separate projects you can have a
  • 01:09:10
    client in a server but if you're using
  • 01:09:12
    highle apis that's going to be difficult
  • 01:09:14
    because you're what you're going to have
  • 01:09:15
    to do is make sure is that you manage
  • 01:09:18
    the paths that your project is
  • 01:09:21
    structured because your rpcs and your
  • 01:09:23
    synchronizations are going to look for
  • 01:09:25
    that node path and those must be
  • 01:09:26
    identical so if you have uh a player
  • 01:09:30
    object or some World object and in there
  • 01:09:33
    there's a synchronizer or an RPC
  • 01:09:35
    wherever that node and script that that
  • 01:09:38
    rpz exists on has to be identical path
  • 01:09:43
    on both client server or else it won't
  • 01:09:45
    work like player slash input slash
  • 01:09:49
    player synchronizer that same path must
  • 01:09:52
    be the same if you're going to if you're
  • 01:09:54
    going to have an RPC there even if you
  • 01:09:56
    don't use that RPC on your client I'm
  • 01:09:58
    pretty sure that if you read the gdau
  • 01:10:00
    documentation which I was looking at
  • 01:10:01
    yesterday or the day before uh that was
  • 01:10:03
    one of their big warnings that they had
  • 01:10:06
    maybe that will change in the future the
  • 01:10:08
    next thing to consider so that was like
  • 01:10:09
    separate projects the next thing to
  • 01:10:11
    consider is um you can do separate
  • 01:10:16
    projects but don't use the high level
  • 01:10:17
    multiplayer apis meaning you're using
  • 01:10:19
    the lower level maybe you have a UDP
  • 01:10:21
    connection maybe TCP um and you're just
  • 01:10:25
    going to be connecting to some server
  • 01:10:28
    then you're not using highle apis at
  • 01:10:30
    that point you're just sending data then
  • 01:10:33
    then you can manage it however you want
  • 01:10:35
    you don't have to worry about paths
  • 01:10:37
    being the same because you're just
  • 01:10:38
    sending data to some end point or some
  • 01:10:42
    through some socket through some
  • 01:10:43
    connection and then that you know server
  • 01:10:46
    or client whatever respectively just
  • 01:10:48
    knows how to process that data because
  • 01:10:49
    you have to build all that um that's
  • 01:10:52
    message sending and that's a whole other
  • 01:10:54
    thing I haven't gotten to that yet
  • 01:10:55
    eventually I plan on doing that and then
  • 01:10:57
    you can separate out your client server
  • 01:10:59
    and that's probably a lot easier you can
  • 01:11:01
    also have another option is to have a
  • 01:11:03
    shared project with your network code
  • 01:11:06
    that both projects use that way you
  • 01:11:08
    don't have to worry about the paths
  • 01:11:09
    lining up because you built a separate
  • 01:11:12
    like module or extension or something
  • 01:11:14
    for your game that both games inherit
  • 01:11:16
    from now there's complexities and those
  • 01:11:18
    things that I've named because now
  • 01:11:20
    you're managing separate projects you're
  • 01:11:22
    you got to make sure things are imported
  • 01:11:23
    correctly and you have to make sure that
  • 01:11:24
    if you a shared project that you
  • 01:11:27
    maintain the same version between the
  • 01:11:28
    client server because if you don't then
  • 01:11:30
    they're going to mismatch maybe you have
  • 01:11:31
    some logic in one that you didn't share
  • 01:11:33
    in the other okay so that's separate
  • 01:11:35
    projects another way to do it is to
  • 01:11:36
    handle it in different folders where you
  • 01:11:38
    have like a client folder or a client
  • 01:11:40
    folder section and you have a server
  • 01:11:42
    folder section and then when you do your
  • 01:11:43
    dedicated server build or you build your
  • 01:11:45
    clients uh for hosting on Steam for
  • 01:11:49
    example you just exclude the server
  • 01:11:52
    folders for your client builds and
  • 01:11:54
    that's what I would recommend recommend
  • 01:11:55
    doing or you can exclude specific files
  • 01:11:59
    um I don't think
  • 01:12:03
    that when I was talking about how RPC
  • 01:12:06
    paths have to uh be in the same path I
  • 01:12:08
    don't think you need to have the server
  • 01:12:11
    version of that like if you had um
  • 01:12:15
    trying to think what I'm trying to say
  • 01:12:16
    so if you call an RPC from a server file
  • 01:12:19
    that should only really be called from
  • 01:12:21
    the server I don't know if that same
  • 01:12:23
    file has to exist on your client as as
  • 01:12:25
    well um I I'm I'm guessing no the way
  • 01:12:30
    I'm thinking about it like so if you had
  • 01:12:31
    like all your server rpcs in one file um
  • 01:12:34
    for like your player I don't think that
  • 01:12:37
    you necessarily have to have those on
  • 01:12:39
    the client but if you do just don't put
  • 01:12:41
    any logic in those like let's say you do
  • 01:12:45
    have to have those rpcs um on both
  • 01:12:48
    client server you could have like a a
  • 01:12:50
    shared file that will have your RPC
  • 01:12:53
    stubbed out but just don't put your
  • 01:12:55
    server logic in there like for example
  • 01:12:58
    if a
  • 01:13:01
    player if you have a secret and you have
  • 01:13:06
    a client side um well technically what I
  • 01:13:09
    would do is I would so for this
  • 01:13:13
    example I think you would have like some
  • 01:13:16
    object that maybe only exists on your
  • 01:13:18
    server like maybe you can find a way to
  • 01:13:20
    not you know put like if you when you
  • 01:13:22
    ship your client don't put that object
  • 01:13:25
    there and that object would have a ont
  • 01:13:28
    trigger effect through you know on
  • 01:13:31
    bodybody collision or on body Ender or
  • 01:13:33
    something like that and your server I
  • 01:13:35
    mean you can have it on the client
  • 01:13:37
    that's fine whatever you just ignore it
  • 01:13:38
    but on the server side when that trigger
  • 01:13:41
    happens call to some function and then
  • 01:13:44
    have that function uh make an RPC call
  • 01:13:48
    to that or or do some action and that is
  • 01:13:52
    only on the server and because you you
  • 01:13:55
    excluded those files from your client
  • 01:13:56
    build um I'm going to I'm rambling a lot
  • 01:13:59
    about this but I think the best way to
  • 01:14:01
    do this is to experiment try something
  • 01:14:03
    really easy where you create a build for
  • 01:14:07
    your client and exclude your server uh
  • 01:14:10
    the server files or scripts that are
  • 01:14:13
    going to actually do the secrets and so
  • 01:14:16
    if they do data mind your client all
  • 01:14:19
    they're going to see is maybe a
  • 01:14:22
    collision that makes an RPC call to the
  • 01:14:24
    back end and or I wouldn't even do it
  • 01:14:27
    that way if you're trying to be super
  • 01:14:28
    secretive you could still have the
  • 01:14:30
    Collision but it just doesn't do
  • 01:14:31
    anything on the client maybe just
  • 01:14:32
    ignores it and then you you can manually
  • 01:14:35
    you can do a detect yeah I'm kind of
  • 01:14:37
    thinking out loud here um if you're if
  • 01:14:41
    you're I guess maybe I don't know how
  • 01:14:44
    you would not be able to not put that on
  • 01:14:46
    the client but you could have a check
  • 01:14:49
    that's
  • 01:14:51
    like if
  • 01:14:53
    server uh
  • 01:14:55
    only uh only add this uh signal only
  • 01:14:58
    connect the signal the on enter body
  • 01:15:00
    signal if it's on a server so like if
  • 01:15:03
    Authority you know only add this signal
  • 01:15:06
    so maybe that you wherever that signal
  • 01:15:10
    lives is in another script and nobody
  • 01:15:13
    knows what that signal does and you just
  • 01:15:15
    exclude that script from the server uh
  • 01:15:17
    from the client build and you only use
  • 01:15:19
    that uh script on the server so that
  • 01:15:22
    could totally so you can you still might
  • 01:15:24
    have to have like some of the initial
  • 01:15:26
    setup that could be exposed so people
  • 01:15:27
    maybe people would see that you know I
  • 01:15:30
    don't know you're going to have to work
  • 01:15:31
    through this and really figure that out
  • 01:15:32
    I like this problem and I think I would
  • 01:15:35
    like to do a video on this eventually um
  • 01:15:39
    so I'm gonna actually just write a note
  • 01:15:41
    so I don't forget to do it and the last
  • 01:15:44
    one I'm going to look at
  • 01:15:46
    today got stuck on the jump stuff yeah
  • 01:15:50
    so what's happening is jump jump can be
  • 01:15:54
    handled different ways like in various
  • 01:15:57
    approaches over the last year and maybe
  • 01:16:01
    I've used an RPC for some of my jumps
  • 01:16:03
    maybe I use a sync variable for some of
  • 01:16:05
    my jumps uh the input type has changed
  • 01:16:08
    from you know on pressed to get strength
  • 01:16:12
    get input strength uh it really depends
  • 01:16:14
    on what you're trying to do with jump
  • 01:16:16
    and I think in in this tutorial I the 3D
  • 01:16:21
    tutorial the jump mechanisms there I I
  • 01:16:23
    like a little bit better um and and I'm
  • 01:16:26
    actually doing State machine jump right
  • 01:16:29
    now with this and one of the things I'm
  • 01:16:31
    addressing in this stream and not part
  • 01:16:34
    four but I guess part five which will
  • 01:16:35
    come out next week is the actual
  • 01:16:37
    implementation of the jump Logic the
  • 01:16:40
    start of the jump logic so I don't have
  • 01:16:42
    it finished but I think what jump will
  • 01:16:44
    be split up into is jump up and then a
  • 01:16:48
    fall state so you know you're going to
  • 01:16:52
    move to the jump up state or jump state
  • 01:16:54
    by hitting space bar but then you have
  • 01:16:56
    to fall down and that should be like a
  • 01:16:59
    different state should be a different
  • 01:17:00
    animation because fall State can happen
  • 01:17:03
    if you just run off a ledge so if you
  • 01:17:04
    detect that you're falling down change
  • 01:17:07
    your player if not on ground oh you're
  • 01:17:10
    in Fall state or if you jump up then
  • 01:17:12
    transition to a fall State until you hit
  • 01:17:14
    the ground and then once you're on
  • 01:17:15
    ground again then you move back to idle
  • 01:17:17
    or moving or run or walk state or
  • 01:17:19
    whatever uh so I think that's kind of
  • 01:17:22
    covers what's going on with this but
  • 01:17:24
    yeah you're going to have to do some
  • 01:17:25
    stuff the the do jump thing that I did
  • 01:17:27
    in in this
  • 01:17:29
    example may not be the best you might
  • 01:17:32
    find some improvements I'm sure there's
  • 01:17:34
    an improvement on it I just need I
  • 01:17:35
    wanted to have something just really
  • 01:17:36
    basic working so yeah there's definitely
  • 01:17:38
    some more work to be done there all
  • 01:17:40
    right well I'm I'm going to wrap up with
  • 01:17:42
    these couple comments here and thanks
  • 01:17:44
    for coming by I'm just going to get
  • 01:17:45
    through these uh questions really quick
  • 01:17:48
    and then I'm going to bail uh and uh
  • 01:17:52
    yeah this was good um appreciate you
  • 01:17:54
    stopping by uh so this person was saying
  • 01:17:57
    uh they had a
  • 01:17:59
    typo uh when they were doing the what
  • 01:18:03
    was I saying did you select the dedicate
  • 01:18:05
    oh here we go today I tested Brack's
  • 01:18:07
    game with pgp over steam with the friend
  • 01:18:09
    Connection work perfectly I got
  • 01:18:10
    thousands of strange warnings yeah yeah
  • 01:18:13
    I opened that um so yeah thanks for that
  • 01:18:17
    guys uh and uh so I'm I'm I'm done with
  • 01:18:21
    Discord for today uh and this person was
  • 01:18:23
    asking about uh
  • 01:18:26
    uh they were saying the zooms were a
  • 01:18:27
    little Annoying and yeah I totally get
  • 01:18:29
    it uh can uh but I got something good
  • 01:18:32
    things I can spawn and hit kill
  • 01:18:33
    multiplayer enemies but anybody join
  • 01:18:34
    later he will see enemy ghosts enemy but
  • 01:18:36
    if anyone joins later he will see enemy
  • 01:18:38
    ghosts
  • 01:18:41
    um yeah I think I think you have to
  • 01:18:44
    despawn from the server um yeah I think
  • 01:18:48
    there's a way to despawn off the top of
  • 01:18:50
    my head I think you just uh I think you
  • 01:18:52
    can Q free on the server and that should
  • 01:18:55
    do it
  • 01:18:59
    um yeah you basically have to remove
  • 01:19:01
    them I think you have to do a despawn by
  • 01:19:03
    running a q free all right so let's see
  • 01:19:08
    what else kind of I think I had some
  • 01:19:13
    more yeah I'm I'm not going to do nakama
  • 01:19:17
    anytime soon I I
  • 01:19:19
    I I really it's really expensive uh and
  • 01:19:23
    it it looks really good and it looks
  • 01:19:25
    really feature like when I say good I
  • 01:19:28
    just mean it the feature sets seem
  • 01:19:30
    pretty strong and I think it's a a
  • 01:19:32
    really comprehensive uh multiplayer
  • 01:19:35
    solution I just don't I think it's going
  • 01:19:37
    to be a while before I get to them um
  • 01:19:40
    there was a multiplayer there's another
  • 01:19:43
    big gdau YouTuber um he just did a
  • 01:19:46
    nakama server I don't know if it's
  • 01:19:49
    public though so I would check I would
  • 01:19:53
    look around for that I don't have his
  • 01:19:56
    channel on the top of my head right now
  • 01:19:58
    but yeah I would I would just check to
  • 01:20:00
    see if um man I wish I could wish I
  • 01:20:04
    could post to that really quick um what
  • 01:20:08
    was his name oh oh fine point
  • 01:20:12
    CGI fine
  • 01:20:15
    point CGI yeah you know I'm not GNA be
  • 01:20:18
    able to get to everything but maybe
  • 01:20:19
    somebody else did um so yeah you guys
  • 01:20:22
    just uh bunch YouTubers out there doing
  • 01:20:25
    some good stuff so all right I think I
  • 01:20:27
    think I got through everything all right
  • 01:20:28
    well that was a good stream uh I'm glad
  • 01:20:31
    I got I got you some help today um I
  • 01:20:34
    gotta finish up replying to some of
  • 01:20:35
    these folks but I'm gonna sign off now
  • 01:20:39
    and I'm gonna start streaming I'm going
  • 01:20:42
    to try to stream more regularly
  • 01:20:44
    throughout the week just to get this
  • 01:20:46
    template wrapped up
  • 01:20:49
    and uh move on to the next thing and I'm
  • 01:20:52
    going to try to just stream my
  • 01:20:53
    development process a little a little
  • 01:20:54
    bit more and uh try to get used to that
  • 01:20:57
    setup thank you so much for coming by
  • 01:20:59
    and uh stay connected and we'll uh we'll
  • 01:21:02
    talk soon
タグ
  • multiplayer
  • servidores de jogos
  • AWS
  • Docker
  • otimização de jogos
  • cloud computing
  • game development
  • desenvolvimento de jogos
  • personalização de personagens