7 дней лета

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » 7 дней лета » Общее обсуждение мода » Небходимый контент


Небходимый контент

Сообщений 1 страница 30 из 201

1

Дорогие россияне!
Любой завод начинается с чертежа, любой фильм начинается со сценария.
Многие здесь хотят помочь автору, понимаешь. Но вот чем — всегда встаёт вопрос. За каждым конкретным предложением в личку ходить если будем, то слишком много времени отнимем у себя и у автора.
На базе этого предложение: создать определённый пост или тему, где будет список нужного творчества. По мере выполнения позиции будут вычёркиваться. Это будет заглавный пост. В ответных постах можно постить сами работы, чтобы можно было сразу же предлагать доработать/переделать. В итоге, весь процесс сразу будет перед глазами. И никакой телепатии!

Но сначала предупреждение.
Товагищи!
Если хотите, чтобы ваш арт использовался в моде - либо скидывайте оригинальный фуллсайз вашей возможной картинки в личку автору, либо во время публикации используйте отличный от тинипик хостинг изображений: эта тварь режет размер до 1600х900, приходится растягивать и терять в качестве. Очень неплохой хостинг imgur.com, рекомендую.

Итак, список требующегося контента.

Программные решения

1. Для четвёртого дня Слави - dungeon-crawler игрушка в котокомбах тайлсетом 8х8, в будущем пойдёт во всю классику разом (и да, заменит у Мику "камень-ножницы-бумагу") - код, графическая составляющее, вообще варианты решений. Пытаюсь заниматься самостоятельно, там посмотрим.

2. Оптимизация существующего рандомайзера для карточной игры. Товарищ nuttyprof, наверное, попробует что-нибудь посмотреть, но из листа это задачи не убирает.

Фоны

• Московский вокзал в Питере - точка выхода через металлодетекторы к поездам, либо световой зал.

Свернутый текст

http://s6.uploads.ru/t/rKhwl.jpg

Свернутый текст

http://s3.uploads.ru/t/nqyJv.jpg

• Книгохранилище-подсобка - небольшое помещение с трёхсекционным окном, со шторой, большим столом с настольной лампой в центре (большое увеличительное стекло на кроншейне - опционально) в окружении четырёх стульев. У окна виден мольберт, в углу стоит этажерка с книгами и небольшой столик для починки-подклейки. На столе виден большой лист бумаги, на котором уже раскиданы предварительные элементы будущей стенгазеты, рядом стоит коробка с баночками гуаши, повсеместно по столу разбросаны карандаши, ручки и книжки.
• Некий абстрактный посёлок городского типа - заметно небольшой, край если двухэтажный, на пересечённой местности с ямами и прихотливо гуляющим шоссе. Преимущественно деревянные домики.
• Медицинский изолятор - просто обычная больничная комнатка. В отличие от обычных домиков, здесь более традиционная геометрия помещения, кубическая. Три кровати - две по стенам, одна вдоль окна, находящегося в торцевой части помещения. Окно прикрыто занавесками, форточка открыта. Между кроватями расположены белые крашеные тумбочки, пол линолеумный.
• Интерьер вагона-теплушки/товарняка.
• Вид на железнодорожный мост - в кадре собственно мост на бетонных быках, рельсы и гравийная подушка.
• Дебаркадер-пристань - вид со стороны собственно пристани на берег (для альтернативного дня и ряда ивентов на ней).
• Волейбольная площадка (текущая меня не устраивает).
• Вспомогательные/дальные ворота въезда в лагерь (юго-западный въезд для машины с продуктами) - по сути, просто сетка с надписью, вид со стороны лагеря, с убегающей в разные стороны кирпичной стеной.
• Дорога вдоль периметра лагеря - кирпичная стена по левую руку+грунтовая дорога+лесок.

• Здание администрации лагеря - готовы варианты "день", "ночь", "дождь".
• Администрация, вид изнутри, какое-нибудь окошко etc

Пример из игры

http://s3.uploads.ru/t/0FSTE.jpg

• Душевые как я их себе представляю - вроде, и отрисованы, но чёрт его знает.
• Бельевой склад - интерьер. Представляет собой помещение с рядами полок, на которых расположены сложенные стопками постельные принадлежности. У одного из шкафов расположен стол со стоящим на нём утюгом, у входа большая корзина, рядом с полками на полу перетянутые гастарбайтерским узлом тюки - грязное постельное.
• Лифт - в том виде, какой он сейчас, разве что довести до ума.

Свернутый текст

http://s3.uploads.ru/t/4G9h2.jpg

• Песчаный карьер вид с края карьера, день - Ленофаг простой взялся и даже что-то выкатил, но реквест есть реквест.

Свернутый текст

http://s6.uploads.ru/t/nVdUM.jpg

• Большой камень - просто булыган метров четырёх в высоту где-нибудь в лесу, дневная версия.

Свернутый текст

http://s6.uploads.ru/t/ActPl.jpg

• Лужок с выходом к речке+качели - дневная версия, на картинке представлено дерево (основной объект), с толстой веткой, к которой привязаны качели (два толстых троса+жердочка), луг, на заднем плане водный массив.

Свернутый текст

http://s2.uploads.ru/t/SwBIL.jpg

• Чердаки - хотя бы ещё одну штуку, нужна альтернатива существующему аттику с явно выраженными центровыми столбами.

Свернутый текст

http://s7.uploads.ru/t/HyPMq.jpg

