Русский
Русский
English
Статистика
Реклама

Steam

Охота за уязвимостью. Выполняем произвольный код на виртуальных машинах NVIDIA GeForce NOW

07.09.2020 12:20:38 | Автор: admin

Введение


На фоне пандемии коронавируса возросла популярность облачных сервисов, позволяющих играть в видеоигры. Эти сервисы предоставляют вычислительные мощности, необходимые для запуска игр, и в режиме реального времени транслируют геймплей на устройства пользователей. Самое очевидное преимущество такой системы игрокам нет необходимости иметь мощное железо. Чтобы запустить клиент сервиса и скоротать время на самоизоляции, хватит и вполне бюджетной машины: все вычисления происходят на удаленном сервере.

Одной из таких облачных платформ является GeForce NOW от компании NVIDIA. Согласно Google Trends, по всему миру пик поисковых запросов для этого сервиса пришелся на февраль. Это коррелирует с началом действия ограничений во многих странах Азии, Европы, Северной и Южной Америки и других регионах. В то же время для России, где режим самоизоляции начался позже, в марте, мы видим аналогичную картину, но с соответствующей задержкой.

Учитывая высокий интерес к GeForce NOW, мы решили рассмотреть эту платформу с точки зрения безопасности.

Исследуем платформу


На момент начала нашего исследования GeForce NOW был доступен в двух вариантах бесплатном и по подписке. Их отличие в том, что при бесплатном использовании сервиса необходимо подождать, пока станет доступной свободная виртуальная среда. В случае платного варианта виртуальная машина стартует с более высоким приоритетом, и ждать игроку обычно не нужно. В плане обеспечения безопасности обе версии сервиса одинаковы. За любое нарушение правил использования платформы облачная среда выполнения сразу выключается, а учетная запись провинившегося геймера может быть заблокирована.

В меню представлен список игр, поддерживаемых сервисом. Для игры необходим аккаунт одного из магазинов цифрового контента, к которому уже привязана та или иная игра (если она платная, то купить ее нужно заранее). В этом исследовании мы рассматриваем связку GeForce NOW и магазина Steam.

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

Если выбранная игра уже куплена, она будет запущена в полноэкранном режиме, и другие функции виртуальной среды должны быть недоступны пользователю. Однако если настройки игры позволяют выбрать в ней оконный режим работы, то у нас появляется возможность получить доступ к библиотеке Steam. Другой способ попасть в нее выбрать игру, которой в библиотеке еще нет.



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

Чтобы провести полноценную разведку окружения среды виртуальной машины, нам не помешает доступ к cmd.exe или powershell.exe. Но как его получить? Немного побродив по меню библиотеки Steam, находим способ, который позволит запустить произвольный исполняемый ехе-файл, уже имеющийся в системе. Для этого мы будем использовать функцию Добавить стороннюю игру....



В обычных условиях добавить файл cmd.exe в библиотеку в качестве сторонней игры не составило бы проблемы. Однако в GeForce NOW такая возможность заблокирована, и нажатие на кнопку Обзор на скриншоте ниже ни к чему не приводит. Тем не менее, можно выбрать одно из уже имеющихся приложений (а заодно и посмотреть, какие вообще программы установлены в недрах виртуальной машины). Для примера выберем архиватор 7-Zip (другие программы также отлично подойдут).



После добавления 7-Zip в библиотеку Steam параметры программы можно изменить. Здесь мы и исправляем путь до нужного нам файла cmd.exe. Готово! Запускаем нашу стороннюю игру и получаем рабочий шелл:



Теперь мы можем осмотреться и узнать, где мы вообще находимся. Запускаем winver:



Как оказалось, виртуальная машина сервиса работает на Windows Server 2019.

В результате мы уже можем делать то, что по умолчанию не предусмотрено виртуальными машинами GeForce NOW. Но что еще мы можем сделать, и насколько это будет опасно?

Согласно FAQ на странице NVIDIA для отправки отчетов о найденных уязвимостях, получение доступа к cmd.exe на виртуальной машине сервиса GeForce NOW не является уязвимостью. Это объясняется тем, что в виртуальной среде у пользователя имеются минимальные права, а также присутствует фильтрация запускаемых приложений. Так, например, после запуска powershell.exe среда выполнения будет сразу же остановлена.

Таким образом, чтобы наше исследование восприняли всерьез, нам нужно решить две задачи:

1) доставить полезную нагрузку на виртуальную машину,
2) запустить ее с обходом белого списка приложений.

В процессе решения первой задачи были испробованы популярные для скачивания LOLBIN-ы, такие как regsvr32, bitsadmin и т. д. Во всех случаях виртуальная машина аварийно завершалась:



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

Но как быть с белым списком приложений? Ведь даже если нам удастся поместить стороннее приложение в виртуальную машину, при его запуске та аварийно завершит свою работу. Одно из решений этой проблемы найти приложение из списка доверенных, для которого мы можем осуществить dll hijacking. Самая очевидная цель это процесс игры.

Итак, попробуем реализовать эту идею на примере Counter-Strike: Source (далее мы будем сокращенно называть ее CS:S). Первое, что мы делаем, создаем свой сервер CS:S, который будет отдавать dll-файл под видом, скажем, модели (d.mdl). Далее запускаем GeForce NOW для игры в CS:S и заходим на наш сервер, с которого на виртуальную машину загружается заранее подготовленный файл модели. Теперь сворачиваем игру и запускаем cmd.exe. Перемещаем файл d.mdl в Counter-Strike Source/bin/user32.dll и перезапускаем игру консольной командой. Успех: мы выполнили произвольный код в контексте доверенного процесса.

И даже записали видео:



Заключение


Несмотря на то, что атаки на пользователей сервиса потенциально возможны, они все же маловероятны. К тому же риски для других пользователей сервиса будут минимальны. Дело в том, что для каждой новой игровой сессии в GeForce NOW запускается чистая виртуальная среда. После того как игрок окончил сеанс, виртуальная машина завершает работу и обнуляется. Поэтому даже в случае успешной эксплуатации уязвимости вредоносный код сможет проработать лишь до тех пор, пока работает скомпрометированная виртуальная машина. А чтобы атаковать других пользователей, злоумышленникам потребуется выбраться из виртуальной среды при помощи эксплойта типа Virtual machine escape. Такие эксплойты встречаются достаточно редко, и реализовать их сложно. Но в случае успеха под угрозой окажутся уже не единичные пользователи, а все, кто запустил игровую сессию после первоначальной компрометации сервиса через одну из виртуальных машин GeForce NOW.

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

После нашего обращения NVIDIA подтвердила наличие проблемы и выпустила соответствующее исправление для своего сервиса.

Хронология событий:

18.04.2020 Информация об уязвимости отправлена в NVIDIA
20.04.2020 NVIDIA PSIRT подтвердил получение репорта и смог воспроизвести проблему
13.05.2020 NVIDIA PSIRT проинформировал, что разработчики работают над проблемой
21.08.2020 NVIDIA PSIRT проинформировал, что выпуск исправления должен состояться до 30.08
02.09.2020 Мы запросили уточнение о дате выхода исправления
03.09.2020 NVIDIA выпустила исправление
04.09.2020 NVIDIA выпустила уведомление о найденной уязвимости
07.09.2020 Мы опубликовали наш отчет.
Подробнее..

Обзор роликов об играх с Game Trailer Challenge и их разбор с Alconost

27.05.2021 20:23:24 | Автор: admin

Этой весной мы вошли в жюри Game Trailer Challenge, в рамках которого гейм-девелоперы создавали ролики о своих играх. Мы посмотрели трейлеры и тизеры, сделанные разработчиками, внимательно оценили каждое видео и хотим показать вам 10 наиболее впечатливших нас роликов. Расскажем, что именно, на наш взгляд, сделало их классными, и что могло бы помочь им стать ещё лучше.

Идейный вдохновитель и спонсор челленджа польская компания Games Operators, издатель игр. А проводили челлендж основатели Game Industry Conference мероприятия для разработчиков игр, которое проводится в польской Познани с 2014 года. В этом году конференция должна состояться 21-24 октября.

Почти в топе

4 ролика, которым не хватило совсем чуть-чуть

Этим видео мы поставили оценки 7 и 8. Давайте посмотрим, благодаря чему они подошли вплотную к топу и что в них можно улучшить.

Подчеркнём: оценки здесь и далее баллы от Alconost. В жюри челленджа, помимо нас, было ещё 11 экспертов, и их оценки не обязательно совпадали с нашими.

Трейлер игры Carebotz: 7 баллов

Релиз этого космического шутера, разработанного Glasscannon Studio из Венгрии, состоялся в Steam 7 мая.

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

Только вот ключевой объект, за которым нужно следить в геймплее космический корабль игрока, очень маленький, он не бросается в глаза. Его нужно буквально искать в кадре взглядом. Это особенно трудно делать в сценах, где есть другие объекты похожие и такие же мелкие: визуальное различие не считывается. Чтобы зрителю было проще сфокусировать внимание на нашем корабле, его можно было бы выделить: например, увеличить или подсветить.

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

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

Тизер об игре Pale Night: 7 баллов

Этот минималистичный 2D-платформер от парижской инди-студии Pretty French Games, основанной бывшим инженером машинного обучения из Nvidia Симоном Андерсеном, должен выйти в Steam в сентябре 2021-го.

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

Но главная фишка игры раскрывается лишь на 17-й секунде видео. Все ли досмотрят до этого момента?

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

Даже несмотря на немного однотипные фрагменты геймплея, мы бы назвали тизер Pale Night довольно удачным примером ролика об игре. В нём отлично продуман сюжет, чувствуется логичная структура. Кажется, будто смотришь мультфильм с завязкой, кульминацией и развязкой.

Трейлер Covert: 8 баллов

