• Как работать с ассоциациями в sequelize в Nest.JS?

    YuriyVorobyov1333
    @YuriyVorobyov1333
    Software Developer
    В товарах сделайте так:
    @BelongsTo(() => User)
      user: User;
    
      @ForeignKey(() => User)
      @Column({
        type: DataType.STRING,
        allowNull: false,
      })
      userId: string;


    В пользователях так:
    @HasMany(() => Goods)
      userGoods: Goods[];


    Потом напишите функцию добавления товаров и записывайте вместе в id юезра в соответсвующее поле, а когда выборку будете делать, то используйте include, если вам надо достать товары по юзеру или юзера по товарам
    Ответ написан
  • Как работают сессии матчей в онлайн играх?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Зависит от количества игроков и от самой игры.

    С учётом того, что отдельные сессии независимы друг от друга (никак не связаны и не влияют друг на друга до окончания), выгодно и правда делать в отдельных процессах или потоках. По окончании сессии, её результаты приводят к изменению в базе данных, что может повлиять на следующую сессию (подбор игроков, начальные условия и т.д.)

    Но если есть какая-то хитрая механика, которая связывает сессии, то это может быть не вариант.

    Также отдельной сессии можно добиться в ситуации, когда один из игроков является как бы сервером (хостом). В этом случае и отдельный сервер практически не нужен. Нужен только сервер для подбора игроков (matchmaking), а дальше сессию поддерживаю они сами.

    При большом (огромном) количестве игроков одного сервера и вовсе не хватит. Тогда уже нужно думать о том, как раскидывать сессии по разным серверам. Таким образом, подбор сессии - один сервер, затем он посылает игрокам инфу, на каком сервере они будут играть, а также ключи, чтобы получить доступ к этому серверу, и далее они взаимодействуют уже с конкретным сервером. А рядом стоят другие сервера для сессий. Как-то так. В общем, очень похоже на ситуацию, когда хостит один из игроков, только используются официальные сервера от разработчика игры.

    Самый сложный вариант - это, конечно же, ММО с открытым бесшовным миром. Там тысячи игроков в одном мире, но могут пересекаться со временем, хотя большую часть времени находятся далеко друг от друга и не соприкасаются. Там используются хитрые алгоритмы распределения по серверам. Но если все игроки соберутся в одной точке, то, скорее всего, всё поломается. Слава богу, что маловероятно, что все игроки условного игрового сервера (состоящего из многих физических) захотят собраться в одном месте.
    Ответ написан
    Комментировать
  • Как работают сессии матчей в онлайн играх?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Является ли каждая игровая сессия, в которой сидит по 10 игроков, новым процессом на сервере? Или это реализовано как-то по другому?

    По-разному.
    Может быть отдельный процесс.
    Может быть отдельный тред.
    Может быть вообще один процесс на все.

    Зависит от игры, от матча, от требований к быстродействию и синхронизацию.
    Ответ написан
    Комментировать