на каком движке space engineers

Единорог в космосе: проверяем исходный код ‘Space Engineers’

на каком движке space engineers. Смотреть фото на каком движке space engineers. Смотреть картинку на каком движке space engineers. Картинка про на каком движке space engineers. Фото на каком движке space engineers

Как вы уже поняли из заголовка, речь в статье будет идти о подозрительных местах, найденных в исходном коде ‘Space Engineers’. Но формат статьи несколько отличается от остальных. Помимо информации о проекте, обзора некоторых найденных подозрительных мест и ошибок, а также способов их исправления, я включил в текст небольшой раздел о правильном сценарии использования статического анализатора. Настоятельно рекомендую ознакомиться с ним, так как многие разработчики не знают или просто не задумываются о том, как правильно использовать инструменты этого класса. В результате инструменты статического анализа используются на порядок менее эффективно, чем могли бы.

Немного об игре

на каком движке space engineers. Смотреть фото на каком движке space engineers. Смотреть картинку на каком движке space engineers. Картинка про на каком движке space engineers. Фото на каком движке space engineers

Space Engineers — это песочница о конструировании и обслуживании космических объектов. Игроки могут построить космические корабли и станции различных размеров и предназначений (гражданские и военные), управлять ими и добывать ресурсы. Игра использует реалистичный физический движок: любой объект может быть собран, разобран, повреждён и полностью уничтожен. Игра основана на графическом движке VRage 2.0 собственной разработки компании-создателя Keen Software House.

Исходный код игры доступен в репозитории на GitHub.

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

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

Ошибочные и подозрительные места

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

Но вам уже хочется взглянуть на код, да? Что ж, приступим.

Опечатки и невнимательный ‘copy-paste’

Предупреждение PVS-Studio: V3001 There are identical sub-expressions ‘property.Name == «AxisScale»’ to the left and to the right of the ‘||’ operator. Sandbox.Graphics MyParticleEmitter.cs 352

Типичная ошибка, встречающаяся и в коде на C++, и на C# и, наверняка, на многих других языках программирования. Причиной таких ошибок, как правило, является простая невнимательность. Сравнивали свойство ‘property.Name’ со строковыми литералами и дважды сравнили с ‘AxisScale’. Скорее всего подразумевалось сравнение с другим литералом (в соседних методах производится сравнение этого же свойства с литералом ‘LimitAngle’, так что, думаю, здесь подразумевался он же).

Встретились не менее типичные ошибки одинаковых тел оператора ‘if’ в ‘then’ и ‘else’-блоках. Такие ошибки возникают из-за невнимательности (в том числе и из-за невнимательного copy-paste). Рассмотрим несколько подобных примеров:

Предупреждение PVS-Studio: V3004 The ‘then’ statement is equivalent to the ‘else’ statement. Sandbox.Game MyAgentBot.cs 260

Независимо от значения переменной ‘m_removeAfterDeath’, другой переменной — ‘m_deathCountdownMs’ — будет присвоено одно и то же значение. В данном случае сложно сказать, что здесь нужно изменить. Но то, что код содержит ошибку, очевидно.

Следующий подобный фрагмент:

Предупреждение PVS-Studio: V3004 The ‘then’ statement is equivalent to the ‘else’ statement. Sandbox.Game MyNavigationTriangle.cs 189

Ситуация аналогична предыдущей, использование оператора ‘if’ в данном коде не имеет смысла. И опять сложно сказать, как необходимо исправить данный код. Возможно, в зависимости от условия, необходимо использовать либо оператор ‘==’, либо ‘!=’. Но это только предположение.

И ещё одна схожая ситуация:

Предупреждение PVS-Studio: V3004 The ‘then’ statement is equivalent to the ‘else’ statement. Sandbox.Game MyThrust.cs 149

В зависимости от условия необходимо изменить интенсивность бликов. Но из-за copy-paste она всегда будет одинаковой. Какое значение необходимо устанавливать в том или ином случае опять не скажешь, это решать авторам кода.

Потеря возвращаемых значений