Это видео от ребят из польской Baseball Team произвело на нас впечатление. Хотя сама игра находится на ранней стадии разработки, видно, что ролик делали с душой и уделили его созданию немало времени.

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

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

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

Тем не менее, под натиском грозных марширующих хомяков, мы оценили этот трейлер на 8.

Трейлер для игры Wayfarers: Call of Osiris: 8 баллов

Студия ActaLogic из Любляны планирует выпустить этот археологический экшен для PlayStation 4, Xbox One и ПК (Steam) в 3-4 квартале 2021-го.

Сценарий вот чем особенно выделяется этот ролик. Будто бы игра была использована как отправная точка для создания короткометражного анимационного фильма. Качество картинки отметим отдельно. Заметно, что разработчики тщательно настроили локации и продумали траекторию движений камеры, прежде чем приступить к съёмке.

И обратите внимание, как здорово в плане драматизма работает пауза на 0:14: она погружает в сюжет и заставляет смотреть дальше. К слову, первые 15 секунд видео вполне можно использовать и как отдельный ролик-тизер.

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

В целом, этот ролик, на наш взгляд, отличный пример трейлера об игре в жанре экшен. Крепкая 8, этот ролик вплотную подобрался к нашему топу. Кстати, вот и он.

Топ-5 игровых роликов по версии Alconost

Эти видео мы оценили на 9 и 10.

Трейлер игры words: 9 баллов

Смотрите этот ролик со звуком: музыка в нём очень цепляет. Анимация тоже на уровне: продуманные планы, просчитанные движения камеры. Комбинация быстрых движений и почти статичных кадров, как на 20-23-й секундах, подчёркивает ритм анимированных событий. При этом, в ролике нет хаотичного действия: весь моушен очень хорошо сбалансирован.

А ещё в ролике есть ярко выраженная кульминация. Это на 32-35-й секундах, когда предмет из окружения вдруг становится интерактивным, а напряжённый и интенсивный фрагмент саундтрека сменяется плавным перебором струн. Как будто мы полминуты бежали по тёмным комнатам вместе с невидимым героем ролика и наконец добрались до безопасного места, где можно выдохнуть и забыть о тревогах. Эта метаморфоза подчёркивается всеми возможными выразительными средствами, вплоть до смены характер освещения в сцене.

Что можно улучшить? На наш взгляд, 10-секундная экспозиция названия игры это перебор. Особенно с учётом того, что после демонстрации названия в ролике есть небольшой тизерный приём. Зрители могут просто не досмотреть до него, приняв долго висящее на экране название за закрывающую заставку. Время показа можно сократить, а можно занять другими слоганами с игрой слов, ведь это подходит игре по духу. А логотипы из конца открывающей сцены мы бы перенесли в конец закрывающей.

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

Трейлер игры EXISTENTIAL: 9 баллов

Игра, которой посвящён трейлер, создана инди-разработчиком из Турции в рамках 72-часового геймдев-челленджа Atom GameJam. Кстати, words (предыдущий пункт нашего рейтинга) тоже его работа, и в роликах об обеих играх можно заметить кое-что общее: гармоничное сочетание аудио- и видеоряда, синхронизация анимации с ритмом музыки, а главное только значимые фрагменты геймплея, которые действительно помогают понять контекст игровой ситуации. Этот роликдоказывает: ввести потенциального пользователя в курс дела, передать атмосферу игры и намекнуть, что именно нужно будет делать в ходе прохождения, можно быстрее, чем за 15 секунд.

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

Тизер для игры Sunfall: Children of Adiona: 9 баллов

Первые 30 секунд ролика в техническом плане близки к совершенству. Качество картинки, скорость и траектория камеры, постобработка роботизированного голоса, реплики персонажей и звуковые эффекты всё прекрасно. Разве что 5-секундную белую засветку в самом начале мы бы чуть подсократили.

А вот следующие 15 секунд видео демонстрация игрового мира уступают открывающей сцене в качестве. Движения камеры в сценах с локациями не такие плавные, да и некоторые локации, кажется, показываются не по одному разу. Бегущий персонаж оказывается в разных сценах на разном расстоянии от камеры, иногда на довольно большом, а следить глазами за мелкой движущейся фигуркой нелегко.

О самой игре, которую разрабатывает Tractor Set GO! геймдев-студия из Румынии, пока известно не очень много. Если предположить, что в игре будет больше контента и, когда игра будет ближе к релизу, ролик решат немного дополнить думаем, он отлично справится с задачей мотивировать потенциальных пользователей установить игру.

Трейлер игры Under the Counter: 9 баллов

Если бы в рамках челленджа была номинация Приз симпатий жюри, наши сердечки улетели бы к этому видео. Поздравляем варшавскую студию Korba Games с отличной работой! Релиз их визуальной новеллы Under the Counter в Steam запланирован на 30 июня 2021.

Вот что нам особенно понравилось в этом видео:

  1. Голосовая озвучка. Это не просто начитка текста, это актёрская игра как раз то, что нужно трейлеру-истории. Манера чтения, логические паузы, смысловые акценты всё на месте, и всё дозировано: никакого переигрывания.

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

  3. Приём с камерой, проезжающей вниз, за пределы ранее видимого в кадре. Он отлично перекликается с названием игры (буквально, Под барной стойкой) и создаёт атмосферу тайны, которая вот-вот приоткроется. Отличный пример осмысленного моушен-дизайна.

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

  5. Музыка и звуковые эффекты: всё уместно, уравновешенно и отлично сведено.

Из моментов, которые мы бы улучшили, отметим сцену на 0:33-0:47: анимация рук главного героя всё же могла бы быть немного живее. Но главное как нам не хватило акцента на 1:05, когда камера фирменным движением плывёт вниз и оказывается, что красотка за барной стойкой вовсе не та, за кого себя выдаёт! Мы почти почувствовали мурашки по коже в этот момент, и как уместно было бы небольшое зависание камеры на этом моменте, лаконичный анимированный эффект или особый звук! Не то чтобы это было обязательным: ролик и без того выглядит абсолютно целостным и захватывающим. Но такой приём мог бы стать той самой вишенкой на торте, которая дала бы зрителю ещё больше эмоций.

Трейлер для игры #DRIVE: 10 баллов

#DRIVE сингл-плеерная гонка от польской геймдев-студии Pixel Perfect Dude. Игра доступна не только в привычных Google Play и App Store, но ещё и в Nintendo eShop.

Мы поставили этому видео наивысший балл. Проработка сценария и визуального ряда, дикторская озвучка, музыка и звуковые эффекты всё отлично. Если вы планируете сделать ролик о своей игре самостоятельно возьмите это видео на заметку.

Бонус: отличный тизер к несуществующей игре

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

Тизер для игры Fast Like Hell: 10 баллов

Этот тизер выглядит так, будто он был сделан на одном дыхании. Оцените динамику действия, проработанность анимации, музыку, юмор всё сочетается отлично! Хотя мы бы немного больше внимания уделили дизайну слоганов (серые плашки и чёрный шрифт без изысков выглядят простовато, особенно в контексте сочного, глянцевого арта) и добавили бы звуковые эффекты (они просто просятся в ролик, особенно на 0:19-0:23), даже без этого тизер выглядит лёгким для восприятия, живым и очень естественным.

Кто выиграл челлендж

Помимо нас, в жюри было ещё 11 экспертов профессионалов в геймдеве. По общему мнению жюри, челлендж выиграли два видео: трейлер Under the Counter и тизер Fast Like Hell. Желаем ребятам из Korba Games успехов в развитии игры Under the Counter и надеемся, что положительный отклик жюри вдохновит студию Berdo Games на разработку Fast Like Hell!

Топ роликов по общему мнению жюри челленджа

А вот и рейтинг роликов согласно оценкам всех членов жюри.

Место

Игра

Ролик

1

Under the Counter

https://youtu.be/sT9cP0sbqeo

1

Fast Like Hell

https://youtu.be/hAG4CziFBzA

2

#DRIVE

https://youtu.be/yi4gOixZpck

3

Pale Night

https://youtu.be/wwbizUvY-5s

4

Wayfarers: Call of Osiris

https://youtu.be/IESRqhqGmPM

5

Sunfall: Children of Adiona

https://youtu.be/ExkVPoXxZRE

6

Carebotz

https://youtu.be/8jJNGujedXo

7

words

https://youtu.be/ACFS1eMockI

8

Existential

https://youtu.be/4xqYQKyMUwQ

Хотя положение роликов в общем рейтинге отличается от их позиций в нашем личном топе, в 9 случаях из 10 членам жюри понравились те же ролики, что и нам.

Хотите сделать трейлер или тизер о своей игре?

Создание роликов для игр наша работа. Будем рады сделать эффектное видео о вашем проекте! А если вы хотите попробовать сделать ролик самостоятельно надеемся, вам помогут наши материалы:

Об авторе

Статья написана вAlconost. Мы уже 8 летсоздаём видеоролики: рекламные и обучающие, для игр и приложений, продуктов и компаний. Ещё мы занимаемсялокализацией игр,приложений и сервисовна 80+ языков.

Подробнее..

Из песочницы Взгляд в прошлое. Технология 18 века

26.08.2020 00:05:55 | Автор: admin
image

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

У меня родилась идея провести ретроспективу и создать что-то совсем забытое, чтобы окунуться в этот древний, несовершенный мир, который, на мой взгляд, пропитан инженернойромантикой. Энергия пара. Вот что дало технический рывок. Именно этот вид энергии продвинул человечество на новый уровень, и именно эта технология стала основой индустриального технологического взрыва.

Идея


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

Принцип действия


Принцип действия парового двигателя довольно прост. В цилиндре находится поршень с закреплённым к нему штоком (скалкой). Подавая пар с разной стороны поршня, мы заставляем его совершать возвратно-поступательные движения.

