Руководство раст стим

Гайд для новичков по старту в Rust.

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

Выбор сервера

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

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

Первые шаги

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

Так выглядит топор.

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

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

Дальнейшие шаги будут зависеть от того, как обострено чувство голода:

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

Движение к комфорту

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

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

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

Строительство дома

Может возникнуть вполне закономерный вопрос «Зачем вообще строиться? Ведь в игре можно делать все, что угодно. Это же открытый мир!». Дом послужит вам и защитой, и хранилищем лута. Кроме того, перечисленные в этом гайде шаги помогут быть эффективнее и, увеличат шансы на выживание. А именно в этом и есть суть игры.

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

Обустройство дома в пещере.

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

Получается, что в пещере:

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

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

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

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

Вооружение

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

Переходим к поиску. Найти ствол можно в ящиках, которые падают с неба, то есть эйрдропы (airdrop), и в военных ящиках, которые валяются на поверхности. Сброс происходит в разных местах карты. Если видите в небе самолет — это оно. В самолетных дропах присутствуют дробаши, пистолеты, патроны, взрывчатые вещества, бронька и шмотки.

Ящик AirDrop.

Нюанс при таком раскладе в том, что его видите не только вы и поэтому надо успеть прибыть на точку сброса первым, опередив конкурентов. Очень повезет, если ящик дропнется в зоне видимости или хотя бы неподалеку. В противном случае про него лучше забыть. Есть все шансы просто не найти, куда он упал. Я, бывало, безуспешно блуждал в поисках по 20-30 минут. Если все же повезет обнаружить место падения, велика вероятность, что кто-то уже там побывал и вам достанентся кукиш, возможно, даже без масла или засада плохих парней.

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

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

Раньше, как всегда, все было проще и лучше. Если вы имели пружину, корпус полуавтомата и кучку из 450 фрагментов металла, то легко могли заиметь себе огнестрел. Халява кончилась, и теперь есть верстаки и рецепты. То есть, чтобы скрафтить пушку потребуется рецепт, а также ресурсы и компоненты. Однако, учитывая то, что ситуация с поиском оружия похожа больше на лотерею, обратите внимание именно на вариант его создания. Времени, конечно, займет больше, но и вероятность успеха выше. Начните с чего попроще, лука, например. Главное не умрите раньше срока.

Нападение на других игроков

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

Секреты и хитрости для начинающих по зачистке:

  • Контейнеры на видных местах скорее всего ценных вещей в себе не содержат;
  • Перед штурмом пару дней проследите за жителями — они могут указать на тайники;
  • Уничтожайте спальные мешки — без точек спауна врагов не придется убивать дважды;
  • Если дом сделан по принципу лабиринта, проделайте несколько дырок топором или C4.

Только купили игру и не знаете с чего начать? Этот гайд по выживанию в Rust поможет вам.

Совет №1 — выбор сервера.

Все сервера делятся на типы – официальные, сервера сообщества и модифицированные.

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

Сервера сообщества имеют меньше людей и облегчен игровой процесс. 

Модифицированные сервера содержат какие-либо моды. Здесь изменена скорость спавна ресурсов и транспорта.

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

Для начала нужно выбрать сервер, чтобы узнать азы игры. Для этого найдите модифицированный сервер по тегу “creative”, на нем вы сможете через консоль, нажатием клавиши F1 – выбор ITEMS, выдавать себе предметы, ресурсы, оружие. Так вы сможете что-нибудь построить, пострелять и немного втянуться в игру без сжигания нервов и седалищной мышцы. Если хотите потренировать стрельбу, то ищите сервер по тегу “aim training”.

Совет №2 — С чего начать игру.

После того, как определились с сервером, вам нужно начать собирать ресурсы. Для этого подойдите к дереву и начните долбить его камнем, пока оно не упадет. Как насобираете 300 дерева, можно будет скрафтить (сделать) деревянное копье. Этим копьем можно драться, а также отпугивать животных.

