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

TGINSIGHT SIMILAR POSTS

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

Изходен канал @clockstackwheels · Post #892 · 29.10

Frostpunk — весьма самобытная игра-стратегия с интересной стилистикой. Изначально это видеоигра, но по ней не так давно вышла настолка, которую будут локализовать и официально привезут в Россию. Сейчас уже идёт предзаказ у издательства Фабрика Игр. Чтобы понять, хочу ли я настолку, решил наконец попробовать компьютерную версию, которая давно лежала в листе ожидания. По сюжету климат на Земле превратился в вечную сверхсуровую зиму, цивилизация уничтожена, и только жалкие остатки человечества пытаются выжить. Они нашли огромный угольный генератор (о том, как он появился, рассказывает дополнение к игре) и потихоньку строят город вокруг него. Основные ресурсы это уголь, дерево, сталь и пища, которые нужно добывать разными способами, попутно выстраивая как экономику, так и социальные взаимоотношения. Симуляция в игре прорабатывает действия и состояние каждого отдельного человека. Отправил кого-то работать на плохо отапливаемый завод — у него растёт шанс заболеть, после чего он работать не сможет какое-то время, и эффективность завода снижается. В итоге, заботиться об отоплении нужно не просто так, потому что игра командует, а с вполне конкретной практичной целью. Температура в мире постоянно снижается. Начинаешь ты при -20, а заканчиваешь активные действия уже около -80. У населения есть уровень надежды и уровень недовольства: в мою первую игровую сессию я проиграл как раз из-за его превышения. Нужно правильно выстраивать цепочку законов и других управляющих воздействий, определять направление развития исследований, решать конфликты. Вообще, считаю стратегии такого плана очень полезным опытом, потому что они, хоть и с сильным упрощением, показывают работу процессов на уровень выше, чем индивидуальные потребности человека. Вот ты, как управляющий, видишь, что уголь заканчивается, и, если срочно не добыть его больше, то кухня замёрзнет, тогда не будет еды, все умрут. Отправляешь людей на суточные смены, они возмущаются и называют тебя тираном, но ты то понимаешь, что иначе им же станет хуже. Посылаешь на работу детей и калек — выживание требует, ничего не поделаешь. Чтобы возмущение не росло, строишь дозорные вышки и обучаешь побольше стражи. Кто-то умер — не отвлекаемся от работы, завтра минус семьдесят, если лазареты с больными не обогреть, то умрёт ещё больше. Город в виде концентрических колец вокруг источника тепла — не только очень красивое решение, но и прекрасный образец хорошего UX для стратегии. У тебя все точки контроля под рукой, не нужно постоянно мотать камеру через всю карту. Ну и в целом игра очень логичная, это и плюс и минус. Минус, потому что после двух сессий ты уже будешь хорошо знать, что делать, так что реиграбельность страдает. Ещё заметно, что разработчикам не хватило денег на более дорогие анимации, катсцены, и вообще полировку мелочей. Но первая часть очень популярна, уже анонсирована вторая, авторы заработали, так что ждём всего больше и лучше! А настолку, наверное, возьму. #games

Hashtags

Резултати

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

Търсене: #haskell

当前筛选 #haskell清除筛选
宇宙航海誌

@uchuukoukaishi · Post #368 · 31.07.2023 г., 13:36

今天下午碰到一个并发问题,之前写的 Haskell 并发代码有考虑不周的地方,在特定情况下会死锁,简化一下是这样的: replicateM_ n_workers . forkIO $ do { -- Worker 线程 doSomethingThatMayFail; signalTSem semaphore; } -- 主线程 waitTSem semaphore 如果 doSomethingThatMayFail 抛异常导致线程挂了,那么 signal 就 unreachable,于是主线程会卡住。而 GHC 直接检测到了这个问题并在主线程(比较及时地)抛出了 BlockedIndefinitelyOnSTM 异常。 有点好奇是怎么实现的,于是读了一下 GHC,目前初步的理解是:Haskell 中的线程本身是一个会被 GC 的堆分配对象,当前线程 block 时这个线程会被放到 TVar 的 wait queue 里。如果 TVar 被 GC 了,那么这个线程本身也就 unreachable 了(线程本身并不是 GC root),会被 mark 掉。GC 过程中,如果发现某个 thread 是 unreachable 的,那么在最后关头会调用一个叫 resurrectThreads 的函数(Schedule.c),这个函数会检查线程状态对象的 "why_blocked" 字段,如果是 BlockedOnSTM(在 park 的时候设置的),那么就会在这个线程里抛出一个 BlockedIndefinitelyOnSTM 异常(相应地,其他 block 理由也会有其他种类的异常抛出)。 这个机制不使用任何 timer,并且一旦抛出异常就是真的发生 deadlock 了。缺点大概是不 complete ,比如用一个 StablePtr 维持住线程对象的命,就可以 hang forever 了。 #haskell

Hashtags