Показаны сообщения с ярлыком Ruby. Показать все сообщения
Показаны сообщения с ярлыком Ruby. Показать все сообщения

пятница, 25 ноября 2022 г.

Ruby в Gamedev

Я вообще люблю Ruby, в том плане, что он поприятнее в плане синтаксиса Python. Но как-то в геймдеве его особо не видно, а тут неожиданно набрёл на интересный тред про это. 

Из интересного:

  • новый RPG Maker оказывается внутри себя на нём скриптится, что круто.

И из того, что можно глянуть:

суббота, 22 ноября 2014 г.

Qt + Ruby, Windows XP

Чтобы Qt в Ruby нормально работало по Windows XP сначала нужно поставить гем qtbindings-qt, а уже потом qtbindings. Иначе придется собирать qtbindings вручную, что, к сожалению, очень часто падает и почти никогда не срабатывает нормально. А еще лучше ставить версию 2.0.0 - она пока на Windows XP работает лучше всего.

воскресенье, 23 февраля 2014 г.

Ruby 2.0 + DevIL + Windows

Есть такая библиотека для работы с изображениями - DevIL. Библиотека довольно старая, собрать её из исходников под виндой практически невозможно, но зато поддерживает кучу форматов и вообще замечательная.
У этой библиотеки есть биндинги для Ruby, чем я и воспользовался, написав небольшой генератор текстурных атласов.

Недавно заметил, что на новый Ruby он перестал ставиться, ввиду того, что во-первых либа под новую Ruby не собрана, а во-вторых -  из-за чуши в extconf.rb её вероятность собраться под Windows была крайне мала. На моё  issue было отвечено гробовой тишиной, так как автор походу перестал поддерживать его году в 2010.

Засучив рукава, форкнул репозиторий и принялся исправлять. Скажу сразу - в итоге справился.
Гем заработал и я его даже у себя протестировал.

Вкратце расскажу, что поразило. В первую очередь,  структура Rakefile сильно поменялась года за четыре, да и косяк в extconf.rb оказалось не так легко исправить. Хотя бы из-за проблемы разделителей путей, которые упорно в одних случаях нормально работают в GCC, хотя заданы слешами, а в других - нет и приходится перекраивать путь "вручную".

Вторая проблема - принудительная линковка, либо с либой от другого компилятора, либо с DLL. Это довольно глупый и костыльный хак, который поддерживается GCC и который частенько приходится использовать. Из-за обработки параметров в Makefile пришлось подхачить, но взлетело.

Самое главное - вот это вот . Потому что это может быть малопонятная ошибка в рантайме, которую руби показывает, как исключение, и она в командной строке непонятна совсем.  Убило три часа моей жизни и доставило много недовольства. Хинт: в таких случаях имеет смысл использовать Dependency Walker - он может показать, что случилось, почему не подгрузилось и избавить от гадания на ключах компилятора.