Далее ищем еду, например грибы, которые дают 3 единицы HP. Они растут в лесах. У рек растет тыква, которая дарит 10 ед. HP. Откройте карту, нажав на G, и посмотрите, где поблизости есть река.

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

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

Чтобы быстрее собирать ресурсы, скрафтите топор и кирку.

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

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

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

Для начала нужно построить дом. Для этого выбираем место на карте, нажатием клавиши “G”, желательно чтобы оно было поближе к РТ, половина из них с радиацией, так что одевайтесь лучше. Как только добежите до места назначения раскидайте спальники вокруг, чтобы после смерти возрождаться на них. Теперь ваша “любимая” часть, фарм на дом и строительство.

Для строительства используется план построек, а для улучшения киянка. Поставьте шкаф, чтобы другие не могли строить и ставить что-то в пределах 50 метров.

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

Часто бывает так, что ты встречаешь “фермера”, который страсть как любит добывать ресурсы, но он беззащитен и бегает только со своим инструментом. Убив такого игрока вы получите ресурсы на дом, не потратив время на фарм.

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

При строительстве дома обращайте внимание правильно ли повернуты стены, улучшены ли дверные проемы, стены. Неправильные каменные стены не составит труда выдолбить кирками за 10 минут, а деревянные мечами за пару минут. Сначала постройте небольшой домик, куда будете складывать ресурсы. Обязательно делайте буферки (несколько дверей), чтобы можно было выходить / входить в дом без потери ресурсов.

Теперь добываем ТНК на печки (топливо низкого качества). Есть два способа как это сделать:

  1. Быстрый путь – разбиваем бочки на дороге или РТ, из них выпадает ТНК и нефть, переработав которую можно получить большое количество ТНК. НПЗ (нефтеперерабатывающий завод находится в городе ученых и под сферой)
  2. Добыча жира с животных и людей. Больше всего жира добывается с кабана и медведя, но из черепа волка можно сделать неплохою по защите шапку, совместимую с балаклавой. Чтобы получить больше жира добывайте его костяным или обычным ножом. Жир + ткань = ТНК

Далее плавим железную руду, крафтим железные двери и продолжаем выживать.

Совет №3 — Ресурсы.

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

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

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

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

Совет №4 — Верстак и первое оружие

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

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

Верстак 2 уровня не поставить без первого верстака. А 3 без 2.Так что если увидите сгнивший дом с верстаком – обязательно заберите его.

Маленькая хитрость: зажмите ALT когда бежите и двигайте мышкой. Так можно оглядываться во время бега

Перевод | Автор оригинала: Dylan Hicks

Используйте свои навыки Rust, создав простую игру в крестики-нолики.

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

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

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

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

Запустить проект

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

cd ~/Documents
cargo new tic_tac_toe –bin

В древовидной программе ваш новый каталог tic_tac_toe выглядит так:

cd tic_tac_toe
tree .
.
??? Cargo.toml
??? src
    ??? main.rs

Файл main.rs должен состоять из следующих строк:

fn main() {
    println!("Hello, world!");
}

Запустить программу так же просто, как создать ее, как запустить «Hello, World!» показывает.

Запуск «Hello, World!»

  cargo build
    Compiling...
     Finished...
  cargo run
     Finished...
      Running...
Hello, world!

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

touch ./src/game.rs

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

Планируйте игру с помощью типов и структур

Классическая игра в крестики-нолики состоит из двух основных компонентов: доски и поворотов для каждого игрока. Доска представляет собой пустой массив 3 × 3, и повороты указывают, какой игрок должен сделать ход. Чтобы перевести эту функциональность, вы должны отредактировать файл game.rs, созданный в последнем разделе (см. Листинг 2).

Game.rs модифицированы для доски и ходов игрока

type Board = Vec<Vec<String>>;

enum Turn {
    Player,
    Bot,
}

pub struct Game {
    board: Board,
    current_turn: Turn,
}

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

Доска

