на каком движке раст 2020

Компьютер для Rust

Rust – это многопользовательский симулятор выживания. Разработкой занималась британская студия Facepunch Studios. Релиз состоялся в 2018 году, а продавалась игра в Early Access c 2014 года.

Через год после удачного старта продаж разработчики решили перенести свой проект на более современный движок Unity. Только к 2020 году игра действительно стала более комфортной и гораздо играбельнее.

Начиная с самого старта продаж, игра получила колоссальную популярность как для проекта такого жанра. Огромное достижение в том, что она смогла не растерять ее за время своей жизни. На данный момент она входит в 10 самых популярных игр на площадке Steam, уступая лишь таким гигантам как CS:GO, Dota 2, PUBG, GTA 5, Tom Clancy’s Rainbow Six Siege, Destiny 2, Team Fortress 2 и Monster Hunter: World. В результате Rust занимает 9 место по количеству уникальных игроков, являясь абсолютным чемпионом в своем жанре.

Геймплей

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

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

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

Графика

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

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

Системные требования

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

Низкая оптимизация – главный костыль, запас по производительности нужен около 20-30%. Если выбирать из современных комплектующих, то такой проблемы уже нет, последние серии процессоров и видеокарт спокойно справляются с игрой даже на максимальных настройках.

Минимальные

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

Рекомендуемые

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

Реальные

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

Максимальные

FullHD плавно вымирает, и ему на смену приходят 2К и широкоформатные мониторы с вертикальной разверткой от 1440 пикселей. Чтобы обеспечить на них комфортные 90+ FPS, нужно мощное оборудование. Такой комплект превосходит в несколько раз системные требования для Rust, но это оптимальная сборка для игры на большом мониторе, вне зависимости, широкоформатный он или обычный 16:9 с вертикальной разверткой 1440 пикселей.

Как выбрать компьютер для Rust

Основным костылем игры является плохая оптимизация. Для любого проекта на Unity вам потребуется мощный процессор и много оперативной памяти. При скромном размере игры, всего 20 Gb, загрузки сервера очень долгие, SSD и Gigabyte Ethernet помогут избавиться от этой проблемы.

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

Видеокарта

Чтобы помочь вам определиться с выбором, мы собрали в таблицу результаты тестирования компьютеров с разными видеокартами NVIDIA GeForce RTX на FullHD и 2К разрешении. Колонки с тестированием 4К нет, так как в игре нет поддержки текстур HD разрешения. А значит, картинка на 4К лучше не станет, так зачем ее вообще включать, тем более что производительность падает в разы?

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

Кадров в секунду1920×1080 (FullHD)2560X1440 (QuadHD)
RTX 2080 Ti144+112
RTX 2080 SUPER12698
RTX 208011889
RTX 2070 SUPER10785
RTX 20709373
RTX 2060 SUPER8767
RTX 20607858

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

Процессор

Современные камушки без проблем справляются с любыми играми на движке Unity.

Оперативная память

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

Согласно требованиям Rust, оптимальный объем памяти для компьютера на 2020 год – 16 Gb. Если вы планируете играть в VR игры, стримить и записывать видео, то лучше иметь на борту 32 Gb.

Частота памяти определяет ее скорость, чем больше частота – тем быстрее будет работать игра и программы. В DDR4 верхний предел 4266 МГц, но он редко используется в настольных ПК, оптимальная частота – 3200 МГц, это игровая память с повышенным быстродействием.

Накопитель

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

SSD бывают двух видов по типу подключения – классический SATA и m.2. m.2 SSD крепятся напрямую к материнской плате без проводов, что позволяет увеличить в несколько раз скорость передачи данных. Топовые модели Samsung и Kingston могут развивать скорость чтения/записи до 3,5 Gb/s, что в 7 раз выше, чем у любого SATA девайса.

Источник

«Rust — будущее системного программирования, С — новый Ассемблер» — выступление одного из ведущих инженеров Intel

На недавно прошедшем Саммите по технологиям с открытым исходным кодом (Open Source Technology Summi — OSTS) Джош Триплетт (Josh Triplett), ведущий инженер Intel, рассказал о том, что его компания заинтересована в том, чтобы в ближайшем будущем Rust достиг «паритета» со всё ещё доминирующим в области системной и низкоуровневой разработки языком C. В своём выступлении под заголовком «Intel и Rust: будущее системного программирования» он также рассказал об истории системного программирования, о том, как C стал языком системного программирования «по умолчанию», какие возможности Rust дают ему преимущество над C и как в ближайшем будущем он сможет полностью заменить C в данной области программирования.

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

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

Сам Триплетт определяет системное программирование как «всё, что не является приложением». Оно включает в себя такие вещи, как BIOS, прошивки, загрузчики и ядра операционных систем, различные виды встроенного низкоуровневого кода, а также реализации виртуальных машин. Интересно, что Триплетт считает, что веб-браузер — это тоже системное программное обеспечение, поскольку браузер давно стал бóльшим, чем «просто программой», превратившись в самостоятельную «платформу для веб-сайтов и веб-приложений».