Встречается в проектах код, в котором не используется возвращаемое значение метода. Это может быть связано, например, с тем, что программист забыл о том, что метод ‘Replace’ класса ‘String’ возвращает изменённую строку, а исходная остаётся нетронутой, так как объекты класса ‘String’ являются неизменяемыми. В данном проекте тоже встретились 2 ошибки, связанные с потерей значения, возвращаемого методом:

Из данного кода видно, что в случае, если не удалось обнаружить некоторые элементы, необходимо писать в лог информацию об ошибке. И последние два вызова метода ‘string.Format’ должны выступать аргументами у метода ‘MySandboxGame.Log.WriteLine’.

Корректный код мог бы выглядеть так:

Некорректная проверка после использования оператора ‘as’

В других своих статьях про проверку C#-проектов (‘Проверяем исходный код набора C#/.NET компонентов от Sony’, ‘Ищем ошибки в MonoDevelop’) я упоминал о том, что среди некоторых ошибок, которые допускают C#-программисты, начинают выявляться определённые паттерны. И с каждым новым проверенным проектом я всё больше и больше в этом убеждаюсь. Один из них — приведение объекта с помощью оператора ‘as’ к совместимому типу, а после — проверка на ‘null’ не полученного объекта, а исходного, что порождает вероятность возникновения исключений типа ‘NullReferenceException’. ‘Космические инженеры’ не остались в стороне.

Давайте рассмотрим несколько примеров с подобными ошибками:

Предупреждение PVS-Studio: V3019 Possibly an incorrect variable is compared to null after type conversion using ‘as’ keyword. Check variables ‘builder’, ‘ob’. Sandbox.Game MyWeaponBlockDefinition.cs 21

Я несколько подробно «разжевал» случаи, когда код отработает верно, а когда — нет, чтобы не повторять эти объяснения в последующем. Но, думаю, очевидно, что такой код содержит ошибку.

Предупреждение PVS-Studio: V3019 Possibly an incorrect variable is compared to null after type conversion using ‘as’ keyword. Check variables ‘item’, ‘actionsItem’. Sandbox.Game MyGuiControlToolbar.cs 511

Подозрительные сравнения

В версии PVS-Studio 6.01 помимо вновь добавленных, были улучшены уже существующие диагностики, причём некоторые — весьма существенно. Пример одной из таких диагностик — V3022, которая определяет, что условие всегда будет истинным или ложным.
Предлагаю рассмотреть несколько фрагментов подобного кода, отмеченные анализатором:

Так как метод ‘SpawnInventoryContainer’ возвращает объект типа ‘long’, переменная ‘bagEntityId’ будет иметь такой же тип. Примитивные типы вроде ‘long’ допустимо сравнивать с ‘null’ (long_var == null), но результатом этого сравнения всегда будет ‘false’. Как следствие — тело оператора ‘if’ будет выполняться всегда. Скорее всего, здесь ожидался nullable-тип — ‘long?’.

Это не единственный такой случай, встречались ещё места, где примитивные значимые типы сравнивались с ‘null’. Соответствующие предупреждение анализатора:

Предупреждение PVS-Studio: V3022 Expression ‘i == 0’ is always true. Sandbox.Game MyGridClipboardAdvanced.cs 790

Тоже весьма интересный случай. Тернарный оператор в коде есть, а вот толку от него нет. В условии оператора ‘if’ проверяется, что ‘i == 0’, а затем, при инициализации объекта ‘settings’ это условие проверяется ещё раз. Оно бы и логично, но между этими участками кода ‘i’ никак не изменяется, как следствие — смысла в проверке нет, ‘settings’ постоянно будет инициализироваться одним и тем же значением.

В том же цикле встретились ещё предупреждения:

И снова о разыменовании нулевых ссылок

Несмотря на то, что C# в плане обращений по нулевым ссылкам куда безопаснее, чем разыменовывание нулевых указателей в C++ (приводящих к UB), неожиданная генерация исключений типа ‘NullReferenceException’ всё равно крайне неприятна, особенно если эти исключения появляются у пользователей, а не проявляют себя на этапе разработки. Поэтому, если есть возможность разыменования нулевой ссылки, нужно быть крайне внимательным:

Предупреждение PVS-Studio: V3027 The variable ‘MySession.ControlledEntity’ was utilized in the logical expression before it was verified against null in the same logical expression. Sandbox.Game MyHudWarning.cs 415

