И така, сайтът има чудесна мрежа. Но в него само няколко реда са посветени на стартирането и конфигурирането на сървъра.
Ще се опитам да помогна на потребителите, които биха искали да играят на техния локал сървърс приятели и със собствените си настройки. В тази кратка статия ще се опитам да покажа целия процес: от инсталирането на сървъра до конфигурирането му, включително използването на модове.

1. Първото нещо, от което се нуждаем, е да преминем към работа на Rust през мрежата и Изтеглиархив, съдържащ всички необходими инструментии разархивирайте на произволно място.

2. Сега нека да преминем към инсталация. Стартирайте файла Update-Rust-Server.batот папка SteamCMDи изчакайте, докато нашият сървър се изтегли. Сървърите ще бъдат заредени в папката RustServer.

Всичко, инсталирахме сървъра, преминете към следващите стъпки.

3. Сега ще го направим стартирайте сървъра, персонализирайте го и поканете приятели. За да се свържете към създадения сървър, изпълнете следните стъпки:

Отивам в папката SteamCMDи стартирайте файла Стартирайте-Rust-Server.bat(Това е той, не Rust_server). За да стартирате експерименталния Rust сървър, стартирайте файла Изпълнете-Rust-Exp-Server.bat
- След стартиране командният ред ще съдържа редове с информация за изтеглянето, чакаме момента, в който се появи надписът "инициализиран сървър".
- Всичко, сървърът работи.
- Сега, за да влезем в сървъра, трябва да разберем адреса на нашия сървър. Класически вариант -
- Запишете вашия ip някъде в текстов файл(да не се забравя).
- След това стартирайте играта и натиснете клавиша F1 (конзола) и въведете там командата net.connect Вашият ip: 28015 (където Your ip е вашият ip, който сте научили предварително). На теория също трябва да е 127.0.0.1.

Ако всичко е направено правилно, ще се свържете с вашия сървър. За да могат приятелите да се свързват с вас, разбира се е необходимо сървърът да работи на компютъра ви и вашите приятели да въведат правилно командата за свързване, която им казвате.
Сега можете да започнете да играете. НО! Правилното изпълнение на всички действия в някои случаи не може да ви гарантира успех. Тъй като има много причини, поради които може да не успеете. Решението на най-често срещаните проблеми е написано в.

4. Е, сега, ако всичко се е получило за вас и ви е харесало, можете да си поиграете настройки на сървъра.
Например в последна актуализацияразработчиците добавиха това интересно нещокак износването на оръжията (веднага си спомних една серия мъртъв остров), както и износване на облекло и оборудване.
Това не устройваше мнозина и ето възможността да деактивирате тази функция.

За целта са ви необходими:
> Влезте в сървъра с администраторски права. За да направите това, отворете конзолата в играта с клавиша F1 и въведете командата Rcon.login вашата парола (вашата парола е зададена във файла server.cfg и по подразбиране изглежда като 123456). След влизане трябва да се появи надпис (в конзолата) "влязъл като администратор",което означава, че сте влезли като администратор. Сега въведете командите:
- За да деактивирате износването на дрехи: conditionloss.armorhealthmult "0.0"
- За да деактивирате износването на оръжие/инвентар: conditionloss.damagemultiplier "0.0"

С помощта на различни модификации можете също да деактивирате или активирате различни неща. Например, деактивирайте дезинтеграцията на сървъра или коригирайте интервала на полета за самолети. В мрежата вече има както достъпни, така и не много достъпни модове. Препоръчвам да използвате безплатен мод магма,поради лекотата на персонализиране и голям брой добавки.

Оптимизацията на играта на Rust е просто „безполезна“, което създава известни трудности по време играза някои потребители. В някои случаи дори мощен компютърне могат да се справят с преките си задължения, а именно да осигурят отлична картина без забавяне в интерфейса „ръжда“. Разбира се, благодарение на някои манипулации, можете леко да увеличите fps в играта, но това се прави най-добре чрез въвеждане на различни видове команди в реда на конзолата, които деактивират конкретни ефекти. Но как си го представяте? Всеки път, когато се свързвате със сървъра, въведете около 30 команди в конзолата - това е колко време ще бъде загубено ... Но има изход и това е конфигурационният файл за Rust, в който можете да въведете всички тези команди , и просто го поставете в специална директория.