Свернутый текст

http://s7.uploads.ru/t/g9jDo.jpg

• Вид машины из салона, с переднего пассажирского сиденья.
• Лифт - современный или советского образца - важно наличие зеркала в кадре.
• Ночной мегаполис (В идеале - рисованный Санкт-Петербург, вид со Стрелки либо Ростры либо Спас.).

Сценки или CG

•Поисковый отряд в три носа для кооп-шахт Слави-классика. За основу - игровая ЦГ из катакомб с Семёном, держащим фонарь. За ним держатся Славя и Лена. Семён спокойный, девочки напугано приоткрыли рты.
• Сцена из реджекта-ссср Алисы:Алиса в цивильном держит ладонь на толстом стекле и смотрит сквозь него в комнату, где за столом в смирительной рубашке сидит пациент с узнаваемой прической. Сторона Алисы затемнена, глаз девушки не видно, возможен влажный отблеск, сторона • Семёна освещена, он спокоен.
• Славя с Семёном на скамейке, ночная версия. Семён держит Славю за руку и немного краснеет, Славя улыбается, смотрит в сторону. Оба одеты в форму, перспектива немного со стороны так, что Славя находится на переднем плане.
• Аналогичные посиделки - но с Алисой. Семён улыбается, Алиса красная и смотрит в сторону, сводобную руку сжала в кулак.
• Припавшая к земле огромная кротокрыса (очень похожая на аналог из фоллыча), фон - шахты.
• Щенок собаки породы "Самайская лайка" в картонной коробке, смотрит снизу вверх, перспектива чуть-чуть сверху, версия ночная, фон некритичен.
• Вид на салон "Лиаза" чуть сбоку, за окнами чёрная холодная вода и угадывается опора моста, ночь, в салоне тоже уже есть примерно по колено.
• Семён получает пощёчину от Алисы - фон некритичен, ночь, оба в форме, Алиса в своей фирменной, злая, оскалившаяся, Семён шокирован.
• Эротическая сценка с Мику/Алисой/Леной/Славей/Ольгой. Можно эччи, как у Мику с лежанием на пузе. - Сцена с Леной активно пилится.
• Семён держит на руках Славю, вид на Семёна со спины, фоном шоссе, оба одеты в форму, но из-за Семёна видна только голова и ноги Слави.
• Семён и ОД смотрят салюты. Вид сверху на лица, время ночь (логично же), лица освещены разноцветными сполохами, Семён нахмурился, у ОД улыбка и немного приоткрыт рот, глаза счастливые, она в платье.

2

Добрый день.
Турнир с играми "до двух побед" в "голом коде" работает,

Как именно (если я правильно понял):

- безальтернативно играем два раза;
- очерёдность ходов меняется (если в первой игре первым ходил Семён - во второй игре первым ходит соперник; и наоборот);
- если кто-то выиграл два раза подряд = победил в раунде;
- если счёт 1:1 - назначается дополнительная игра, в которой первый ход разыгрывается рандомно (пока "орёл/решка").
- выигравший в дополнительной игре выигрывает раунд.

Есть одно "но":

Диалоги после поражений/побед были "заточены" под единичную игру; возможно, потребуется их доработка.
И, думаю, были бы уместными диалоги после каждой игры с вариантами выиграл/проиграл/сравнял счёт - как минимум, Алиса и Ульяна вряд ли бы молчали в этих ситуациях; да и остальные игроки тоже, разве Женьке турнир по барабану, кмк.

Ну и ещё:

Дорабатываю алгоритмы поведения игроков "на слив" и "на риск"; не совсем логичное поведение вылезает в некоторых раскладах.
Погоняю их ещё трошки.

3

Доброе утро.

Турнир с игрой "до двух побед" в каждом этапе + немного изменённый алгоритм игры соперника в "поддавки" (убраны некоторые нелогичности).

Для БЛ версии 1.1, релиз мода - от 022 до 024 (турнир тестовый, с модом вообще пересекаться не должен).

Забирать тут: Ссылка на я.диск

Что в архиве

В архиве одна папка ~Test. Её распаковать и поместить в папку мода (scenario_alt).

Если будете распаковывать в папку с предыдущим тестом, перед распаковкой старую папку ~Test удалить.
Сохранения с прежнего теста могут не работать; лучше проходить заново.

Собственно движок турнира и игра остались прежними; только каждый этап турнира играется "до двух побед";
очерёдность ходов при этом меняется.
Если две игры закончились со счётом 1-1, играется третья игра.

Этот вариант турнира всё ещё тестовый, вместо некоторых диалогов стоят "заглушки".

"Игровое поведение" соперников.
Немного изменился алгоритм "игры в поддавки" - убраны некоторые нелогичности.

Просьба: попробовать и играть с соперниками, и пропускать этапы турнира (выиграть в финале, проиграть в финале и т. д), а также проверить работу "сдавайся\сдаюсь" при "торговле" с соперником.

У соперников разное игровое поведение (в тесте назначено условно, а вообще - любому персонажу можно присвоить своё в релизе).

Кто и как играет

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

Лена - пытается Семёну проиграть, отсюда - в первую очередь отдаёт карты из комбинации и/или те, которые Семён защищал у себя.
Изменялся именно этот алгоритм.

Славя и Мику - играют "от обороны" - т. е. стараются не дать Семёну разбить свою комбинацию; ну и, если получится, пытаются разбить комбинацию Семёна.