Есть необходимость выполнять какие-то действия, если ‘MySession.ControlledEntity == null’или ‘MySession.ControlledEntity.Entity’ является типом, совместимым с ‘MyCharacter’. Но так как проверка этих условий расположена не в том порядке, возможно возникновение исключения. Оно будет сгенерировано, если ‘MySession.ControlledEntity == null’, так как ‘Entity’ — экземплярное свойство. Решение — изменить порядок подвыражений:

Странные циклы

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

Предупреждение PVS-Studio: V3028 Consider inspecting the ‘for’ operator. Initial and final values of the iterator are the same. VRage.Render MyRender-Management.cs 1034

Счётчик цикла (‘axis’) инициализируется значением ‘bestAxis’, однако условием выхода служит это же или меньшее значение, из-за чего не будет выполнено ни одной итерации цикла. Подразумевалось, что счётчик должен инициализироваться 0, тогда правильно цикл выглядел бы так:

Не менее интересный пример с циклом:

Предупреждение PVS-Studio: V3020 An unconditional ‘continue’ within a loop. Sandbox.Game MyRenderComponentThrust.cs 109

Ошибка заключается в том, что оператор ‘continue’ находится вне ‘then’-ветви оператора ‘if’, из-за чего он будет выполняться всегда. Это означает, что весь код, следующий за этим оператором (больше 10 строк), никогда не будет выполнен. Решение проблемы очевидно — необходимо внести оператор ‘continue’ под условие.

Остальные предупреждения

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

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

на каком движке space engineers. Смотреть фото на каком движке space engineers. Смотреть картинку на каком движке space engineers. Картинка про на каком движке space engineers. Фото на каком движке space engineers

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

Часто считают, что приемлем следующий вариант работы: скачали анализатор, проверили проект перед релизом, что-то поправили, забыли про анализатор. О, скоро релиз! Вспомнили про анализатор, проверили проект, что-то поправили, забыли.

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

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

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

Заключение

на каком движке space engineers. Смотреть фото на каком движке space engineers. Смотреть картинку на каком движке space engineers. Картинка про на каком движке space engineers. Фото на каком движке space engineers

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

на каком движке space engineers. Смотреть фото на каком движке space engineers. Смотреть картинку на каком движке space engineers. Картинка про на каком движке space engineers. Фото на каком движке space engineers

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Vasiliev. Unicorn in Space: Analyzing the Source Code of ‘Space Engineers’.

Источник

Space Engineers: космос, песочница, выживание, онлайн

Песочницы. Песочницы is everywhere.

Жанр песочницы предполагает «некоторое саморазвлечение», желательно, с друзьями.

Часть 1. И снова Зрась-те! Майнкрафт.

О «майнкрафт», как много чувств заложено в это слово. Майнкрафт был первой игрой жанра «песочница», о которой я узнал (серия GTA для меня НЕ песочница, если что). В основном на слуху были новости о майнкрафте про учеников начальной и средней школы, которые стримят игру 24/7 писклявыми голосами и «ваще майнкрафт для детей», «где графоний» и «я никогда в это играть не буду». Все мои друзья и знакомые тащились по DOTA (которая карта WC3) и DOTA 2. Так что играть в песочницу с друзьями мне довелось лишь недавно и недолго, но ощущения от самого процесса игры с друзьями и созидания какой-то непонятной и бесполезной ерунды цепляют и не отпускают уже долгое время.

Рассказывать про «майнкрафт» нет особого смысла, но отметить некоторые детали необходимо. Во-первых, это свобода, она относительная и ограничена механикой, но если есть теоретическая возможность проведения какого-либо действия, то это действие не должно ломать игру, во всех смыслах. Вторая деталь — сетевой режим, в песочнице одному можно изучать мир и механику, но вот с друзьями, можно развлечься на всю катушку. Третья деталь — бесконечность, то есть, отсутствие конкретной задачи или конечной цели, а если есть цель игры, то она не обязательная. Четвёртым пунктом для меня стали воксели, Я их люблю и ненавижу.

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

