Перейти к содержимому

Для чего нужны компоненты в расте

  • автор:

Система компонентов

Система Компонентов

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

  • Все известные чертежи будут открыты сразу. Открывать что-то не понадобится.
  • Для крафта некоторых предметов будут необходимы уникальные компоненты, которые нельзя будет скрафтить, а только найти на карте.
  • Респавн всех игроков на карте будет в южной части.
  • Компоненты можно будет найти на карте по принципу «чем севернее, тем дороже и круче компоненты». Соответственно более высокотехнологичные вещи с их помощью можно будет крафтить. Таким образом, по мнению разработчиков, прогресс игроков будет связан с миграцией на север.
  • Список известных на данный момент компонентов и их названия:

propanetank
sheetmetal

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

Если вы заметили ошибку в статье или обладаете уникальной информацией по теме и хотите ей поделиться, пишите в комментариях или администратору на почту admin@rustnews.ru.

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

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

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

Список компонентов

Шестерни (Gears)

Шестерни (Gears)

Металлическое лезвие (Metal Blade)

Металлическое лезвие (Metal Blade)

Металлическая труба (Metal Pipe)

Металлическая труба (Metal Pipe)

Металлическая пружина (Metal Spring)

Металлическая пружина (Metal Spring)

Верёвка (Rope)

Верёвка (Rope)

Набор для шитья (Sewing Kit)

Набор для шитья (Sewing Kit)

Дорожные знаки (Road Signs)

Дорожные знаки (Road Signs)

Корпус пистолет-пулемёта (SMG Body)

Корпус пистолет-пулемёта (SMG Body)

Корпус винтовки (Rifle Body)

Корпус винтовки (Rifle Body)

Брезент (Tarp)

Брезент (Tarp)

Старые микросхемы (Tech Trash)

Старые микросхемы (Tech Trash)

Баллон из-под пропана (Empty Propane Tank)

Баллон из-под пропана (Empty Propane Tank)

Корпус полуавтомата (Semi Automatic Body)

Корпус полуавтомата (Semi Automatic Body)

Листовой металл (Sheet Metal)

Листовой металл (Sheet Metal)

Переработчик (Recycler)

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

Переработчик

Локации переработчика

Тарелки (Satellites)

ТарелкиТарелки

Маяк (Lighthouse)

ltМаяк

Сортировочная (Train Yard)

Train YardTrain Yard

Водоочистная станция (Water Treatment)

Водоочистная станцияВодоочистная станция

АЭС (Nuclear Plant)

Nuclear PlantNuclear Plant

Склад (Warehouses)

СкладСклад

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

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

Компоненты и сущности

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

Определение компонентов

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

Достаточно очевидно, что компонент позиции будет хранить координаты x, y и z, которые скажут нам о положении чего-либо на карте. В компоненте отображения мы будем хранить строковый путь, указывающий на изображение, которое мы сможем отрисовать. Все остальные компоненты — маркерные, не содержащие (пока что) данных.

 #![allow(unused)] fn main()  #[derive(Debug, Component, Clone, Copy)] #[storage(VecStorage)] pub struct Position < x: u8, y: u8, z: u8, >#[derive(Component)] #[storage(VecStorage)] pub struct Renderable < path: String, >#[derive(Component)] #[storage(VecStorage)] pub struct Wall <> #[derive(Component)] #[storage(VecStorage)] pub struct Player <> #[derive(Component)] #[storage(VecStorage)] pub struct Box <> #[derive(Component)] #[storage(VecStorage)] pub struct BoxSpot <> > 

Вместе с уже знакомым кодом на Rust тут мы видим новый синтаксис. Здесь, в #[storage(VecStorage)] , мы используем могущественную особенность Rust — процедурные макросы . Макросы этого типа по сути являются функциями, которые во время компиляции принимают один синтаксис и производят из него другой.

ЕЩЁ: Узнать больше о процедурных макросах вы можете здесь.

Регистрация компонентов

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

 #![allow(unused)] fn main()  pub fn register_components(world: &mut World) < world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); > > 

Создание сущностей

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

Теперь создание сущностей выглядит так:

 #![allow(unused)] fn main()  pub fn create_wall(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 10, ..position >) .with(Renderable < path: "/images/wall.png".to_string(), >) .with(Wall <>) .build(); > pub fn create_floor(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 5, ..position >) .with(Renderable < path: "/images/floor.png".to_string(), >) .build(); > pub fn create_box(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 10, ..position >) .with(Renderable < path: "/images/box.png".to_string(), >) .with(Box <>) .build(); > pub fn create_box_spot(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 9, ..position >) .with(Renderable < path: "/images/box_spot.png".to_string(), >) .with(BoxSpot <>) .build(); > pub fn create_player(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 10, ..position >) .with(Renderable < path: "/images/player.png".to_string(), >) .with(Player <>) .build(); > > 

Ресурсы

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

Floor tile Wall tile Player tile Box tileBox tile

Давайте добавим изображения в наш проект. Мы создадим директорию resources , которая будет содержать все наши ресурсы. На данный момент у нас будут только изображения, но в будущем появятся другие типы ресурсов, такие как конфигурационные файлы или аудио (об этом мы узнаем в главе 3.3 — Звуки и события). Мы также добавим директорию images и поместим туда наши изображения. Если хотите — можете использовать другую структуру каталогов, но будьте внимательны в дальнейшем везде, где мы используем пути к изображениям.

