📙 Дневник Игродела

@gdjournal Yoqdi 0

Превращаю идею и 100 000 рублей в игру для ПК. За 5 месяцев прохожу путь от подготовки до релиза в Steam.
Пишу об итогах дня, процессе и задачах разработки. Делюсь полезными материалами.
Статьи: http://telegra.ph/GDJournal-02-19
Автор: @laidrivm
Kanal hududi va tili
Rossiya, Rus tili


Muallifga yozish
Kanalning hududi
Rossiya
Kanal tili
Rus tili
Kategoriya
O‘yinlar va ilovalar
Indeksga qo‘shilgan
07.02.2018 12:15
reklama
Telegram Analytics
TGStat хизмати янгиликларидан бохабар бўлиш учун обуна бўл!
TGAlertsBot
Каналингиз репостлари ва эсловлари ҳақида хабар беради.
TGStat Bot
Telegram'дан чиқмай туриб каналлар статистикасини олиш
138
ta obunachilar
~0
1 ta e’lon qamrovi
~1
kunlik qamrov
N/A
bir kundagi e’lonlar
N/A
ERR %
0.16
iqtibos olish indeksi
So‘nggi e’lonlar
O‘chirilgan e’lonlar
Eslovlar bilan
Repostlar
Привет!

Я тут выпал почти на полтора месяца. Месяц писал диплом, потом разгребал дела и боролся с прокрастинацией. Решил выкинуть это время из срока проекта. Так что считаем, что сегодня день 56 ? Да-да, метод несдвигаемых дедлайнов — это сегодня не про меня.

Ещё решил, что если второй раз случится такая фигня, перейду в режим «как пойдёт». Хотя надеюсь, что так не случится.

Пока было не до игры, всё равно посетил пару геймдев мероприятий. Сегодня — об одном из них. Месяц назад прошла лекция Александра Шишенина «Как взламывать игры». Лектор рассказал историю и классификацию хаков. О том, как писать malware там не было. Зато были принципы атаки и защиты. Конспект: https://teletype.in/@gdjournal/r1dnQvvyX.

Осталось: 94 дня
To‘liq o‘qish
День 55

Как обещал, пост об игровых мероприятиях.

1) Канал @gamedev_calendar. Бывает ощущение, что посты проплачены, но лучше агрегатора не нашёл. Пишут о мероприятиях всея СНГ. Онлайн и оффлайн.
2) screamschool.ru — школа игровой индустрии на Артплее. Организует собственные лекции и дни открытых дверей.
3) hsbi.hse.ru — Аналогично п.2, но от Вышки. Одно из направлений факультета учит геймдеву.
4) vk.com/devsgo — геймдев-митап в барах.
5) vk.com/sgdnmeetup — геймдев-митап в кальянных. Как и п.4, темы иногда выбирают абстрактные, но интересные. Оба с шоукейсами и приятным сообществом.

Осталось: 95 дней
To‘liq o‘qish
День 54

Пока пытался сделать и выложить что-то достойное, РКН решил прикрыть Телеграм. Слышал, что провайдеры начнут блокировать 16 апреля. Внутренние прокси упали под нагрузкой, но скоро должны подняться. Обход блокировки для ленивых: @socks5_bot.

Раз уж пишу пост, заодно расскажу и покажу, что с прототипом. Игровую часть пока отключил, потому что глючит. Из нового:
• Переоформил титульный экран и меню. Титульный экран приблизил к оригинальному из GameDev Tycoon.
• Поменял музыку. Теперь играет приятный джазец.
• Управлять теперь можно ещё и мышкой.
• Перерисовал персонажа, сделал ему 2 анимации: работать и думать.
• Когда персонаж работает, рандомно звучит один из семи сэмплов печати на клавиатуре. Когда думает — звучит почёсывание головы.

Об остальном напишу, как исправлю механики.

Больно от того, что на простые вещи уходит куча времени. Архитектура не защищает автора от самого себя. Это превращает огород, в котором можно наворотить багов, в бескрайнее поле.

