Сыграли на выходных в «Шепот за стеной». Эта настолка в своё время хорошо собрала на Кикстартере, а потом издательство Низа Гамс договорилось о локализации и привезло её в Россию. Кстати, Низа Гамс выросли из настольного видеоблога, при этом ребятам удаётся подписывать по-настоящему интересные и неординарные проекты.
Так вот, «Шёпот за стеной» это асимметричная игра, где один игрок управляет маньяком-убийцей, а 1-3 других игроков становятся жертвами. Игра идёт в стиле классических ужастиков вроде «Пятницы 13»: злодей фактически неуязвим, и от него можно только спрятаться или убежать. Персонажи перемещаются по большому старинному особняку, но фокус в том, что убийца не знает точное положение жертв и должен косвенно вычислять их по издаваемому шуму (шум это специальные жетоны, которые жертвы выкладывают при выполнении нужных им действий). Жертвы могут выиграть двумя способами: сбежать, найдя ключи от особняка, или вызвать полицию, починив телефон. Маньяк, понятное дело, должен для победы кого-то убить.
Прелесть «Шепота» в том, что броский внешний вид, в отличие от многих проектов, не оттеняет бедность игровых механик, а, наоборот, служит для их усиления. Красивая конструкция в виде дома — это и разделитель между полями (чтобы игроки не видели положение друг друга) и встроенная башенка для броска кубиков. Миниатюрки это не просто способ продать коробку подороже, а по-настоящему нужный элемент быстрой оценки диспозиции на поле. Вообще, многие мелочи здесь продуманы очень хорошо и прекрасно работают: так, например, с течением партии силы маньяка растут, что является естественным таймером конца игры без всяких там «после N ходов вы проиграли».
Правила простые, партии не очень длинные, даунтайма почти нет, в игре есть и блеф, и напряжённость и стратегия. Хотелось бы сказать, что она вообще идеальна во всём, но минус присутствует: совсем хорошо играется только на четверых. Любым другим составом уже чуть менее удобно, потому что одному игроку приходится брать нескольких персонажей. Хотя тоже возможно, у нас даже двое за убийцу играли (что правилами не предусмотрено).
Тем не менее, я купил базу и все дополнения, и очень советую. В базе пять персонажей жертв и три вида убийц с разными особыми свойствами, в дополнениях в основном ещё убийцы плюс новые виды особняков. Кстати, несмотря на тематику и надпись 18+, никакой жестокости тут нет, и можно без проблем играть с подростком 12-13 лет и старше.
#games
https://docs.python.org/3/library/asyncio-task.html#asyncio.run_coroutine_threadsafe
#asyncio.run_coroutine_threadsafe(coro, loop)
Submit a coroutine object to a given event loop.
Return a concurrent.futures.Future to access the result.
https://docs.python.org/3/library/asyncio-eventloop.html
The event loop is the central execution device provided by #asyncio. It provides multiple facilities, including:
Registering, executing and cancelling delayed calls (timeouts).
Creating client and server transports for various kinds of communication.
Launching subprocesses and the associated transports for communication with an external program.
Delegating costly function calls to a pool of threads.
http://blog.povilasb.com/posts/python-asyncio-vs-nginx-performance/
While I was playing with Python #asyncio I got interested in how well it performs serving data over TLS compared to #Nginx. So I implemented a small HTTPS server with asyncio:
https://glyph.twistedmatrix.com/2014/02/unyielding.html
As we know, #threads are a bad idea, (for most purposes). Threads make local reasoning difficult, and local reasoning is perhaps the most important thing in software development.
With the word “threads”, I am referring to shared-state multithreading, despite the fact that there are languages, like Erlang and Haskell which refer to concurrent processes – those which do not implicitly share state, and require explicit coordination – as “threads”.
#asyncio
http://programtalk.com/python-examples/aiohttp.web.Application/?ipage=1
Here are the examples of the python api #aiohttp.web.Application taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
#asyncio#learn
https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html
👌Making 1 million requests with python -#aiohttp
Apr 22, 2016 - by Paweł Miech - about: #asyncio, aiohttp, #python
In this post I’d like to test limits of python aiohttp and check its performance in terms of requests per minute. Everyone knows that asynchronous code performs better when applied to network operations, but it’s still interesting to check this assumption and understand how exactly it is better and why it’s is better. I’m going to check it by trying to make 1 million #requests with aiohttp client. How many requests per minute will aiohttp make? What kind of exceptions and crashes can you expect when you try to make such volume of requests with very primitive scripts? What are main gotchas that you need to think about when trying to make such volume of requests?
https://github.com/aio-libs/aiobotocore
Async client for amazon services using #botocore and #aiohttp/#asyncio.
Main purpose of this library to support amazon s3 api, but other services should work (may be with minor fixes). For now we have tested only upload/download api for s3, other users report that SQS and Dynamo services work also. More tests coming soon.
https://docs.python.org/3/library/asyncio.html
#asyncio
#Asynchronous programming is more complex than classical “#sequential” programming: see the Develop with asyncio page which lists common traps and explains how to avoid them. Enable the debug mode during development to detect common issues.
http://stackoverflow.com/questions/32054066/python-how-to-run-multiple-coroutines-concurrently-using-asyncio
how to run multiple #coroutines#concurrently using #asyncio?
You can use #asyncio.async() to run as many #coroutines as you want, before executing blocking call for starting event loop.