image

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

image

Он устроен таким образом, что одновременно впускает пар в одну полость и выпускает из другой.

imageimage

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

image

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

Тут не совсем всё так просто. Паровые двигатели очень тихоходны. Это обусловлено тем, что приходится запускать в цилиндр рабочее тело (пар), а этот процесс относительно медленный. У ДВС, поршень толкает взорвавшаяся смесь бензина и воздуха. Скорость расширения, при взрыве не идёт ни в какое сравнение со скоростью впуска пара. То есть, ДВС это очень оборотистый тип двигателя. У спортивных мотоциклов скорость вращения вала доходит до 16 000 об/мин, как известно, мощность двигателя это произведение момента силы на скорость вращения. Так и была проиграна война бензина и пара. Паровой двигатель хорош в местах где скорость не так важна. На пример как водяной стационарный насос, на кораблях и конечно в поездах. Но есть у парового двигателя одно очень удобное преимущество. Так как не нужно создавать особые условия для взрыва рабочей смеси, момент силы таких двигателей начинается уже с нулевой скорости. По этому, оказывается ненужным сцепление и коробка передач. И конечно, я не мог этим не воспользоваться.

Постройка


К сожалению, найти каких-то запчастей столь забытых технологий крайне сложно. Пришлось делать всё с нуля. Пришлось даже освоить литьё алюминия. Все запчасти были полностью выдуманы и изготовлены на месте, мной. За материалами ходил в пункт металлоприема, так что всё получилось почти бесплатным. Я посчитал, что самым понятным и интересным форматом изготовления, настройки и испытания парового двигателя, будет снять небольшой видео материал. Так проще объяснять и сразу показать на реально существующих деталях. Прошу, к вашему вниманию первые 3 серии.Напишите, что вы об этом всём думаете. Мне интересно ваше мнение, буду рад вашим советам.

Создание рамы мотоцикла:


Изготовление парового двигателя 1 серия:


Изготовление парового двигателя 2 серия:


Жду ваших комментариев.
Подробнее..

Энергия старого мира

04.09.2020 20:08:16 | Автор: admin
image

Введение


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

image

Теперь нужно решить энергетический вопрос. И тут начинаются основные отличия от двигателей внутреннего сгорания (ДВС). В таких двигателях бензин, смешиваясь с воздухом, попадает в цилиндр двигателя и при воспламенении этой воздушно-топливной смеси выделяется энергия. Расширившиеся продукты горения давят на поршень, производя работу. Но вот у паровых машин, энергия рождается не в двигателе. Она рождается в котле. Котёл производит пар, который в свою очередь и будет давить на поршень нашего двигателя. Эту древнюю энергию нам и требуется обуздать!

Устройство


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

Существует два основных типа котлов: классический и прямоточный. Первый тип чаще всего использовался для работы паровых машин. Его можно описать как железный резервуар, в который врезана топка. Топливо горит в топке, обогревая воду в резервуаре. Вода в нём начинает кипеть и создаётся пар под давлением. Такой тип использовался на паровозах и всех первых паровых машинах:
image
У классических котлов есть как преимущества, так и недостатки. Преимущества заключаются в том, что для создания давления пара не требуется каких либо насосов, так как накопленная энергия воды может ещё долго снабжать двигатель паром даже при отсутствии огня. Такие котлы не очень требовательны к качеству воды. Паровозы заправляли самой обычной водой из речек, родников, колодцев и прочее.
Прямоточный котёл можно представить как длинную, компактно свёрнутую трубку, обтекаемую пламенем, в которую насосом закачивают воду. Такой тип котла обладает целым рядом преимуществ:
  1. Позволяет создавать пар большего давления при меньшей массе и небольшому объёму котла.
  2. Из-за того, что в трубке не так много носителя, такой котёл считается более безопасным (не запасается большое количество энергии).
  3. Быстрый выход на режим, так как не нужно прогревать большое количество воды.

Для лёгкого понимания работу такого котла можно представить в упрощённой форме:
image

Создание прямоточного котла


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

Итог


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

image

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

image

Новое испытание показало, что золотник работает просто прекрасно и без замечаний. Вывешенное колесо крутилось, вода закачивалась, прямоточный котёл работал. Пришло время прокатиться. Но тут возникла новая проблема. Мне не удавалось на нём проехать больше нескольких метров. И опять я был сбит с толку. Всё же работало! На холостом ходу всё отлажено! Что ещё не так?
После долгого анализа других подобных паровых аппаратов,

imageimageimage

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



Классический котёл


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

Изготовление


На металлоприёмке я нашёл какой-то ресивер или болон из-под пропана с толщиной стенки 3-4 мм, так что габариты котла уже были заданы жёстко.
Если сильно заморачиваться с массивной и эффективной топкой, то останется мало места для самой воды (носителя). Если топка будет слишком маленькой, то у нас не будет достаточной энергии для более менее удовлетворительной крейсерской скорости, ну и сам процесс нагрева котла займёт слишком много времени.
И вот, что я придумал. Топка будет подвержена сдавливанию огромным давлением, поэтому решено было сделать её простой, сквозной и круглого сечения. Под это пошла обычная труба 100 мм. Для увеличения КПД нашей топки (теплообменника), были врезаны 12 поперечных сквозных трубок.
image
Я посчитал это очень выгодным, так как они обтекались бы пламенем и выхлопными газами под прямым углом,
image
а вода внутри них циркулировала бы под естественным эффектом конвекции. Это позволит сохранить максимальный объём воды в котле, а для нас это запас хода. И, как бонус, такую топку было легко врезать в резервуар. Следовало всего лишь сделать два отверстия по обоим краям.
image
Для контроля давления установил небольшой манометр. Температуру носителя контролировать не обязательно, так как она напрямую связана с давлением и явно не выходит за критическую отметку (400*С). Давление в котле решил сделать как у реальных паровозов 16 bar. Предохранительный клапан настроил на 18 bar. Теперь осталось его опрессовать. Это своего рода проверка на прочность. Котёл наполняется доверху водой и накачивается повышенное давление. Сначала, я это делал оставшимся от предыдущей котловой системы, насосом из доводчика, но сжимать такой насос при давлении более 20 bar, оказалось не простой задачкой (очень хорошо, что мы теперь можем отказаться от такого узла, ведь он забирал уйму мощности на себя). Оказалось, что опрессовывать удобнее всего углекислотным огнетушителем. Им я без труда создал давление в котле в 25 bar (это был максимум моего манометра) и, выждав несколько минут, приступил к настройке предохранительного клапана.
image

Итог


Котёл получился на славу. Даже давление в 25 bar оказалось ему нипочём. Он даже не начал хрустеть. Предохранительный клапан (использовал от компрессоров) срабатывал чётко, хоть и ронял давление с 18 до 9. Этот для нас очень не выгодно, но он будет срабатывать только в тех случаях, когда сам за давлением не уследишь. Так что, до его срабатывания лучше не доводить. Это будет бессмысленное выбрасывание ресурсов.

Пламя


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

Изготовление


На металлоприёмке нашёл отличные, маленьких размеров, нержавеющие бачки. Судя по их форме и синей окраске, это кислородные баки от какого-то пассажирского самолёта. Я собрал несколько таких бачков в батарею и объединил магистралями подачи газа и заправки. Объём каждого бачка примерно 1.7 л, а значит, можно будет везти с собой запас топлива более 5л. жидкого газа. Согласитесь, не плохой запас энергии.

image

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

imageimage
Эксперимент (рис А)Пламя с не прогретой горелки (рис В)Правильный режим, прогретая горелка

Поэтому подавать газ, в нашу горелку, следует плавно, чтобы она успела прогреться.
Испытания котла прошли как по маслу. Заправил примерно 35 л воды, горелку вывел на полную мощность и ждал. Через 14 минут вода закипела, и давление потихоньку начало подниматься. Примерно через такое же время в котле было 16 bar.
Для управления подачей пара, я использовал простой водопроводный шаровой кран, который отлично справлялся и с температурой, и с давлением. В них используется тот же самый фторопласт, так что проблем, думаю, не будет.
Для интереса, я решил открыть кран на полную и посмотреть на нашу энергию. Струя пара долетала до соседних гаражей и создавала шум взлетающей ракеты. При этом я ощутил силу реактивной тяги, пришлось даже придерживать котёл, чтобы он не начал летать по всей улице. Я был очень доволен!

image

В котле подобного типа запасается огромное количество энергии. Спуская пар в течение 5 секунд через отверстие дюйма, давление в котле упало всего лишь наполовину. Дело в том, что при уменьшении давления, смещается и точка кипения воды. То есть вода начинает кипеть и без подогрева, всего лишь от уменьшения давления. Этот эффект будет работать до тех пор, пока температура воды не упадёт до 100 *С. Это для нас приятная новость. Значит, можно будет долго ездить и с выключенной горелкой.
Но есть и один не совсем для меня понятный эффект. При активном выпускании пара при давлении менее 5 bar, начинает вылетать вода. Я предположил, что она кипит столь интенсивно, что в своём неистовом бурлении долетает до сухопарника и подхваченная потоком пара улетает наружу. Для эксперимента я слил часть воды, оставив уровень 20%. Эффект конечно уменьшился, но всё равно остался. Неужели вода подпрыгивает в котле на 30-40см? Если честно, с этим я пока так и не разобрался. Такая вот небольшая загадка.
Ну да ладно! Функционал готов, пора собрать наш аппарат!

Стиль


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

image

Большинство различных самоделок имеют стиль Безумного макса или Постапокалиптического мира. Да, так проще всего. Особо то и делать ничего не нужно. Ржавые железки, приваренные гаечные ключи, немного висящих тряпок и стиль готов. Но этой простоты, или так сказать ленивого стиля в нашем мире очень много. Мне захотелось сделать что-то маленькое, милое и красивое. Сделать конфетку, так сказать. И раз уж у нас древняя паровая технология, сам собой напрашивается Стимпанк.