Но откъде мога да взема този cfg за Rust? Всъщност има два начина да го получите. Можете да направите следното...

Създаване на конфигурация за играта Rust

1. Отидете в основната директория на играта.
2. Намерете папката CFG там.
3. Намерете два файла в него: client.cfg и config.cfg.
4. Ако няма такива, просто трябва да създадете нови и да ги наименувате по съответния начин.
5. Въведете тук подходящите команди за , сенки, вятър и т.н.

И можете да го направите по различен начин.

Изтеглете cfg за играта

1. Можете да изтеглите готовата конфигурация на Rust (с всички необходими команди) директно от нашия уебсайт, тук.
2. Копирайте двата файла от архива в съответната директория (посочена в първия метод).
3. Ако тези файлове вече са там, копирайте със замяна, ако не, просто поставете.

По принцип няма значение по кой път ще тръгнеш. След това само:

Влезте в играта
Кликнете върху раздела "Опции".
Премахнете отметката от "Water Reflectins" и "VSync"
И дръпнете плъзгача "Render Quality" докрай наляво

Трябва да се отбележи, че конфигурацията на Rust е много положително засегната, дори можете да кажете, че конфигурацията на Rust (разбира се, правилно конфигурирана) ще донесе много повече полза от допълнителните 512 MB видео памет.

В предишните статии от поредицата беше направен общ преглед на езика за програмиране Rust, бяха обсъдени основите на синтаксиса: най-простите компоненти (променливи, прости типове данни, оператори и разширения), контролни конструкции и съставни структури от данни, функции и бяха описани деструктори. Особено внимание беше обърнато на модела на паметта като цяло, концепцията за собственост на обекта, основни принципиуправление на паметта, използване на собствени и управлявани блокове споделена памет, както и заимствани указатели. Тази статия обсъжда входно/изходните средства на езика Rust.

Във всеки език за програмиране I/O подсистемата е важна интегрална част. Някои от най-простите средства за работа със стандартен изход вече са използвани в предишни статии ( print , println ). Тези функции са интуитивни и не създават никакви затруднения в процеса на тяхното прилагане. Ето защо сега ще се съсредоточим основно върху средствата за получаване на въведени от потребителя данни и върху инструментите за работа с файлове.

1. Модулът std::io

В Rust всички I/O съоръжения са събрани в модул io.

Характеристиките Четящ и Писащ определят минимален набор от най-много прости методивход и изход. Характеристиките ReaderUtil и WriterUtil предлагат по-широк избор от методи, които дават на потребителя повече контрол върху въвеждането и извеждането. Например Reader ви позволява да четете само определен брой байтове в буфер, докато ReaderUtil предлага методи за четене на цял ред, множество редове, числови стойности и т.н. Освен това има реализация (имплементация) на ReaderUtil за , което позволява достъп до всички методи на Reader.

Една характеристика описва набор от методи, които могат да бъдат приложени към определен тип или към множество типове. Чертите ще бъдат разгледани по-подробно в следващите статии от тази серия.

Както бе споменато по-горе, най-често използваните функции print() и println() също са дефинирани в модула io, но в повечето случаи не е необходимо изрично да ги импортирате, тъй като системата за компилиране и свързване вече се е погрижила за това.

Освен това много полезни функции stdin(), stdout() и stderr(), които връщат указатели към трите стандартни файлови дескриптора: съответно стандартен вход, стандартен изход и стандартна грешка.

2. Получаване на данни от потребителя

Във всеки случай най-много по прост начинполучаването на данни от потребителя е да използвате функцията stdin(), която създава указател към обекта @Reader, който ви позволява да четете данни от стандартния входен поток (съществуват подобни функции за стандартния изходен поток - stdout() , като както и за стандартния поток от грешки - stderr()). След като указателят @Reader е създаден, можете да използвате функцията read_line(), за да прочетете въведеното от потребителя, както е показано в листинг 1.

Листинг 1. Четене на въведени от потребителя
fn main() ( let stdin = std::io::stdin(); print("Как се казваш?"); let name_str = stdin.read_line(); println(fmt!("Радвам се да се запознаем, %s) \ n", name_str)); )