Бегло прочитал ещё две книги, которые рекомендует sfml-dev.org. Это SFML Essentials и SFML Blueprints. Надеялся найти там подходы проще и эффективнее. Увы, работаю дальше с тем, что есть.

Ещё хочу внести в прототип:
• Загрузчик. Звуки и текстуры перевалили 20 мегабайт. Загрузка игры до титульного экрана стала заметна. Чтобы исправить, придётся подгружать файлы параллельно основной работе программы.
• Переменная громкость эффектов. Сейчас они воспроизводятся с громкостью по умолчанию. Если громкость ударов будет меняться, станет реалистично и правильно. Если громкость будет меняться, пока эффект воспроизводится, то вообще кайф.
• Небольшие улучшения кода. Исправить глитч анимации работы (на видео костыльно обошёл его). Вместо нескольких логических переменных, ввести перечислимые типы. Ну и всё такое по мелочи.

Завтра иду на gameday.screamschool.ru. Вечером напишу, как и где узнать о подобных игровых мероприятиях.

Осталось: 96 дней
To‘liq o‘qish
Ну и раз написал о звуке, архив с четырьмя торрент-файлами. В сумме 75 Гб звуков для игр. Лицензия позволяет использовать в коммерческих проектах.
Attached file
День 43

С книгой всё. Теперь в меню и миссии играет музыка. Появились звуки у бустов, выстрелов, ракет и взрывов. Обнаружил, что у SFML есть свои странности.

Первая. Объект, у которого проигрывается звук, называется слушателем. Он определяется тремя трёхмерными векторами: местоположением, направлением вверх и направлением вперёд. Направления вверх и вперёд не обязаны быть ортогональными, но совпадать не могут.

Вторая. Не получилось расположить слушателя и источники звука в одной плоскости — хотя в 2D они именно так и расположены. Если так сделать, звук от источников слева будет слышно только в левом наушнике и наоборот.

После поста — видео с тем, что получилось. Начал переделывать это всё во второй прототип Startup Story.

Осталось: 107 дней
To‘liq o‘qish
День 40

Разобрал восьмую главу. Добавил поддержку частиц, анимации и шейдеров.

Частицы — объекты из четырёх вершин. Вершины собираются в один массив, чтобы отрисовать их все сразу. Так работают ракетные пламя и выхлоп. Частицы появляются из генераторов. Несколько генераторов могут производить единый массив частиц. Например, если это ракета с тремя соплами.

Анимацию сделал покадрово, через спрайтшиты. Это хорошо заметно у взрыва. Там 16 кадров, которые за секунду меняют друг-друга. Если экран обновляется 64 раза в секунду, то кадр взрыва меняется раз в 4 обновления. Кадры лежат в одном файле, поэтому достаточно выбрать прямоугольник, в который влезает взрыв и сдвигать его по изображению.

Шейдеры — один из способов сделать пост-эффекты. Это когда меняется уже отрендеренная картинка. Шейдер применяется к экрану целиком. Поэтому то, что отрендерили, сначала загоняют во временный буфер. Этот буфер — текстура, которая содержит экран целиком. Для примера включен шейдер «свечение», который выделяет яркие объекты.

Чтобы сэкономить время и не рисовать текстуры вручную, использовал материалы к книге. Поэтому гифка слегка отличается от тех, что были раньше :)

Осталось: 110 дней
To‘liq o‘qish
Attached file
Пятюню организаторам, которые делают онлайн-регистрацию, но не делают рассылку, что отменили событие. Даже объявление на дверь аудитории на повесили.
10 увлекательных лекций из 10!
День 38

Добавил в игру новые элементы. К кораблю игрока добавились враги, улучшения, самонаводящиеся ракеты и лазеры. Это всё взаимодействует друг с другом: враги стреляют, лазеры и ракеты отнимают здоровье, корабли сталкиваются и так далее.

Пилю визуальные эффекты: поддержку частиц, анимаций и шейдеров. Осталось всего 2 главы. Как разберу, начну делать второй прототип — с нормальным кодом и основным игровым циклом.

Вечером иду на лекцию «Эволюция игровых механик». Снова от вышкинской ВШБИ, на этот раз в КЦ ЗИЛ. С меня конспект :)

Осталось: 112 дней
To‘liq o‘qish
В настройках — работающая смена управления.
День 35

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

Также улучшил код UI. Абстракция такая. Интерфейс состоит из компонент. Компонента — контейнер, кнопка или вывеска. Контейнер связывает остальные компоненты. С кнопкой понятно. Вывеска — короткий текст, типа заголовка. Каждая компонента может быть неактивной, выделенной или активной и менять состояния.

После поста будет очередная гифка. Начал писать классы и логику игровых объектов.

Пока программирую, не набирается материал для постов. Думаю над новой рубрикой.

Осталось: 115 дней
To‘liq o‘qish
Если окно неактивно, игра на паузе.
День 31

Отошёл от перелётов и вернулся в рабочий ритм.

Перед тем, как ловить баг с фпс, перебрал и разбил на модули код. Ошибка пропала, так что даже не знаю, в чём была причина.

Продолжаю разбирать «SFML Game Development». Добью до последней главы — там о мультиплеере, пока не надо.

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

Число в конце поста слегка угнетает, но заставляет работать ещё жёстче, чем до путешествия.

Осталось: 119 дней
To‘liq o‘qish
День 26

Третья глава книги оказалась зубодробительной. Ну вот совсем. Переключаться на середине посчитал неправильным, поэтому три дня терпел. Натерпел вот что.

Сцена теперь рисуется по дереву. У дерева есть корень, родительские и дочерние элементы. У дочерних элементов геометрические преобразования считаются относительно родительских. У родительских — относительно мира.

Чтобы рисовать объекты в правильной последовательности, добавил слои. Верхний слой точно рисуется позже нижнего. Как рисуются объекты внутри слоя — не важно, они друг-друга не перекрывают.

Также сделал скроллинг карты. У карты зациклена текстура, получился бесконечный фон. В архитектуре появился класс «Мир». Туда перенёс инициализацию игровых объектов и сцены из класса «Игра».

Правда, где-то в коде проблема: после десяти секунд фпс падает до одного. Дебажу.

Как закончу с этим, бегло прочитаю четвёртую главу. Если там попроще, то продолжу разбирать книгу. Если нет — пока переключусь. Займусь артом, например, а то там дальше референсов дело не ушло.

Осталось: 124 дня
To‘liq o‘qish
День 23

Сделал менеджмент ресурсов. В SFML текстуры, звуки, шрифты и даже шейдеры похожи. Поэтому на них хорошо лёг один и тот же интерфейс. Чтобы не переписывать один и тот же код, использовал шаблоны плюсов — впервые за пару лет :)

Поправил классы для игровых объектов. Теперь у них есть строгая иерархия. Правда, бывает и другой подход — компонентный. Он используется, когда типов игровых объектов много и иерархия становится перегруженной. Если почувствую, что это мой случай, пойду изучать http://optank.org/game-development-design/.

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

Ещё начал рисовать диаграмму классов — какие есть, кто что наследует и кто с кем взаимодействует. Выложу, как закончу разбирать книгу.

Осталось: 127 дней
To‘liq o‘qish
День 22

Сделал так, чтобы игра нормально работала с тиками. Тик — один проход игрового цикла. Было несложно: зафиксировал время на апдейт и стал сравнивать его со временем с последнего апдейта. По мнению авторов книжки об SFML, так получается точнее, чем с фиксированным фреймрейтом или sleep'ами. Когда буду полировать, сверюсь ещё с этой статьёй: https://gafferongames.com/post/fix_your_timestep/.

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

Осталось: 128 дней
To‘liq o‘qish