imageimage

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



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

image

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

Видео отчёт. Испытания парового мотоцикла



Заключение


Когда задумывал строить этот паровой мотоцикл, я рассуждал так: вот сделаю его, как нибудь это всё проедет и, удовлетворив все свои инженерные интересы, поставлю его дома напротив дивана в качестве эстетического элемента, навсегда. Но нет! Теперь это наоборот не даёт мне покоя. Я хочу его изучать, модернизировать, переделывать и побивать его же рекорды, хочу определить его максимум, понять всё, на что он способен! Конечно, в рамках этой концепции.
Первое с чего начну, это переделаю систему переключения пара на классическую. Мне стало интересно, какова будет разница. И ещё, при последующих испытаниях нужно будет поиграть с настройками. Добиться максимальной скорости, подобрав наиболее правильное опережение впуска пара. Ещё, хочу поэкспериментировать с разными видами топлива.
Видимо грядёт большая модернизация. Так что, если наш паровоз собирался уйти на пенсию и отсидеться где-нибудь в музее, тут я его сильно разочарую! У него впереди ещё длинное, тяжелое, но интереснейшее будущее!
Подробнее..

Valve выпустила Proton 6.3 для запуска Windows-игр под Linux

03.04.2021 14:10:36 | Автор: admin

Компания Valve продолжает активно работать над совершенствованием своего проекта Proton, который позволяет запускать современные Windows-игры в среде ОC Linux. Запуск проекта состоялся в 2018 году, то есть не так и давно, но с тех пор инструмент неплохо эволюционировал.

Например, в декабре прошлого года компания выпустила 5.13-4 с поддержкой Cyberpunk 2077 это произошло на следующий день после выхода самой игры. Сейчас вышла новая версия, как водится, еще более функциональная. Что там нового? Давайте посмотрим.

Главные обновления и улучшения


Пакет включает реализацию DirectX 9/10/11 (на базе пакета DXVK) и DirectX 12 (на базе vkd3d-proton), работающие через трансляцию вызовов DirectX в API Vulkan. Кроме того, проект поддерживает многие игровые контроллеры, включая устройства от игровых консолей. А еще можно запускать игры в полноэкранном режиме независимо от поддерживаемых самими играми разрешений. Есть и механизмы улучшения производительности, которые называются esync (Eventfd Synchronization) и futex/fsync.

Это то, что уже было. А вот новые возможности:

  • Сейчас пакет синхронизирован с выпуском Wine 6.3 (прошлая ветка основывалась на wine 5.13). Так, в upstream добавлена целая серия накопившихся ранее патчей, которые входят в основной состав Wine. Плюс ко всему, обновлена до версии 1.8.1 прослойка tream, которая транслирует вызовы в API Vulkan. VKD3D-Proton обновили до версии 2.2. Это ответвление создали для улучшения поддержки Direct3D 12 в Proton 6.3. Разработчики не обошли вниманием и аудиосистему компоненты FAudio с реализацией звуковых библиотек DirectX (API XAudio2, X3DAudio, XAPO и XACT3) обновлены до выпуска 21.03.05.
  • Оптимизирована поддержка раскладок клавиатуры для дополнительных языков.
  • Поддержка видео в играх получила обновление. Если формат не поддерживается, то показывается заглушка настречная таблица.
  • Оптимизирована поддержка контроллеров от PlayStation 5.
  • Добавлена возможность настройки приоритетов активных потоков. Для их настройки используются RTKit или Unix-утилиты для управления приоритетами (nice, renice).
  • Оптимизирована поддержка виртуальной реальности.
  • Сборочная система тоже оптимизирована это сделано для сокращения времени сборки.

  • Конечно же, добавлена поддержка новых игр:


Divinity: Original Sin 2
Shenmue I & II
Mass Effect 3 N7 Digital Deluxe Edition (2012)
Tom Clancy's Rainbow Six Lockdow
XCOM: Chimera Squad
Bioshock 2 Remastered
Company of Heroes 2
logiCally
Rise of the Triad
Home Behind 2
Shadow Empire
Arena Wars 2
King Arthur: Knight's Tale
Rise of Venice
ARK Park
Gravity Sketch
Battle Arena VR

  • Оптимизирован процесс горячего подключения контроллеров в двух играх Slay the Spire и Hades.
  • Теперь нет проблем с подключением к сервису Uplay.
  • Устранены проблемы в Microsoft Flight Simulator с использованием шлемов виртуальной реальности
  • И, наконец, теперь нормально отображаются кат-сцены в игре Bioshock 2 Remastered.

Выпуск находится вот по этой ссылке.
Подробнее..

Из песочницы Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 1, 2)

19.10.2020 14:23:26 | Автор: admin
Данная история будет состоять из трёх частей, т.к. я выпустил три игры:

  • Beasts Battle
  • Necromancer Returns
  • Magicians Legacy

Часть 1


Для тех кто предпочитает смотреть, а не читать, я подготовил видео этой статьи.


В каждом выпуске будут цифры по каждой игре, какой бюджет и доход принесли игры

Сразу скажу, я фанат серии Heroes of Might and Magic и King's Bounty. Играл почти во все части и аддоны, за исключением седьмой части, т.к. время идет, жизнь меняется и на игры времени не осталось.

С данной серией я познакомился в начале 2000-х с игры Герои Меча и Магии 3 еще в школе. Потом начались студенческие годы, прогулы пар, чтобы поиграть с друзьями в героев за одним компом, где ход другого игрока длился вечность, и мы никогда не доигрывали партию.

С 2005 года я начал разрабатывать флеш игры, годы шли. И вот наступил 2013 год, я решил переиграть в HoMM 2. Меня так увлекло, хоть я раньше и проходил игру, в этот раз возникла мысль, а почему бы не сделать свою игру с пошаговыми битвами?!

В данной статье пойдет речь о первой игре Beasts Battle. Я расскажу по порядку, как она появилась на разных платформах: Web, GooglePlay, AppStore, Steam:

image

Разработка flash версии


Я приступил к разработке 14.04.2013, накидал гексагональное поле как в Героях 2 и добавил 2 типа юнитов воины и лучники. Отряды выглядели как шестиугольники с количеством войск и типом. Они перемещались по полю и сражались.

Над игрой работал исключительно в свободное от работы время в течение года. При этом игру бросал 2 раза на длительный срок. Примерно по интенсивности работы было так:

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

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

image

Арт


Когда сделал механику битв, то решил показать художнику и своему другу NeexGames, с которым много работал над другими играми, у него есть свои хиты (Heaven vs Hell).

image

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

image

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

Очень рад, что магазин в игре он полностью перерисовал, не так как я это планировал. Мне пришлось заново переписывать механику всего магазина, но это только к лучшему.

image

Тестирование


Отправил игру на растерзание в комьюнити флеш игр (тогда оно было активным и флеш был жив!). Было уйма замечаний и советов. И я около месяца улучшал игру. И вот что было добавлено в игру, чего вообще никак не планировал, т.к. не хотел, чтобы разработка еще больше затянулась:

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

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

image

Баланс


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

Расходы


Самое ценное из потраченных ресурсов было это наше время. С художником мы договорились за фикс прайс после продажи игры. Музыку полностью написал бесплатно начинающий композитор, т.к ему нужно было для портфолио. И написал неплохо, в общем нам повезло. Также я заказал картинку для концовки игры за 500 рублей и локализацию на английский за 200 рублей. Это были мои первые траты на фрилансеров. Ой как не просто было расставаться с деньгами) На тот момент я зарабатывал на основной работе 12 000 рублей в месяц.

Продажа flash версии


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

Я выкладываю игру на эту площадку для продажи. И вот волнительный момент. Будут ли предложения?) К счастью в первый же день была ставка в $200 и на следующий день в $500 от другого спонсора. И на этом всё 2 месяца тишины. Я делал рассылки спонсорам, писал админам, ругался, как так, хорошая игра, с хорошей оценкой, просмотров вообще нет! Я приложил очень много усилий, чтобы игру смотрели. Никто не отвечал, и никто не хотел покупать, кроме спонсора, который поставил $500. Всё что я мог сделал. Спонсором была студия Armor Games. Еще на этой площадке была такая возможность, как сделать последний звонок (Last Call), оповестить всех заинтересованных, что я готов продать игру. Я написал, может возьмешь за $800, если мне ласткол не поможет и разойдемся? Он сказал, ок без проблем. Я был очень рад, что он согласился, т.к. мог с художником расплатится. В итоге ласткол и 3й спонсор ставит $1000 за эксклюзив. На что Armor Games сразу перебивает в $1200, жду пару дней и принимаю предложение.

image

Релиз в Web


На сайте спонсора игра получила рейтинг в 50 баллов при запуске, я очень расстроился, если честно) Но постепенно дошла до 64 (уже нормально), 694к просмотров на сайте спонсора за месяц и 600 фаворитов (может немного, но мне очень приятно). В общем я доволен как пошла игра и спонсор тоже) Она оправдала свои надежды. Ведь игра вышла довольно простой, несмотря на все наши старания и труды. И признаюсь, что проект был мне не по зубам, еле как с ним справился.

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

Итог Flash версии игры


Игру от начала до релиза разработали вдвоем за год. Игра принесла $1710.

Разработка мобильной версии


Лето 2014 года, я получил множество комментариев с веб версии от игроков, что улучшить. Я очень горел проектом, был воодушевлен и решил портировать игру на мобилки! Для этого я решил использовать движок Corona SDK (сейчас это Solar SDK). Я хорошо владел движком и потратил 4 месяца беспрерывной работы, чтобы портировать игру на другой движок и все переписать под новый язык программирования. Движок, как и Unity, Unreal и другие мультиплатформенный, поэтому я рассчитывал выйти в GooglePlay и AppStore.