В характеристиката ReaderUtil, в допълнение към прости функциичетене на байтове и единични редове също дефинира богат набор от инструменти за четене на данни при различни условия: четене на байтове до срещане на знак за край на файла - read_until(), четене на низ, написан в C-стил (с нулев завършващ знак ) - read_c_str() , четене на целия поток от данни - read_whole_stream() , четене на всички редове от потока от данни - read_lines() , както и голям набор от функции, които ви позволяват да четете числови стойности, както цели числа, така и с плаваща запетая.

3. Четене на данни от файл

В модула се намират и всички необходими инструменти за работа с файлове std::io. На първо място, трябва да обърнете внимание на следните функции:

fn FILE_reader(f: *libc::FILE, почистване: bool) -> @Reader fn FILE_writer(f: *libc::FILE, почистване: bool) -> @Writer fn file_reader(path: &Path) -> Резултат<@Reader, ~str>fn file_writer(път: &Път, флагове: &) -> Резултат<@Writer, ~str>fn mk_file_writer(път: &Път, флагове: &) -> Резултат<@Writer, ~str>

Опциите FILE_* четат и записват файлове в стил C, докато опциите file_* са предназначени да се използват в стил Rust. Тъй като първите две функции очевидно играят ролята на помощни инструменти за конкретни задачи и освен това се разглежда езикът Rust, трябва да се предпочита Rust-style. Следователно само функциите file_reader и file_writer ще бъдат разгледани по-нататък. И двете функции приемат файлов път от тип ~str като първи параметър и връщат стойност от тип Result. По този начин, за да разберете I/O на файла в Rust, вие също трябва правилно да разберете и оцените типа резултат.

3.1. Върнат тип Резултат

Този тип служи като инструмент в Rust за избягване на грешки по време на изпълнение. Резултатът е enum, съдържащ следните стойности (вижте src/libstd/result.rs):

