Day 18…

Одевание графа превратилось в сущий кошмар. Из ближайших дискретных алгоритмов был найден только алгоритм Грэхема и его вариации на тему построения выпуклой оболочки. К сожалению, моя задача носит более частный характер, а допиливание алгоритма ни к чему не привело. Последняя надежда – раскрасить граф без анализа, основываясь только на типе вершин (который, к счастью, определяется простым подсчетом смежных ребер), интерполируя острые углы и настроив адекватный blur для скрывания косяков. Задача осложняется неумолимо приближающейся аттестацией, отчего и сократилось количество постов и кода в единицу времени. Нет, работа должна быть fulltime, иначе никак.

Спасибо за внимание, занавес..

Имитируем поведение мяча. Часть Вторая, Импульсная

Вернемся из высоких материй, и сегодня у нас продолжение к первой части про приключения шарика. Математический инструментарий (в виде векторной алгебры) у нас есть, дело за малым. Читать далее

Schroedinbug

Итак, у меня затык. Всё шло гладко, пока я не начал обтягивать эту несчастную пружинно-спиковую конструкцию веточками, листиками и прочей атрибутикой. А так как расписывание моих замыслов здесь наводит меня на умные мысли, приступим.

Читать далее

Имитируем поведение мяча. Часть Первая, Векторная

Итак, мяч (воздушный шарик, теннисный мячик, шар для боулинга, да и не важно что). С точки зрения AS3 любой ваш мяч будет объектом. Пусть этот объект будет хранить пару своих координат (x, y), радиус (r) и массу (m). Также для успешного перемещения ему понадобится знать, в каком направлении и с какой скоростью ему двигаться. Для этого мы будем использовать вектор (v), а так как мы работаем в плоскости, то вектор будет двумерным. Для тех, кто недавно присоединился, напомню, что вектор – это направленный отрезок прямой, а если проще, вектор – это пара координат x и y, которые хранятся вместе. Читать далее

Technical demo!

Вот чему мы недавно научились: 

Движок блога не позволяет встроить swf в страницу, поэтому оставил демо на народе. На вид – жутковатый клон world of goo, но это пока. Управление нехитрое: пробел – новый спик, мучить спики нужно мышкой. Заранее извиняюсь за периодическое fps уровня ZX Spectrum – когда закончу с прототипом займусь растеризацией всего этого добра. Читать далее

Day 7

Вот такие пальмы выросли сегодня утром. Пока они в полной статике, но в мой блокнот уже выписаны пара избитых уравнений которые вдохнут в них жизнь.

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

Checkpoint!

Разобрался с поведением спиков, в первом приближении. Попутно насеял большое поле для будущих оптимизаций, да и давно уже было понятно, что рефакторинг неизбежен. 15 спиков выглядят вполне себе адекватно, в то время как при 50 появляются различные парадоксы. Когда спики образуют полный нижний ряд, в него вклиниваются вышележащие спики, сдвигая всю конструкцию влево, а там, соответственно, упершись в стену выдавливаются левофланговые спики. В причинах сей красоты я еще не разобрался, да и вернусь к ней только если это будет критично для геймплея, ведь назначение свободных спиков в конечном счете – лежать и ждать пока он пригодится игроку. Читать далее

Столкновение двух спиков

Обработка столкновений показала мою полную несостоятельность как физика-ядерщика. Ну не беда, интернет выручает. Попутно провел небольшой тест производительности. Для определения факта столкновения нужно определять расстояния между центрами спиков, причем делать это нужно довольно часто. Читать далее

The Perfect Game Engine

Все еще мучаюсь с устройством будущего движка. Как он должен работать? Засунуть все спики в массив и пересчитывать по EnterFrame координаты каждого со всеми мыслимыми законами притяжения? Или может спрятать поведение внутрь каждого спика и запилить каждому свой таймер? А как связывать спики между собой или обрабатывать их столкновения? Читать далее