image

Что нового


Полностью изменил баланс покупки войск. Во флеш-версии войска в магазине были конечны, так что в какой-то момент можно было потерять тот или иной тип юнита без возможности восстановления. В мобильной версии я добавил новый параметр, лидерство. Число юнитов в магазине стало неограниченным, но возможность их покупки зависела от количества очков лидерства (а также от количества золота, конечно). Также я добавил третью кампанию за Босса, мне показалась это интересной идеей и чисто для фана, но эта кампания открывается после прохождения любой другой основной. Еще добавил режим ХотСит, когда можно выбрать любую расу и сразиться с другом на одном устройстве.

Также добавил в каждую кампанию хардкорную миссию, она даже отмечена как череп). И весь арт обновил до 720p, а было 640p.

Т.к. это мобильная игра, то после релиза последовали обновления. Были добавлены:

  • новая арена
  • по новому юниту на каждую расу
  • новые достижения
  • артефакты для героев

image

Релиз мобильной версии


Где-то 2015 год. Игру я выпустил полностью бесплатной, без рекламы и донатов. Я очень хотел выпустить чистую игру, когда еще такое будет) Т.к. все хотят заработать. Да и я тоже) Но почему бесплатно и без всего остального? У меня был хитрый план я знал, что буду делать следующую часть. Я рассчитывал, что раз игра бесплатная и без всего такого, то её будут скачивать, играть и наслаждаться. У меня будет трафик, фанаты, комьюнити, которые перейдут на другую игру в будущем.

НО! Я был наивен, т.к. без маркетинга о игре никто не узнал и всем было пофиг. Иногда ее находят до сих пор и оставляют положительные отзывы. Пишут, чтобы игру развивал, добавлял контента и так далее. Это приятно и неожиданно, т.к. для меня игра довольно простая по сравнению с тем, что вышло дальше.

image

Разработка Steam версии


Наступает 2016 год, и я решаюсь выпустить игру в Steam, тогда еще был Greenlight и нужно было попотеть, чтобы пройти, искать варианты, кто же лайкнет игру и так далее. Когда игру одобрили, я создал страницу в Steam. После чего я стал прикручивать API, чтобы работали лидерборды, достижения и так далее. В игре были карточки!!! Сейчас чтобы они были у новой игры, нужно чтобы игра взлетела по продажам.

Что нового

  • Мультиплеер
  • Графика под 1080p
  • Глобальная карта перерисована

Да, я добавил кроссплатформенный мультиплеер, мне помог в этом товарищ. Можно играть со стима с тем, кто на телефоне.

image

Релиз Steam версии


Была у меня мысль игру выпустить также бесплатной, т.к. на мобилках она бесплатна, но меня отговорили. Сказали, что карточки бесплатным играм не дают. И тогда я поставил цену у игры в $1. После того как добавил в игру мультиплеер (да, это было обновление), я повысил цену игры до $2 это было примерно через 4-6 месяцев после релиза.

Игра вышла 15 июня 2016 года. За 4 года с того момента игра продалась в 3341 копий ($2642). Из них за первый год было продано 2474 копий ($1597), а за первый месяц

826 копий ($698). Это общий доход в Steam, я не вычитаю комиссию и возвраты, налоги. То есть данные цифры можно делить на 2. Вот такая воронка.

Общий итог


В этот раз я в плюсе, если не учитывать потраченное время.
Разработка всех версий игры 14.04.2013 15.06.2016 (3 года)
Выпущена в Web, GooglePlay, Appstore, Steam
Доход $3031за всё время жизни игры в релизе (2014-2020)

Эта игра помогла пощупать рынок и узнать, как всё устроено от начала до конца. Она дала огромный опыт. После чего началась разработка игры Necromancer Returns

Часть 2


Для тех кто предпочитает смотреть, а не читать, я подготовил видео этой статьи.


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

image

2015 год. Работая в офисе и параллельно на себя, я разрабатываю игры вместе с художником. И так вышло, что, продав игру, я заработал 2-х годовую зарплату в офисе. Мы с художником решаем переехать в Калининград и начать разрабатывать на заказ Flash и HTML5 игры. Всё шло отлично, мы каждые 2-3 месяца разрабатывали по игре и зарабатывали хорошие деньги. Я откладывал на квартиру, хотел купить ее за наличку без ипотеки. Но потом Flash умер, а цены на HTML5 игры упали в 5-10 раз. Лавочка постоянного заработка накрылась, и передо мной встал выбор: идти искать работу или рискнуть и, живя на отложенные на квартиру деньги, начать делать свою игру, которая окупит мои вложения, и стать миллионером.

Я решил рискнуть и пойти по второму пути

image

Разработка Necromancer Returns


На тот момент уже вышла игра Braveland, которая мне понравилась. Я понял, что смогу потянуть игру такого уровня и даже добавить свои фичи, которые улучшат идею.

Я прикинул сроки и бюджет каким образом, я до сих пор не знаю, никакого анализа не было, просто пальцем в небо) Я решил, что игру сделаю за 3 месяца и мне понадобится 120 000 р. на фриланс и 50 000 р. на маркетинг. Хаха, какой я был наивный! Мои прикидки были основаны только на собственном опыте и с примерной поправкой на масштаб новой игры: при работе над прошлой игрой, Beasts Battle, я потратил на фриланс примерно 10 000р.

image

Что нового</2>
Я решил сделать карту, по которой перемещается главный герой, как в Braveland, и это было основное нововведение по сравнению с Beasts Battle.

image

Также в игре появились подземелья. Каждого юнита можно было улучшить, как в Героях Меча и Магии. Появилось много артефактов, диалогов, заклинаний и так далее, всё, что принято для такой игры. А еще на тот момент я играл в первого Ведьмака, и там было множество разных побочных заданий. Это меня вдохновило, так что посреди разработки игры я решил ввести квесты. Один даже сделал нелинейный, с выбором.

image

В общем, игра значительно выросла в сравнении с Beasts Battle. Подглядывал я на три игры: HoMM 3, HoMM 5 и Braveland.

Команда
В Beasts Battle мы делали игру вдвоем. Но перед началом разработки новой игры наши пути разошлись. У меня в планах было нанять двоих художников: первый бы отвечал за юнитов и анимацию, а другой бы рисовал всё остальное (арены, локации, интерфейс, комикс, иконки и т.д.). Поначалу так и было, я нанял художников и всё шло нормально. Особенно хорошо работалось с тем, кто рисовал юнитов, мы с ним ранее делали вместе несколько игр на Flash. Но потом я познал всю боль работы с фрилансерами и вообще узнал, что художники могут не уметь рисовать всё. Фрилансеры могут пропасть, могут взять другие заказы, забить на тебя, несмотря на договоренности по деньгам и срокам. Из-за таких вещей всё затягивается.

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

Основная команда: 6 художников, 2 сценариста, 1 композитор, 1 смм и я. На мне лежало всё остальное: программирование, организация процессов, маркетинг, финансирование, конференции и прочее.

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

image

Сроки/бюджет


А что там насчет того, чтобы сделать игру как запланировал? Скажу так: люди нифига не умеют ничего планировать, особенно сроки и бюджеты, если это долгосрочный процесс, а не пойти покушать или сходить поспать. Вышло так, что я жил на отложенные мной деньги и никакого заработка у меня не было, меня никто не содержал, жил я в чужом городе, снимая квартиру. Помимо того, что я сам кушал, я еще оплачивал всю работу фрилансерам, не было таких, кто работал за процент. Работал я каждый день без выходных на протяжении 8 месяцев. И вот у меня остается $1000, я понимаю, что всё игра сделана примерно на 80% и мне не хватает денег её доделать. Я предпринимаю рискованный шаг, от которого уходил всё это время. Искать издателя (спонсора), который поможет профинансировать проект и выпустить его. Я очень не хотел этого, т.к. столько вложил денег и сил, и тут какой-то спонсор просто выложит игру под своим брендом и будет забирать 50% от дохода. Такие у меня были представления об издателях игр) Но я решаюсь и покупаю билет на ноябрьский DevGamm 2016 Minsk, плачу за самолет и бронирую отель.

image

DevGamm 2016 Minsk


Многие разработчики не понимают, зачем нужны эти конференции. Это трата денег и бла бла бла, в общем, все мы нищеброды недалекие (простите). Хочу сказать, что это очень ценное мероприятие и стоит своих денег. Жаль, что сейчас всё ушло в онлайн из-за пандемии. Я участвую в ShowCase и показываю свою игру. Мне дают обратную связь, я завожу полезные знакомства, очень полезные! Столько инсайтов от опытных разработчиков, такие мысли классные тебе говорят, делятся опытом, а ты впитываешь все эти знания и понимаешь какой еще глупенький и ограниченный, живешь в своем вакууме.

Там я познакомился с локализатором игр, и мне подарили $500 на то, чтобы я в их компании заказал локализацию. От их команды со мной работал очень крутой парень, мы до сих пор общаемся, и по итогу он стал вторым сценаристом игры Necromancer Returns и был задействован в третьей игре.

У меня были встречи с 10-20 спонсорами, из них типа заинтересовались 1-2. Спросили про рынок, целевую аудиторию, что я хочу. И тут я понимаю, что наши цели по зарабатыванию денег отличаются значительно. Если я хочу отбить бюджет или хотя бы сделать x2, купить квартиру в Калининграде, то для спонсора это вообще копейки и не имеет смысла. В итоге, по факту никому не интересна моя игра в плане бизнеса. И я возвращаюсь почти ни с чем.

image