Алиса - "рискует", т. е. если обнаружит шанс собрать стрит или флеш - может рискнуть имеющейся на руках парой/двумя парами/тройкой (на последнем ходу, если риск не оправдается, свою карту попытается вернуть.). Если у Алисы на руках уже окажется комбинация "от стрита", либо пред-стрита или пред-флеша на руках не будет - рисковать она не станет, будет играть "от обороны".

Шурик - этот экспериментирует, потому стиль его  игры определяется рандомно: "защищается", "рискует" или "играет в поддавки" - может быть всё, что перечислено.
В финале - только "защищается" или "рискует". После каждой игры - сообщает, как именно он действовал и получилось ли.

Женя  - судя по описанию, турнир ей неинтересен, картами кидается рандомно, как и в "классике".

Для упрощения и чистоты эксперимента

Стиль игры для каждого соперника во всех трёх этапах турнира в тесте одинаков (в релизе - можно изменить), отличаться может только у Шурика (причём в каждой игре в каждом этапе может отличаться) - там рандом.

Также - для чистоты эксперимента - у соперников в тесте "отключена" возможность ошибаться (вообще- настраиваемая вероятность ошибиться, от 0 до 80%, с шагом 20%); что можно использовать затем в релизе - например, вероятность "ошибиться" у соперника в первом туре - 60%, в полуфинале - 40%, в финале - 0 или 20%.

"Ошибка" = анализ ситуации верный, а вот карта своя для защиты или у Семёна для вытаскивания определяется не по результатам анализа, а рандомно.

Если такой вариант подойдёт для мода

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

Отредактировано nuttyprof (2015-11-10 05:14:59)

4

Вот что сразу бросилось в глаза в тесте карточного турнира - это не оптимизированный NVL для крупного шрифта. Стоит разбить описание покерных комбинаций с учётом крупного шрифта, а то сейчас только две из трёх влезает на экран. Ну и при крупном шрифте строки переносит зачем-то, хотя там не нужно кликать, и поэтому разрывы строк не очень смотрятся.

5

Лена Тихонова написал(а):

Вот что сразу бросилось в глаза в тесте карточного турнира - это не оптимизированный NVL для крупного шрифта.

А вот с этого момента прошу поподробнее.
Если можно - то скриншот.

6

