Pull to refresh

Comments 16

Простите, а в чём посыл статьи?

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

Рассказали бы хоть почему rust, что было необычного или сложного, или почему был выбран системный язык для игры)
Всё же рискну написать, что раст — не исключительно системный язык, хотя и подходит для этого.
Дело было вечером, делать было нечего.
1) Rust потому что я его изучал и делал это проект для закрепления полученных знаний.
2) Вообще обычно для создания игр используют C++ чем вас Rust тут не устроил?
3) Сложно было привыкнуть к парадигме с владением ресурсом.
4) Необычное тут разве что то что я попробовал использовать немного функционального подхода при написании кода.
5) На Хабре статей по Rust мало поэтому решил оживить хаб.
6) Где вы увидели еще статьи по Three.rs?
7) Много статей вообще на Хабре о работе с 3D графикой на Rust?

Я ожидал увидеть всё это в статье в развёрнутом виде потому как название "Как я игру «Змейка» сделал". В данном случае статья не про Rust, не про three.rs и не про 3d графику.
И уже точно не про то, как вы это делали.
Когда хочеться почитать исходники я лично иду на гитхаб в trending.

И особое извращение в «статье про rust» в качестве кдпв использовать что-то питонообразное xD

Очень внезапная реализация методов объекта билдерным способом (mut self + возврат в конце). Можно поинтересоваться, чем &mut self не угодил?

Я не знаю Rust, м.б. поэтому у меня возник вопрос на конец кода:
// Запускаем бесконечный цикл обновления и от рисовки игры

А выход из этого цикла есть? ИМХО для ознакомительных статей о ЯП нужно подробнее комментировать. А листинг стоит скрывать. А то при первом просмотре мотать долго.
while self.window.update() && !self.window.input.hit(three::KEY_ESCAPE) {
            self = self.update().draw();
        }

Тут по умолчанию включена вертикальная синхронизация поэтому метод
window.update()

останавливает исполнение кода до тех пор пока не придет время для нового кадра т. е. он отрабатывает 60 раз в секунду. Когда пришло время рисовать новый кадр этот метод вернет управление и булево значение true. Если вдруг пользователь закроет окно игры то метод вернет false.
window.input.hit(three::KEY_ESCAPE)
просто проверяет нажата ли клавиша эскейп. В результате это цикл будет выполняться 60 раз в секунду до тех пор пока не будет закрыто окно игры или пока игрок не нажмет эскейп.

Вы просите дельные советы… Есть у меня. Спрячьте код в спойлер

Вы просите дельные советы… Есть у меня. Спрячьте код в спойлер

Просто интересно. С помощью вебассембли можно ли перенести эту готовую игру в браузер? И если можно, много ли проблем возникнет в процессе?

В теории можно, но используемый three-rs движок в данный момент не поддерживает WASM.


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

Для 3D графики использовалась библиотека Three.rs которая является портом библиотеки Three.js

three-rs не настолько близка к 3js, что бы портом называться, она просто вдоховлена 3js. Так же как amethyst — не порт (уже мертвого) Стингеря, а ggez — не порт LÖVE.

Sign up to leave a comment.

Articles