Тема
15 128
16
nazarpunk, как и в реляционной БД, так и тут присутствуют индексы вот пример того как их можно определить на C#:
[SpacetimeDB.Table(Name = "Inventory")]
[SpacetimeDB.Index(Name = "product_name", BTree = ["name"])]
public partial struct Inventory
{
    [SpacetimeDB.PrimaryKey]
    public long id;
    public string name;
    ..
}

[SpacetimeDB.Table(Name = "Customers")]
public partial struct Customers
{
    [SpacetimeDB.PrimaryKey]
    public long id;
    public string first_name;
    public string last_name;
    ..
}

[SpacetimeDB.Table(Name = "Orders")]
public partial struct Orders
{
    [SpacetimeDB.PrimaryKey]
    public long id;
    [SpacetimeDB.Unique]
    public long product_id;
    [SpacetimeDB.Unique]
    public long customer_id;
    ..
}
В документации можно найти Best Practice по создания индексов и оптимизации.
30
А что там с индексами и фильрами? Или они просто решили сделать очень быстрый фуллскан?
38
struct Position
Значит, не SoA, где avx-512)

Идём от общего к частному

Мы идём от общего к частному. Задаём системе вопросы на самом общем уровне и постепенно углубляемся в детализацию. Если на какой-то вопрос мы не смогли ответить, значит, скорее всего, мы пропустили какой-то более общий вопрос, от которого зависит рассматривая ступень детализации, в этом случае не стесняемся вернуться на один или несколько уровней абстракции назад.
Статья
75 471
17
nazarpunk, "Тоесть чтоб в среднем на 10 стрелков приходилось 15 грунтов и 15 футманов."
Хоть я и не горю желанием вступать здесь в дискуссии, но последний комментарий, всё-же, дам. Воспримешь ли ты его, или найдёшь в этом повод поднять себе чсв - дело твоё.
Когда речь идёт о сражении стеков, их первичную ценность чаще всего адекватнее выражать через корень их мощи, (которая в свою очередь является произведением выживаемости и вредоносности).
Но это лишь первичный фактор.
Следом идут дополнительные факторы + множители от их способностей.
Ценность юнита контекстно зависима, в контексте А он может быть мощнее среднего противника, а в контексте Б - слабее.
Например, в узких коридорах себя эффективнее показывают "мощные" юниты, а в широких проходах "многочисленные" или "стрелковые" (на примере 300-т спартанцев). (ценность меняется от контекста)
Назовём узкие проходы - контекстом А, а широкие проходы - контекстом Б.
Если у тебя 100% игры происходит в контексте А - то ценность юнита нужно высчитывать исходя из замкнутых коридоров, то есть брать не корень из мощи, а, например ценность = мощь^(2/3). или =мощь^(5/7) и т. д.
Этот коэффициент нужно подбирать исходя из геометрии уровня и с учётом радиуса стрельбы стрелковых юнитов, когда подберёшь коэффициент - можешь использовать его для определении ценности других юнитов.
Если у тебя 100% игры происходит в контексте Б (т. е. широкие пространства), то коэффициент будет другим.
Если у тебя 50% игры в контексте А, а 50% в контексте Б - то бери среднее между ценностями в двух контекстах и т. д.
Если ты хочешь, чтобы в разных ситуациях были эффективны разные юниты, то следует позаботиться о том, чтобы не было ни одного юнита, который мощнее других юнитов своего тира во всех контекстах.
Это лишь пример.
Следующим слоем стоит синергия и диссинергия.
Так, если у тебя 10 мечников + 10 стрелков мощнее, чем 20 стрелков и мощнее, чем 20 мечников - значит они оказывают друг на друга синнергирующее влияние. Следует завести таблицы и выписывать в неё синергирующие и диссинергирующие механики и скилы (пример синергирующего скила с бронёй - лечение юнитов с высокой защитой эффективнее, чем лечение юнитов с отсутствующей бронёй). Определить их степень влияния друг на друга и выявить каким образом они умножают базовую ценность юнитов.
Но это всё в контексте данной статьи не так важно. Статья ставит перед собой другие цели. В нашем чате возникало обсуждение этой темы, поэтому я просто прикреплю скрин "запроса-ответа" сюда.
Загруженные файлы
38
nazarpunk, никак, проходить мимо
Отправляться в мир футманов
30
Тут чистые функции.
Ну и как мне выразить футмана чистыми функциями?
38
nazarpunk, где ты в статье UE нашел или юнити? Тут чистые функции.
Как ты любишь выражаться, когда мозгом думать изобретут
30
сотни тыщ строк лапши от близзард
А чем они отличаются от таких же сотен тыщ лапши от UE или Unity?
38
nazarpunk, какой же он упрощенный, сотни тыщ строк лапши от близзард
30
ScorpioT1000, в заголовке обещана практика, есть куча умных картинок, а банальный, сильно упрощённый пример даже посчитать не получается?