TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #949 · 26.01

На выходных попробовали Трон Кубов. Это такая полудуэльная игра на сражение между разными персонажами. У игры фантастически крутой продакшен — каждый планшет героя оформлен в своём стиле со своими цветами, кубики сделаны с персональной текстурой и гранями, своя колода карточек и жетоны состояний. Вообще, каждый персонаж это просто такая мини-коробочка со всем необходимым, можно носить на турниры (под это, собственно, игра изначально и создавалась). У каждого персонажа свои способности, но сам игровой процесс одинаковый: бросаешь кубики, и по ним определяешь, какую из способностей активировать. На кубики можно влиять: во-первых, выбирать, какие и сколько раз перебросить; во-вторых, играть с руки карты вроде "Установи любой кубик в желаемое положение", "Скопируй один из выпавших кубиков", "Измени значение на единицу". Игра моим друзьям очень понравилась, а ещё она оказалась на удивление сбалансированной: первую партию сыграли вничью, во второй мы убили соперников, когда у нас самих оставалось 2 жизни из начальных 50. Задумался в целом о рандоме в играх. Кит Бургун пишет, что синглплеерные игры без источника случайности вообще не могут существовать, потому что иначе они превращаются в пазлы: для каждой ситуации находится и фиксируется оптимальный ход, игра становится решённой (solved). В играх против других людей ваш соперник является источником случайности для вас, потому что вы не знаете, как он думает. И всё-таки, добавление случайности в саму механику часто очень важно. Бывают игры с огромным пространством неоднозначных решений, как, например, шахматы или го. У них есть своя интересная специфика, но нередко они требуют очень длительного обдумывания хода, потому что человек начинает перебирать это пространство в глубину, и делает это сравнительно медленно. Бывают игры с очень маленьким пространством решений, например, крестики-нолики, и любому взрослому играть в них скучно. Найти баланс довольно сложно, поэтому (по крайней мере среди казуальных игр) хорошо работает следующая механика: игрок с помощью случайности либо получает небольшой кусочек пространства решений, либо ему меняют веса в этом пространстве так, чтобы его настоящий выбор был не таким большим. В добавок это создаёт мета-игру на риск, повышает реиграбельность, а ещё позволяет более слабому игроку выиграть за счёт удачи — очень хорошие свойства для казуальной настолки. Впрочем, в такой системе тоже не слишком легко сбалансировать процесс. Иногда от случайности может зависеть слишком многое, и мы получим Монополию или Колонизаторов, в которых скилл вообще не влияет на победу. Иногда случайность добавлена, но она скорее мешает: в Brass шесть разных действий, доступных с помощью карт, но только в одном важно, какая именно карта вам пришла. Иногда случайность добавлена и не работает как надо: в Hearthstone порядок прихода карт почти не влияет на решения игрока — он всегда играет оптимальную карту в конкретный ход. А иногда рандом приводит к злоупотреблению другими аспектами игры: в Baldurs Gate 3 из-за броска одного кубика может зависеть результат сложнейшего боя, поэтому иногда выгоднее просто перезапускать сохранение, пока не выпадет, как надо. Так что задача геймдизайнера отнюдь не становится простой при работе со случайностью. По первым двум партиям кажется, что авторы Трона Кубов вполне справились с управляемым рандомом, но евро-игрокам скорее всего такая степень случайности будет казаться большой, да и стратегически игра совершенно не глубокая. В любом случае, продолжим играть, пока не надоест :) #games

Hashtags

Резултати

Намерени 3 подобни публикации

Търсене: #ifdef

当前筛选 #ifdef清除筛选
Welcome to the Black Parade

@TheB1ackParade · Post #506 · 05.03.2024 г., 03:58

莫名其妙忙起来了,随便记点免得忘了: 1. tproxy / bpf_sk_assign 对 established tcp 的性能影响是负的,因为设置上 skb->sk 会让 ip_rcv_core 里的 tcp_early_demux 检测失败,从而必须进路由系统。所以正确使用方法是只对 tcp syn 使用 tproxy/sk_assign。 2. 能不能优化 bpf_sk_assign,让它对 listening socket 的 assign 也能像 tcp_early_demux 一样?不能,因为 listening tcp socket 的 sk->sk_rx_dst 是 null,只有 established sk 才有这个 dst。 3. tcpdump ip6 and tcp 生成的 cbpf 是“错的”。它没考虑 ip6 extension。但是 tcpdump (libpcap) 有个对 v6 特别的过滤器: ip6 protochain 6 , 就迭代了 ip6 extension,四次,但是对大部分场景也够用。 4. 晦涩的逻辑。icmp6_host_handle 这个函数名看起来没啥,但是要是我告诉你它实际语义是:只需要在 ( ingress 方向) 或者 (防火墙启动时候的双向) 执行它,如果在 ingress 方向执行的时候不要反弹 icmp6,如果要反弹 icmp6 的话不要反弹 NS for node IP,但是也不要直接返回给内核栈而是继续执行剩余的 nodeport lb。我看着这个原本简单的函数从两个参数变成现在的五个,里外的 #ifdef 嵌套层层恐惧,真是美好的软件。

Hashtags

KernelSU Next

@ksunext · Post #815 · 20.07.2025 г., 20:11

kernel: guard syscall hook types - for kernel syscall hooks we need to pass additional guards for ksun (#ifdef CONFIG_KSU -> #if defined(CONFIG_KSU) && !defined(CONFIG_KSU_KPROBES_HOOK)) or else it will fail to build because of undefined symbol - reference https://github.com/KernelSU-Next/kernel_patches/blob/main/syscall_hook/min_scope_syscall_hooks_v1.4.patch https://github.com/KernelSU-Next/KernelSU-Next/commit/45ad73e9dd86a0ff04a02e73a8fc2dbc3160ee6c

Hashtags