Майнкрафт оказался этаким подобием D&D, но без драконов, ролевки и прочего мозговзрывательного контента (мне Neverwinter и PoE хватает). В действительности очень интересно лазить по подземельям этого кубического мира, можно днями строить гигантские замки, рубить мечом зомбей и закидывать криперов стрелами, но я люблю космос. Майн может предложить долгое путешествие в любом направлении, но только не вверх или вниз. И помимо майна я играл в космические игры, такие как Star Conflict, Elite Dangerous илиEVE Online.

Часть 2. Игра, просто космос.

Космические симуляторы завораживают, вспомнить хотя бы Freelancer, да, он до сих пор жив. Freelancer зажег во мне интерес к космической тематике в играх, и космос в играх сам по себе у меня ассоциируется с максимальной свободой. Лети, куда хочу. Делай, что хочу. Планеты, звёзды, корабли и т. д. и т. п.

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

Первой сессионкой для меня стал конечно же CS 1.5, я не против этого жанра, но становясь старше, времени на развлекушки становится меньше, и некоторые игры просто надоедают. Второй относительно нормальной сессионкой для меня оказался Star Conflict, который я начал играть ещё в бете 2012 года. Игра была с космической тематикой, но сессионность и ограниченность не давали того эффекта, который хотелось. Игра развивалась и в какой-то момент мне даже нравилось то, что с ней происходило. Баланс страдал, но появившаяся возможность полетать по локациям в своё удовольствие и пострелять не особо сложных ботов, подкупала. Не фрилансер, но у него графоний слегка устарел, а хочется относительно красивую картинку, но в итоге Гайдзины выпустили свои танчики\самолётики\лодочки\машинки, а Star Conflict скатился в УГ, загаженное лутбоксами, что заставило бросить этот, безусловно, интересный проект и начать поиски новой игры про космос.

Такими стали Eve Online и Elite Dangerous, который я хотел катать со своими друзьями, но они не захотели играть ни в элитку, ни в еву, ни в старконфликт, но уговорили погонять майнкрафт. Я согласился, но особо интереса не проявлял. Меня заинтересовало расширение возможностей стандартного майна, хотелось добавить плавающий транспорт, в идеале собираемый своими руками. Готовые моды работали криво и только в соло, а хотелось с друзьями, к тому же язык Java хоть и можно изучить за пару тройку месяцев, но не на том уровне, чтобы разобрать проект уровня майнкрафта и внести в него свои «улучшения». Майн я забросил довольно быстро, вместе с идеей попытаться запилить свой мод на водный транспорт да ещё и в онлайн. Причин для этого было много, но не только нежелание разбираться в Java оттолкнуло.

Играть в Eve в 2020 году соло, не имея достаточно времени на изучение мира, как-то сложно. Elite хорош, не спорю, но на него времени надо ничуть не меньше, чем на еву, а времени как раз и не хватает больше всего.

Часть 3. Идеал не достижим, но это не плохо.

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

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

Я купил свой ПК по б/у запчастям и не особо выбирал. Искал дёшево и работоспособно, так как играть то особо некогда и игры мне нравятся обычно странные, старые и не требовательные например Brutal DooM. До недавнего времени я мотался по командировкам и стационарник был не особо нужен, а BD и на ноуте хорошо работал. Теперь же стационарник вроде бы и нужен, но не то что бы очень. Итак.

Материнская плата Elsa p45r-ia socket 775 4 слота DDR2(один уже отгорел), есть два слота PCIe x16 2.0, но сейчас только в режиме 1.1 работают.
Процессор Intel Core 2 Quad Q8400 2.66 GHz
Оперативная память ноунейм 6гб. в три слота
Видеокарта HIS AMD Radeon HD 7950 IceQ Turbo, не в лучшем виде, но работает.
Windows 10 на SSD, остальное на винте.
звук на встройке(стал бы я покупать в это «Hi-end звук»?) 2 динамика по 2 вт.
Монитор 5х4 Samsung SM940b 1280×1024

Клава и мышь, тоже не труъ-игровые.

Часть 4. Игра и лирика.

Надеюсь, соотношение сторон на скринах 5х4 не поломает вам мозг.

Так как Astroneer не запустился, я сделал рефанд и взял Space Engineers по скидке. Разбираться в игре особо не стал и стартанул первую миссию. Тогда это был First Jump. Миссия сделана очень хорошо, основы управления и некоторые механики стали понятны, но самого интереса игры я ещё не ощутил. Друзья опять отказались со мной играть и до самого выхода GTA 5 в EGS я переключался между Elite Dangerous иSpace Engineers.

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

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

