Comments 16
Все мы иногда что-то запускаем и делаем — я вот недавно в блендере бублик нарисовал. Но это же не повод выкладывать миллионы похожих статей сюда, правда?
Рассказали бы хоть почему rust, что было необычного или сложного, или почему был выбран системный язык для игры)
1) Rust потому что я его изучал и делал это проект для закрепления полученных знаний.
2) Вообще обычно для создания игр используют C++ чем вас Rust тут не устроил?
3) Сложно было привыкнуть к парадигме с владением ресурсом.
4) Необычное тут разве что то что я попробовал использовать немного функционального подхода при написании кода.
5) На Хабре статей по Rust мало поэтому решил оживить хаб.
6) Где вы увидели еще статьи по Three.rs?
7) Много статей вообще на Хабре о работе с 3D графикой на Rust?
Я ожидал увидеть всё это в статье в развёрнутом виде потому как название "Как я игру «Змейка» сделал". В данном случае статья не про Rust, не про three.rs и не про 3d графику.
И уже точно не про то, как вы это делали.
Когда хочеться почитать исходники я лично иду на гитхаб в trending.
Очень внезапная реализация методов объекта билдерным способом (mut self + возврат в конце). Можно поинтересоваться, чем &mut self
не угодил?
// Запускаем бесконечный цикл обновления и от рисовки игры
А выход из этого цикла есть? ИМХО для ознакомительных статей о ЯП нужно подробнее комментировать. А листинг стоит скрывать. А то при первом просмотре мотать долго.
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.
Если говорить о ржавых 2д движках, то недавно слышал что quicksilver сравнительно прямолинейно в вебе заводится.
Кстати, у движка GGEZ есть хороший пример/урок про змейку с подробными пояснениями почему и зачем так сделано.
Изучаю Rust: Как я игру «Змейка» сделал