@djangoproject · Post #585 · 23.03.2018 г., 02:43
https://www.fullstackpython.com/celery.html #Celery is a task #queue implementation for Python web applications used to #asynchronously execute work outside the HTTP request-response cycle.
Hashtags
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #949 · 26.01
На выходных попробовали Трон Кубов. Это такая полудуэльная игра на сражение между разными персонажами. У игры фантастически крутой продакшен — каждый планшет героя оформлен в своём стиле со своими цветами, кубики сделаны с персональной текстурой и гранями, своя колода карточек и жетоны состояний. Вообще, каждый персонаж это просто такая мини-коробочка со всем необходимым, можно носить на турниры (под это, собственно, игра изначально и создавалась). У каждого персонажа свои способности, но сам игровой процесс одинаковый: бросаешь кубики, и по ним определяешь, какую из способностей активировать. На кубики можно влиять: во-первых, выбирать, какие и сколько раз перебросить; во-вторых, играть с руки карты вроде "Установи любой кубик в желаемое положение", "Скопируй один из выпавших кубиков", "Измени значение на единицу". Игра моим друзьям очень понравилась, а ещё она оказалась на удивление сбалансированной: первую партию сыграли вничью, во второй мы убили соперников, когда у нас самих оставалось 2 жизни из начальных 50. Задумался в целом о рандоме в играх. Кит Бургун пишет, что синглплеерные игры без источника случайности вообще не могут существовать, потому что иначе они превращаются в пазлы: для каждой ситуации находится и фиксируется оптимальный ход, игра становится решённой (solved). В играх против других людей ваш соперник является источником случайности для вас, потому что вы не знаете, как он думает. И всё-таки, добавление случайности в саму механику часто очень важно. Бывают игры с огромным пространством неоднозначных решений, как, например, шахматы или го. У них есть своя интересная специфика, но нередко они требуют очень длительного обдумывания хода, потому что человек начинает перебирать это пространство в глубину, и делает это сравнительно медленно. Бывают игры с очень маленьким пространством решений, например, крестики-нолики, и любому взрослому играть в них скучно. Найти баланс довольно сложно, поэтому (по крайней мере среди казуальных игр) хорошо работает следующая механика: игрок с помощью случайности либо получает небольшой кусочек пространства решений, либо ему меняют веса в этом пространстве так, чтобы его настоящий выбор был не таким большим. В добавок это создаёт мета-игру на риск, повышает реиграбельность, а ещё позволяет более слабому игроку выиграть за счёт удачи — очень хорошие свойства для казуальной настолки. Впрочем, в такой системе тоже не слишком легко сбалансировать процесс. Иногда от случайности может зависеть слишком многое, и мы получим Монополию или Колонизаторов, в которых скилл вообще не влияет на победу. Иногда случайность добавлена, но она скорее мешает: в Brass шесть разных действий, доступных с помощью карт, но только в одном важно, какая именно карта вам пришла. Иногда случайность добавлена и не работает как надо: в Hearthstone порядок прихода карт почти не влияет на решения игрока — он всегда играет оптимальную карту в конкретный ход. А иногда рандом приводит к злоупотреблению другими аспектами игры: в Baldurs Gate 3 из-за броска одного кубика может зависеть результат сложнейшего боя, поэтому иногда выгоднее просто перезапускать сохранение, пока не выпадет, как надо. Так что задача геймдизайнера отнюдь не становится простой при работе со случайностью. По первым двум партиям кажется, что авторы Трона Кубов вполне справились с управляемым рандомом, но евро-игрокам скорее всего такая степень случайности будет казаться большой, да и стратегически игра совершенно не глубокая. В любом случае, продолжим играть, пока не надоест :) #games
Hashtags
Търсене: #asynchronously
@djangoproject · Post #585 · 23.03.2018 г., 02:43
https://www.fullstackpython.com/celery.html #Celery is a task #queue implementation for Python web applications used to #asynchronously execute work outside the HTTP request-response cycle.
Hashtags
@djangoproject · Post #262 · 16.02.2017 г., 07:24
http://masnun.com/2015/11/20/python-asyncio-future-task-and-the-event-loop.html On any platform, when we want to do something #asynchronously, it usually involves an #event loop. An event loop is a loop that can register #tasks to be executed, execute them, delay or even cancel them and handle different events related to these operations. Generally, we #schedule multiple async functions to the event loop. The loop runs one function, while that function waits for #IO, it pauses it and runs another. When the first function completes IO, it is resumed. Thus two or more functions can #co_operatively run together. This the main goal of an event loop.