Вот так примерно выглядит старт новой игры.

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

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

Немного скажу о графике, вот скрин с тем уровнем графики, на котром я играю, минималочка.

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

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

Также важно помнить про своё зрение… Я серьёзно.

Если сравнить режим «выживание» и «творчество», то для меня однозначно интересно именно «выживание». Каждый блок надо проварить, расчёт количества компонентов, а также поиск, добыча и транспортировка ресурсов транспортом, который ещё надо построить. То есть транспорт ещё надо придумать, продумать его возможности, потом добыть на него ресурсов, изготовить компонентов, а только потом построить. С таким подходом игра может превратиться в работу, но на самом деле не всё так страшно. Ресурсы изначально добываются ручками, в капсуле есть комплект для выживания, которые может переработать камень в базовые ресурсы и изготовить базовые компоненты. Не моментально, но достаточно быстро чтоб не заскучать.

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

Часть 5. В чём интерес

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

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

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

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

Goldy, это четвёртый вариант атмосферного летательного аппарата «Цикада»(сам придумал, построил и назвал) с возможностью варить конструкции, а при замене сварочников на пилы, можно разбирать на компоненты разные конструкции. Собран на малом гриде. Честно говоря, не самый удачный вариант, но для сборки корабля без чертежа, вполне подойдёт, плохо то что инерция при полной загрузке просто адская, но с помощью подобного аппарата был собран не один крупный межпланетный корабль. Taxi версии 2, собран на большом гриде. Он ещё не совсем доработан, но для представления возможностей игры, пожалуй, сойдёт.

Стоит немного объяснить что такое этот «грид». Для начала, игра строится на вокселях, просто они достаточно маленькие. Все воксели статичные и не двигаются в мире, гравитация на них так же не действует, а вот конструкции бывают двух типов блоков. Большие и малые гриды, по умолчанию они не стыкуются между собой, но можно пристыковать по технологии суб-грида, то есть поставить на большой грид ротор с малой головкой или наоборот. Я не советую злоупотреблять этим методом, так как роторы сами по себе не особо стабильные блоки, да и необходимость таких конструкциях крайне мала. Малые гриды легче, а потому на них удобно делать небольшой транспорт для разведки местности, ведения боевых действий, строительства дронов. Большие гриды лучше подходят для строительства станций и больших кораблей, с помощью которых можно вести торговлю, боевые действия, разработку ресурсов и прочее. Важно отметить, что некоторые блоки существуют только для больших гридов, а некоторые только для малых. Например на малые гриды нельзя поставить очистительный завод, а на большой грид нельзя поставить пулемёт гатлинга, только турель. Важно помнить и про функциональные блоки, контейнера малых гридов будут содержать в себе меньший объём свободного пространства, размеры и производительность так же будет уменьшена. Как пример, поршни, малый поршень выдвигается на 2 метра, а большой на 10 метров. В размерах гридов так же есть и одна проблема.

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

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

уничтоженные ручным буром воксели «превращаются» в камешки. Да я знаю на что это похоже.

Это просто надо пережить, потом научитесь строить буровые корабли и станции.

Теперь немного о перемещениях. В игре можно передвигаться на своих двоих по поверхности с помощью магнитных ботинок, в случае если нет гравитации, но при этом сильно дёргает камеру при переходе по неровностям. На планете или луне есть гравитация, где-то больше, где-то меньше. Так же можно на корабле или станции в космосе поставить генератор гравитации, что позволит комфортно передвигаться по кораблю. Для полётов можно использовать личный реактивный ранец, который расходует запас водорода. Запас водорода, как и кислорода восполняется в комплекте для выживания, медпункте и криокамере, но только если этот блок подключен конвейером к «Генератору O2/H2» или соответствующему баку (серьёзно, в нашем переводе это кислородный бак и водородный бак).

