Создание мода "Бортовой журнал"

Программы для игр серии Star Control
Аватара пользователя
SLY
Сообщения: 3375
Регистрация: 23 сен 2013

Создание мода "Бортовой журнал"

Сообщение SLY »

Создание мода "Бортовой журнал".

Из рецензии Владимира Горячева на Legend of Grimrock 2:
Если вы, невзирая на сказанное мной в адрес Legend of Grimrock 2,
возьметесь за прохождение, непременно держите под рукой карандаш
и блокнот. Записывайте туда всё: где побывали, какие подсказки
нашли и куда направляетесь. Только так вы вспомните, что делали,
если отложите игру в сторону и вернётесь через несколько дней.
Ведь её разработчики не утруждали себя такой «мелочью»,
как автоматический дневник. И ещё много чем…
----------------------------------------------------------
Казалось бы, почему не сделать нормальную записную книжку?
Almost Human, обласканная критикой и фанатами за «дух старой школы»,
перепутала «хардкорность» с банальными неудобствами.


Не так давно я очередной раз прошёл UQM, на этот раз HD-версию. HD-мод подтянул графику до современного уровня, ремикс-паки от Precursors сделали то же самое с музыкальной частью, а вот интерфейс по-прежнему никто не трогал... Безусловно, все мы любим эту игру такой, какая она есть. Однако ей уже более 20 лет, и есть моменты, которые просто можно сделать лучше и удобнее, тоже немного подтянуть под современные стандарты. К примеру, ей бы очень не помешала банальная поддержка мыши, при помощи которой было бы в разы удобнее выбирать пункты меню, нужные для взаимодейстия корабли и совершать покупки модулей. Также было бы очень удобно видеть на карте квазипространства в игре обозначенные линиями пути перемещания с того или иного портала, которые уже были открыты. Но больше всего при прохождении мне не хватало дневника, в данном случае "бортового журнала", в который бы заносилась вся важная информация. Или нашими руками, или автоматически.

Изображение

Как это должно выглядеть.

Как я себе это вижу.. Если взять исходную картинку с соотношением сторон 4:3 и добавить к ней слева блок, чтобы получить 16:10, то мы сразу получим и симметричный интерфейс на протяжении всей игры и поддержку широкоформатных мониторов, и, самое главное, всю важную информацию перед глазами.

Нажмите, чтобы увидеть полный размер
Изображение
Стиль я взял из текста, который можно просматривать после каждого диалога:
Изображение
Хотя, такие цвета вовсе необязательны. Можно, к примеру, и так:
Изображение
Это картинка 16:10. Что касается мониторов 16:9, там по бокам можно просто оставить небольшие чёрные "ушки" - так, к примеру, было реализовано в King's Bounty от Катаури. Думаю, поклонника UQM они испугать не должны, ведь со стандартной картинкой 4:3 чёрные "уши" по бокам вообще огромны.

Изображение

Как это должно работать.

Вариант 1. Журнал с ручным вводом.

Подобно тому, как мы попадаем по нажатию пробела в меню игры справа, должна быть клавиша, по нажатию которой мы попадём в "Бортовой журнал" слева. Там мы должны иметь возможность выбрать нужную нам строку стрелками вверх-вниз (как реализовано в меню справа), а при нажатии "Enter" на нужной строке иметь возможность её радактировать. Подобные блоки в игре используются, когда мы только начинаем игру, и вводим имя и название корабля.
смотреть
Изображение
Так мы будем иметь возможность в любой момент вносить важную для нас информацию и всегда иметь её перед глазами. Другими словами - что-то вроде блокнота, стилизованного под игру и прекреплённого к ней.

Вариант 2. Автоматический журнал.

В этом варианте информация должна будет заноситься автоматически после срабатывания тех или иных реплик. Т.е. если прозвучало предложение с ценной информацией, должна занестись соответствующая строчка или несколько. Этот вариант предполагает, что придётся перелопатить весь текст, найти все предложения с ценной информацией, и написать текст строчек, который должен после них занестись. Если кто-то сможет реализовать техническую часть, я готов за это взяться. Только тут ещё должна быть проверка на наличие той или иной строчки в журнале, чтобы одно и тоже не заносилось по 100 раз.

