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

20 июн. 2008 г.

GraviLens Rebuilding News.


Луч. Сегодня сделан первый шаг к порталам. Наконец-то дошли руки написать перенос луча. Потом для теста заюзана правая стена, которая телепортирует луч к левой стене. На скриншоте всё вроде понятно. Теперь можно приступать к грави-порталам. Заодно, наверное, напишу направляющие и линкеры.


Поле и гравилинзы. Да, вот недавно разорвал гравилинзы на поле и твёрдое тело. Теперь это два разных объекта. У меня уже есть сферические поля разных видов по затуханию: сплошное, линейное, sqr, sqrt.. Сделал полям визуальную фишку в виде волны: когда луч трогает поле, кольцевая волна в зависимости от знака силы либо затягивается в центр поля, либо наоборот расходиться от центра. В действии опять же неплохо смотриться. На скриншоте немного непонятно..

***

Ну вот на след. неделе времени совсем не будет, но я постараюсь написать новую puzzle-систему и проверить её. Ну и рисовать придёться много-много...

А вот ещё на своей диарее написал про мое негативное отношение к UML. Это касается только независимой разработки одним человеком конечно.. xD

12 июн. 2008 г.

GraviLens. Items? Slots! #2

Оговорю сразу четвёртый минус эмпирической теории, который я забыл упоминуть в прошлой записи: налипшие вещи на объекте мешают прицеливанию, т.к. их можно теоретически брать обратно.

Гипотетические изменения #1. Предметы остаются такими же, вводим слоты. Слоты, их вид и количество на каждый объект задаются в xml карты, тем самым убираем злую свободу действий и упрощаем дизайн уровней. Устранили 1, 2, 3 минусы и убили тем самым все особенности первой теории, чёрт с ними.

Изменения в графическом контенте:
  1. Каждый предмет требует под себя картинку со слотом.
  2. Желательно сделать подсветку вставленного предмета.
Чтобы легче представить изменения, приведём несколько примеров:
  1. 3 ключа (2 звезды и 1 серп). При полном заполнении слотов объект отключается.
  2. 2 фильтра и 2 зеркала. При постепенном заполнении изменяются свойства объекта: каждый фильтр убирает часть дисперсии, а каждое зеркало вычитает часть поглощения.
Использование предметов не изменилось: сбиваем и используем. Можно вытащить используемый предмет из слота и вставить его в слот другого объекта, совсем другая свобода действий. 4-ый минус первоначальной теории усиливается. Теперь это очень длинный минус: вставленные в слоты предметы двигаются по орбите вокруг объекта и занимают дополнительное пространство, которое может использоваться игроком для прицеливания. Когда игрок прицелиться, курсор нечаянно наедет на предмет, и при нажатии кнопки «огонь» – выстрела не будет, он всего лишь захватит предмет.

Работа над последним минусом. Какие вообще идеи появляются, когда вопрос касается 4-ого минуса.
  1. Предметы нельзя доставать из слотов. Всё очень просто, упор сделан на дизайн уровней. Хороший вариант.
  2. Предметы нужно повторно сбивать. Вообще бессмысленно.
  3. Добавить дополнительную механику для выковыривания предметов. Плохо.
Гипотетические изменения #2. Из предметов, которые можно вставлять в слоты, оставить только ключи. Ключи нельзя доставать из слотов. При заполнении слотов объекта, выполняются заскриптованные действия. Например, если слотов пять, то всего доступно будет описать 5 скриптов. Если мы хотим повесить скрипт на полное заполнение – вставляем только скрипт с кол-вом ключей =5. Скрывать после этого вставленные объекты, думаю, не нужно. Просто поставить полупрозрачность, т.к. они всё ещё будут заполнять пустоту игрового поля. Графическое наполнение уменьшается за счёт отмены фильтров, зеркал и антигравитации. Так мы вроде разобрались со всеми минусами первоначальной теории.

11 июн. 2008 г.

GraviLens. Items? Slots!

Я начал гипотетическое выстраивание новой концепции.. Проблема в том что игроку непонятно куда засовывать ключи. Для этого вводим слоты. Слоты расположены возле гравилинзы и медленно летают по орбите. Слоты бывают разной формы. Если все слоты гравилинзы заполнены, то выполняется действие, описанное в xml уровня. Форм ключей и слотов должно быть минимум три. Пока есть две: звезда и лунный серп.


