Пару недель назад достроил атомку в #Satisfactory. Иронично: занимаюсь атомными станциями в реальной жизни по работе, и теперь вот в игре тоже.
Понравилось решение разработчиков сделать ядерные отходы неуничтожимыми. Любой ресурс в игре легко удаляется специальной кнопкой, и только атомные энергоблоки производят отходы, которые можно либо переработать очень сложным образом, либо складывать бесконечно куда-то в угол карты. А если хочешь более мощную станцию, то и переработать нельзя, только складывать.
Недавно, кстати, состоялся релиз. До этого игра была в «раннем доступе», то есть формально считалась предварительной версией в активной стадии разработки. В релизе же изящно решили сразу две значительные проблемы. Во-первых, теперь можно дорогим и конечным способом точечно масштабировать энергетику и производство в отдельных местах. Это очень нужно ближе к концу игры для тонкой настройки. Во-вторых, и это самое крутое: можно построить специальный телепорт для ресурсов себе в рюкзак. Носить с собой в рюкзаке сколько угодно ресурсов нельзя, и поэтому для действительно масштабного строительства приходилось постоянно бегать на склад, это очень утомляло. Теперь исключительно целях строительства можно забирать ресурсы с некоторой задержкой прямо из места их производства на фабриках, которые ты построил по всей карте. Но конечно для автоматической передачи в цепочках производства так читерить нельзя, и это правильно. Только организация логистики.
Игра очень хорошо учит выстраивать процессы и дает понимание ничтожности отдельного элемента, если весь процесс включает тысячи таких элементов. В общем, мастхэв, 350 часов наиграно, и до конца ещё далеко.
#games
#Functions are first-class citizens in Python:
# They can be passed as arguments to other functions,
# returned as values from other functions, and
# assigned to variables and stored in data structures.
»> def myfunc(a, b):
... return a + b
...
»> funcs = [myfunc]
»> funcs[0]
<function myfunc at 0x107012230>
»> funcs[0](2, 3)
5
# Functions are first-class citizens in Python.
# They can be passed as arguments to other functions,
# returned as values from other #functions, and
# assigned to variables and stored in data structures.
»> def myfunc(a, b):
... return a + b
...
»> funcs = [myfunc]
»> funcs[0]
<function myfunc at 0x107012230>
»> funcs[0](2, 3)
5
https://docs.python.org/3/library/subprocess.html
The #subprocess module allows you to spawn new #processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older #modules and #functions.
#python
https://docs.python.org/3/library/atexit.html
The #atexit module defines #functions to #register and #unregister cleanup functions. Functions thus registered are automatically executed upon normal interpreter termination. atexit runs these functions in the reverse order in which they were registered; if you register A, B, and C, at #interpreter#termination time they will be run in the order C, B, A.