Чтобы преобразовать игровое поле, вы используете ключевое слово type для псевдонима Board, которое будет синонимом типа Vec<Vec>. Теперь Board — это простой тип двумерного вектора строк. Я бы использовал здесь char, потому что единственными значениями в массиве будут x, o или число, указывающее на открытую позицию.

Повороты

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

Игра

Наконец, вы должны создать объект Game, содержащий доску и текущий ход. Но ждать! Где методы для структуры Game? Не бойтесь: это дальше.

Реализуйте игру

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

Сначала вы создаете конструкцию, вложенную в блок impl, как показано в листинге 3.

Конструкция игры

impl Game {
    pub fn new() -> Game {
        let first_row = vec![
            String::from("1"), String::from("2"),
            String::from("3")];

        let second_row = vec![
            String::from("4"), String::from("5"),
            String::from("6")];

        let third_row = vec![
            String::from("7"), String::from("8"),
            String::from("9")];

        Game {
            board: vec![first_row, second_row, third_row],
            current_turn: Turn::Player,
        }
    }
}

Статический метод new создает и возвращает структуру Game. Это стандартное имя для конструктора объекта в Rust.

Вы должны связать переменную члена правления с двумерным вектором объектов String. Вместо того, чтобы оставлять каждое место пустым, обратите внимание, что я заполнил их числом, обозначающим доступные позиции для каждого хода. Затем привяжите переменную-член current_turn к значению Turn::Player. Эта линия означает, что в каждой игре игрок ходит первым.

Как вы играете в игру?

Первый метод служит картой для программы. Вы добавляете этот метод в блок impl Game (вместе с остальными методами в этом разделе). В листинге 4 показан метод.

Карта игровой программы

pub fn play_game( self) {
    let mut finished = false;

    while !finished {
        self.play_turn();

        if self.game_is_won() {
            self.print_board();

            match self.current_turn {
                Turn::Player => println!("You won!"),
                Turn::Bot => println!("You lost!"),
            };

            finished = Self::player_is_finished();

            self.reset();
        }

        self.current_turn = self.get_next_turn();
    }
}

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

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

Обратите внимание, что это будет единственный метод pub, кроме new. Это означает, что play_game и new — единственные методы, к которым другая библиотека имеет доступ при использовании объектов Game. Все остальные методы, статические или другие, являются частными.

Изменение ситуации

Первый вспомогательный метод, используемый в методе play_game, — это play_turn. В листинге 5 показана эта изящная маленькая функция.

Функция play_turn

fn play_turn( self) {
    self.print_board();

    let (token, valid_move) = match self.current_turn {
        Turn::Player => (
            String::from("X"), self.get_player_move()),
        Turn::Bot => (
            String::from("O"), self.get_bot_move()),
    };

    let (row, col) = Self::to_board_location(valid_move);

    self.board[row][col] = token;
}

Это сложно. Сначала вы распечатываете доску, чтобы пользователь знал, какие позиции доступны (полезно, даже когда очередь бота). Затем, в зависимости от варианта current_turn, вы назначаете переменные token и valid_move, используя деконструкцию кортежа и сопоставление.

token — это строка X или O для игрока или бота соответственно. valid_move — это целое число от 1 до 9, то есть место на доске не занято. Затем эта переменная преобразуется в соответствующую строку и столбец платы с помощью статического метода to_board_location. (Self с заглавной буквой S возвращает тип self — в данном случае Game.)

Посмотрим на доску

Теперь, когда вы настроили play_turn, вам нужен метод для печати. В листинге 6 показан этот метод.

Печать игрового поля

fn print_board() {
    let separator = "+---+---+---+";

    println!("n{}", separator);

    for row in  {
        println!("| {} |n{}", row.join(" | "), separator);
    }

    print!("n");
}

В этом методе вы используете цикл for для печати ASCII-представления строк на плате. Строка временной переменной является ссылкой на каждый вектор на плате. Используя метод соединения, вы можете превратить строку в String и распечатать это новое значение с добавленным разделителем String.

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

Игрок, твоя очередь

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

Настройка очередности