pub enum резултат ( Ok(T), /// съдържа стойността при успешно връщане от функцията Err(U) /// съдържа стойността при връщане на грешка от функцията )

Стойностите от типа Резултат трябва да бъдат разопаковани (деструктурирани), преди да могат да бъдат използвани.

Примерната програма ще използва следната функция от модула std::result :

fn разопаковане (res: Резултат ) -> Т

Ако резултатът е Ok(T) , тогава функцията връща стойността T , извлечена от Ok(T) , която може да се използва по-нататък в програмата.

Разбира се, с тази функция библиотечният инструментариум std::resultне е ограничено. Описания на други функции могат да бъдат намерени в горната документация.

3.2. Пример за четене на данни от файл

Изходният код за примера е показан в листинг 2. Примерът просто чете байтове от дадения файл, след което преобразува прочетения резултат в низ и извършва съпоставяне на шаблон. Предполага се, че самата програма и тестовият файл read.txt, от които се четат данните, се намират в същата директория.

Листинг 2. Четене на данни от файл байт по байт.
използвайте std::io::*; използвайте std::vec::*; използвайте std::path::*; fn is_success(fpath: &PosixPath) ( let maybe_test_reader: Резултат<@Reader, ~str>= file_reader(fpath); нека test_reader: @Reader = std::result::unwrap(maybe_test_reader); нека mut байтове: ~ = ~; цикъл ( let byte: int = test_reader.read_byte(); if test_reader.eof() ( break; ) append_one(bytes, byte as u8); ) let sample: ~str = ~"успех"; нека maybe_success: ~str = std::str::from_bytes(байтове); if maybe_success == sample ( println("Операцията за четене на файл е успешна"); ) ) fn main() ( let fpath: ~PosixPath = ~PosixPath("./read.txt"); is_success(fpath); )

В примера по-горе, тестовата функция is_success() създава обект test_reader, използвайки пътя на файла, който му е изпратен. За по-голяма яснота, съдържанието на файла се чете байт по байт и прочетеният байт се добавя към вектора на байтовете. Байтовете се четат като цели числа от тип int, но когато следващият байт се вмъкне във вектора, се очаква стойност от тип u8. Следователно за всеки вмъкнат байт се извършва явно преобразуване като u8. Тези операции продължават, докато краят на файла (край на файла) не бъде открит при четене.

Методът reader.eof() връща true, когато текущо прочетеният байт съдържа атрибута eof. В този случай стойността на този байт е -1 (което е причината reader.read_byte() да връща int, а не u8) и не е необходимо да се добавя към вектора. Условието се проверява и ако бъде намерен EOF, цикълът излиза.

Валидирането на резултата от четенето се основава на факта, че прочетените байтове са ASCII стойности (и следователно съответстват на съответната част от UTF8 кодирането), тоест знаците, които съставляват думата "успех".

3.3. Защо не и цикъл while

Когато разглеждаме кода в листинг 2, може да възникне разумен въпрос: защо цикълът се излиза чрез проверка за eof в тялото на цикъла, вместо да се използва по-често срещаният условен тест преди следващата итерация? Причината е как работи reader.eof(). Когато използвате цикъл while с проверка за eof в условния израз, към целевия вектор се добавя EOF байт със стойност -1 (255u8). Така че, когато използвате while, трябва да "извадите" най-новата стойност от вектора, както е показано в списък 3.

Списък 3. Фрагмент за четене на байтове с помощта на цикъл while
нека mut байтове: ~ = ~; докато !reader.eof() ( std::vec::append_one(байтове, reader.read_byte() като u8); ) std::vec::pop(байтове);

Разбира се, такава опция за обработка на данни има право да съществува.

Заключение

В Rust почти целият I/O е концентриран в модула std::io. За всеки елементарен тип данни са предвидени инструменти за неговото четене и представяне при извеждане. Основните компоненти на модула std::ioса характеристиките Reader, Writer, ReaderUtil и WriterUtil, които осигуряват целия необходим контрол върху входа и изхода.


В тази тема ще ви покажа как да създадете свой собствен Rust сървърЕкспериментално с модове. Защо е необходимо? Е, поне ако играете Rust, тогава имате много идеи, които са много по-удобни за тестване на вашия собствен сървър с безкрайни ресурси и възможност за летене. И ако отидете по-далеч, можете да направите вашия сървър популярен и да получите реални пари за продажба на екстри от играта на играчите на вашия сървър.

Така че да започваме.
Част първа - Създаване на сървър.
1. Изтеглете архива Rust_server.zip от официалния уебсайт, като използвате това
2. Разархивирайте архива в удобна за вас папка. Например този: C:\Games\Rust_Server\Server
По-нататък ще дам примери за адреса с тази папка.
3. Отидете в папката C:\Games\Rust_Server\Server и стартирайте файла update.bat
Ще се отвори черен прозорец с команден ред и в него ще се изтеглят сървърните файлове с размер около 2,15 GB. Когато изтеглянето приключи, прозорецът ще се затвори автоматично.
4. Отидете в папката C:\Games\Rust_Server\Server\rustds
Създавайте Текстов документв бележника копирайте този текст вътре:
RustDedicated.exe -batchmode -server.hostname "My Server" -server.port 28015 -server.identity Hello_World -server.maxplayers 5 -server.seed 777 -server.worldsize 4000 -chat.serverlog 1 -server.netlog 1 -server .saveinterval 300 -spawn.max_rate 1 -spawn.max_density 1
След това в бележника щракнете върху „Запиши като ...“ и запазете файла с името „start server.bat“ с разширение „Всички файлове“.
Появилият се файл "start server.bat" е началният файл за вашия сървър. Когато щракнете върху него, отново ще се отвори черен прозорец. командна линияи ще върви създаването на картата и стартирането на сървъра. Можете да разберете, че сървърът е готов за работа, като погледнете брояча на fps в долния десен ъгъл на прозореца: при зареждане ще покаже 0 fps, а след края ще се появи цифрова стойност, например имам 262 fps.
5. След това трябва да разберете вашия външен IP адрес.
Да приемем, че сте отишли ​​в една от услугите за определяне на IP адреса и вашият адрес се оказа 213.180.193.11
Отворете Rust и натиснете бутона F1, в конзолата, която се отваря, въведете командата client.connect 213.180.193.11:28015

Ако всичко е направено правилно, тогава връзката ще продължи и ще се озовете на собствен сървър

P.S.: Папката с вашите сървърни файлове (запазване и т.н.) ще се намира в C:\Games\Rust_Server\Server\rustds\server\Hello_World

Част две: администратор

1. За да направите себе си (или ваш приятел) администратор на вашия сървър, първо трябва да знаете вашия Steam ID. За да направите това, отидете на вашия Steam профил и на всеки свободно пространство- например вляво от вашия аватар щракнете Кликнете с десния бутонмишката и изберете „Копиране на адреса на страницата“. Поставяме този адрес навсякъде, например в бележник или в браузър. Нещо като )