В последнее время делал вариацию тетриса - Rotetris, в котором поле представляет собой цилиндр или стакан, который можно вращать. Идея пришла както спонтанно. Хотелось написать какую-нибудь игру. Сначала хотел типа стрелялки. Пробовал рейкастовую псевдо 3д демку, но она не радовала скоростью, да и в коде тяжеловато разбираться. Потом смотрел демку генерации воксельного ландшафта. Однако и там тормознуто. Потом были мысли написать изометрический движок и на нем какую-нить стрелялку или рпг. Потом была мысль настрочить платформер типа марио. Опустился до тетриса. Вспомнил, что давно видал цилиндрический тетрис и решил попробовать. Сначала написал обычный тетрис. Потихоньку дело продвигалось, было куда подглядывать. Потом убрал ограничения на краях поля, т.е. если уйти влево, то вылезет справа. Тут было сложновато, нужно было в массиве следить за индексами. КОроч сделал, пашет. Теперь нужно быо представить все в цилиндрическом виде. Нарисовал много эллипсов вместогоризонтальных линий в 2-мерной сетке. Потом рассчитал и начертил вертикальные столбцы. Маленько помучавшись с геометрией вывел формулу координат вершин блоков. Ну и затем начертил ребра. Вышло неплохо, но нужны грани, а проекции они имеют 4-угольную форму и прямоугольником тут не отделаешься. Вспомнил, можно ж двумя треугольниками рисовать, так ведь 3д модели из полигонов состоят. В МП треугольники по дефолту рисовать нельзя, поэтому пришлось юзать библиотеку. Короч вывел все грани и столкнулся с траблой. Нужно выводить в определенном порядке: сначала самые нижние и дальние блоки а потом другие. С нижними в принципе легко, просто цикл в обратном порядке пустить, с дальностью оказалось посложнее. Пришлось мутить массив с порядком отрисовки. Вышло нештяк. Далее возникли проблемы со скоростью работы. На е63 при заполнении поля примерно на 100 блоков фпс падал до 2. Это нет нихрена. Сначала обьединил одинаковые координаты граней. У мня сначала для каждой грани координаты вершин считались отдельно, т.е. на весь блок 6*4=24 координаты. А так как вершин 8, то получаются лишние вычисления. Это конешно дало прирост, но все равно недостаточно. Далее решил координаты рассчитать заранее и хранить в массиве. Ведь в двойном цикле 16х16 считать 8 координат по синусам и косинусам (всеж эллипс ет сплюснутая окружность) ет занимает дохуя времени. Короч сделаль и ето охуенно подняло фпс. Теперь при заполнении более 100 блоков фпс было около 5. Но и это явно недостаточно. Далее решил не рисовать невидимые грани у блоков. Пришлось для каждого положения блока херачить свой набор граней. Код возрос, но и скорость тоже. Посовещавшись с GDL, начал работать над оформлением. Т.к. версию делаю мультискрин, то фон с градиентом генерил в программе. Эффект освещения у меня был практически сразу (затемнение к низу и вдаль), добавил еще затенение боковых граней блока и осветление верхних. Это придало лучший вид и блоки перестали сливаться. Это дало возможности избавиться от отрисовки ребер, что также повлияло на скорость. Далее по совету GDL сделал отражение от дна нижних 3 слоев. Конешно скорость убавилась (пришлось добавить еще двойной цикл, т.к. нужно рисовать раньше всех), но выглядело лучше, правда отражения от падающей фигуры нет, т.к. она рисуется отдельно, а добавлять еще циклы не хотелось. Вообще сталкивался с многими траблами. Забывал гденить end и хуй где найдешь. А потом неожиданно начал вылетать МП при компиляции. Пару абзацев закомментировал и компилит норм. А ошибок нет. Скачал последнюю бету версию Мидлет Паскаля, там выдало чото типа размер класса больше 64 кб. Хренак вот это ограничение. Никогда не доходил. Пришлось выкидывать куски кода. Избавился от отрисовки ребер и по мелочи лишние setcolor выкинул, сгруппировал похожие условия и т.п. На данный момент при заполении поля на 100 блоков выдает 11 фпс вместе с отражениями и 13 без. Т.к. размер кода ограничен, то придется отказаться от векторной графики и юзать png. А я уже и лого нахерачил. Конешно жесть примитивами рисовать. Но зато масштабировать просто.
Решил сделать для игры отдельный подсайт. Там будет инфа, скрины, ну и сама игра, а также может быть онлайн-статистика рекордов. Ссылка
Насчет роликов, то колеса ппц здоровые, поворачивать тяжелее. Тогда катались с Серегой на площади. Чето страшновато, там постоянно наклон и народ ходит. Падал пару раз, ролики охуенно катят и разгоняются, АВЕС-7 куда лучше 5-ых, да и на больших диаметрах трясет меньше.