fn get_player_move() -> u32 {
    loop {
        let mut player_input = String::new();

        println!(
            "nPlease enter your move (an integer between 
            1 and 9): ");

        match io::stdin().read_line( player_input) {
            Err(_) => println!(
                "Error reading input, try again!"),
            Ok(_) => match self.validate() {
                Err(err) => println!("{}", err),
                Ok(num) => return num,
            },
        }
    }
}

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

Первое выражение соответствия после приглашения пользователя пытается прочитать ввод пользователя в строку — player_input — и проверяет, возникает ли при этом ошибка. Модуль io предоставляет эту функциональность; вы должны импортировать этот модуль в начало файла game.rs. Его метод stdin(). Read_line (stdin() возвращает объект дескриптора в текущий стандартный ввод). Вот мой импорт модуля io:

use std::io;

Также важно отметить, что метод read_line, изменяя заданную строку, также возвращает перечисление с именем Result. Я не говорил о Result в своей вводной статье, поэтому коснусь его далее.

Перечисление результатов

Результат — это так называемый алгебраический тип. Это перечисление с двумя вариантами: Ok и Err. Каждый вариант может содержать данные, например String или i32.

В случае read_line возвращаемый результат является специальной версией модуля io, что означает, что Err — это особый вариант io::Error. Напротив, Ok — это то же самое, что и исходный вариант Result, и в этом случае содержит целое число, которое представляет количество прочитанных байтов. Result — это полезное перечисление, которое помогает убедиться, что вы обрабатываете все возможные ошибки во время компиляции, а не во время выполнения.

Еще одно родственное перечисление, широко распространенное в Rust, — Option. Вместо Ok и Err его вариантами являются None (который не содержит данных) и Some(который содержит). Опция полезна тем же способом, что и nullptr в C++ или None в Python.

В чем разница между Option и Result и когда их использовать? Вот мои ответы. Во-первых, если вы ожидаете, что функция ничего не вернет, используйте Option. Используйте Result для функций, которые, как вы ожидаете, всегда будут успешными, но которые могут дать сбой, а это означает, что ошибка должна быть обнаружена. Понятно? Здорово. Вернемся к методу get_player_move.

Вернуться к игре

Я остановился на чтении ввода от плеера. Если происходит ошибка чтения ввода пользователя, программа уведомляет пользователя и просит его или ее ввести другой ввод. Если ошибки не возникает, программа достигает второго выражения соответствия. Обратите внимание на использование подчеркиваний (_): они говорят Rust, что вы не привязываете данные внутри вариантов результата Ok или Err, что вы делаете во втором выражении соответствия.

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

Подтвердите свой код

Когда ядро игры написано, неплохо написать функцию проверки. В листинге 8 показан код.

Функция проверки