├── resources │ └── images │ ├── box.png │ ├── box_spot.png │ ├── floor.png │ ├── player.png │ └── wall.png ├── src │ └── main.rs └── Cargo.toml 

Создание мира

Наконец, соберём всё вместе. Мы должны создать объект specs::World , чтобы добавить его в структуру Game . Он будет первым, что мы инициализируем в нашем main . Ниже находится полный код, который при запуске выведет то же самое пустое окно — но мы сделали огромный прогресс в настройке игровых компонентов и сущностей! Далее мы перейдём к отрисовке, чтобы наконец увидеть что-то на экране!

// Rust sokoban // main.rs use ggez::; use specs::; use std::path; // Components #[derive(Debug, Component, Clone, Copy)] #[storage(VecStorage)] pub struct Position < x: u8, y: u8, z: u8, >#[derive(Component)] #[storage(VecStorage)] pub struct Renderable < path: String, >#[derive(Component)] #[storage(VecStorage)] pub struct Wall <> #[derive(Component)] #[storage(VecStorage)] pub struct Player <> #[derive(Component)] #[storage(VecStorage)] pub struct Box <> #[derive(Component)] #[storage(VecStorage)] pub struct BoxSpot <> // This struct will hold all our game state // For now there is nothing to be held, but we'll add // things shortly. struct Game < world: World, >impl event::EventHandler for Game < fn update(&mut self, _context: &mut Context) ->GameResult < Ok(()) >fn draw(&mut self, _context: &mut Context) -> GameResult < Ok(()) >> // Register components with the world pub fn register_components(world: &mut World) < world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); > // Create a wall entity pub fn create_wall(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 10, ..position >) .with(Renderable < path: "/images/wall.png".to_string(), >) .with(Wall <>) .build(); > pub fn create_floor(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 5, ..position >) .with(Renderable < path: "/images/floor.png".to_string(), >) .build(); > pub fn create_box(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 10, ..position >) .with(Renderable < path: "/images/box.png".to_string(), >) .with(Box <>) .build(); > pub fn create_box_spot(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 9, ..position >) .with(Renderable < path: "/images/box_spot.png".to_string(), >) .with(BoxSpot <>) .build(); > pub fn create_player(world: &mut World, position: Position) < world .create_entity() .with(Position < z: 10, ..position >) .with(Renderable < path: "/images/player.png".to_string(), >) .with(Player <>) .build(); > pub fn main() -> GameResult < let mut world = World::new(); register_components(&mut world); // Create a game context and event loop let context_builder = ggez::ContextBuilder::new("rust_sokoban", "sokoban") .window_setup(conf::WindowSetup::default().title("Rust Sokoban!")) .window_mode(conf::WindowMode::default().dimensions(800.0, 600.0)) .add_resource_path(path::PathBuf::from("./resources")); let (context, event_loop) = context_builder.build()?; // Create the game state let game = Game < world >; // Run the main event loop event::run(context, event_loop, game) > 

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

КОД: Увидеть весь код из данной главы можно здесь.

Для чего нужны компоненты в расте

VECBEY [создатель] 19 июн. 2018 в 11:56

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

VECBEY [создатель] 19 июн. 2018 в 11:56

@jestkiyruster,
1. Забивать руководство тупыми пруфами не буду. Я хочу чтобы руководство было удобным и правильным. Если в руководстве найдена ошибка, всегда можно указать на неё и я её исправлю как можно быстрее.

Руководство по системе компонентов Rust

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

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

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

Шестерни

Шестерни, необходимые для создания безопасных баз, карьеров или арбалетов, являются одним из основных компонентов.

Объединяются в наборы по
20

Металлические лезвия

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

Объединяются в наборы по
20

Металлические трубы

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

Объединяются в наборы по
20

Металлические пружины

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

Объединяются в наборы по
20

Верёвка

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

Объединяются в наборы по
50

Наборы для шитья

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

Объединяются в наборы по
20

Дорожные знаки

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

Объединяются в наборы по
20

Ствольные коробки для винтовок

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

Объединяются в наборы по
10

Ствольные коробки пистолетов-пулемётов

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

Объединяются в наборы по
10

Ствольные коробки для полуавтоматического оружия

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

Объединяются в наборы по
10

Брезент

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

Объединяются в наборы по
20

Технологический мусор

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

Редкость
РедкиеНаходятся в
ЯщикахОбъединяются в наборы по
50Пройдя через Переработчик, дают
4–5 единицы высококачественного металла
Используется для
Взрывчатки C4 (3)
Коллиматорных прицелов (2)
Лазерных прицелов (1

Пустые пропановые баллоны

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

Листовой металл

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

Объединяются в наборы по
5

Переработчик (Recycler)

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

efdewwefdwedf

Места, где можно обнаружить переработчик

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

ssxa1 sat

Маяк

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

12edqewcdvwf21 asdsdsdd1dw

Депо

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

mji87ujkl 12ewdcf12fcwd

Водоочистные сооружения

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

dmnhywjdyewuk2 6yhnbghui

Атомные электростанции

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

9ijhujkiu1 qwndhq1

Склады

Переработчик также можно найти на складах по всей карте.

98iujku2112 7812uei12e

Похожие записи:

  1. Видео гайд – постройка дома
  2. Плагин ServerInfo
  3. Полезные консольные команды Rust
  4. Плагин RemoverTool для Rust

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

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