Пока под вопросом следующие моменты, касающиеся только механики работы с ключами:
  1. При сборке группы слотов и выполнения некоторого действия, слоты исчезают или остаются?
  2. Если слоты остаются, то можно ли обратно достать ключ, и если можно, то какой эффект это произведёт?
  3. Можно ли вообще доставать ключи из слотов? Если можно, то не будет ли рука (курсор при наведении на вставленный ключ в слот) мешать прицеливанию?
Придётся выводить эмпирическую теорию (как в прототипе сделано) и гипотетические теории (как можно предположительно сделать), взвесить все плюсы и минусы и выбрать правильную.

Эмпирическая теория (см. конкурсную версию).

Система без слотов, т.е. вещи нужно лепить к объектам в прямом смысле этого слова. Не понятно сколько чего в какую гравилинзу можно всунуть (касательно ключей). Не заметен эффект, сколько ещё ключей нужно вставить? Мы уже вставили один... Ну и что произошло?

Взаимодействия:
Ключ – выключает гравилинзу. В гравилинзах можно прописывать кол-во ключей для выключения, если в параметре указан ноль – выключить нельзя и ключи не лепятся к гравилинзам.
Зеркало – уменьшает параметр поглощения, что заставляет гравилинзу или поверхность отражать. Лепится, если поглощение >0.
Антигравитация – уменьшает массу. Можно прилепить, если масса != 0.
Фильтр – уменьшает дисперсию поля. Лепится, если дисперсия !=0.
Особенности:
  1. Универсальность.
  2. Эксперимент. Игрок должен найти гравилинзу, свойства которой можно изменить.
  3. Минимум графики.
Плюсы подхода не очевидны, но явно видим минусы:
  1. Игрок не знает, чего мы хотим от него. Мы хотим чтобы он выключил гравилинзу тремя ключами или вставил зеркало в поверхность, но это никак не отображается визуально и игрок просто в замешательстве: что ему делать с этими предметами...
  2. Графика становится непонятной. Мы выключаем гравилинзу, а предмет висит в воздухе. И что мне его опять можно сбить, ведь он такой и висел в начале до того как я его сбил, правда в другом месте...
  3. Универсальность плохо. Ну, у гравилинзы все параметры, есть много предметов, ну и мы начинаем лепить на неё всё что можно. Предметы накладываются друг на друга, превращаясь в большую некрасивую кучу. А может вообще не нужно ничего делать с этой гравилинзой?
Продолжение следует...

17 апр. 2008 г.

GraviLens KV.

Хе, в минских Компьютерных Вестях написали про конкурс и GraviLens. Очень забавно читать как случайные люди рецензируют продукт твоего воображения, правда. Всё одно, какой-то фокус-тест. Чего я там не нашёл, так это бэклинка на блог.. Газета минская.. Я тоже из Минска, об этом тоже не написали :( Буду плакать. Наверное автору лень было капать что-либо о разработчиках. Вот почему я так неравнодушен к блогам инди-игр. Там не только о больных играх, но и о таких же разработчиках.

27 мар. 2008 г.

GraviLens Dwarfs.

Я сегодня опять экспериментировал. В этот раз на карликах. Закончил и испытал оргазм.


На картинке изображены карлики. Первые два ряда демонстрируют фазы кручения карлика со скоростями(игровыми) от 1 до 5 рад/сек. На статичной картинке движения нет, но мне нравится как оно смотрится в игре. Снизу зелёный карлик, просто для него я на тот момент не прописал в GraviLib(см. в конце) параметры для вихря. А чёрный карлик - это нейтронная типо звезда. Когда видешь вращение - реально завораживает. Даже ничего размывать не нужно. Ах, и ещё крона звёзд медленно светиться: масштабируется.
Резюмирую: это мой первый успешный эксперимент за всё последнее время.

Рисуем в три шага:
1. Крону с добавочным смешиванием. (никогда не вращается)
2. Сама гравилинза. (никогда не вращается)
3. Вихрь, прозрачность которого зависит от его скорости вращения.

Вся графика для карликов заняла 5кб. Одна белая крона, ставим нужный цвет умножением. Три гравилинзы, нейтронную рисуем умножая на 0xff000000. Жёлто-красный вихрь. Зелёным вихрь делаем обрезая красный умножением.

Недавно написал некую надстройку GraviLib. Внешне это xml файл в котором хранятся гравилинзы с их названиями и всевозможными параметрами. Некая классификация, что уже довольно хорошо.

Дальше надеюсь поэкспериментировать с небом, опять же когда будет свободное время.

17 мар. 2008 г.

GraviLens #1.

Закончился конкурс по экспериментальному геймлею 2008, за проведение которого спасибо администрации GameDev.RU и оргкомитету КРИ-2008. Гравилинзы заняли первое место. Результаты.

Теперь я продолжу работать над игрой. Stay tuned!

Cкачать ГРАВИЛИНЗЫ! (1,7мб)

7 мар. 2008 г.

GraviLens Variations.

Пока приходиться анализировать что можно вставить, что нужно убрать и как решить те или иные возникающие проблемы. CONSTRUCTION был остановлен с 22 февраля, с даты появления игры на конкурсе. Теперь между делом в голову приходят какие-то странные идеи, впрочем надоело держать их всех в голове. Совсем больная идея остаётся в секрете до первой её реализации. Жду завершения конкурса, рад буду любым новостям.

Идеи связанные с разрывом луча:
Связанные чёрные дыры. Если мы свяжем две чёрные дыры, то при попадании луча в центр чёрной дыры, он вылетает из центра другой. Проблема: при вылете луча - сможет ли он преодолеть силу чёрной дыры в центре.
Направляющие. При попадании в направляющую - она выкидывает из себя луч в заданном направлении. Есть направляющие с регулируемым направлением, есть статические.
Гравитационное поле:
Зависимость замедления луча от силы гравитационного поля.
Вращение гравилинз искривляет гр. поле по мере приближения к радиусу гравилинзы.
Динамический уровень:
Движение всех объектов на поле. Проблема 1: придётся обновлять лазерную указку каждый кадр. Проблема 2: как луч будет вести себя в динамическом грполе? Решения: во время выстрела останавливать движение на уровне, а один лазер пока считается достаточно быстро.
С уровня убираются границы и появляется камера. Вопрос: делать zoom+scrolling или только scrolling? По итогу пропадёт item - Подъём Вверх. Возможно появление Телескопа, который поможет смотреть куда-нибудь в труднодоступные места.
Интуиция: интуитивное использование предметов, ключей. Заморозку разделить на замедление времени и на +бонус к времени.
Research траектории движения луча.

22 февр. 2008 г.

GraviLens Contest Release.

Скачать ГРАВИЛИНЗЫ! (1,7мб)

Напоминаю, игра разрабатывается исключительно на конкурс по экспериментальному геймплею и не является полноценным законченным шедевром. Весь процесс разработки был частично описан здесь. Моя ветка для участия в конкурсе, там буду ждать последние новости и мнение ребят из gdru тусы.

16 февр. 2008 г.

GraviLens Construction 5.

9 дней до конца конкурса. Давно не писал никаких отчётов по GrLens. Учёба началась, только опомнился.

Были проблемы с таймингом на процессорах с несколькими ядрами. Сменил TSC на QPC и ограничил игровой цикл(там же и просчёт тайминга) на одно ядро. Вроде проблема решилась.

Вообще игра подразумевает ряд экспериментов над игровой моделью. Т.е. игрок совершил действие - посмотрел на результат и собрал какие-то данные, анализируя и пополняя свои знания игрок должен достигнуть своей цели. Правда цель за него уже поставлена. В общем я не об этом. Теперь у игрока есть Лазерная Указка. Это такой луч который светит и искривляется когда вы не стреляете. Т.е. траектория вашего луча при выстреле в заданном направлении. Правда расстояние ограничено и лазерная указка проходя по уровню равномерно затухает...

Добавил персонажу ряд параметров. Энергия луча. Когда вы не стреляете она растёт до максимума. Когда луч распространяется - энергия потиху хавается до остановки луча. Вы отпускаете левую кнопки и луч исчезает - энергия начинает снова расти. Остальные параметры имеют нейтральное значение, и по мере его изменения они стремятся восстановиться к первоначальному состоянию. Длина Лазерной Указки. Здесь всё просто. Есть бонусы с позитивным и негативным эффектом. Одни увеличивают длину, а другие уменьшают. Скорость Луча. Поз/нег. Влияет на скорость распространения луча. Инерция Фотонов. Те же яйца. Параметр отвечает как будет действовать на луч гравиполе.

Дальше про бонусы. Заморозка Времени. Как бы не параметр, но раз уж здесь речь зашла о бонусах - то этот бонус останавливает таймер. Действует некоторое время(появляется иконка будильника и ползунок). Игровые очки я обозвал Кредитами. Ибо просто Очки - это сумасшествие.. особенно выражение "очки в квадрате".. Так что у нас с Кредитами... Есть три типа монеток. 1, 3 и A. Подсчёт кредитов идёт в шестнадцатеричной системе счисления(это так, удар по обыденности мира сего). Плюшки вы получаете сбивая много монет за один выстрел.. Вот как луч их собирает, так они и считаются. За первые три монетки вы получаете нормальную их сумму. Сбивая четвёртую, пятую, шестую, седьмую монетки, вы получаете с каждой монетки кредиты возведённые во вторую степень, то есть в квадрат. Если дальше следуют восьмая-одиннадцатая, вы берёте по кубу с каждой монеты. И так далее.. Правда 1 лучше сбивать вначале, т.к. дальше в цепочке они малозначительны, все знают что 1^n=1..

Цели. Первая цель - собрать определённое кол-во кредитов за установленное время. Вторая - просто добраться до заветной Сферы с надписью exit за установленное время. Но не просто добраться, а попасть в неё своим лучом и успеть активировать.

GUI. Пришло осознание что я со своим английским никак не способен написать текстовку. Пришлось всё сделать на русском. В начале игры добавил выбор: играть сразу или проходить обучение. Уровень начинается с окошка, где пишется название, цель и краткое описание уровня. Заканчивается уровень информационным окном, где выписан ваш результат. Так же здесь присутствуют две кнопочки: пройти ещё раз или двигаться дальше. Конечно если провалился, то двинуться дальше ты не сможешь. Заполнил пустые участки вокруг игровой области. Ещё хочу сделать по краям затемнение, вроде чёрный фейд. Разрешил пулять когда прицел вне игровой области, только если вы навели курсор на кнопку МЕНЮ, то стрельнуть у вас конечно не получится. Кстати в игровом меню доступны лишь главное меню и возврат в игру. Нужно сделать кнопку запускающую уровень заново.

Уровни. Обучение на данный момент состоит из трёх уровней, где демонстрируется два режима игры и даётся возможность популять, решить пару задач и привыкнуть к управлению. Мне сложно анализировать насколько лёгкие или сложные уровни я сделал и какими будут уровни которые я ещё собираюсь добавить в игру.



Ушёл из одной группы, покинув должность гитариста. Пришёл к друзьям в другую группу осваивать бас-гитару.

2 февр. 2008 г.

GraviLens Construction 4.

Немного про сам процесс разработки. Есть своего рода ресурс, он истощается. По мере его опустошения дальше двигаешься всё медленнее. Когда за всю неделю поспал совсем немного - не остаётся никаких сил. Очень хорошо спится когда реализовано всё что задумано. Потом ты просыпаешься, идёшь на балкон пить чай, возвращаешься мазать листик чернилами и наконец вбиваешь код. Новые идеи касаются не только самой игры: иногда хочется зарефакторить иерархию классов чтобы расширяться дальше было удобно, оптимизировать какие-нибудь баттлнеки, заменить куски необдуманного кода обдуманным. И не раз тратишь время на математические велосипеды. Вся проблема что это всё не сразу вспоминается, а о чём-то вообще и не знаешь.

Нарисовал ещё три вида стенки. Перерисовал монетки, подобрал более тихие звуки. Сделал между фоном и уровнем звёздный параллакс из точек. Сделал счётчик времени. Нарисовал Рефлекторы(гравилинзы которые отражают луч, но не действуют на него силой). Одарил гравилинзы звуками. Сделал прямоугольные участки на уровне, которые работают как гравилинзы, правда ещё не придумал какого вида поле могут создавать прямоугольники... Может линии магнитного поля из полюса в полюс... Исправил в движке баг с кернингом шрифтов(оказалось он у меня не мог быть отрицательным, откуда вытекали последствия такие как сдвиги символов на 254-255 пикселей) Поправил движение луча света, сделал его fps-dependent, увеличил ему скорость.. Сделал космический мусор, типо таких частиц которые отлетают когда луч во что-нить врезается/отражается.

Уровень с рефлекторами - убить Peggle!


Сегодня делал первый уровень. Очень лёгкий, чтобы без всяких наворотов. Но не смог удержаться, сделал два секрета. Если вы будете проходить первый раз и не читали этот блог, то врядли вы их откроете. Зато второй раз проходить будет интереснее.



Некоторые мысли которые требуют реалиации... Конечно нужны time bonuses. Впрочем нужны окошки YOU WIN! и более печальное YOU're LOSER!. Всякие предупреждения типа HURRY UP и поощрения тоже не помешают.. А ну ещё круто было бы сделать множители очков(x1, x2, x3) в зависимости от сбитых бонусов за один выстрел. LONG RANGE поощрение и тд.. И кто бы мне сказал "you're here.. on Earth!"

28 янв. 2008 г.

GraviLens Construction 3.

Вчера ночью после зелёной вечеринки пришёл домой, захотелось сделать звуковое оформление, хотя бы начать. С ходу в TSR был интегрирован BASS и спустя несколько минут появились первые звуковые эффекты. Это было очень здорово.

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

Второй загон с математикой начался когда я захотел сделать Рефлекторы(отражающие гравилинзы). Мне нужно было найти точку пересечения окружности и луча. Отложить от этой точки нормаль и отразить вектор скорости. Пришлось аналитически(на листочке) решать задачу, систему уравнений с векторами, которая потом сводится к обыкновенному квадратному ур-нию. Т.к. точка лежит внутри окружности там очень просто берётся одно решение которое с минусом, потому что у нас t<0.. брр, в общем всё решение для своего конкретного случая я расписал на половине листика А4. Жалко ни фотика, ни сканера нету. Дальше в код, всё работает, я счастлив.

Сложность отследить поведение луча даже на простых уровнях заставила меня сделать на прицельном круге стрелку, которая показывает направление результирующей силы в данной точке и коэффициент дисперсии(когда луч рассеивается). После этого мне даже приятно стало стрелять, т.к. подсознательно было понятно как ведёт себя поле.


Сделал возможность выключать некоторые гравилинзы попаданием в них. Однако только некоторые из них выключаются на всегда(или пока их не включить гравитационным ключом), остальные выключаются на определённое время. Но всё равно это можно будет использовать в уровнях.

В принципе и всё. Вот и прошло 7 дней с начала работы. Уже немало сделано, многое ещё впереди. Между тем сдана сессия! С чем я себя уже не раз поздравил.

26 янв. 2008 г.

GraviLens Construction 2.

Добавил гравитационные ключи, эдакие звёздочки, которыми можно отключать объекты которые мешают прохождению луча. Вы сбиваете звезду лучом; она падает на землю; вы левой кнопкой мыши перетаскиваете её на любую из злополучных гравилинз; гравилинза отключается(становится полупрозрачной). Теперь можно стрелять сквозь её. Ключ можно использовать сколько нужно раз. Можно перетянуть ключ обратно на землю или в другую гравилинзу.

Сделал затухание луча в зависимости от изменения направления в поле гравилинзы. При отражении от стенок также теряется часть энергии. Добавил в гравилинзы коэффициент, на который домножается потеря энергии луча. Коэффициент может быть положительным и отрицательным. Положительный заряжает луч энергией, отрицательный забирает у луча энергию.

Изменил немного управление. Раньше использовались две кнопки, левая(таскать) и правая(стрелять). Изменил считаю в лучшую сторону, сейчас всё можно делать только левой кнопкой. Изменил принцип прицеливания: к мышке привязан крестик, за которым бегает кружок. Чтобы стрелять точно, нужно ждать пока кружок сойдётся с крестиком(линзы с зеркалами сошлись..). Луч всегда бьёт сквозь кружочек. Была идея сделать стрельбу случайным образом по направлению между крестиком и кружочком. Ещё осталось добавить ракеты, гранаты..

Усовершенствовал стенки стакана. У них работает коэффициент поглощения энергии, если он >=100%, значит стенка обычная и ничего не отражает, в противном случае power-=absorp;

SCROLL UP! Уровень не ограничивается одним экраном. Подняться выше можно(даже нужно) сбив Подъём Вверх, такой шарик со стрелочкой вверх. Далее кликнув на него мы подымимся вверх на определённое расстояние заданное в параметрах этой вещички. Каждый Подъём Вверх может подымать нас на разное расстояние. Я как дизайнер при разработке уровня и буду таким образом определять продвижение по уровню. Процесс подъёма по уровню будет с 2д-параллаксом.
EXIT? Уровень будет считаться пройденным когда мы собьём Выход, а затем кликнем на него.

23 янв. 2008 г.

GraviLens Construction.

В ночь на 20ое число решился таки начать. Начал далеко. Рисовал гуй в фотошопе, одновременно вставлял и правил всякие баги движка, код которого уже месяц не видел. Нарисовал HERO. Днём 21ого пытался таки делать луч света с невидимой линзой. После небольшого успеха нарисовал какую-то сферу и вставил её, вставил и ещё одну. Вот насколько я помню что получилось к вечеру. Фоновый рисунок и курсор в этой версии были из Монтезумы.. так.. для заполнения пространства.



Дальше больше. Добавил Чёрную Дыру(буквально всасывает) и Звёзды Пульсары(отталкивают луч). Сделал толстый сглаженный луч. По лучу бегает сгусток света(так.. эффекты блин) Пока сбиваются только Бонусы на игровые очки. Сделал dragndrop управление и луч света пока нажата правая кнопка(читайте изменение геймплея ниже). Нарисовал фон и курсоры(стрелочку и руку сжатую расжатую). В общем читать это всё не особо интересно я думаю. Это вроде как отчётик для самого себя. Скриншот из сегодняшней версии.



Далее была чуть пересмотрена сама идея и внесены кой-какие изменения. Герой и прицел перемещаются методом drag'n'drop. Введено время на прохождение уровня. Выстрелы неограничены.
Бонусы. Бонусы на очки - дают очки и висят на уровне, их можно сбить лучом света. Есть Бонус на время, который как оказалось будет добавлять нам времени для прохождения уровня.
Помошники. На уровне можно сбить Гравитационные Ключи. При попадании они летят вниз на землю. Методом dragdrop их можно вставить в любую видимую Гравитационную Линзу на уровне, она деактивируется и становится полупрозрачной. Теперь Луч будет проходить сквозь неё. Таким образом Ключи нужно использовать тактически чтобы обеспечить прохождение уровня или хотя бы сделать его более лёгким.
Была ещё идейка про Световые Компаса, но в игре на время они потеряли свою пользу. На тактическом режиме могут оказать значительную помощи игроку. На уровне висит N-ое кол-во Световых Компасов. Их можно перетаскивать и ставить в разные места. После расположения Героя компасы считаются недолго. Спустя доли секунды компас может не показать стрелку. А может и показать. Если при данном прицеливании наш луч ДОЛЖЕН БУДЕТ пройти сквозь компас или рядом, то покажется стрелка с направлением луча.

3 янв. 2008 г.

GraviLens game.

Ещё одна идея на конкурс. Игровое пространство - стакан, ограниченный по бокам и снизу. Герой может перемещаться по дну стакана. В зависимости от того где находится курсор, слева или справа от героя, при нажатии правой кнопки мыши герой перемещается влево или вправо. При нажатии левой кнопки мыши происходит выстрел луча света. Луч света(или какое-нить излучение, хз) движется по игровому стакану по правилам: отражается от дна и стенок стакана, при попадании в сферу луч дальше не проходит, изгибается гравитационным полем сфер. Перед вами стоит задача собрать максимум спрятанных за планетами бонусов и звёзд за определённое кол-во выстрелов. Бонусы просто дают очки, а звёзды необходимы чтобы пройти на следующий уровень. Экран может скролится вверх-вниз в пределах размещения игровых объектов. Вроде всё основное написал. Идея навеяна явлением движения света в сильном гравитационном поле.

Всякие всячины. Можно сделать фонарик. Фонарик есть HINT. Можно посветить фонариком дабы посмотреть как луч света будет себя вести. У фонарика в отличии от нашего луча длина очень ограниченая, значит посмотреть как луч будет откнонятся можно будет только для близких сфер.
Спектр. Можно сделать чтобы вблизи сфер гравитация так искажала свет, что мало по малу расчипляла его на спектр увеличивая при этом ширину луча. Широкий луч это хорошо, он может больше бонусов захватить, да и радуга это весело.

Накидал в фотошопе наглядный выстрел на котором собраны 5 из 7 звёзд. Ясно что луч на картинке кривоват, но чтобы объяснить механику этого думаю достаточно. Арт говно, сделан за пять минут чтобы показать механику.


(кликабельно)

Есть такое явление в физике, когда луч света отклоняется проходя мимо солнца и других объектов с огромным гравитационным полем. Объекты такие называются гравитационными линзами. "Линзами" их называют потому что эффект напоминает положительную линзу которая также изменяет направление пучка света.