fn validate(, input: ) -> Resultu32, String {
    match input.trim().parse::u32() {
        Err(_) => Err(
            String::from(
                "Please input a valid unsigned integer!")),
        Ok(number) => {
            if self.is_valid_move(number) {
                Ok(number)
            } else {
                Err(
                    String::from(
                        "Please input a number, between 
                        1 and 9, not already chosen!"))
            }
        }
    }
}

Просматривая этот вывод построчно, вот суть метода.

Сначала программа возвращает перечисление Result. Я не рассматривал шаблоны типов, но в основном вы утверждаете, что вариант Ok для Result должен содержать целое число u32, а вариант Err должен содержать String. Почему результат возвращается сюда? Что ж, ожидается, что метод пройдет и выдаст ошибку только в том случае, если заданный ввод:

  • Не целое число;
  • Недействительное место из-за занятости; или
  • Недопустимое местоположение, поскольку целое число не равно 1–9.

Затем программа пытается преобразовать ввод в u32, используя метод синтаксического анализа input. Turbofish,::type — это особый аспект некоторых функций, который сообщает им, какой тип возвращать. В этом случае он одновременно сообщает синтаксическому анализатору, что нужно попытаться преобразовать ввод в u32, и устанавливает вариант Ok для результата для хранения u32. Если ввод не может быть преобразован, код возвращает ошибку, указывающую, что ввод не был целым числом без знака. Однако, если он успешно преобразован, код передает ввод через другую вспомогательную функцию: is_valid_move.

Почему есть еще одна вспомогательная функция для проверки? Из предыдущего списка возможных ошибок номер 1 специфичен для пользователя. Бот всегда будет давать целое число. Вот почему вы используете проверку только для проверки ответа игрока. is_valid_move проверяет две другие возможные ошибки.

В листинге 9 показан последний фрагмент кода проверки.

Еще немного проверки

fn is_valid_move(, unchecked_move: u32) -> bool {
    match unchecked_move {
        1...9 => {
            let (row, col) = Self::to_board_location(
                unchecked_move);

            match self.board[row][col].as_str() {
                "X" | "O" => false,
                 _ => true,
            }
        }
        _ => false,
    }
}

Достаточно просто. Если значение unchecked_move не находится в диапазоне от 1 до 9 (включительно), то это недопустимый ход. В противном случае код вынужден проверять, был ли уже сделан ход. Как и раньше в play_turn, вы преобразуете unchecked_move в соответствующую строку и столбец на доске. Затем вы можете проверить, есть ли это место на доске. Если местоположение — X или O, то ход недействителен.

К боту

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

Метод to_board_location

fn to_board_location(game_move: u32) -> (usize, usize) {
    let row = (game_move - 1) / 3;
    let col = (game_move - 1) % 3;

    (row as usize, col as usize)
}

Этот метод немного обманывает, потому что вы знаете, что когда to_board_location вызывается в validate и play_turn, аргумент game_move является целым числом от 1 до 9 (включительно). Вы устанавливаете этот метод как статический, потому что математика не связана с игровым объектом. Доска для крестиков-ноликов всегда 3×3.

чат-бот

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

Вы импортируете и устанавливаете этот крэйт rand в файле Cargo.toml с rand в качестве зависимости. В листинге 11 показан файл.

Cargo.toml

[package]
name = "tic_tac_toe"
version = "0.1.0"
authors = ["Dylan Hicks dirtgrub.dylanhicks@gmail.com"]

[dependencies]
rand = "0.4"

Поместите эту команду в начало файла game.rs над импортом io:

use rand;

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

The bot_move method

fn get_bot_move() -> u32 {
    let mut bot_move: u32 = rand::random::u32() % 9 + 1;

    while !self.is_valid_move(bot_move) {
        bot_move = rand::random::u32() % 9 + 1;
    }

    println!("Bot played moved at: {}", bot_move);

    bot_move
}

Это было безболезненно, правда?

Этот метод завершает зависимости метода play_turn. Теперь вам нужно создать метод, чтобы проверить, была ли игра выиграна.

Мы — чемпионы

Теперь вы собираетесь немного поиграться с булевой алгеброй (немного булевой алгебры).

Немного булевой алгебры

fn game_is_won() -> bool {
    let mut all_same_row = false;
    let mut all_same_col = false;

    for index in 0..3 {
        all_same_row |=
            self.board[index][0] == self.board[index][1]
             self.board[index][1] == self.board[index][2];
        all_same_col |=
            self.board[0][index] == self.board[1][index]
             self.board[1][index] == self.board[2][index];
    }

    let all_same_diag_1 =
        self.board[0][0] == self.board[1][1]
         self.board[1][1] == self.board[2][2];
    let all_same_diag_2 =
        self.board[0][2] == self.board[1][1]
         self.board[1][1] == self.board[2][0];

        (all_same_row || all_same_col || all_same_diag_1 ||
         all_same_diag_2)
}

Во время цикла for вы одновременно проверяете строки и столбцы, чтобы увидеть, выполнено ли условие выигрыша для Tic-Tac-Toe (то есть три X или O подряд). Вы делаете это с помощью | =, что похоже на + =, но вместо оператора сложения он использует оператор или. Затем вы проверяете, совпадают ли все две диагонали с одним и тем же символом. Наконец, вы возвращаете, было ли выполнено какое-либо из условий выигрыша, используя некоторую булеву алгебру. Еще три метода, и готово.

Хотели бы вы снова сыграть?

Если вы вернетесь и посмотрите на метод play_game на карте игровой программы, вы увидите, что код продолжает цикл до тех пор, пока не будет выполнено завершение. Это происходит только в том случае, если метод player_is_finished истинен. Этот метод должен быть основан на ответе игрока: да или нет (метод player_is_finished).

Метод player_is_finished

fn player_is_finished() -> bool {
    let mut player_input = String::new();

    println!("Are you finished playing (y/n)?:");

    match io::stdin().read_line( player_input) {
        Ok(_) => {
            let temp = player_input.to_lowercase();

            temp.trim() == "y" || temp.trim() == "yes"
        }
            Err(_) => false,
    }
}

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

Аппаратный сброс исправляет все

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

Метод сброса

fn reset( self) {
    self.current_turn = Turn::Player;
    self.board = vec![
        vec![
            String::from("1"), String::from("2"),
            String::from("3")],
        vec![
            String::from("4"), String::from("5"),
            String::from("6")],
        vec![
            String::from("7"), String::from("8"),
            String::from("9")],
    ];
}

Все, что делает этот метод, — это устанавливает для переменных-членов игры их значения по умолчанию.

Последний метод, который вам понадобится для завершения игры, — это get_next_turn, показанный в листинге 16.

Метод get_next_turn

fn get_next_turn() -> Turn {
    match self.current_turn {
        Turn::Player => Turn::Bot,
        Turn::Bot => Turn::Player,
    }
}

Этот метод просто проверяет, какой из автоматов включен, и возвращает обратное.

Запускаем и скомпилируем игру

Когда модуль game.rs завершен, main.rs теперь в той точке, в которой вы можете скомпилировать игру и начать играть (скомпилировать игру).

Скомпилируйте игру

mod game;

use game::Game;

fn main() {
    println!("Welcome to Tic-Tac-Toe!");

    let mut game = Game::new();

    game.play_game();
}

Вот и все. Вы только что объявили, что игровой модуль существует в этом проекте с помощью мода, и ввели объект Game в область видимости с использованием. Затем вы создали игровой объект с помощью Game::new() и сказали объекту начать игру. Теперь запустите его с помощью Cargo (Запустите игру).

Запускаем игру

  cargo run
   Compiling tic_tac_toe v0.1.0...
    Finished dev [unoptimized + debuginfo]...
     Running...
Welcome to Tic-Tac-Toe!

+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+

Please enter your move (an integer between 1 and 9):
...

Последние мысли

Как вы узнали из этого руководства, Rust — это универсальный язык, который имеет простоту использования Java, C# или Python, но скорость и мощность C или C++. Этот код не только компилируется и быстро, но и все проблемы с памятью и ошибками обрабатываются во время компиляции, а не во время выполнения, сокращая количество человеческих ошибок, возможных в коде.

Следующие шаги

Чтобы увидеть код, который я создал для этой статьи, посетите мой репозиторий GitHub.

Гайд — Руководство для начинающих. Часть 1
Гайд — Руководство для начинающих. Часть 2
Гайд — Руководство для начинающих. Часть 3

Здесь представлена сокращённая расшифровка того, о чём говорится в Руководстве для начинающих.

Это будут лаконичные видеоролики длиной в 5 минут или даже меньше. Они будут регулярно обновляться – по 2 видео каждую неделю. В случае, если Гарри внесёт изменения во что-то, о чём был снят видеоролик, я обновлю созданный ранее контент, чтобы отразить все новшества.
Следующий раздел посвящён тому, что уже было сделано.

Раздел 1: Rust. Руководство для начинающих, часть 1.

Вот ссылка на Youtube для тех, кто не хочет читать:

Далее кратко разберём то, что объясняется в первом видеоролике. Это видео поможет вам пережить первые 30 минут игры в Rust и расскажет об основных моментах, которые вам необходимо знать.

В начале вы обнаружите себя лежащим на пляже с надписью: “Нажмите любую кнопку, чтобы проснуться”. Вы заметите, что в первых двух ячейках “хотбара” вашего инструментария лежит Крафт - Факел (Torch)Факел (Torch) и Крафт - Камень (Rock) Камень (Rock). Также вы заметите, что у вас нет в буквальном смысле ничего, кроме этих двух вещей.

(Нажмите клавишу Tab, чтобы открыть свой инструментрий)

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

Гайд - Руководство для начинающих. Часть 1

С каждым ударом ваш запас ресурсов будет пополняться, что отображается в правом углу экрана. С каждым ударом камня по дереву вы получаете 10 единиц древесины, а каждый удар по скальному выступу даёт 6 единиц камня, серы или металлической руды. Однако качественной металлической руды вы получаете только по 1 единице. Вам следует взвешенно подходить к процессу сбора ресурсов, так как у вашего факела и камня есть предел прочности, который отображается в виде зелёной полосы рядом с инструментом. Как только параметр прочности доходит до нуля, инструмент выходит из строя. Я рекомендую собрать 1000 единиц древесины и 400 камня.

После того, как вы соберёте ресурсы, наступает время для того, чтобы найти место для временного обустройства. Если вы, находясь в инструментарии, посмотрите на правый верхний угол экрана, то увидите там несколько пиктограмм, однако на данный момент нас интересует только значок с изображением листа. Нажав на значок листа, выберите пункт ‘Paper’, чтобы изготовить 1 лист бумаги. Когда бумага будет готова, переходите к значку ‘Lego’ и ищите пункт ‘Building Plan’ для разработки плана здания. Занимаясь этими работами, внимательно смотрите вокруг – вы можете обнаружить так называемое “пеньковое волокно”. Каждое найденное волокно даёт вам 20 единиц ткани, в дальнейшем вам вам понадобится как минимум 30 единиц.

plan_options

После того, как вы найдёте пеньковые волокна и закончите разработку плана, наступает время, чтобы построить простую базу. С помощью левой кнопки мыши перетащите ‘Building Plan’ в “хотбар” своего инструментария. Сделав это, щёлкните правой кнопкой мыши по плану, в результате чего должно появиться меню выбора конструкций.

На появившемся экране вы сможете выбрать один из двух различных видов фундаментов, а также крыши и множество других элементов. Но сейчас просто поставьте квадратный фундамент, три стены, дверной проём и одну потолочную плиту (которая также может служить в качестве плиты для пола). Сделав это, вернитесь к пиктограмме ‘Lego’ и прокрутите список вниз, пока не найдете деревянную дверь, изготовление которой будет стоить вам 300 единиц древесины. Пока дверь создаётся, найдите пункт ‘Lock’ (замок), и изготовьте его тоже.

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

maxresdefault

Теперь, когда ваша временная база стала относительно безопасной, перейдите на значок с зонтиком (‘Umbrella’) и прокрутите список вниз, пока не найдёте спальный мешок (‘Sleeping Bag’). Спальный мешок служит в качестве точки, из которой вы вступаете в игру. Когда мешок будет готов, просто перетащите его на землю с помощью левой кнопки мыши. Наведите курсор на спальный мешок, нажмите на кнопку ‘E’ и удерживайте. При этом откроется меню, где можно переименовать спальный мешок, либо передать его другу, после чего вы сможете играть вместе.

Выполнив все эти действия, вы сможете не погибнуть в первые тридцать минут игры в Rust.

Гайд — Руководство для начинающих. Часть 1
Гайд — Руководство для начинающих. Часть 2
Гайд — Руководство для начинающих. Часть 3

Это руководство послужит вводным руководством для всех, кто плохо знаком с захватывающим и динамичным миром Rust.

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

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

Пляж Spawn

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

Эти деревья помогут вам начать создавать и наращивать свой инвентарь.

лес

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

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

Сбор ресурсов в Rust

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

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

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

Собирать дерево

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

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

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

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

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

Поднятие деревянных пней с земли дает «пятьдесят дерева» каждый, и сбор дерева также позволяет вам сохранять низкий незаметный профиль, оставаясь тихим.

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

Для изготовления каменного топора вам понадобится двести дерева и сотня камня.

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

Собрать камень

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

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

Есть несколько способов найти камень в Rust, но в этом руководстве для начинающих мы сосредоточимся только на двух самых простых методах сбора камня.

Метод 1: поиск камня на земле

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

Камень, который вы будете искать, имеет светло-серый цвет с овальной формой, найденный на земле.

Камень на пляже

Метод 2: Сбор камня из камня «Узлы»

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

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

Изготовить топор

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

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

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

Создание простой основы в ржавчине

Создав свой первый инструмент из rust, вы готовы приступить к созданию простой основы.

Помните, что цель этой игры — выжить, а строительство базы очень поможет вам в долгосрочной перспективе.

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

молоток и 2000 дерева

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

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

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

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

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

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

Встаньте на заложенный фундамент и положите три стены.

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

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

Помните, что при опускании стен вы должны стоять на фундаменте, на полу внутри основания.

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

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

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

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

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

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

Замок двери в ржавчине

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

Чтобы заблокировать дверь, вы можете снова нажать клавишу «e», чтобы взаимодействовать с любым объектом, на котором появится запрос блокировки.

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

дверь и замок

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

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

Расслабляться на этом этапе — не лучшая идея.

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

Изготовить спальный мешок и шкаф для инструментов

На шкаф для инструментов потребуется тысяча дерева

Для спального мешка потребуется сто дерева и тридцать ткани.

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

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

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

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

Если вы снова встретите эти семена, используйте клавишу «e», чтобы взаимодействовать с этими объектами, чтобы получить их.

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

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

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

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

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

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

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

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

Основание каменной стены

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

Улучшение каменной стены

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

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

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

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

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

Улучшите свой фундамент, три построенные вами укрепленные деревянные стены, деревянный дверной проем и фундаментный потолок, построенный вами ранее.

Ржавый шлюз

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

Почему это важно?

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

Затем эти туристы могут убить вас любым оружием и приступить к краже всех ваших драгоценных ресурсов, на сбор которых вы потратили столько времени.

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

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

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

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

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

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

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

Дверь из листового металла из ржавчины

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

Вам нужно будет собирать металлическую руду, чтобы построить эти стальные стены.

Металлическую руду можно найти в породах более красноватого цвета или с оттенком «ржавчины».

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

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

Сделать печь

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

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

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

Собирать животный жир

Вы можете получить животный жир, убивая животных (очевидно) или убивая людей.

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

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

Список убитых животных жиров:

  • Человеческий 1-2 жир
  • Волк 10 жирный
  • Лошадь 10 жирных
  • Олень 10 жир
  • Кабан 39-41 жир
  • Медведь 100 жирный

Один совет при сборе жира — не упускать из виду кабана.

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

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

Печь с металлическими фрагментами

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

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

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

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

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

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

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

Используйте все эти начальные техники изготовления в своих интересах.

Заключительные примечания

В конце концов, помните, что Rust — это напряженная и насыщенная действиями игра на выживание, в которой другие могут убить вас в одно мгновение.

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

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

Не бойтесь использовать это руководство в своих интересах.

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

Держите голову поднятой, глаза открытыми и приготовьтесь к первому опыту работы с Rust!

Мы надеемся, что это руководство было достаточно полезным для всех, кто не разбирался в основах Rust.

Веселитесь там!

Понравилась статья? Поделить с друзьями:
  • Кальций д3 никомед для женщин инструкция
  • Скачать 151 инструкцию по тормозам с изменениями на 2021
  • Стенд ки 921м инструкция по эксплуатации
  • Инструкция по охране труда для кладовщика на производстве
  • Эдем таблетки от аллергии цена инструкция