Addictive & compulsive
LÖVE (is all you need)
Я человек простой.
Более того, я уверен, что человек — вообще штука простая, типа машины Тьюринга, только не машина, а человек. Человек Тьюринга.
Впрочем, нет, человек Лэнгтона — еще смешнее.
Во втором — совершенно халтурном — сезоне Westworld’а попытались эту мысль использовать, но вышло грубо, тупо и не интересно. Мол, алгоритм всего человека влезает в книгу, а сами люди, создавая человекоподобных роботов, намудрили и сделали их гораздо сложнее — потому что не знали, как сделать проще!
Что-то такое я в последнее время и думаю — что человек это набор примитивных элементов, который, естественно, собственной примитивности не осознает.
По подождите расходиться, тут есть еще такое понятие, как «красота». Например, фрактал рисуется по очень простой схеме с помощью рекурсии, но ведь он красивый. То же самое и с человеком и его творениями. Когда что-то прекрасное создается с помощью чего-то примитивного, это называется «гениальность».
Когда одна строчка кода вам и стихи поет, и картины танцует, и даже минеты делает — есть все причины называть автора этой строчки гением, даже если автор — это «эволюция».
Спасающая (или, наоборот, мрачная?) мысль — в том, что человек не может постигнуть своей простоты (и слава богу), мысль, известная, также, как «невозможность выйти из платоновой пещеры» — поэтому я довольно недоверчиво отношусь к технарям, которые пошли в психологи, все поняли и теперь «раскладывают по полочкам», гоните их из профессии ссаными тряпками!
С другой стороны, если что-то можно упростить — это нужно упростить. «Боже, дай мне мудрость отличить то, что можно упростить от того, что упростить нельзя».
Так вот, продолжаем про фреймворки.
Очень люблю примитивные вещи. Может быть это потому, что детство мое прошло небогато, и к роскоши я не привык, а может потому, что хочется поменьше иметь дела с ходом чужих мыслей — у вас все равно не получится сделать мне удобно, поэтому дайте мне самое необходимое, а дальше я все обустрою сам.
Время от времени я скучаю по примитивному программированию — оно в корне отличается от моей текущей работы, на которой я даже не притворяюсь, будто что-то понимаю или что-то создаю, «and now for something completely different», поэтому играл, например, в Shenzhen I/O — компьютерную игру, где надо программировать на ассемблере!
Я знаю, что некоторые люди спят и в гробу видят, что я (снова) начну заниматься играми, надеюсь, это расплывчатое вступление их отпугнуло, и они не дочитали до этого места.
Поизучал несколько фрейморков для создания игр — не потому, что хочу сделать собственный Fallout, а потому что Shenzhen I/O я уже прошел, Exаpunks не зашли, а попрограммировать что-нибудь хочется.
Разумеется, почти все они не понравились, кроме чувства юмора и качества документации Godot’а. Ну и правильно, от людей, которые назвали фреймворк Godot’ом, ожидать следует только такое.
Годот неплох, хотя и слишком непримитивный.
И тут — внезапно — LÖVE.
С одной стороны — никакого GUI, IDE и прочих конструкторов. С другой стороны, никакой командной строки, компиляций и прочих красноглазых вещей. Ты просто создаешь директорию, в ней — файл main.lua, который редактируешь, естественно, в Sublime text, а потом перетаскиваешь мышкой директорию в love.app — и все работает!
Внутри файла main.lua, как легко догадаться, язык lua, прекрасный своим примитивизом и минимализмом, например:
«Lua does not offer a safe navigation operator, and we do not think it should. Lua is minimalistic.»Excerpt From: Roberto Ierusalimschy. «Programming in Lua 4ed.» iBooks.
«У нас в языке этого нет, и мы думаем, что это правильно».
Кроме примитивизма, Луа создает определенные удобства, которые ничего не стоят, но создают ощущение заботы, например:
«These trailing commas are optional, but are always valid:
a = {[1] = "red", [2] = "green", [3] = "blue",}
This flexibility frees programs that generate Lua constructors from the need to handle the last element as a special case.»Excerpt From: Roberto Ierusalimschy. «Programming in Lua 4ed.» iBooks.
Или, скажем, индексы в таблицах в Луа начинаются с единицы. (!!!) Или, например, в функцию можно передать любое количество параметров, ненужные просто отсекутся (без ошибки), возвращать можно тоже любое количество (и это будет не массив). Ну и, конечно, нестрогая типизация и прочие «послабления».
function swap (a,b) return b,a end
a, b = swap(a,b)
Lua предоставляет некоторые очень мощные, но примитивные вещи, типа таблиц, содержимое которых может быть каким угодно (включая функции), то есть, таблицы в lua — это на самом деле объекты. С их помощью можно легко самому сделать ООП, а можно не делать. Они же выступают в роли массивов, последовательностей, списков и что там еще в остальных языках есть?
Вроде как[citation needed] Lua — скриптовый язык номер один для скриптования в играх, а тут можно целиком на нем игру написать.
Что же касается LÖVE, то он такой же примитивный и берет на себя главным образом вывод графики и основной игровой цикл.
В файле main.lua можно переназначить три функции:
love.load () — которая вызывается при старте,
love.update (dt) — которая вызывается каждые сколько-то миллисекунд (передается в dt)
love.draw () — которая вызывается каждый кадр и в которой происходит отрисовка
Все, остальное вы сами. Но и ничего больше и не надо, на самом-то деле.
Вот, например, содержимое main.lua для иллюстрации:
function love.update(dt) function love.draw()function love.load()
x = 0
y = 0
image = love.graphics.newImage("image.png")
end
x = x + dt * 100
y = y + dt * 100
end
love.graphics.draw(image, x, y)
end
Картинка для отвлечения внимания:
В данный момент LÖVE видится, как правильный способ
Ну и, конечно, +10 очков за название. Все хотят делать игры с любовью, тем более, что настоящие игры на нем тоже можно писать.
Этика блядства
Есть такая книга — на русский ее название переводится «Этика блядства», в ней рассказывается, как приличной девушке получать удовольствие, если та наконец-то поняла, что моногамия не для нее.
Теперь, когда я привлек ваше внимание и вы достаточно возбуждены, поговорим про игровой дизайн.
Поиграл в The Elder Scrolls: Legends. Это коллекционная карточная игра, «в лучших традициях hearthstone», но пока не такая испорченная, так как молодая. (Впрочем, нет: недавно вышло дополнение «про драконов» и все уже пошло сами-знаете-по-чему, потому что ну драконы же должны быть сильными. Короче, я уже бросил играть).
Я утверждаю, что подобные ККИ не этичны, их можно сделать этичными, но никому это не надо.
Предположим, что ККИ не этичны по двум причинам:
1. Они нарушают неприкосновенность игры: можно извне заплатить деньги и твоя сила в игре увеличится. Насколько она увеличится — совершенно не важно, важно само нарушение принципа.
2. Они эксплуатируют желание доминировать. Эта причина — производная от первой: при условии, что «силу доминирования» можно покупать за деньги.
3. Они эксплуатируют принцип лотереи, что, может, само по себе не плохо, но опять-таки в лотерее можно выиграть доминирование. Чтобы было понятно (тем, кому не понятно): подобные игры продают «паки» — набор из нескольких (например, шести) карт. У карт есть редкость, чем карта реже попадается, тем она сильнее. В результате, чтобы собрать все крутые карты, надо купить очень много паков.
Как легко догадаться, первой причины достаточно, именно за нее «цепляются» все остальные.
Сейчас дело обстоит так: ты можешь собрать колоду из 50 карт, противник может собрать колоду из 50 карт, «но не все карты равны». Ты можешь выигрывать за счет мастерства, но рано или поздно тебя будут сводить с противниками, которые — предположим — равны с тобой по мастерству, но карты их гораздо лучше. Почему лучше? Потому что они платили больше.
...most people have a full collection after around 500 packs + some gameplay (which I would assume could add up to roughly 700-800 packs)
(Сейчас чтобы собрать всю коллекцию в The Elder Scrolls надо примерно 500 паков — это примерно 500 евро. В HS это стоит 1200 долларов).
Всегда есть аргумент «но ведь никто не заставляет», на самом же деле подобные игры зарабатывают свои основные деньги на небольшом проценте «наркоманов», а те, кого не заставляют, являются пулом этих наркоманов (и заодно «мясом»). Лучший способ подсаживания — это «дать бесплатно попробовать», поэтому такие игры и бесплатны (тебе щедро дается стартовый набор карт, а платишь только за дополнительные паки).
Исправить это все очень просто: нужно вычислять «бюджет» твоей колоды и сводить тебя с колодами похожей стоимости. То есть, у каждой карты кроме редкости появляется еще и числовая крутизна, и появляются категории, типа «колоды за 300». В этом случае покупка паков не повышает твою силу, а просто потенциально переводит тебя в другую лигу (если ты соберешь более «богатую» колоду).
Доминировать таким образом можно только за счет мастерства.
Проблема «посмотреть в интернете самую лучшую колоду и собрать ее» (netdecking) тоже пропадает — в каждой дивизии своя «лучшая колода».
Netdecking я вообще считаю большим фактором, убивающим удовольствие: очень быстро задроты выясняют, что в игре есть, скажем, всего три самые крутые колоды, которые рвут друг друга как камни-ножницы-бумага. Эти колоды появляются в интернете, после чего любой не-задрот может собрать себе такую же. А что делать остальным? Терпеть или платить.
В системе же с категориями вырастает количество интересных колод: раньше можно было создать колоду с интересной механикой и обнаружить, что она не является топовой, а теперь же она может оказаться хорошей в своей категории. Вместо «пихаю побольше эпиков» появляются другие критерии выбора. Колоды за 100, 200, 300. Ну, вы поняли: чем больше ограничений — тем больше творчества, как и обычно.
Я бы еще и паки пересмотрел. Карты в них случайны, но чем больше ты покупаешь паков, тем больше покупаешь повторяющихся карт. Несколько спасает крафтинг — возможность из 10 ненужных карт собрать одну нужную (на твой выбор) — который в условиях «неэтичности» и netdecking’а вовсе даже не «спасает», а помогает быстрее собрать одну лучшую колоду из интернета, вместо того, чтобы играть тем, что есть и проявлять чудеса мышления собственной головой (да, я знаю, тяжело!).
Я бы вообще убрал крафтинг, а в паке выдавал карты, которых у тебя еще нет.
Стоимость покупки всего сета имела бы конечную обозримую цену, элемент лотереи бы остался, вариативность колод бы повысилась вообще до небес (так как у каждого игрока был бы абсолютно уникальный, постепенно и случайно расширяющийся набор карт — но опять-таки, пришлось бы думать своей головой!).
Что в этом для меня? Я люблю комбинаторику — как и создатели MTG, люблю собирать новые колоды и экспериментировать. В текущих ККИ это все загублено — см. выше.
Но совершенно очевидно, что «этичной ККИ» быть не может: что, делать игру, которая будет меньше зарабатывать, но будет интересней? Это безумие.
Мало кто знает, то меня можно нанимать в качестве игрового дизайнера за ту же стоимость, что и в качестве терапевта — и примерно с такой же мотивацией — если вы не ищите простых путей и хотите испортить свою жизнь игру.
Вот, для иллюстрации: я не самый лучший игрок, на видео моя колода выкручивается против очевидно дорогой колоды, полной легендарных и эпиков.
Моя колода получена вообще без крафта (как proof of concept ко всему вышесказанному) и после трат примерно 15 евро на арены.
Истину говорю вам: человек, который сделает этическую ККИ, не обогатится!
И другие новости: Factorio, которому я пророчил великое будущее (а мне не верили), недавно продался всего лишь миллионом копий — про что есть очень трогательное видео с его создателем — и при этом даже до сих пор не вышел в релиз. Неплохо для игры, которую делали два с половиной человека.
Картинка в картинке
Mathemagic alpha
Два года назад мы со старшим ребенком пробовали Stencyl, сейчас — Unity.
Я ее ни разу не открывал, решил попробовать, заодно показать сыну, «как игры делаются». Хотя, если быть до конца откровенным, я, как порядочный отец, решил показать сыну «как игры делаются» в первую очередь, а если получится — получить удовольствие самому.
(Не получилось, но было сносно. «В процессе создания ни один ребенок не пострадал». Зато, возможно, это один из таких моментов «помню, в детстве, с папой...». Впрочем, мне понравилась система частиц, как легко видно по «спецэффектам»).
С меня — программирование и игровой дизайн, с Глеба — графика и звуки. Потратили две недели.
Я потратил (в основном на изучение Unity, в свободное от работы время), а не «потратили». Потом скомпилировал ребенку на планшет под Android. Вот, записал с него видео.
Конечно, он играть не будет. Но сам процесс должен быть познавателен.
Может, доделаем и выложим.