Денег нет, но вы


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

  • конец года, все готовятся к Новому Году и поиск новых сотрудников неактуален (не сезон для поиска)
  • разрабатывая игры на flash (as3) и html5 (js), я отстал от рынка и моя актуальность как специалиста низкая. В тренде Unity (С#) и UE4 (С++)

Стал ждать, когда НГ каникулы закончатся. Начал ходить по собеседованиям, но всё было что-то не то: то я не подхожу, то мне неинтересно. Чуть не устроился на удаленку за зарплату в 2 раза выше, чем мне было необходимо. А также чуть не переехал в Минск, где зарплата была еще выше. Минск мне понравился, и я был готов, но не сложилось.

В итоге 31 января я вышел на работу как разработчик игр под блокчейн, но это уже другая история

image

Завершение разработки


Теперь у меня есть работа с зарплатой меньше, чем я хотел, но я хоть могу оплатить аренду и покушать. Также у меня были заказы на портирование чужих игр с flash на html5. А еще мне надо было заниматься своей игрой. В итоге на протяжении 3х месяцев я уделял время 3м разным проектам: основной работе, заказам и своей игре. Потом я перегорел и отказался от заказов. Каждый день я приходил после работы и до ночи занимался своим проектом. И таким образом моя разработка игры затянулась еще на год.

image

Маркетинг


Разработка игры закончилась, она активно тестировалась, и я понял, что нужно ее как-то продвигать. Я нанял сммщика, который делал посты в ВК, может и где-то ещё. Это был слив денег, я никакой пользы от этого не ощутил. Сам я рассылал блогерам письма об игре, писал в разные паблики, заказывал посты, сочинял статьи и так далее. Всё в российском сегменте. Заказал на аутсорсе то же самое, но чтобы сделали на запад слив денег. Это просто катастрофа, было очень жалко. Всё, что было в моих силах, я сделал. К сожалению, сам лично на запад я не мог выйти, у меня не хватало ресурсов/времени/знаний, чтобы этим заниматься так же агрессивно.

image

Релиз


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

И вот, слежу я за метриками, продажами. Моя игра попадает на какие-то страницы как горячая новинка, это хорошо, но на главную страницу стима она не фичерится. И тут я вижу, что в этот же день выходит игра в том же жанре и полностью бесплатно!!! Free-to-play, сочная, 3D и так далее. Вот это был попадос!!! Эта игра выходит в топ, а моя уже никому не нужна, т.к. по графике ей уступает.

image

Те, кто добавил игру в wishlist, в день релиза ее не купили, а я рассчитывал хотя бы на 10% от их числа. В общем, игра принесла в разы меньше, чем я ожидал, даже близко не отбила свой бюджет. И я, разочарованный, ухожу на год в депрессию и не занимаюсь разработкой личных игр

image

Итог


На момент релиза я вложил в игру $15,500. И в течении года ещё её обновлял на $1,500.

За день игра продалась в 144 копий ($879)
За месяц игра продалась в 679 копий ($4,538)
За год игра продалась в 1,908 копий ($13,237)

Из них 30% Steam забирает себе, потом еще возвраты, налоги и можно делить смело сумму пополам.

$13,237/2 $17,000 = -$10,380

Данная игра дала мне очередной огромный опыт. Дала понять, что я могу собирать команду, руководить процессом и доводить дела до конца. А вот зарабатывать деньги мне еще предстоит научиться.

В третьей части я расскажу о том, как я пытаюсь применить полученный опыт в разработке моего нового проекта Magicians Legacy.

А если вам интересно чуть более пристально следить за жизнью инди-разработчика, то приглашаю вас в группу ВК. Заодно там можно почитать свежие новости о разработке нашей игры.

Присоединяйтесь, пообщаемся!

Magicians Legacy в Steam
Подробнее..

Как я стал разработчиком игр для мобильных телефонов

23.11.2020 14:22:47 | Автор: admin
Небольшая история от том как я стал разработчиком игр. Постараюсь осветить проблемы, с которыми я столкнулся на своем пути, и поделиться некоторыми цифрами. Программистом работаю давно, с 2001 года, компьютерами занимаюсь с детства, но играми начал заниматься лишь в начале 2014 года. И катализатором этого стала статья на Хабре. Где-то в начале 2014го, читая статейки на Хабре, я нашел статью про то, как один молодой человек сделал простенькую игру для ВК. Простая игра про сражение на самолетиках в 2D. Про саму игру в статье было мало, но меня заинтересовало то, что ему предложили продать игру за 700 баксов. Он отказался и потом пожалел, так как игра принесла ему только убытки. И эта история успеха как-то меня вдохновила.

Я подумал, неужели я не смогу сделать подобную игру? Да я таких в месяц смогу написать десяток. Изучая вопрос разработки для веба, я решил выбрать флэш, кажется, в той статье была игра как раз на нем, хотя его закат был уже предрешен. Итак, я начал осваивать флэш, смотреть ролики на ютубе, пытаться повторять небольшие примеры. Больших раздумий о выборе того, что я хочу сделать не было, я хочу сделать свой Command&Conquers со своим сервером и юнитами :) Рисовать я не умею, поэтому я взял картинки от оригинальной игры, которые можно найти на просторах интернета. Я думал, что если что-то выйдет, я закажу арт для игры у того, кто это делать умеет. Когда что-то получалось, то я выкладывал видосы и скрины на своей странице в ВК. Уже не помню, сколько времени я этим занимался, но, как я планировал ранее, сделать море игр в ближайшие недели у меня не получилось. Основная работа так же съедала много времени, и я двигался очень медленно. Немного позже мне предложил помощь в проекте мой давний знакомый Дима, также большой фанат стратегических игр. Он придал проекту ускорение. Более того, как оказалось, он был знаком с художником, который уже участвовал в создании подобных проектов для PC. Поэтому у него уже были наработки, модели зданий и техники.