Транспорт перемещается при помощи колёс и двигателей. Колёса бывают разных размеров, от самых маленьких на малом гриде (колесо 1х1), до самых гигантских (большой грид 5х5). Колёса можно использовать не только как на автомобиле, но и как ролики на монорельсе например. Двигатели или трастеры бывают 3х типов, атмосферный водородный и ионный. Для работы атмосферника и ионника нужна только энергия, но атмосферник может двигать конструкцию только в атмосфере (кто бы мог подумать). Ионник имеет малую производительность и потому хорош только в космосе, а вот водородник жрёт водород, как не в себя и пашет где угодно. Универсальный вариант корабля это большой грид, водородный стартовый комплекс и ионные движки для перемещения в космосе, плюс малый грид для разведки на борту большого корабля с атмосферниками для планет и ещё один с ионниками для космоса.

На ванилле есть ограничение скорость на перемещение, это 100 метров в секунду. Превысить можно только на реактивном ранце до 110 и при свободном падении до 104.8 м\с, а вот расстояния измеряются в километрах и между планетами обычно пара тысяч километров. Лететь можно долго, но для большого грида придуман специальный блок, «прыжковый двигатель».

Гравитация планеты перестаёт влиять примерно на 37-40 км. Лететь долго и давить пробел всё это время не особо интересно, а при помощи перехвата тяги можно и топлива сэкономить.

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

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

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

И вот мы уже у другой планеты, прыжок почти на 2000 км. Красная планетка имеет гравитацию 0.9 g. Чуть меньше атмосфера, для дыхания не подходит. Запасайтесь льдом или бурите на месте, так же не забудьте о вентиляции на корабле и генерации воздуха.

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

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

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

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

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

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

Для начала, «Программируемый блок». Это особая фича игры, которая позволяет запускать небольшую программу-скрипт внутри игры. Язык программирования C#, полное описание всех функций есть в вики, но лучше просто установите Visual Studio так, как это показано у Renesco Rocketman`а (Ссыль в разделе ссылей). Это очень хороший программист, часто проводит стримы по Space Engineers, Kerbal Space Program и Stormworks, от него я узнал несколько хитростей игры, о которых особо и не думал. Возможность запускать скрипты включается в настройках мира, без галочки этот блок бесполезен. Сами программы можно писать вручную, но лучше написать в VS а потом копирнуть в редактор. Так же можно просто подписаться на скрипт в мастерской Steam, как я и делаю в общем-то.

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

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

Для ознакомления отсылаю опять же к Renesco Rocketman, уважаю его деятельность. У него на канале есть пара обзоров на сервера игры с большим количеством модов, которые не ломают игру, а делают более интересной и сложной. Дело в том, что ванилька надоесть через 100 часов. Если занесёт в программирование то может через 150 часов, а вот сервера и живые игроки, да ещё с модами и скриптами. В общем ещё не скоро отпустит.

Часть 6. Суммируем.

Ничего не имею против других выживалок, крафтилок, строительных симуляторов и SIMS в том числе. Я посмотрел обзор Виталия и Дмитрия на Satisfactory. Хрен с ним, что игра в раннем доступе, но играть не прям чтоб интересно. Я согласен, эстетическое удовольствие от сортировки и конвейеров можно получить, это шикарно. Игра в принципе не плохая, но всё же выживалка, про строительство должна бы предложить ещё хоть что-то, помимо гигантского завода. Не стану придираться ни к обзору, ни к игре. Скажу лишь, что после вашего обзора у меня осталось чувство безальтернативности, выживалка или не выживалка, да пофиг. Что Satisfactory может предложить, кроме заводов и тормозов?

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

Не устроило что-то в инжах, альтернативы есть, такие проекты как Empyrion, Starbase, Avorion (от части) и Dual Universe. Ну это так на вскидку и прям совсем конкуренты. Правда на мой взгляд только Dual Universe заслуживает особого внимания, думаю что такая игра сможет даже пресловутый Star Citizen задвинуть, так как купить красивый кораблик и построить свой красивый кораблик — это разные вещи.

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

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

Ссылки.

Страница в Steam
Space Engineers
Оффициальный форум Keen Software House
Форум Кинов
Канал Renesco Rocketman
Renesco Rocketman Youtube Channel
Видео для начинающих скриптеров
Установка Visual studio
Страница в магазине Microsoft, в описании игры указан «рафинадный завод», в игре такого нет.
xbox.com

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *