Arrow

Arrow – мини-игра наподобие “Тетриса”, которую я от нечего делать написал за ту неделю, когда у меня не было доступа в Интернет. Это, фактически, клон java-игры GuruGuru, предустановленной на мой телефон (Pantech PG-1500). Она отличается от классического “Тетриса” оригинальной механикой: вместо простых блоков здесь блоки-стрелки. Вы должны выстраивать линии из стрелок, указывающих в одном направлении. Есть четыре однонаправленные стрелки (вверх, вниз, вправо, влево), две двунаправленные (горзонтальная и вертикальная) и одна четырехнаправленная. Как только выстроена линия в 3 и больше стрелок, она исчезает, а все соседние с ней стрелки поворачиваются на 90 градусов. Есть также “бетонный” блок без направления, который исчезает только вследствие исчезновения его соседа.

В игре пока нет уровней, системы подсчета очков или каких-либо иных целей – просто бесконечный игровой процесс. Если экран заполнится блоками доверху, игра заканчивается. В оригинальной GuruGuru был интересный режим “битвы” с искусственным интеллектом – побеждал тот, кто дольше продержится, не заполнив свой экран. Не исключено, что когда-нибудь нечто подобное будет реализовано и в Arrow.

Игра написана на D, с использованием моего “традиционного” инструментария: OpenGL, SDL, FreeType, Derelict, dlib.

Сборка для Windows (0,93 МБ)
Исходники доступны на GitHub: https://github.com/gecko0307/arrow

Фигуры Лиссажу для анимации оружия

Оружие в шутерах от первого лица не должно быть прибито к камере гвоздями – оно раскачивается в такт ходьбе, да и при стоянии на месте медленно ходит туда-сюда из-за постоянного движения рук. Конечно, довольно трудно сымитировать этот эффект в полном соответствии с реальностью, но можно обойтись дешевым и убедительным фейком. Оружие можно двигать вдоль кривой Лиссажу: x = sin(t), y = cos(2t). В результате получается траектория, изображенная на рисунке справа.

Vector2f lissajousCurve(float t)
{
return Vector2f(sin(t), cos(2 * t));
}

//...

if (playerWalking)
t += 10.0f * delta;
else
t += 1.0f * delta;

if (t > 2 * PI)
t = 0.0f;

Vector2f p = lissajousCurve(t) / 10.0f;
weapon.localPos = Vector3f(p.x, p.y, 0.0f);

Atrium Project

Доступна первая играбельная сборка моего текущего проекта под кодовым названием Atrium. На данный момент идет отладка графического движка игры, а также работа над экспортером контента для Blender. Данная сборка демонстрирует не столько геймплей, сколько возможности движка в его текущем состоянии, как то: скелетная анимация персонажа, обнаружение столкновений с картой и игровыми объектами, камера от третьего лица, вывод текста,  мультитекстурирование (для реализации лайтмаппинга), а также элементы игровой логики и несложные спецэффекты (свечение объектов, затемнение персонажа, когда он находится в тени).
Управление: 
– клавиши-стрелки = движение вперед/назад и поворот;
– пробел = прыжок
– F11 = переключение привязки камеры к персонажу (в “свободном” режиме камера управляется при помощи мыши: левая кнопка = вращение, средняя = перемещение, колесико = приближение/отдаление).
Скачать:

Мои старые игры

Решил вспомнить былое и централизованно выложить в открытый доступ свои старые игры. Возможно, кого-то они заинтересуют – сейчас мода на ретро =)
Все ресурсы и исходники – под Public Domain, за исключением чужого контента (лицензионные оговорки – в тексте COPYING.txt)


Crematorium
Игра была сделана мной для II конкурса портала GameCreating.ru (сам сайт давно уже прекратил существование, но сообщество еще живо: http://gamecreating.borda.ru). Конкурс проводился в 2005 году. Кому интересно – тред с голосованием.
Представляет собой несложный шутер от первого лица в стиле первых Doom и Quake. Спрайтовые враги и оружие на фоне трехмерных одноэтажных локаций – подземных лабиринтов. В игре всего 5 уровней, (в начале каждого выводится краткий инструктаж с миссией), 3 типа оружия (пистолет, автомат, гранаты), 2 вида врагов + 1 финальный босс.

Скачать (Google Диск) – 8.3 МБ.

City Builder
Симулятор градостроительства. Каждый построенный жилой дом увеличивает население вашего города, которое ежемесячно платит налог в казну. Размер налога зависит от степени развития городской инфраструктуры: количества магазинов, ресторанов, банков, отелей, садово-парковых зон и т.д. Можно строить заводы, которые ухудшают условия жизни в городе, но зато приносят высокий доход, а также сажать деревья, прокладывать асфальт, газон, песок и воду.
Есть возможность сохранять и загружать города, а также выбирать фоновую музыку.
Скачать (Google Диск) – 1.3 МБ. 


Croggler
Простенький платформер из 15 уровней, на каждом из которых вы должны победить черного призрака, летающего под потолком. Ваше единственное оружие – бомбы, которые призрак время от времени скидывает. Если бомбу вовремя не подобрать, она взрывается. На некоторых уровнях есть также второстепенные враги – их уничтожить невозможно, остается только уворачиваться…
Скачать (Google Диск) – 1.4 МБ.









Начать – наполовину сделать

В этом блоге я буду публиковать свой прогресс в области разработки 3D-игр на языке программирования D с использованием OpenGL. Хочу предупредить – ничего определенного я не обещаю, геймдев для меня – всего лишь хобби. Я не из тех, кто ставит перед собой заведомо недостижимые цели – мне нравится сам процесс =)