В прошлом большинство системных программ, в том числе BIOS, загрузчики и прошивки, писались на языке ассемблера. В 1960-х годах начались эксперименты по обеспечению аппаратной поддержки языков высокого уровня, что привело к созданию таких языков, как PL/S, BLISS, BCPL и ALGOL 68.

Затем, в 1970-х годах, Деннис Ритчи (Dennis Ritchie) создал язык программирования C (Си) для операционной системы Unix. Созданный на языке программирования B, не имевшим даже поддержки типизации, C был наполнен мощными высокоуровневыми функциями, которые лучше всего подходили для написания операционных систем и драйверов. Несколько компонентов UNIX, включая его ядро, были в конечном итоге переписаны на C. В дальнейшем многие другие системные программы, включая базу данных Oracle, большую часть исходного кода Windows и операционную систему Linux, были также написаны на C.

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

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

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

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

Триплетт на конференции Rustconf 2019, проходившей в Портленде

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

«Любой язык, который хочет быть лучше, чем C, должен предлагать гораздо больше, чем просто защиту от переполнения буфера, если он действительно хочет стать убедительной альтернативой. Разработчики заинтересованы в удобстве использования и производительности, в написании кода, который не требует пояснений и выполняет больше работы за меньшее количество строк. Также необходимо решить проблемы безопасности. Простота использования и производительность неразрывно с нею связаны. Чем меньше кода вам нужно написать для достижения чего-либо, тем меньше у вас возможностей, чтобы допустить какие-либо ошибки, связанные с безопасностью или нет», — объясняет Триплетт.

Сравнение Rust и C

Ещё в 2006 году Грейдон Хоар (Graydon Hoare), сотрудник Mozilla, начал писать Rust как личный проект. А в 2009 году Mozilla начала спонсировать разработку Rust для собственных нужд, а также расширила команду для дальнейшего развития языка.

Одна из причин, по которой Mozilla заинтересовалась в новом языке, заключается в том, что Firefox был написан на более чем 4 миллионах строк кода C++ и имел довольно много критических уязвимостей. Rust был создан с учетом требований безопасности и параллелизма, что делает его идеальным выбором для переписывания многих компонентов Firefox в рамках проекта Quantum по полной переработке архитектуры браузера. Также Mozilla использует Rust для разработки Servo, движка рендеринга HTML, который в будущем заменит текущий движок рендеринга Firefox. Многие другие компании начали использовать Rust для своих проектов, включая Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu и многие другие.

Rust решает одну из наиболее важных проблем языка C. Он предлагает автоматическое управление памятью, поэтому разработчикам не нужно вручную выделять, а затем освобождать её для каждого объекта в приложении. Что отличает Rust от других современных языков, так это то, что он не имеет сборщика мусора, который автоматически удаляет из памяти неиспользуемые объекты, а также среды выполнения, необходимой для его работы, как, например, Java Runtime Environment для Java. Вместо этого у Rust есть концепции владения, заимствования, ссылок и времени жизни. «В Rust есть система декларирования вызовов объекта, позволяющая указать, использует ли его владелец или это просто заимствование. Если вы просто заимствуете объект, компилятор будет следить за этим и гарантировать, что оригинал останется на месте, пока вы ссылаетесь на него. А также Rust проследит, что объект будет удалён из памяти сразу по завершении его использования, вставляя соответствующий вызов в код во время компиляции без дополнительных затрат времени», — рассказывает Триплетт.

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

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

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

Триплетт собирается создать специальную рабочую группу, которая займётся внедрением в Rust необходимых функцией, чтобы он смог полностью сравняться, превзойти и заменить C в области системного программирования. В теме на Reddit, посвящённой его выступлению, он сообщил, что «группа FFI/ C Parity находится в процессе создания и ещё не начала работу», пока что он готов ответить на любые вопросы, а в будущем обязательно опубликует ближайшие планы по развитию Rust в рамках его инициативы для всех заинтересованных лиц.

Можно предположить, что в первую очередь группа FFI/ C Parity займётся улучшением поддержки многопоточности в Rust, внедрением поддержки BFLOAT16, формата представления чисел с плавающей запятой, который появился в новых процессорах Intel Xeon Scalable, а также стабилизацией вставок кода на Ассемблере.

Источник

Разработка игр на Rust. Обзор экосистемы

Здравствуйте! Я занимаюсь разработкой игры на Rust и хочу рассказать об этом.

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

Небольшое отступление — зачем всё это? Есть же готовый X?

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

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

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

С Rust же всё пошло куда веселее.

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

мощная, но при этом простая система типов;

абстракции бесплатны по перфомансу — не надо платить за те абстракции, которые не используешь в явном виде;

И при этом на нём очень просто писать код, язык маленький и простой.

Вернусь к экосистеме:

Работа с окнами:

Glutin — раст-альтернатива GLFW, используется в Servo, активно развивается. Создаёт окна на win/osx/linux/android. На ios еще не работает, кто-то хотел сделать, но с 2015 об этом желающем не слышно.

И есть биндинги к не-растовым библиотекам: glfw-rs rust-sdl2 rust-sfml (сайт). Все три живы и поддерживаются.

Графические API:

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

Glium — безопасная обёртка над OpenGL, по факту — в основном над OpenGL 3, хорошо поддерживаются OpenGL

Источник

Пять лет Rust

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

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

Основные изменения с версии 1.0

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

1.3 — The Rustonomicon: наш первый выпуск фантастической книги «The Rustonomicon», книги, которая исследует тёмную сторону языка Rust, Unsafe Rust и смежные темы. Она стала прекрасным источником сведений для любого, кто хочет изучить и понять самые трудные аспекты языка.

1.4 — Поддержка Windows MSVC уровня 1: продвижение платформы на уровень поддержки 1 принесло нативную поддержку 64-битной Windows с инструментарием Microsoft Visual C++ (MSVC). До 1.4 вам нужно было устанавливать MinGW (порт окружения GNU под Windows) чтобы использовать и компилировать ваши программы на Rust. Поддержка Windows стала одним из самых больших улучшений Rust за эти пять лет. Лишь недавно Microsoft анонсировала публичный пре-релиз официальной поддержки Rust для WinRT API! И наконец, сейчас стало значительно легче строить высококачественные и кроссплатформенные приложения, нежели это было когда-либо ранее.

1.5 — Cargo Install: добавлена поддержка возможности сборки исполняемых файлов с помощью компилятора Rust вместе с поддержкой предустановленных дополнений cargo породило целую экосистему приложений, утилит и инструментов для разработчиков, которые сообщество обожает и от которых зависит. Cargo теперь поддерживает довольно много команд, которые сначала были просто плагинами, сделанными участниками сообщества и выложенными на crates.io!

1.6 — Libcore: libcore — это подмножество стандартной библиотеки, содержащее только API, которое не требует функций выделения памяти или функций уровня операционной системы. Стабилизация libcore позволила компилировать Rust без выделения памяти или зависимости от операционной системы, что стало одним из первых основных шагов к поддержке Rust для разработки встраиваемых систем.

1.10 — Динамические библиотеки с C ABI: крейт типа cdylib компилируется в динамическую библиотеку с C-интерфейсом, что позволяет встраивать проекты Rust в любую систему, которая поддерживает ABI языка C. Некоторые из самых больших историй успеха Rust среди пользователей — это возможность написать небольшую критическую часть системы на Rust и легко интегрировать в большую кодовую базу. И теперь это стало проще, чем когда-либо.

1.12 — Cargo Workspaces: позволяют организовать несколько проектов Rust и совместно использовать один и тот же lock-файл. Рабочие пространства были неоценимы при создании крупных многоуровневых проектов.

1.14 — Rustup 1.0: Rustup — это менеджер инструментальных средств. Он позволяет беспрепятственно использовать любую версию Rust или любой его инструментарий. То, что начиналось как скромный скрипт, стало тем, что персонал по эксплуатации нежно называет «химера». Возможность обеспечить первоклассное управление версиями компилятора в Linux, macOS, Windows и десятке целевых платформ была мифом ещё пять лет назад.

1.17 — Rustbuild: одним из самых больших улучшений для наших контрибьюторов в разработке языка стал переход от начальной системы сборки на основе make на использование Cargo. Благодаря этому участникам и новичкам rust-lang/rust стало намного проще создавать и вносить свой вклад в проект.

1.20 — Ассоциированные константы: ранее константы могли быть связаны только с модулем. В 1.20 мы стабилизировали ассоциативные константы для структур, перечислений и, что важно, для типажей. Это упростило добавление богатых наборов предустановленных значений в типы вашего API, таких как общие IP-адреса или использующиеся числовые константы.

1.24 — Инкрементальная компиляция: до версии 1.24, когда вы вносили изменения в библиотеку, компилятору приходилось перекомпилировать весь код. Теперь он стал намного умнее в плане кэширования, насколько это было возможно, и ему нужно только заново перегенерировать изменения.

1.26 — impl Trait : добавление impl Trait дало вам выразительные динамические API с преимуществами и производительностью
статической диспетчеризации.

1.31 — 2018 редакция: выпуск 2018 редакции стал нашим самым большим выпуском языка после версии 1.0, добавив изменения синтаксиса и улучшения в код на Rust, написанного полностью обратно совместимым образом. Это позволяет библиотекам, созданным с разными редакциями, беспрепятственно работать вместе.

1.34 — Альтернативный реестр крейтов: поскольку Rust всё больше и больше используется в производстве, возникает большая потребность в возможности размещении и использовании проектов в приватных пространствах. Вместе с этим в Cargo всегда разрешены зависимости из git-репозиториев. С помощью альтернативных реестров ваша организация может легко создать и делиться своим собственным реестром крейтов, которые можно использовать в ваших проектах, как если бы они были на crates.io.

1.39 — Async/Await: стабилизация ключевых слов async / await для обработки Future была одной из главных вех в превращении асинхронного программирования в «объект первого класса» Rust. Уже через шесть месяцев после его выпуска, асинхронное программирование превратилось в разнообразную и производительную экосистему.

Диагностики и ошибки

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

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

Источник

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

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