Мы пообщались и решили сделать игру вместе. У нас был один программист, это я, художник Сашка и сценарист Дима. Мы договорились, как будем делить шкуру неубитого медведя, придумали название проекта и взялись за работу. Через некоторое время мы отказались от ВК и начали делать игру под мобилки. Так как часть проекта уже разрабатывалась мной на флэше, то и было решено не уходить с него, используя Adobe AIR, можно было писать практически под любую платформу. ( Небольшое отступление, пишу про флэш, как будто оправдываюсь, если честно, не особо понимаю всех нападок на эту технологию, все как будто вместе обиделись на флэш и дружно ушли с него. Мне вообще нравится флэш, поэтому больше никаких оправданий.

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

Игра не отличалась какими то фишками, все игровые механики были заимствованы из различных стратегических игр конца 90х начала 2000х.

Так как игра сделана в изометрическом стиле, то все используемые объекты состояли из заранее отрендеренных картинок. Сейчас их более 8000. Сашка часто их перерисовывал и давал мне наборы, зачастую меняя имена картинок, и это приводило к тому, что и код нужно было править, и в определенный момент пришлось написать уже отдельную программу, которая бы систематизировала картинки и писала код, чтобы этими наборами можно было легко пользоваться. Это экономило много времени. Тумана войны изначально не было, потом я сделал некий костыль из черной картинки, которую дырявил овалами, а затем я подсмотрел алгоритм рисования тумана в движке stratagus. Сам ландшафт-карта в игре была нарисована одной картинкой. На карте заранее указывались места, где нельзя было перемещаться. Для этого я написал некий редактор, где можно было обозначить эти места некими прямоугольниками. А уже в игре загружал их в массив и постоянно перебирал, наткнулся ли юнит на данный прямоугольник или нет. Что удивительно, это было очень быстро, да и карты составлялись с наименьшим количеством данных мест. Алгоритмов поиска пути я не знал, и по какой то удивительной причине решил изобрести свой, несмотря на то, что в интернете можно было нагуглить уже готовые на AS3. Когда юнит натыкался на такой невидимый прямоугольник, обозначающий некое препятствие, например скалу, он начинал поворачиваться по часовой стрелке (на самом деле я уже не помню, в какую сторону он начинал поворачиваться, да это уже и не важно), проверял, может ли он туда идти и продолжал идти, либо снова поворачивал.

Ну и снова ложился на курс. На самом деле, он мог поворачивать в разные стороны в зависимости от ситуации. Это выглядело ужасно, более того, для того, чтобы игроки не теряли деньги из-за тупости сборщиков и разработчика, мы сделали сборку ресурсов с помощью грузовых вертолетов, которые летали, и им не требовалось объезжать препятствия. Такие чудные решения были практически везде. Сам контент я загружал с сервера. Для этого я сделал сервер дома, и он стабильно раз в неделю был недоступен по несколько часов, что не позволяло новым пользователям запустить игру вообще. И вот такое чудо мы решили выложить в магазин приложений гугла. И где-то в ноябре, если верить статистике, 16-го числа 2014 года игра вышла на андроиде. Игра содержала массу ошибок, на некоторых устройствах она могла вообще не стартануть, а если стартовала, могла не запуститься из-за невозможности скачать атласы и миссии, но, на удивление, она была встречена тепло. Многие игроки писали положительные отзывы и просили поправить различные глюки.

image

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

image
Вот так вот выглядел доход за первый месяц

Сервер игры


У меня был опыт написания сервера на C++, это совсем простое клиент-серверное приложение с использованием сокетов, в котором у меня было 2-3 клиента Но тут требовалось изобрести велосипед покруче. Я выбрал C# так как к тому времени уже долгое время программировал на нем, а также Microsoft SQL Server для хранения статистики. Нагуглил пример сервера на C#, начал разбираться с реализацией сокетов на AS3 (буду в дальнейшем писать про флэш так). Идея была проста, у меня юниты уже имели очередь команд, которые затем выполняли, нужно просто при добавлении команды юниту на одном устройстве, передавать ее на сервер, а сервер будет эту команду отправлять второму устройству, и обратно. А также некие сервисные функции, авторизации на сервере, создание комнаты, контроля версий игры, игра очень часто обновлялась, в нее добавлялись новые юниты, исправлялись ошибки, и это требовало, чтобы игроки играли одинаковыми версиями и т.п. Относительно быстро мне удалось написать рабочий сервер. И, о чудо! мы можем играть друг с другом! Создание комнат я прикрутил намного позже, а вначале игроки просто могли лишь выбрать карту для создания игры, а второй игрок должен был нажать присоединиться к серверу, и тогда они соединялись и играли на карте, которую выбрал создавший игру игрок. И этот сервер располагался снова у меня в квартире. Постепенно я довел мультиплеер до более- менее приличного вида. Сейчас на одной карте могут играть до 8 игроков, в различных вариантах, до 3-х команд. Также статистику игры и некоторые функции можно смотреть на сайте игры, который я написал на ASP.net. Все игры, которые происходят на сервере, сохраняются в xml файлах, которые можно скачать и посмотреть на клиенте с несколькими режимами скорости. Храню реплеи на диске, а не в базе и их накопилось уже достаточно большое кол-во. Не уверен, что это хорошая идея, но запихивать более 100 гиг реплеев в базу, тоже нет желания. За победу в игре начисляется рейтинг, с небольшими изменениями, это рейтинг рассчитанный по системе ЭЛО. Периодически я сталкивался с различными проблемами оптимизации, необходимости разбираться с приемами асинхронности, нехватки места на сервере и многим другим. И я в конце концов арендовал нормальный сервер. Сначала виртуальный, а потом уже настоящий.

Читеры


Как только игра стала с некими вознаграждениями, появились люди, которые хотели выиграть, используя нечестные методы. И с этим нужно было что- то делать, так как это отпугивало нормальных игроков. Поэтому я добавил передачу на сервер данных о собираемых и расходуемых ресурсах, кол-ва заездов сборщиков на базу и т.п. Добавил в БД данные о ценах юнитов и т.п., чтобы можно было вычислить, сколько у игрока ресурсов передавалось на сервер и там анализировалось. И в случае, если данные не сходились, выбрасывал читера из игры, а противнику засчитывал выигрыш. Но игроки меня часто удивляли своей изобретательностью. Еще один способ, который я обнаружил, это некое ускорение игры. Не знаю, как это делали игроки, в общем, вся игра у них работала быстрее, и харвестеры быстрее собирали, и выпуск юнитов был быстрее. Пришлось на сервере считать скорость выпуска юнитов и также наказывать таких хитрецов. Тем не менее, не эмулируя игру, на сервере полностью предотвратить нечестную игру не удастся. Но так как игра не популярна, я решаю задачи по мере поступления. Есть постоянные игроки, с которыми я периодически общаюсь на предмет глюков, да и сам иногда по выходным играю со стримами на своем канале. Всегда можно загрузить игру и поглядеть, что в ней происходило.

image

Боты


Игроков на сервере было немного. Некоторые стали боятся терять рейтинг и поэтому не играли. Нужно было добавить обезличенного игрока, которому не обидно проиграть и который мог бы развлекать игроков. Нужен бот. Для написания бота, нужно было решить ряд задач. Если очередь строительства зданий написать просто, то нахождение подходящего места на карте для строительства, это уже сложнее. В офлайн миссиях я, например, заранее прописывал для ИИ места, где он мог строить здания. Но если противник будет строить все по заданному плану и ставить здания в одних и тех же местах, будет не интересно, нужно что- то другое. И я придумал, как можно тут схалтурить. Мне не давала покоя мысль, что на сервере хранятся все игры и в них есть все места, где игроки уже строились, играя друг против друга. Нужно просто систематизировать эту информацию и использовать Так, стоп. А что если я вообще буду использовать полностью стратегию строительства и выпуск юнитов реального игрока, который когда-то уже играл на этой карте и был в том же месте, где сейчас находится бот? Заметит ли кто-то такую подмену? А для честности я еще и буду контролировать выпуск юнитов тем, сколько денег он заработал. Сама игра не эмулировалась на сервере, а работала полностью на клиенте, создавшем игру, и некоторые моменты было сложно понять. Например, сервер не мог знать точного положения подвижных юнитов на карте, информация о положении была лишь в момент, когда юнит заканчивал выполнение команды идти, и еще масса информации была неизвестна серверу. Но я счел их не столь существенными, нужно было иногда передавать на клиент юнитам команду, чтобы они атаковали ближайших противников. Мне показалось этого достаточным. Также я добавил несколько фишек боту, это возможность захватывать свои здания обратно, если их кто- то захватил инженером и не успел продать, необходимость восстанавливать свои здания, если их уничтожили, и многие другие функции, необходимые для выживания на поле боя. На удивление, бот прижился. Игроки играют с ним довольно охотно. И даже сильные игроки, немного зазевавшись, иногда могут проиграть своей же тактике, сыгранной месяц назад против того же бота или реального игрока, но все же надо признать, что до хорошего игрока он не дотягивает. Сейчас бот сыграл уже более 311 тысяч игр, и в 40% битв он выиграл.

Платная версия игры


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

image

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

image

В июне 2015-го года мы запустили платную версию нашей стратегии, и это было совсем не плохо. Игра долго держалась в топах платных стратегий в России и еще в некоторых странах. И принесла где- то 1000$ за первый месяц. Это был первый нормальный доход с игр, я поверил, что этим можно что-то заработать. За все время платная версия на андроиде принесла примерно 22K $ (уже с вычетом гугла).

image

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

Локализация


Про переводы стоит сказать отдельно. В игре сейчас уже 7 языков кроме русского. Большинство переводов мне сделали игроки из разных стран, либо бесплатно, либо за совсем незначительное вознаграждение. Был очень смешной момент. Как-то зайдя на сервак мультиплеера, я заметил резкий рост кол-ва игроков, буквально в 10-ки раз. С одной стороны, это меня обрадовало.

Поглядел статистику показа рекламы, там никаких изменений не заметил. Поглядел некоторые ip игроков, все они были из Китая. Погуглил и нашел на китайских просторах интернета свою игру, полностью локализованную. Кто -то ее распотрошил, перевел все вплоть до картинок и выложил. Также в игре была удалена реклама, разблокированы различные платные функции и т.п. Я смог извлечь из этого выгоду, взял оттуда китайский перевод и поставил себе в игру! Украл перевод из украденной у меня игры. Обновил версии и отключил возможность играть старыми. Удивительным образом игра была очень популярна в Таиланде, хотя не имела локализации из 1.3 М скачиваний 250 тыс скачиваний в Таиланде, который идет первым, за ним Россия с 160 тысячами. Этот график я покажу немного позже.

image

Озвучка игры


Изначально мы искали бесплатные звуки, в различных свободных библиотеках звуков, некоторые реплики в озвучке меню мы генерировали генератором голоса. В основном это были фразы только на английском языке. Сейчас есть русская и английская озвучка. Иногда для версии ВК мы просили помощи с озвучкой юнитов наших русскоязычных игроков. Затем мы познакомились с Алексеем, который озвучил в дальнейшем все наши игры. Процесс озвучки одной из игр

Музыка в игре была написана нашим художником Александром, а некоторые композиции написал нам Юрий (GraYaSDF).

Реклама


Пока игра не приносила ничего кроме удовольствия, мыслей ее рекламировать не возникало. Потом решил попробовать. Почта была забита предложениями всяких блогеров запихнуть игру в какой-нибудь топ обзор на их каналах. Я несколько раз попробовал такой тип рекламы и полностью разочаровался. Никакого толку от подобных обзоров у меня не было, а денег некоторые просили больше, чем игра приносила за месяц. Единственно, что действительно окупилось, это реклама на 4pda. Там есть некая программа для разработчиков, где вам могут написать статью про вашу игру. И это единственная реклама, которая у меня действительно окупилась. Но тоже, скорее всего, зависит от игры. Никаких инсталляций я не покупал.

image

Так выглядит график установок игры. Определить закономерность, из-за чего закачки могут расти или падать, я не смог. Рост может быть и при росте плохих оценок, а падение при росте дохода и уменьшении ANR. Один раз при переходе на новый номер андроид sdk я не попробовал проинсталлировать игру на новом устройстве для теста, а там, как выяснилось потом, запретили писать в папку документов, или требовалось специальное разрешение от пользователя. И игра пару дней, как я полагаю, просто не запускалась на новых устройствах. И тем не менее, игра показала большой рост загрузок, к сожалению этого графика у меня не осталось, но мы его обсуждали в своей небольшой команде. Иногда падения носят как будто искусственный характер, это особенно заметно в начале 2018-го года. Они как будто режутся на определенное кол-во. Кстати, это падение было у многих разработчиков.

Другие платформы


Также я выпустил игру на iOS, и потом в стим. Это очень просто, используя технологию Adobe Air. Некоторое время, у меня была даже браузерная версия игры в ВК. Но там даже близко не было тех скачиваний что на андроиде. Поэтому основной платформой для меня является андроид.

Другие мои игры


Я написал про одну игру. На самом деле их уже три. Они по сути являются одной, так как сделаны на одном движке и являются закосами под уже варкрафт Warage и дюну Expanse.

image

Заключение


Выпуская последующие игры после первой, которые были уже на голову качественней и более высокой степенью готовности, заметил, что так просто не вырваться в топы гугл магазина, как это было с первой игрой в конце 2014-го. Есть куча контента для стратегий, но заметил, что добавление контента, не приводит к какому-либо росту инсталлов. Поэтому пока не решил, заниматься ли улучшением уже имеющихся игр или начать новый проект, изучать ли новую технологию и вообще заниматься ли играми дальше. В любом случае, даже не осуществив задумку по выпуску множества небольших игр, как мне кажется, я смог провести последние 7 лет с пользой, освоив новое направление. И все благодаря той небольшой статье о самолетиках. Надеюсь моя статья будет кому-то полезна, а может кого-то вдохновит на разработку игр.
Подробнее..

Загрузка модов из Steam Workshop без регистрации и SMS

18.04.2021 20:08:22 | Автор: admin

Как скачать моды из Мастерской Стим, не имея на аккаунте нужной игры? И Яндекс, и Гугл с радостью предложат вам десятки различных рецептов, кроме единственно правильного. На самом деле вам не нужно пользоваться услугами сторонних сайтов или устанавливать сомнительные браузерные расширения, ведь получить любой мод из Steam Workshop можно при помощи консольной утилиты SteamCMD от самих Valve. Этот способ не просто является самым надежным, но и позволяет автоматизировать загрузку с помощью скриптов. Если данная проблема актуальна и для вас (например, вы, как и автор этой статьи, предпочитаете покупать игры в GoG или увлекаетесь созданием собственных сборок модификаций), добро пожаловать под кат.

Необязательное (и довольно длинное) предисловие, которое можно пропустить

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

Несмотря на примитивную графику, по геймплею эта игра даст фору любому другому проектуНесмотря на примитивную графику, по геймплею эта игра даст фору любому другому проекту

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

1. Модификации должны улучшать, дополнять и расширять существующий игровой процесс, а также привносить новые геймплейные возможности

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

Мод Invisible Conduit скрывает крупные силовые кабели и провода от подключаемого электрооборудования, что улучшает внешний вид помещений и окружения, положительно отражаясь на настроении колонистов.

Невидимые провода это что-то из разряда читовНевидимые провода это что-то из разряда читов

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

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

Прокладка подземных кабелей требует больше стали и очков работыПрокладка подземных кабелей требует больше стали и очков работы

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

2. Никаких кроссоверов

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

Ктулху, конечно, фхтагн, но в сеттинг RimWorld как-то не вписываетсяКтулху, конечно, фхтагн, но в сеттинг RimWorld как-то не вписывается

Определившись с тем, какой результат желаю получить в конечном итоге, я приступил к работе. И здесь я столкнулся с одной фундаментальной проблемой. Точнее, проблем нарисовалась целая куча, но такие досадные мелочи, как баги, несовместимость модификаций между собой, сломанный баланс и откровенно любительский перевод, авторы которого явно не удосужились вникнуть в контекст, были вполне ожидаемы. А вот тот факт, что множество годных модов доступно исключительно в Steam, меня неприятно удивил.

Как оказалось, сегодня авторы модификаций вообще не задумываются о том, чтобы выкладывать свои творения на GitHub или Nexus Mods, а многие их тех, кто все же этим занимается, крайне редко обновляют моды на сторонних ресурсах. В подавляющем большинстве случаев самую актуальную версию мода можно получить только в Steam Workshop, а зачастую Мастерская и вовсе является единственным местом, где модификация доступна.

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

Разумеется, в такой ситуации можно было бы приобрести игру еще раз, уже в Steam, подписаться на нужные модификации, а затем раскидывать их копии между версиями сборок вручную или скриптом. Но зачем, если все необходимое можно забирать напрямую из Мастерской с помощью утилиты для командной строки от самих Valve? Разберемся, как это сделать.

Скачиваем любые моды из Steam Workshop с помощью официальной утилиты Valve

Консольная утилита SteamCMD изначально предназначалась для установки и обновления дистрибутивов выделенных серверов из командной строки, однако ее можно использовать, в том числе, для загрузки модификаций из Steam Workshop, причем для этого вам даже не понадобиться действующий аккаунт в Steam.

SteamCMD доступна для операционных систем Windows, macOS и Linux. Все версии утилиты используют идентичный синтаксис. Чтобы приступить к работе с версией программы для Windows, достаточно загрузить ее последнюю версию по ссылке и распаковать полученный архив в корень системного диска. О том, как установить SteamCMD на Linux и macOS, вы можете узнать в официальном руководстве от Valve.

Рассмотрим основные команды, поддерживаемые утилитой, которые необходимо знать для прямой загрузки модификаций из Steam Workshop.

  • Запуск SteamCMD

cd C:\SteamCMDsteamcmd

После запуска утилита автоматически проверит обновления и загрузит все необходимые для работы файлы. Чтобы каждый раз не переходить в каталог, steamcmd.exe можно добавить в переменную среды PATH.

  • Авторизация на сервере

login anonymous

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

login <username>

Обратите внимание, что если вы уже авторизованы в десктопном клиенте Steam, вам необходимо предварительно выйти из своего аккаунта. В случае, если ваш профиль защищает Steam Guard, вам также придется ввести код подтверждения для авторизации, который придет на связанный e-mail.

  • Выбор директории

force_install_dir <directory name>

Данная команда позволяет принудительно указать каталог, в который будут загружены модификации. Эта информация не сохраняется, то есть, каждый раз после запуска SteamCMD вам придется заново выбирать нужную директорию.

Еще один важный нюанс: при загрузке модификаций SteamCMD сохраняет исходную структуру каталогов. То есть, если вы укажете, что моды необходимо загружать в папку <directory name>, на самом деле они будут сохранены в каталог:

<directory name>\steamapps\workshop\content\<game id>
  • Загрузка модификаций из Steam Workshop

workshop_download_item <game id> <mod id> validate

Необходимые переменные получаем из ссылок на сайте Steam. Разберемся на примере RimWorld.

Официальная страница игры расположена по адресу:

https://store.steampowered.com/app/294100/RimWorld/

Здесь 294100 это и есть нужный нам <game id>.

А вот, как выглядит ссылка на небольшую модификацию Proxy Hit:

https://steamcommunity.com/sharedfiles/filedetails/?id=2365526329

Здесь <mod id> является 2365526329, на что красноречиво указывает имя передаваемого параметра.

Опция validate отвечает за проверку целостности скачанных файлов. Кроме того, если ранее вы уже загружали мод, а к нему вышло обновление, при наличии опции validate SteamCMD лишь сравнит файлы на ПК и на сервере, загрузив только те, которые подверглись изменениям.

  • Завершение работы

quit

Данная команда завершает сессию работы с сервером и останавливает процессы SteamCMD.

SteamCMD поддерживает два способа автоматизации.

1. Последовательный ввод команд с префиксом +

steamcmd +login anonymous +force_install_dir C:\Mods +workshop_download_item 294100 2009463077 validate +quit

Данный способ удобно использовать только для скачивания отдельных модификаций. Если вам надо загрузить несколько сотен модов, куда удобнее написать для SteamCMD сценарий.

2. Создание сценариев

Сценарий представляет собой простой текстовый файл, в котором последовательно перечислены все команды, которые должна выполнить SteamCMD. Ниже приведен пример сценария для загрузки базовых библиотек, необходимых для работы ряда модификаций Rimworld.

//// Добавлять комментарии можно через двойной слэш//@ShutdownOnFailedCommand 0 // завершение работы при возникновении ошибок, при множественной загрузке рекомендуется отключить@NoPromptForPassword 1 // отключение запроса пароля при загрузке файловlogin anonymousforce_install_dir C:\Mods//// Библиотеки//workshop_download_item 294100 2009463077 validate // Harmonyworkshop_download_item 294100 818773962 validate // HugsLibworkshop_download_item 294100 839005762 validate // Humanoid Alien Races//quit

Для запуска сценариев предусмотрена команда runscript:

steamcmd +runscript DownloadingMods.txt > Log.txt

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

Бонус: параметры запуска для установщиков GoG

Зная о том, как работает SteamCMD, вы сможете без труда написать скрипт для автоматизации загрузки модификаций к интересующей вас игре. Если при этом вы, как и я, предпочитаете покупать игры в GoG, то вам пригодятся знания дополнительных параметров установщиков.

Инсталляторы GoG создаются с использованием Inno Setup, однако поддерживают лишь ограниченное количество параметров: ряд опций не работает вовсе, а некоторые вызывают критические ошибки, делая установку игры невозможной. В своих скриптах я использую следующие параметры:

  • /silent

Позволяет пропустить окно с принятием лицензионного соглашения и выбором каталога, однако прогресс-бар установки все равно будет отображаться на экране. Хотя Inno Setup поддерживает параметр /verysilent, который позволяет сделать установку полностью бесшумной, с инсталляторами GoG он работает некорректно, вызывая ошибку и зависание установщика.

  • /nocancel

Блокирует кнопку Cancel. Очень удобно, если вы устанавливаете несколько игр подряд, при этом продолжая работать на компьютере: так вы исключите вероятность случайного прерывания процедуры установки.

  • /norestart

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

  • /closeapplications

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

  • /dir="<directory name>"

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

  • /log="<log path\log.txt>"

Лог установки можно вывести в текстовый файл. Это очень удобно при работе с проблемными играми, а также может помочь при создании собственной сборки модов: проанализировав сохраненные данные, вы сможете узнать, например, где игра хранит файлы настроек или профили игроков.

Порядок параметров значения не имеет. В своих скриптах я использую следующую конструкцию:

rimworld.exe /silent /nocancel /norestart /closeapplications /dir="C:\RimWorld" /log="InstallationLog.txt"

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


P.S. Поскольку эта статья мой дебют на портале, я хотел бы узнать, насколько завсегдатаям Хабра интересен RimWorld вообще и моддинг этой игры в частности. На данный момент у меня есть несколько идей для будущих публикаций:

  1. RimWorldоведение рассказываю о том, как устроена сама игра и модификации к ней. Какова структура модов, где и что искать, если вы хотите отбалансировать мод, добавить перевод или изменить существующий и т.д.

  2. Все равно его не брошу, потому что он хороший о кривых, дисбалансных, но очень оригинальных и остроумных модификациях, удалить которые не поднимается рука. Описание модификаций и их проблем с подробной инструкцией по исправлению багов и доведению до ума.

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru