Адептус Механикус


Пн Дек 21, 2020 13:01
Mathematicus
174  Бывалый авантюрист

"Поэт должен видеть то, чего не видят другие. И это же должен и математик"
Софья Ковалевская

===

Итак, сегодня я создал короткую стори- перемешивание массива 10 чисел.

Вот ссылка на тестирование: (убрана по техническим причинам)

Сб Дек 26, 2020 18:00
Mathematicus
174  Бывалый авантюрист

Итак, про перемешивание массива:

1. Для чего это нужно?

Cамое очевидное применение – перетасовка карт, но так же и расстановка чего угодно в случайном порядке. Несколько примеров:
а) Если 4 союзника и 6 врагов должны сделать в раунде по одному ходу, в случайном порядке.
б) Если вы хотите создать подземелье 5х5 пещер, в котором нужно расположить ровно одного Вампуса, ровно две колонии Супер-Летучих-Мышей и ровно три глубокие ямы, причём так, чтобы ничто из этого не накладывалось ни друг на друга ни на центральную пещеру(точку входа игрока), ни на 4 пещеры, соседних с центральной – тогда тасуете 20 "карт", и заполняете ими подземелье(кроме центральных полей).
в) Если вы хотите, чтобы 7 характеристик вашего героя имели все значения от 1 до 7, в случайном порядке(например, Сила=7, Восприятие=5, Выносливость=3, Харизма=6, Интеллект=4, Ловкость=2, Удача=1) и чтобы игрок мог сколько угодно делать их "реролл".

— возможных применений просто ну ОЧЕНЬ много.

2. Алгоритм, простыми словами.


а) В массиве из N ячеек обмениваем значения первой ячейки и случайно выбранной(от 1 до N).
б) Повторяем алгоритм для оставшейся части массива(кроме уже обработанной ячейки), до тех пор, пока эта оставшаяся часть не меньше двух ячеек.


3. Тонкости реализации на митриле, для продвинутых.

Очевидно, нам понадобится сделать следующие функции:

Swap(n, m) {local: k, l}
(n,m) – номера ячеек, которые функция обменяет местами
{local: k, l} – другие переменные, которые затрагивает эта функция
= = =
RandFromRange(n, m) {local: k, return r} // m > n
(n, m) – диапазон, из которого будет выбрано случайное число от n до m
{local: k, – вспомогательная переменная, которую затрагивает эта функция
return r} – переменная, в которую будет помещено сгенеренное число
= = =
Shuffle(array a() from i to 10) {}
– собственно, перемешивание массива от элемента i и до конца. Она использует обе вышеобозначенные функции и затрагивает различные переменные, которые я уже не стал упоминать.
= = =
Менее очевидно, но вовсе не менее важно – создать функции:
Get(n from a) {return r} – поместить значение ячейки a[n] в переменную r
Set(r to a[m]) – поместить значение переменной r в ячейку a[m]
– их использование позволит сделать функцию Swap заметно короче и, главное – значительно упростит возможное расширение массива, если оно понадобится.

Вт Янв 26, 2021 18:32
Mathematicus
174  Бывалый авантюрист
По не ясным причинам митрил меня вдохновил и у меня есть идеи для реализации. Я пытаюсь упорядочивать свою жизнь: составлять планы и следовать им. Согласно последнему плану, я буду посвящать каждый третий месяц написанию очередной текстовой игры. Так вот – в январе я профилонил и, по всей видимости, игры не будет. В феврале и марте я не буду заниматься играми. В связи с этим, хочу поделиться своей задумкой, которую собирался реализовать(и может быть, когда-нибудь, таки реализую).
===


Хотел сделать стори, вдохновлённую Песками Магриба Магистра Таро. Идея получилась совершенно другой, но это таки должен был быть сторигейм на картах, который может быть интересен и самому автору(в этом основная фишка).
===

Герой нашей истории, сихр Абдул аль-Хазред живёт в Ирэме, у пустыни Руб-эль-Хали, населённой злыми духами. Будучи практикующим сихром, Абдул владеет магией. А именно – умеет перетасовывать Карты Судьбы.

Сегодня наш герой, как обычно, отправляется исследовать пустыню, в поисках остатков часто гибнущих здесь караванов(чтобы разжиться сокровищами), а так же – в надежде найти редкие артефакты, которые непонятно откуда появляются в этих местах.

Ночь в этой пустыне несёт верную смерть, поэтому на весь поиск у вас всего 16 часов, после чего Абдул вернётся домой.
===

Перед вами – карточная игра в приключения. В каждом раунде Мастер Игры предлагает вам выбрать одну из трёх верхних карт – то, до чего вы можете добраться, потратив 1, 2 или 3 часа соответственно.

Поскольку вы не можете находиться в пустыне дольше 16 часов, то при истечении времени ваш выбор будет сокращаться, оставляя только те варианты, которые укладываются по времени. То есть, если до конца приключения остался один час, то будет доступна только одна первая карта за -1 час.
===

Вы выбираете карту и попадаете в некоторую ситуацию, в которой может быть как простое получение/потеря чего-либо, так бывают и ситуации выбора. Выбранная(и разыгранная) карта выходит из игры. Другие две карты кладутся под низ колоды, в которой изначально 35 карт.

Рубашки карт различаются и соответствуют "мастям" карт. Причём, их довольно много – я думал сделать семь мастей, при колоде в 35 карт всего.

Как игрок, вы видите три предлагаемые вам карты, видите их масти, но не видите, что конкретно это за карты. И знаете, что взятие первой карты -1 час; второй -2 часа; третьей -3 часа. Кроме того, вам доступно перемешивание карт(и вот, с этим нужно ещё дотумкать: должно ли на перемешивание тратиться время? Должно ли тратиться что-то ещё?)

===

Абдул аль-Хазред – легендарный автор Некрономикона из мифов Лавкрафта. Оттуда же и город Ирэм и пустыня Руб-эль-Хали.

Сб Май 15, 2021 23:38
Mathematicus
174  Бывалый авантюрист

Работа над игрой(см сообщение выше) подходит к завершению. Многое изменилось. Предположительно, название будет: "7 мастей пустыни Руб-эль-Хали". Многое сделано на глазок, менялось по ходу дела, баланс может быть странным... но, разумеется, я собираюсь хорошо игру оттестировать, чтобы не было багов.

И задумался вот о чём:

1. Я не люблю изменять опубликованные работы. То есть, когда опубликовал – то, всё. Как уж получилось, так получилось, играйте и пытайтесь любить то, что вышло.

2. Я бы не хотел быть тем автором, который не учитывает мнения и отзывы игроков.

– что же делать? Как учесть отзывы, не изменяя игр? Раньше я полагал, что достаточно будет "учесть на будущее" – но это получается "ниочём", ввиду того, что каждая следующая игра – ну это просто другая игра.

Возможно, выходом будет публиковать ремейки игр. Или что-то вроде ремейков. То есть, когда-нибудь, подсобираю идей и перевыпущу свою старую игру, с учётом отзывов и пожеланий и новых идей. Или не совсем ту же игру, но игру со схожей идеей. А потом – перевыпущу ещё одну...

Но это так, просто мысли вслух. Однако же, ваши отзывы, идеи и пожелания – важны для меня. Высказывайтесь в комментах к играм)

Чт Июн 03, 2021 15:11
Mathematicus
174  Бывалый авантюрист

Итак, игра 7 мастей опубликована. Она интересна, например, тем, что в ней реализован какой-то вариант давно обсуждаемой механики случайной генерации сюжета, выбором карт из колоды. И я [нескромно]полагаю, что заранее показывать масти карт – это отличная оригинальная придумка, прекрасно дополняющая эту механику. Конкретно в этой игре я пришёл к неожиданному для себя результату – пришлось предоставить игроку возможность "пролистывать" большинство ситуаций. Ну потому что иначе получался совсем уж дикий рандом. Сейчас-то у игрока есть какие-то возможности планировать и большего при выборе ситуаций из колоды добиться сложно. Но я ещё буду думать в этом направлении.