Не знаю насчёт скриншотов, но лично я стараюсь делать nvl clear каждые 5-8 строчек. Во всяком случае, последние тексты (=
Потому что много народа со включенным "большим" шрифтом жаловались - мол, не влезает на экран.

7

nuttyprof написал(а):

А вот с этого момента прошу поподробнее.
Если можно - то скриншот.

Крупный шрифт

http://i.imgur.com/Fm3yTmv.png

Крупный шрифт, видно только описание двух из трёх комбинаций. И текст переносится как-то криво.
"...не является отдельной комбинацией, а является
частным случаем..."

Нормальный шрифт

http://i.imgur.com/JfLahph.png

Ну а здесь всё нормально, и с переносами и с размещением - все три комбинации влезли в экран.

Ну и что ещё заметила. При договоре я говорю, что комбинации знаю, и в первом раунде только в конце игры показывается, какая у нас рука. Но уже во время второго раунда игре пофиг, что я указывала, что комбинации знаю, и они остаются на экране.

Отредактировано Лена Тихонова (2015-11-11 10:50:54)

8

Добрый день.
Со шрифтами понятно, поправлю.

И ещё

исправлю карточные масти (пики, бубны и т. п) на масти, которые используются в игре

С договором - посмотрю, что там такое.

Отредактировано nuttyprof (2015-11-11 14:35:03)

9

Добрый день.

К выложенному тут исправление (заменить всё в папке ~Test)
Брать тут: Ссылка на Я.диск

Что исправлено:

-  вывод правил игры в NVL-режиме для крупного текста.

Теперь это должно выглядеть так (крупный текст):

http://s7.uploads.ru/t/nBeqs.jpg

Да, теперь вместо "стандартных" мастей (пики, бубны и т. д.) показываются игровые.

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

Отредактировано nuttyprof (2015-11-12 16:20:19)

10

Оттестировал всех игроков.

Режим игры Лены и Шурика (при поддавках) полностью соответствует описанному - ошибок и странностей не обнаружил. У других персонажей изменений не найдено.

В связи с введением серии до двух побед стал бросаться в глаза собственный интерес и восприятие игры соперника. Попытаюсь его кратко оценить.

Славя/Мику - самые интересные соперники, требующие особого подхода к перемещениям карт.
Лена - с введением изменений в алгоритм игры стала поддатливой, но без глубинного понимания алгоритма обыграть её также непросто. Смотрится интересным.
Алиса - лично для меня соперник чуть более простой, чем пара Славя/Мику, из-за возможности рискнуть.
Женя - классический БЛ-карточный турнир. Отдаю должное ему.
Шурик - самый нетривиальный соперник из-за смены своих алгоритмов. Игра весьма интересна и результат непредсказуем.

Ульяна - самая скучная серия, в которой практически всегда всё зависит от захода. Даже крап карт не спасает в этом случае. Вся игра может свестись к банальному перекидыванию через стол одной карты.
Быть может стоит добавить ей хоть немного рисковости или рандомности? Перемещения карт, как у Мику/Слави, невозможны - а значит, невозможна нормальная тактическая борьба противников. Теряется из-за этого сам смысл турнира. 2 или три матча приходится просто терпеть однотипную игру, на которую фактически не оказываешь никакого влияния.

11

Доброе утро.

Dantiras написал(а):

Ульяна - самая скучная серия, в которой практически всегда всё зависит от захода. Даже крап карт не спасает в этом случае. Вся игра может свестись к банальному перекидыванию через стол одной карты.
Быть может стоит добавить ей хоть немного рисковости или рандомности? Перемещения карт, как у Мику/Слави, невозможны - а значит, невозможна нормальная тактическая борьба противников. Теряется из-за этого сам смысл турнира. 2 или три матча приходится просто терпеть однотипную игру, на которую фактически не оказываешь никакого влияния.


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

В релизной версии

думаю, что у Ульяны не будет ненулевой вероятности ошибки, более того, поскольку "... я ничего не поняла и не запомнила.." - можно ей выставить рандом на 1 тур; защиту с  вероятностью ошибки в 40-60% на полуфинал и 20-40 на финал.
Да и тест - в том виде как выложен - всего лишь опробование алгоритмов, а вообще любому сопернику можно задать любой алгоритм, в том числе - рандомно, как и Шурику; и вероятность ошибки - также рандомно задавать.

12

7dl-kun написал(а):

1. Для четвёртого дня Слави - dungeon-crawler игрушка в котокомбах тайлсетом 8х8

Что-то вдруг задумался над этим вариантом. Из подобных играл в ADOM и еще что-то.
Короче, что нужно? 2Д-карта, случайная или предопределенная? Перемещения героя кнопками и кликом мыши?
Чиби-герой и его компаньон(ы), это понятно, это можно откуда-нибудь спереть, например из переделки БЛ под 2Д...
События на карте? Забой, дверь в шахтерский закуток и так далее, для случайно сгененированной карты придется явно задавать положение специальных локаций.
Монстры? Всякий валяющийся экип?

13

peregarrett написал(а):

Что-то вдруг задумался над этим вариантом. Из подобных играл в ADOM и еще что-то.
Короче, что нужно? 2Д-карта, случайная или предопределенная? Перемещения героя кнопками и кликом мыши?
Чиби-герой и его компаньон(ы), это понятно, это можно откуда-нибудь спереть, например из переделки БЛ под 2Д...
События на карте? Забой, дверь в шахтерский закуток и так далее, для случайно сгененированной карты придется явно задавать положение специальных локаций.
Монстры? Всякий валяющийся экип?

Свернутый текст
Код:
label alt_cotocombs:
    menu:
        "Открыть карту?":
            jump alt_cotocombs_map
        "Воспользоваться автопилотом.":
            "Я решил прислушаться к интуиции и, прикинув направление, зашагал в нужную сторону."
            return 
label alt_cotocombs_map:
    #Пилим DND-карту
    #Активный тайл-сет: 8х8, номерация тайлов с левого нижнего угла, старт с тайла 8, если идём со стороны старого лагеря, либо с тайла 64, если идём от Генды.
    #Ключи участия: alt_catac_wet(попал в воду), alt_ow_77 (односторонний спуск, закрывающий выход), alt_ow_73(односторонний проход через воду(засыпает породой))
    #Ключи прохождения alt_catac2 = True (открывает тайл на карте), alt_catac_came = 0 (расчёт, куда какой поворот смотрит.)
    #Погнали ништяки - собственно тайлы и пути.
    #Доступные тайлы:
    #2 -  вверх в 22 (мокрый)
    #6 - вверх в 26, вправо в 7  - доступна только с 7 (мокрый)
    #7 - влево к 6, вверх в 27, вправо в 8, 
    #8 - влево к 7, вправо к выходу (если  есть верёвка)
    #22 - вверх в 32(можно пробежаться до 72), вниз в 2
    #25 - вверх в 35 (шахта)
    #26 - вверх в 36, вправо в 27
    #27 - вниз в 7, и влево к 26
    #32 - вверх в 42, вниз в 22, вправо в 33(можно пробежаться до 36)
    #33 - влево в 32, вправо в 34  
    #34 - влево в 33, вправо в 35,  вверх в 41
    #35 - влево в 34, вправо в 36, вниз в 25
    #36 - влево в 35, вверх в 46
    #42 - вверх в 52, вниз в 32
    #44 - вверх в 54, вниз в 34
    #45 - вверх в 55
    #46 - вверх в 56, вниз в в 36
    #52 - вверх в 62, вниз в 42
    #54 - вниз в 44, вправо в 55
    #55 - вверх в 65, влево в 54, вправо в 56, вниз в 45(для д3 ключей)
    #56 - влево в 55, вниз в 46
    #62 - вверх в 72, вниз в 52
    #65 - вверх в 75, вниз в 55
    #68 - вверх в 78(шахта)
    #72 - вверх в 82, вниз в 72, вправо в 73
    #73 - вправо в 74(затяжное падение одностороннее)
    #74 - вверх в 84, попытаться влево в 73 (мокрый)
    #75 - вниз в 65, вверх в 85, вправо в 76
    #76 - влево в 75, вправо в 77
    #77 - влево в 76, вправо в 78(дверь)
    #78 - влево в 76(если есть верёвка), вверх в 88
    #82 - вниз в 72 (шахта)
    #83 - вправо в 82 (дикий ИИ Шурика), если мокрый, долбанёт током, если напуган, нападёт (бегство)
    #84 - влево в 83(если ходил соло), вправо в 85, вниз в 74(мокрый)
    #85 - влево в 84, вниз в 75
    #88 - вверх в лагерь (комната с лестницей)

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

14

Доброе утро.

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

Отредактировано nuttyprof (2015-11-19 08:37:35)

15

Доброе!
Если тестирование закончено, то особых пожеланий нет.
Случайно создаваемая последовательность из восьми игроков, образующая основание пирамиды плей-офф, игра до двух побед или до трёх в случае ничьей, с раздачей "защитной", "атакующей", "рисковой" и "яумамыдурочка" стратегий поведения с возможностью "на лету" вызывать функцию для использования игры и вне турнира тоже.

На самом турнире правила строгие - шесть карт, 2 игры. Для реваншей/партий вне турнира возможны "договорные" условия (7 карта, игра вслепую, ва-банк, и т.д.), которые на сам турнир не влияют.
Для "пропуска", полагаю, достаточно и того, что игрок уже однажды добрался до финала. Всё-таки без некоторых упрощений в угоду игровому процессу не обойтись. Впрочем, не настаиваю на своём мнении на на единственно верном.

16

Ок, задача ясна.
Просто почему о "конкретном сопернике":
в "классике" чёткая привязка соперников к этапам была, потому, например, было:  проиграть в полуфинале = выиграть у Лены + проиграть Ульяне.
С рандомной рассадкой - всё не так однозначно, а раздача ЛП и прочее - как я понимаю - зависит и от этапа, и от соперника.

Тем более что

Меню выбора "проиграть / выиграть этап" у нас появляется сейчас ДО того, как мы узнаём полную картину рассадки.
Так и оставить или сначала показать рассадку - а затем игрок может принять уже решение?

17

1. Пускай фармит рандом) Уже сейчас у игроков не возникает с этим проблем.
2. Так как турнир всё-таки не сюжетообразующая вещь, его лп/флагами можно пренебречь при известном желании. Поэтому лучше оставить его как есть, вещью в себе.
3. Нет-нет, только случайность, только хардкор. Показать игроку рассадку и потом предложить действие? Довольно сильно отдаёт press to win. Я не против press to win, но не в случае с визуальной новеллой (=

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

18

Добрый день.

Турнир. Версия, подготовленная к релизу.
Версия БЛ - 1.1; релиз мода - 024c.

Ссылка на Яндекс.диск

Лишнее почти всё вырезано; оставлена отдельная точка входа прямо на турнир; после турнира - переход в общий рут.

Что в архиве:

Папка ~Test_rel - её поместить в папку scenario_alt.
Если есть остатки предыдущих тестов - их нужно предварительно удалить.
Сохранения с прежних тестов не будут работать точно.

В папке 4 файла и папка с картинками.

В выкладке две составляющие: - игра в карты с покерными комбинациями и турнир в карты второго дня.
В принципе, к турниру игра не привязана; при желании можно задействовать в любом месте вместо прежней.

Игра в карты:

- alt_card_game_engine.rpy - собственно, новый "движок" игры;
- alt_rivals.rpy -  описания классов "новых" соперников.

Пример использования вне турнира:

Спойлер

Игра с Леной в медпункте в третий день

в alt_route_common.rpy добавлено следующее:

1. После строки 26013 ($ alt_day3_un_strip_pool_un = 5)
начальные настройки:

Код:
$ alt_name_my_rival_r = "Лены"
$ alt_whose_first_move = 'player'
$ alt_day3_gambler_behavior = 'defense'
$ alt_day3_gambler_skill = 3
Примечание:

$ alt_name_my_rival_r = "Лены"   # имя, которое будет выводиться при подведении итогов игры.  /"У %(Лены) - %(такая-то комбинация)"/.
Если переменной значение не присвоить, то:
   - если до этого карты нигде не вызывались, надпись будет: /"У соперника - %(такая-то комбинация)"/.
   - если в карты уже играли - будет выведено имя предыдущего соперника.
               
$ alt_whose_first_move = 'player' # кто будет ходить первым.
Можно не присваивать - в этом случае при очередном вызове игры будет ходить тот, кто ходил последним (соперник ('rival')  или игрок ('player').

$ alt_day3_gambler_behavior = 'defense' # стиль игры соперника (см. далее).
Если не предполагается менять в ходе игры - в этом месте можно не присваивать.

$ alt_day3_gambler_skill = 3 # "навык" игры соперника (см. далее).
Если не предполагается менять в ходе игры - также можно не присваивать.

2.  После пункта меню "Играть!":

Код:
    menu:
        "Играть!":
# ------------------------------------- 
            if alt_whose_first_move == 'player':
                $ alt_whose_first_move = 'rival'
            else:
                $ alt_whose_first_move = 'player'
# ------------------------------------- 
            $ INVISIBLE = False

В данном случае - перед каждой игры меняем очередность хода; если такое требуется.
(Можно также менять после игры).

3. Вызов игры в карты.
(после dialogs = {
                              .....
                                    }
Эти строки:

Код:
                generate_cards('bg int_aidpost_night', dialogs)
                rival = CardGameRivalUn(un_avatar_set, u"Лена, игра на раздевание")
            jump cards_gameloop

меняем на эти:

Код:
                generate_cards_alt('bg int_aidpost_night', dialogs)
                rival = CardGameRivalWiseUsual(un_avatar_set, u"Лена, игра на раздевание", alt_day3_gambler_behavior, alt_day3_gambler_skill)
            $ alt_hint_poker = alt_hint_poker_contractual
            jump cards_gameloop_wise_alt
Примечание:

generate_cards_alt('bg int_aidpost_night', dialogs)  # вызов нового генератора раздачи

rival = CardGameRivalWiseUsual(un_avatar_set, u"Лена, игра на раздевание", alt_day3_gambler_behavior, alt_day3_gambler_skill)
Определяем соперника.

"Настраиваемых" соперников имеется всего два класса; но - с дополнительными параметрами:

1 класс - CardGameRivalWiseUsual    - "стандартный" соперник. Будет охотиться за картами игрока и "тасовать" свои.
2 класс - CardGameRivalWiseLikeUS  - "играет, как Ульяна"; забирает только предложенную игроком карту и игрок может забрать только предложенную соперником карту.

Параметры, передаваемые в класс:

Первые два - такие же, как и раньше, т. е. набор аватар и выводимое имя.
Можно передавать в оба класса какие угодно, т. е. и для Ульяны можно назначить "стандартный" режим, и, скажем, для Жени - "как у Ульяны".

Третий:
alt_day3_gambler_behavior - стиль игры соперника.
Стилей игры - четыре, строковые константы: 'defense' - защита+нападение; 'gamble' - нападение+риск; 'succumb' - соперник старается проиграть, 'foolplay' - соперник играет рандомно ("специально же карты не смотрела").
В данном случае - переменная (позволяет поменять стиль в ходе, например, турнира).
Можно передавать напрямую в вызове класса.

Четвёртый:
alt_day3_gambler_skill - "навык" игры соперника.
Вероятность совершить "ошибку" на заданном стиле игры (на самом деле - вероятность на одно действие - атаку или защиту включить режим 'foolplay').
Может быть от 1 до 5; 1 - вероятность ошибки 80%, 2 - 60%, 3-40% 4- 20%. Если 5 - соперник играет без ошибок.
В данном случае также переменная, чтобы можно было изменить значение, например, по итогам очередной игры.
Также можно передать напрямую в вызове класса.
Если этот параметр передавать через переменную, ничего страшного не произойдёт, если значение переменной будет меньше 1 или больше 5;
алгоритм класса "обрежет" внутри соответственно до 1 и до 5.

Например:
rival = CardGameRivalWiseUsual(un_avatar_set, u"Лена, игра на раздевание", 'gamble', 4) - Лена будет рисковать с вероятностью ошибиться в очередном ходе 20%.

Третий и четвёртый параметр в класс можно и не передавать, в этом случае игрок будет защищаться без ошибок, т. е:
CardGameRivalWiseUsual(un_avatar_set, u"Лена, игра на раздевание") == CardGameRivalWiseUsual(un_avatar_set, u"Лена, игра на раздевание", 'defense', 5)

$ alt_hint_poker = alt_hint_poker_contractual - показывать ли "подсказку": какая комбинация в руке в ходе игры.
В данном случае - используется переменная (значение определяется перед турниром в меню выбора, о чем будет сказано далее).
Может принимать значения True (показывать в ходе игры) или False (показывать только при подведении итогов).
если True - нужно задавать явно, False - можно опустить (задаётся внутри обработчика после подведения итога - выиграл/проиграл/ничья)

jump cards_gameloop_wise_alt - собственно, переход на метку отображения карточного стола (покерные комбинации + "новые" соперники).

4. После метки label alt_day3_un_strip_play_win:

Код:
$ alt_day3_gambler_skill += 1

Т. е. после каждого проигрыша Лены повышаем ей навык.
(Можно также аналогично - понижать после каждого выигрыша.)

Можно - поменять и стиль игры, при определённом счёте  (т. е. если Лена проигрывает с крупным счётом - начинает рисковать, если выигрывает также с крупным счётом - может и поддаться).

Это я проверял - работает.

По турниру

alt_test_kards.rpy - собственно турнир;
alt_tournament_randomizing.rpy - init'ы и функции турнира;
suit - папка с картинками мастей в правила.

Исходные данные:

По ТЗ:
- восемь игроков, рассадка -  рандомная у всех;
- три раунда, каждый до двух побед (две игры обязательно; если ничья - решающая игра);
- сдаётся по шесть карт;
- стиль игры и навык игрока можно менять после каждой игры (в выложенной версии - именно так и есть, если соперник проигрывает - навык повышается; если выигрывает - навык остаётся неизменным; в отдельных случаях - меняется стиль игры);
- если игрок выигрывает этап (1 тур, финал, полуфинал) - в дальнейшем может выбирать:  выиграть турнир или проиграть в каком-то этапе (смотря, куда доигрался "руками");
   это происходит вне зависимости от того, играл ли он когда-либо с эти конкретным соперником и выиграл или проиграл
   (статистика такая собирается, но не используется пока, авось когда-либо пригодится);
- выбор этот появляется после ДО того, как игрок видит весь расклад по соперникам (расклад выводится, если выбрано "играть самостоятельно"),
  (перед выбором игрок видит только своего соперника в первом туре);
- раздача ЛП и прочих "ништяков" по результатам каждого этапа при пропуске ("победа в финале") производится, только если они "по умолчанию";
   если же нужно выполнить некоторые телодвижения

Например

+ ЛП Слави в 1 туре, если предложить реванш

- это при пропуске не начисляется.

По логике прохождения турнира:
- поскольку игра в карты меняется, и для многих игроков это будет в новинку, думаю, есть смысл persistent'ы поменять на новые (например, persistent.altCardsDemo_new и т. п.);
- добавлен persistent на чтение правил игры - при первом прохождении читаем без вариантов, на последующих - выбор: читать/не читать;
- если правила читали - показываем и подсказки: что за комбинация на руках при игре;
- при повторном прохождении также будет доступен выбор "Правила не показывать, а подсказки при игре показать" либо "Правила и подсказки не показывать";
- как следует из текста:
     - если Семён проигрывает первый тур после реванша (Лене или Ульяне) - он покидает столовую и турнир не досматривает до конца, следовательно, итогов может не знать;
     - если проигрывает какой-либо этап - остаётся в числе зрителей;
- потому: при пропуске турнира события идут своим порядком, но без возможности на них как-то повлиять (в т. ч. НЕ предлагаются реванши);
- оставлена "торговля" за очередность хода перед каждым этапом; после каждой игры - очередность хода меняется;
   

Свернутый текст

"Пристегнул" в меню торговли "Камень, ножницы, бумагу"; если будет сочтено неуместным - этот пункт меню выбора убрать.

Увы, неизбежные ограничения:

1. В "классическом" турнире перед началом включается блокировка "отмотки" игры назад кнопкой в нижнем меню;
эта блокировка отключается по окончанию турнира (переменная d2_cardgame_block_rollback - именно такая, она проверяется в движке БЛ).
На сохранения от классики и прочих модов изменения этой переменной не влияют.
В выложенной версии сделано также, а вот alt_day2_cardgame_block_rollback работать не будет, её можно убрать совсем.

2. В некоторых местах вынужденно заблокирован роллбак колесом мыши - иначе возможны вылеты.

Почему:

Рассадка и победители - рандомные, если гонять туда-сюда возможны расклады, когда за одним столом окажутся два победителя - > вылет.

Так что только сохранения; а "переиграть" игру роллбаком не получится всё равно, в основном движке карт блокировка роллбака включается каждый ход.

Новые переменные по итогам турнира:

Поскольку результаты турнира используются в некоторых последующих выборах, ниже список переменных для анализа, кто и как сыграл.

1. Итоги по игрокам.
Во всех случаях можно использовать словарь  alt_day2_gamblers_result['хх'] == yy
    где:
    хх - игрок из ('me', 'un', 'sl' ,'dv', 'mi', 'us', 'sh', 'mz')
    yy - результат: 0 - не определён (в случае проигрыша Семёна в 1 туре при реванше - он выходит из столовой)
                              1 - поражение в 1 туре;
                              2 - победа в 1 туре (только для Лены и Ульяны, когда реванш);
                            11 - поражение в полуфинале;
                            12 - (теоретически) - победа в полуфинале (меняется на результат финала)
                            21 - поражение в финале;
                            22 - победа в финале.

2. Соперники Семёна.
alt_my_rival_1_tour.take == 'хх'       - в первом туре;
alt_my_rival_semifinal.take == 'хх'   - в полуфинале;
alt_my_rival_final.take == 'хх'           - в финале.
    где:
    хх - также игрок из ('me', 'un', 'sl' ,'dv', 'mi', 'us', 'sh', 'mz').
    Если хх == None (для полуфинала и финала)   - значит, Семён до этого этапа не добрался, вылетел раньше.

Это справедливо и для самостоятельной игры, и для "пропуска" турнира.

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

Есть еще пару вопросов по некоторым нестыковкам

А. файл alt_res_card_shuffles.rpy
1. Начало:

Код:
label alt_day2_card_shuffler:
    play ambience ambience_dining_hall_full fadein 5
    play music music_list["smooth_machine"] fadein 5
    "Народ внутри уже был весь в нетерпении."

Эта метка есть, но нигде не вызывается, кусок кода не работает.

2. строка 1860:
Если играем за Локи и метим карты, в финале крап не работает

Код:
if alt_day2_f2 == 3:
        if alt_day2_walk == 0:
        ........
    window hide
    $ INVISIBLE = False

($ INVISIBLE = False) на одном уровне с проверкой флагов - т. е. получается так, что Семёна палит с крапом только Алиса, а отменяется - в любом случае.
Оно так и задумано? Если таки да, как-то бы мотивировать это, скажем, во всех остальных случаях на финальном столе появилась новая колода, которую Семён не мог пометить.

3. строки  1230..1235:
С Ульяной реванш не происходит, вне зависимости от выбора (в любом случае - переход в начало полуфинала).

Б. alt_route_common.rpy
1. строки  16529, 16530:
Двойная проверка на if alt_day2_round3 != 0.
В одной из строк можно эту проверку исключить.

2. строка 14537:
elif (alt_pe == 1) and (alt_day2_round2 != 1):
Судя по дальнейшему тексту, проверяется условие, что Семён обыграл Лену в 1-м туре.
Может не сработать, если Семён в 1 туре проиграл, а в полуфинале - продул.

3. строки 12980, 13461, 15388, 15396, 19998:
Везде производится проверка на if alt_day2_dv_bet_won == 2
но такое значение этой переменной не присваивается нигде.
0 - по инициализации, 1 - при победе Семёна в турнире.

Диалоги и словари

Такие как:
- индивидуальные представления столов в зависимости от сочетания пары игроков;
- парные таунты по итогам раундов;
- диалоги по результатам очередной игры (победил/проиграл/сравнял счёт).

Там по-прежнему во многих местах "заглушки", это я и не трогал.

И может быть есть смысл

- для Лены (проиграла в 1 туре): "У Лены не было ничего..."
- для Мику (победила в 1 туре): "А что обозначает это сочетание карт ...."
перенести эти фразы как раз в диалоги после очередной игры, там они по логике смотрятся уместнее.

В выложенном турнире

для тестовых целей предусмотрено следующее (преднастроено):
- играем за Локи;
- карты метим;
- с Алисой спорим;
- Лене, Славе, Алисе, Мику по 6 ЛП.

Возможности выбора нет (для упрощения.)

После турнира переход на ужин и далее по тексту.

Как я уже говорил, при возне с достаточно объёмным кодом глаз замыливается, своих косяков уже не видно.
Хотя и гонял выложенный вариант некоторое время (и таки нашёл жука еще одного), тем не менее:

прошу всех, у кого найдётся время, погонять турнир и игру в карты ещё, авось какой баг и вылезет.

19

nuttyprof написал(а):

прошу всех, у кого найдётся время, погонять турнир и игру в карты ещё, авось какой баг и вылезет.

Доброго вечера.
Win 10 64-bit.
При первом же запуске выдало вот такую

гадость:

I'm sorry, but an uncaught exception occurred.

While parsing C:\Program Files (x86)\Everlasting Summer/game/scenario_alt/~Test_rel/alt_tournament_randomizing.rpy.
ImportError: No module named sl2.slast

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "C:\Program Files (x86)\Everlasting Summer\renpy\bootstrap.py", line 265, in bootstrap
    renpy.main.main()
  File "C:\Program Files (x86)\Everlasting Summer\renpy\main.py", line 226, in main
    renpy.game.script.load_script() # sets renpy.game.script.
  File "C:\Program Files (x86)\Everlasting Summer\renpy\script.py", line 177, in load_script
    self.load_appropriate_file(".rpyc", ".rpy", dir, fn, initcode)
  File "C:\Program Files (x86)\Everlasting Summer\renpy\script.py", line 436, in load_appropriate_file
    if self.load_file(dir, fn + compiled, initcode):
  File "C:\Program Files (x86)\Everlasting Summer\renpy\script.py", line 310, in load_file
    data, stmts = self.load_file_core(dir, fn)
  File "C:\Program Files (x86)\Everlasting Summer\renpy\script.py", line 288, in load_file_core
    data, stmts = loads(f.read().decode('zlib'))
ImportError: No module named sl2.slast

Windows-post2008Server-6.2.9200
Ren'Py 6.16.3.502

Решилось путём сноса имеющейся игры, установкой чистой версии со страницы 7ДЛ в ES-wiki, на неё - последней версии мода, а также переустановкой .NET Framework и Microsoft Visual C++ Redistributable. Пока вроде нормально.

На Win XP 32-bit полёт нормальный.

20

Ок, спасибо; то движок чего-то не отыскал.
Бывает, на 7 и 8 не видал такого, а на десятке - и не гонял толком.
Покручу ещё сам на win10.

Свернутый текст

(Ну не нравится мне десятка, рабочие машины все на win7)

21

nuttyprof написал(а):

win10.

Полагаю, что в ней как раз и дело.

Она потом (но до переустановки вышеперечисленного) выдавала мне Runtime error уже после запуска БЛ, не давая успеть ничего выбрать.

22

Добрый вечер. Запилил накануне сцену с озером, в трех вариантах. Однако, фонцы сильно отбиваются по стилистике от оригинальных. Кто сможет обработать под рисовку или хорошо покрасить голую геометрию - отпишитесь.
http://s2.uploads.ru/t/fPTyY.pnghttp://s3.uploads.ru/t/kKBF8.pnghttp://s3.uploads.ru/t/iZSuW.png

23

С этим та же история  - требуется обработка.
http://s6.uploads.ru/t/PLwjq.pnghttp://s2.uploads.ru/t/7IfBV.pnghttp://s2.uploads.ru/t/GqNMO.png

24

Мне кажется, пляж можно пускать в мод уже сейчас.

25

Озеро маловато, имхо. Там только лягушки купаться смогут.

26

Подтянуть бы уровень громкости в "Одиноком пастухе". Сейчас он намного ниже большинства мелодий. Может, так и задумано, конечно.

27

https://yadi.sk/d/_hZ3lRFDpddsX - полноростовые *.psd-файлы спрайтов оригинального БЛ. Случайно найдены в Интернете за время безуспешных экспериментов по переносу БЛ версии 1.1 на RenPy 6.99.8.  Вполне нормально открываются и редактируются как в Adobe Photoshop, так и в SAI. Могут кому-нибудь пригодиться в спрайтостроении.

28

Нашёл"чистую" версию комнаты Семена без следов явных затираний и битых пикселей - может лучше использовать её?
http://s7.uploads.ru/t/lD1EZ.png

29

Добрый Кащей
Да, эта версия лучше, спасибо.

30

http://s2.uploads.ru/t/CRvd5.png
http://s7.uploads.ru/t/ef36u.png
Ещё есть версии Днём и Вечером, помимо стандартной ночной. Если надо.


Вы здесь » 7 дней лета » Общее обсуждение мода » Небходимый контент