27.03.2008

GraviLens Dwarfs

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


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

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

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

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

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

18.03.2008

Prehictoric Fallout

После просмотра римейка The Hills Have Eyes, немного Jericho и горького разочарования Fallout 3 родились глупые идеи.


Мы должны спасать глупое племя глупых недолюдей. Недолюди бегают туда сюда под радиоактивными осадками. Мы же пугаем недолюдей таким образом чтобы недолюди бежали в различные укрытия(под дерево, в пещеру и т.д.). Пугаем кликами мыши. Популяция недолюдей и скота переносится с уровня на уровень. Конечный результат игры в зависимости от того сколько вы прошли уровней и сколько у вас осталось недолюдей и их глупого скота в племени. По этому результату мы можем судить о том насколько вы любите недолюдей и как вы готовы о них заботиться. Каждый уровень популяция перерасчитывается. Т.е. у вас остаётся 2 недочеловека и 1 корова, значит след уровень вы начнёте с 5 недочеловечками и без коровы(которую те безжалостно съели). Как-то так.

17.03.2008

GraviLens #1

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

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

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

07.03.2008

GraviLens Variations

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

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

22.02.2008

GraviLens Contest Release

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

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

16.02.2008

GraviLens Construction 5

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

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

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

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

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

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

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

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



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

02.02.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.01.2008

GraviLens Construction 3

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

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

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

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


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

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