1. Например, можно чтобы игрок начинал с лёгкой "базовой колодой", рубашки которой выглядят как обычные игральные карты(видна масть и значение – например "девятка треф") а после её прохождения три случайно выбранные "базовые карты" будут заменены "картами первого уровня". То есть, каждая карта будет иметь много уровней и после каждого прохождения три случайно выбранные карты из колоды будут заменены на соответствующие карты более высокого уровня.

2. Ещё можно попробовать "оживить" Мастера Игры. Противостоять интеллектуальному Мастеру Игры – не очень хорошо, ибо лучше, чтобы трудности были более предсказуемы и более легко изучаемы. Скорее наоборот – Мастер Игры мог бы отбрасывать заведомо проигрышные ситуации. Тогда колода могла бы состоять из ситуаций, которые не получится "пролистывать" как в "7 мастей", где во многих случаях можно просто уйти; но те ситуации, к которым игрок ещё не готов, могли бы перекладываться под низ колоды и замещаться следующими, взятыми с верха колоды. И такую механику можно легко и понятно объяснить соответствующими действиями Мастера Игры.

3. Но можно и сыграть против Мастера, но это уже будет другое. Допустим, пусть в каждой ситуации предусмотрен успех и неуспех, с соответствующими последствиями. Испытание успеха проходит путём сравнения "карт силы" Мастера и игрока. Допустим, на "картах силы" игрока сила принимает чётные значения от 2 до 10, а на картах мастера – нечётные от 1 до 9. И когда вскрывается очередная ситуация, Мастер и Игрок выбирают из своей руки по одной карте силы. Затем эти карты вскрываются и, смотря чья оказалась сильнее, ситуация пойдёт по успешному или неуспешному варианту. Однако, лично мне подобные идеи что-то не нравятся. И даже если Мастер выбирает монстров или препятствия, а игрок затем реагирует на них своим снаряжением или мастерством, то идея такого противостояния интеллектуальному Мастеру всё равно не нравится. В данном направлении у меня пока что нет интересных идей.

4. Можно попробовать создать колодостроительную дуэльную игру. То есть, герой бродит по миру, побеждает в карточных боях монстров и пополняет свою колоду. Но здесь уже вопрос упирается в поиск такого варианта карточной дуэли, который хорошо бы выглядел на митриле. До сих пор, все три выпущенные мной игры, я считаю, хорошо вписываются в митрил, с его возможностями.

5. Или можно переключиться на следующий "механический проект", которым могла бы стать игра "4 рогалика", с настоящей генерацией лабиринтов, наполненных разнообразными предметами и монстрами. Думаю, размер 7х7 комнат, я мог бы потянуть и это будет больше, чем в моей игре "реиграбельность", где генерились лабиринты 5х5 комнат ну и сам геймплей будет другой.
— и это самый реальный вариант, в плане моей заинтересованности и моих возможностей, но это не то, чего я бы хотел на самом деле.

Мне бы хотелось создать фантастический мир, с интересными ситуациями и неожиданными проблемами, с толковыми противниками и соратниками. И я всё больше прихожу к мысли, что мне бы нужно меньше времени уделять написанию игр, а больше уделять чтению книг. Ну и с играми различными знакомиться тоже было бы полезно. И, да – я ещё не забыл "своё призвание", свой "священный долг" нести свет разума в массы. Однако, пока толком даже не знаю, как к этому подойти.

Сб Июн 19, 2021 20:28
Mathematicus
174  Бывалый авантюрист

Выбор в игре и математика.

Создавая свои первые митриловские игры(например, пять троллей) я старался, чтобы как можно б0льшую роль играл "правильный выбор", основанный на расчёте. Однако, можно воспринимать сторигеймы, как некую разновидность искусства. То есть, стори могут иметь ценность в силу того, что погружают игрока в другой мир, в шкуру другой личности, дают возможность получить некие переживания.

И при таком подходе выбор в нужен, чтобы игрок более свободно мог ознакомиться с миром игры, с предлагаемой автором ситуацией. И при таком подходе изменяется и отношение, в том числе и к "хорошим" и "плохим" концовкам. Все варианты, в том числе и гибель героя, являются кусочками общей картины; паззлинками, складывающимися в общий паззл. И любой выбор, с его последствиями, пусть даже и "нечестными" – это выбор той самой личности в той самой ситуации, за которую мы играем(и переживаем) и которая получает соответствующие последствия, которые помогают понять созданный автором мир(сеттинг).

Чт Июл 01, 2021 0:45
Mathematicus
174  Бывалый авантюрист

Из дискорда:

Ср Июл 14, 2021 1:35
Mathematicus
174  Бывалый авантюрист

Итак, тематическую стори на летний конкурс я уже не напишу. Хотя, была такая мысль. Идея была следующая(приблизительный план):

Главный герой – еврей, выживший в концлагерях и ставший свидетелем вампирских способностей одного высокопоставленного фашиста(данную часть, как и многое другое, собирался слизать с "Утехи падали" Дэна Симмонса). Чтобы выжить, ему приходилось работать, сваливая тела в ямы; а его страх(клаустрофобия) – это страх быть погребённым заживо. Впрочем, игра начинается с вполне мирной его жизни в США, где он живёт один в своём уютном доме; прогуливается в парке, читает газетные новости, ведёт(бумажную)переписку с родными. Например, его родственник, работающий в Моссад делится рекомендациями по преодолению страха.

Итак, начальная ситуация: герой делает всякие обычные дела и прогуливается по парку, иногда натыкаясь то на разрытую рабочими канаву(вызывающую страх и попытки его преодолеть) то на каких-нибудь попрошаек. Ситуация остаётся зацикленной до тех пор, пока герой не найдёт особую веточку(доступную в первый же день) – прочесть письмо родственника; пройтись вечером в определённом месте; помочь грязному бомжу, земляной запах которого вызывает страх. В игре должны быть подсказки нужного времени и нужного места, типа: "в этом спокойном тихом городке есть опасные места, где может произойти что угодно" и "плохое место, вечером здесь может произойти что угодно".

Второй этап: этот "бомж" оказывается оборотнем, который был "убит" и похоронен, но ожил и вылез из могилы. Теперь ему необходимо подкрепиться мясом, на которое у него нет денег, а грабить и убивать он не хочет. Документов у него нет, поскольку он приплыл "зайцем" на корабле с далёкого острова, принадлежащего миллиардеру, который устроил на нём тайную лабораторию. Упоминание особой способности миллиардера побуждает героя показать оборотню вырезку из газеты, с фото того самого нацистского преступника, который удивительно хорошо сохранился и живёт по поддельным документам, под другим именем, но нашего героя не обманешь. Да, это он.

Далее можно либо попросить родственника из Моссада прощупать ситуацию, в рамках охоты за скрывающимися нацистскими преступниками(и он пропадёт без вести; плохая концовка) либо отправиться зайцем на остров самому(с оборотнем) и тогда можно либо намекнуть на это в письме родственнику, либо ничего не сказать.

Способность нацистского преступника в моей стори должна была отличаться от книжной. А именно – он должен был уметь читать мысли и управлять волей того, чью кровь он когда-либо вкусил(хотя бы каплю). Кроме того, в моей стори, он уязвим к свету и вообще, в дневное время должен спать беспробудно. Ну и омолаживается за счёт человеческой крови(но в этом случае капли крови не достаточно; для омолаживания её нужно пить литрами). А герой истории уникален тем, что может обманывать вампиров, притворяясь, что подчиняется их приказам, но на деле, выжидая момент сбежать(благодаря чему он и спасся когда-то). Да, какой-то небольшой процент людей не подвержен вампирскому контролю.

На этом затерянном острове(возможно, группа островов?), умными повелителями-вампирами и непрофессиональными грязнорабочими помощниками-туземцами, проводятся эксперименты по превращению похищенных(похищаемых) подростков цивилизованного мира в оборотней, чтобы те стали профессиональной круглосуточной охраной вампиров и вообще, их ценными рабами. Новые технологии поставляются вампирами из будущего, где они выжили в глубине подземных пещерных лабиринтов, но надеются жить на поверхности, как повелители. Запланировано три стадии:

1. Создать жизнеспособных оборотней, удерживать их в клетках и исследовать, пока показатели выращиваемых особей не станут удовлетворительными. Неудачные варианты – сжигаются.

Этот пункт был выполнен, но оказалось, что оборотни не поддаются вампирскому контролю, что было неожиданно(поэтому нашему оборотню удалось сбежать). Так же это говорит о некоторой непредсказуемости происходящих событий.

2. Вживить оборотням чип, который позволит контролировать и программировать их поведение вампирским контролем.

Вся техническая информация и образец чипа уже доставлены из будущего(по поступившему запросу), но для их производства нужно сложное оборудование, на корабле с которым как раз и прибыли на остров наши герои.

3. Заслать оборотней в прошлое, когда нацисты продули развязанную вампирами Вторую Мировую. То есть, благодаря оборотням нацисты должны победить.

Испытав неприятные моменты ночью, после прибытия(кода легко можно погибнуть), наши герои дожидаются дня и грамотно поэтапно всё ломают(чипы, клетки с оборотнями, гробы с вампирами), так или иначе преодолевая сопротивление туземцев, которые считают вампиров добрыми богами, выступать против которых могут только злые демоны(герою помогают оборотни). Герою приходится уже привычно преодолевать свой страх в той или иной ситуации. На этом этапе можно уплыть с острова, но это плохая концовка(вампиры в итоге победят).

Однако, наступает вечер, а гробы найдены не все и герой сталкивается с тем самым нацистским преступником, который давит на то, что наш герой не лучше него(поскольку помогал сваливать тела в ямы); на что наш герой кратко разъясняет отличие нацистского преступника от узника концлагеря. Либо выбирает недостаточно хороший ответ и разговор зацикливается, пока не будет составлено идеальное разъяснение. И тут неожиданно на героя нападает наш оборотень(знакомый с начала игры) – и тут игра может и кончиться, если только герой не намекнул своему знакомому о поездке на остров, тогда тот его героически спасает(он прибыл на остров на вертолёте незадолго до этого). На шее убитого оборотня мигает чип – он был чипирован в тот момент, когда они с героем разделились(а если не разделились, то смогли найти и сломать меньше гробов и тогда вместо оборотня на героя нападает несколько вампиров и его уже ничего не может спасти – ни оборотень ни родственник из Моссада, все будут убиты).

А когда силы добра победили, то – если некоторых ОСОБЫХ ДОКУМЕНТОВ не найдено, то, в концовке сообщается, что через много лет, в 1984(или в 1985?) году ядерные державы обменялись ударами, что стало началом уничтожения человечества и захвата мира Скайнетом.

Если же ОСОБЫЕ ДОКУМЕНТЫ найти, то из них становится ясно, что вампиры будущего прячутся в подземных пещерах от Терминаторов, захвативших планету. И становится известно, какая корпорация ответственна за разработку Скайнета и – наши герои полны оптимизма справиться с ситуацией, на чём стори и завершается(хорошая концовка).



P.S.

Думал, сделать её за месяц – больше месяца не хотелось бы тратить на такой "приколюшный винегрет". Но это нужно было впахивать весь июль, чего уже не случилось – меня затянули другие дела.

Представьтесь для добавления комментариев - регистрация в один клик!