Вариант 3. Идеальный (2 в одном).

Совокупность первых 2-х вариантов. Т.е. и чтобы строчки заносились автоматически, и чтобы была возможность их править и удалять, а также можно было вносить свои собственные заметки.

Изображение

Нужен человек или несколько, которые смогут реализовать техническую часть. Я готов помочь с идейной и визуальной частью, а также с поиском триггеров (в смысле с поиском нужных предложений и формулировкой соответствующих коротких информационных строчек). Вместе мы сможем сделать нашу любимую игру ещё лучше!
Аватара пользователя
Malin
Сообщения: 1990
Регистрация: 28 май 2023

Создание мода "Бортовой журнал"

Сообщение Malin »

Я всегда играл либо с бумагой либо с Window'совским блокнотом или Word'ом (благо UQM хорошо сворачивается и разворачивается + оконный режим).
Бывало мой бортовой журнал доходил до крайностей
Пример крайности
[15 июня 2155 года] Орбита альфы Павлина - II. Планета слишком горячая для высадки. Принято решение не собирать ресурсы. Курс на планету III.
[16 июня 2155 года] Орбита альфы Павлина - III. Обнаружено наличие...
И всё в таком духе


Честно говоря, игре не хватает не просто журнала с заметками подобного плана, а журнала квестов. Типа списка из названий ("Тайна 17-го числа", "Нашествие Зондов"), которые могли бы разворачиваться и показывать что сделано в этом направлении, а что ещё надо сделать + указание на карте места где надо это сделать.
Но это уже более сложная задача.

По существу.
Вариант 1. Конечно же простейший, но мало отличается от Word'a и бумаги. Причём уступает им в удобстве (банально зачеркнуть, составить список...).
Вариант 2. Нужно чтобы в программном коде игры как минимум срабатывало событие (в нужном нам месте!), которое вызывало функцию, которая понимала бы что и куда надо записать.
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Создание мода "Бортовой журнал"

Сообщение Vasaka »

Просто не удастся найти программиста, который это сделает.

Проще с нуля делать, чем эти старые авгиевы конюшни разгребать. Где-то я видел сделанную боёвку старкона написанную на C# + XNA. Теоретически, на этой базе можно доделать остальное, но тоже желающих делать не найдёшь.
Аватара пользователя
Malin
Сообщения: 1990
Регистрация: 28 май 2023

Создание мода "Бортовой журнал"

Сообщение Malin »

Vasaka писал(а):Проще с нуля делать, чем эти старые авгиевы конюшни разгребать

Да в чужой код лезть всё равно что в чужой храм в плавках идти :yes:
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Создание мода "Бортовой журнал"

Сообщение Vasaka »

Да в чужой код лезть всё равно что в чужой храм в плавках идти

Там ещё и на Си. Кто бы его понимал?
Аватара пользователя
SLY
Сообщения: 3375
Регистрация: 23 сен 2013

Создание мода "Бортовой журнал"

Сообщение SLY »

Malin писал(а): 12 фев 2015, 15:59Бывало мой бортовой журнал доходил до крайностей
Пример крайности
[15 июня 2155 года] Орбита альфы Павлина - II. Планета слишком горячая для высадки. Принято решение не собирать ресурсы. Курс на планету III.
[16 июня 2155 года] Орбита альфы Павлина - III. Обнаружено наличие...
И всё в таком духе

Понятно, что в игре есть много информации, которую можно фиксировать до бесконечности. Полезность каждый определяет для себя сам. Я же речь виду о самом основном - списке контрольных точек, которые нам сообщают в диалогах, и в которых может продолжиться сюжет. Просто чтобы всегда знать, куда можно полететь. Всё остальное вторично.
Malin писал(а): 12 фев 2015, 15:59Вариант 1. Конечно же простейший, но мало отличается от Word'a и бумаги. Причём уступает им в удобстве (банально зачеркнуть, составить список...).

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

Самое удобное, что я смог для себя найти в последний раз, это играть в оконном режиме с виндоусовским блокнотом слева, подобно тому, как я изобразил выше. Но это всё равно было неудобно. Потому что во-первых, только оконный режим, а хотелось фулл-скрин; во-вторых, не очень удобно переключаться; в-третьих, в блокноте по умолчанию крупные буквы, всё разлеталось на несколько строк; в-четвёртых, белый блок слева тоже явно с игрой не сочетался и немного портил впечатление. Понятно, что 3 и 4 - можно регулировать, но желанного лампового результата, который я попытался изобразить выше, всё равно не получится. Ну и прежде всего хотелось бы, конечно, фулл-скрин. А с фулл-скрина на текстовые редакторы переключаться не очень удобно.. Те же координаты представляют из себя 8 цифр, которые нужно запомнить, что не для всех является тривиальной задачей. Само по себе это мне, допустим, не тяжело, но когда начинаешь водить курсором по карте и читать другие коодинаты, на которые наводишь - сбиваешься. Поэтому просто хочется иметь всегда слева перед глазами тот самый ключевой список.
Malin писал(а): 12 фев 2015, 15:59Вариант 2. Нужно чтобы в программном коде игры как минимум срабатывало событие (в нужном нам месте!), которое вызывало функцию, которая понимала бы что и куда надо записать.

Я далёк от программирования, но в игре каждая реплика вызывается по определённому тегу:

пример
#(GLAD_WHEN_YOU_COME_BACK) commander-000.ogg
Поскорее возвращайтесь, Капитан.

#(GIVE_FUEL) commander-001.ogg
У нас есть немного топлива для кораблей, бесполезное для наших энергетических систем.
Сейчас мы передадим 5 единиц топлива на Ваш корабль.

#(GIVE_FUEL_AGAIN) commander-002.ogg
У нас почти закончилось топливо, но ещё ЧУТЬ-ЧУТЬ осталось.
Вам следует бережнее к нему относиться.
Запускаем перекачку топлива.

#(ARE_YOU_SUPPLY_SHIP) commander-003.ogg
Внимание неопознанному кораблю!
Я командир Хэйс орбитальной станции порабощённой планеты Земля.
Сигнал нашего гиперволнового передатчика крайне слаб.
Ситуация критична -- энергетические ресурсы исчерпаны,
сканеры и дальнодействующие радары не работают,
мы не можем опознать ваш корабль.
Вы -- плановый корабль-заправщик Иерархии?
Повторяю, вы -- корабль-заправщик?

#(DO_YOU_HAVE_RADIO_THIS_TIME) commander-004.ogg
Вы нашли радиоактивные элементы для наших энергогенераторов?

Т.е. под "событием" я понимаю обращение к определённому тегу, после которого должна заноситься соответствующая строчка в журнал. Ну а "функцию" как раз кто-то и должен создать.
Vasaka писал(а): 12 фев 2015, 17:13Просто не удастся найти программиста, который это сделает.

Я и не рассчитывал, что сразу все найдутся, и всё получится. Даже на свои иногда амбициозные идеи я умею трезво смотреть со стороны. Просто мысль эта уже давно вертелась в голове, и хотелось её уже сформулировать и выразить. Пусть здесь просто будет эта информация как пища для размышлений. Может быть и мы с вами к чему-нибудь придём. Может и другие со временем подтянуться. Может дойдут руки, и я её ещё в английский вариант переведу и на родной UQM-форум закину. А для этого её тоже нужно было сначала сформулировать на родном языке :).
Vasaka писал(а): 12 фев 2015, 17:13Проще с нуля делать, чем эти старые авгиевы конюшни разгребать. Где-то я видел сделанную боёвку старкона написанную на C# + XNA. Теоретически, на этой базе можно доделать остальное, но тоже желающих делать не найдёшь.

Понятно, что проще. Но если идти по автоматическому варианту в любом случае придётся искать обращение к репликам и как-то привязываться к ним. А ручной вариант можно (наверное, вам виднее) и отдельно написать.. что-то типа текстового редактора, стилизовать под UQM и примагнитить слева к игре. Самая большая проблема мне здесь видится в том, чтобы он работал в фулл-скрине, и чтобы при этом основное окно игры смещалось вправо. Но, опять же, вам виднее. Я не программист.
Аватара пользователя
Malin
Сообщения: 1990
Регистрация: 28 май 2023

Создание мода "Бортовой журнал"

Сообщение Malin »

SLY писал(а):по современным меркам игровой индустрии

К этой игре это не относится. К ней относится термин, который ты привёл ниже - "ламповый". Листок и карандаш в принципе тоже.
SLY писал(а):играться не только за столом, а в любом месте и в любой позе

Игра делалась не для этих целей, то есть в ней изначально не закладывалась подобная идея. Конечно ты прав, хотелось бы, но...

SLY писал(а):реплика вызывается по определённому тегу:

Вызов реплики обрабатывается определённой функцией, которая и обрабатывает "входящие параметры" тега. Она же (функция) вызывает другие функции, если срабатывают некоторые условия (типа "Если игрок получил от Слайландро код, то разрешить в репликах с зондом реплику самоуничтожения зонда").
Так вот, нужно найти эту функцию, добавить к ней кучу условий (на каждую реплику которую мы хотим занести в журнал).
Vasaka писал(а):Там ещё и на Си. Кто бы его понимал?

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

SLY, тут ведь ещё вопрос в переносе строки. Не любая ведь запись влезет в такой узенький экранчик. А если писать многострочно - читать будет жутко неудобно, когда записей будет много.
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Создание мода "Бортовой журнал"

Сообщение Vasaka »

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

Я и не рассчитывал, что сразу все найдутся, и всё получится. Даже на свои иногда амбициозные идеи я умею трезво смотреть со стороны. Просто мысль эта уже давно вертелась в голове, и хотелось её уже сформулировать и выразить. Пусть здесь просто будет эта информация как пища для размышлений. Может быть и мы с вами к чему-нибудь придём. Может и другие со временем подтянуться. Может дойдут руки, и я её ещё в английский вариант переведу и на родной UQM-форум закину. А для этого её тоже нужно было сначала сформулировать на родном языке .
Я очень не хочу тебя расстраивать, но ты никогда не найдёшь человека на эту работу. :o

Понятно, что проще. Но если идти по автоматическому варианту в любом случае придётся искать обращение к репликам и как-то привязываться к ним. А ручной вариант можно (наверное, вам виднее) и отдельно написать.. что-то типа текстового редактора, стилизовать под UQM и примагнитить слева к игре. Самая большая проблема мне здесь видится в том, чтобы он работал в фулл-скрине, и чтобы при этом основное окно игры смещалось вправо. Но, опять же, вам виднее. Я не программист.
Я даже не знаю как тебе объяснить, что у тебя из этой идеи ничего не выйдет. Наверное, тебе всё-таки надо побегать с этой идеей и понять это через пару лет.
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Создание мода "Бортовой журнал"

Сообщение Vasaka »

Есть опыт. Найти функцию не беда. В ставить туда кучу условий в принципе тоже (рутина жуткая, конечно, о списочном поиске там можно и не мечтать). Понадобиться добавить конечно ещё пару функций на добавление новой записи в журнал, проверку наличия записи в журнале и проча...
Сложнее другое - экран. Отображение всего этого дела как "примочки" сбоку может вызвать адовы глюки, ибо отображение пускает глубоченные корни в код игры, например. банальная проблема - начало координат верхняя левая точка - значит весь интерфейс, все штучки нужно сместить руками!
Да мне-то это можно не объяснять. Я выше предложил как можно это решить, куда её засунуть, чтобы эту проблему избежать, но даже с этим будут проблемы и много-много работы, которую никто никогда не сделает.
Аватара пользователя
Malin
Сообщения: 1990
Регистрация: 28 май 2023

Создание мода "Бортовой журнал"

Сообщение Malin »

SLY, как это ни печально, Vasaka прав.
Вот тебе утешительный приз. Специально для тебя.За твоё рвение и любовь к SCII.
OnboardLog

Что делает:
- В зелёном поле можно печатать что душе угодно.
- Правый клик мыши вызывает контекстное меню.
- Через контекстное меню можно включить отображение рамки окна для изменения его размера.
- При закрытии автоматически сохраняет текст, положение и размер окна.
Качнуть OnboardLog
















Ответить