Навигатор по каналу
ZDG
6499
подписчиков
Код, графон, музон
Как захостить веб-сайт
Данная статья предназначена для тех, кто интересуется размещением сайтов в интернете, но не вполне представляет себе, как это делается. Host в переводе это хозяин, принимающий гостей, но заметьте, что гость (guest) созвучен с "хост". На деле эти слова однокоренные. Хостинг это когда для вашего сайта предоставляют, так сказать, стол и дом. В эти услуги входит, как минимум, машина с выходом в интернет, на которой и будет размещаться ваш сайт. Физические и выделенные серверы, конечно, наиболее мощные...
Звёздный квест: Как программно распознать созвездие
Есть такой канал: Его автор написал забавную игру-квест про приключения кота. Она самобытна и мало на что похожа, и также интересна тем, как в ней реализованы разнообразные игровые механики. Я вознамерился написать свою версию этой игры исключительно потому, что она создаёт реальные вызовы, но не буду торопить события, ведь у меня есть и другие незаконченные дела. Пока попробую реализовать одну отдельно стоящую задачу. Когда Кот попадает на Луну, Сова просит его составить из звёзд на небе ковш Большой Медведицы с Полярной звездой...
Вращение битмапов вручную
Продолжая тему вращения, перейдём к битмапам. Как их вращать, не привлекая внимания санита прибегая к всяким движкам и OpenGL? Для начала очертим грубый алгоритм: Действительно, если мы знаем, как повернуть точку, то ничего не стоит повернуть и любое множество точек. Каждая операция поворота 2D-точки это 4 умножения и 2 сложения. При достаточно больших размерах битмапа, например, 256*256, операций получается многовато. Также пикселы по натуре имеют целочисленные координаты, и в результате поворота между ними будут образовываться разрывы...
Музыка сфер часть 2: Добавим звуки
В предыдущей части была сделана визуализация полиритмов в виде шариков, движущихся по орбитам: Оставалось озвучить это движение. Каждый раз, когда шарик пересекает горизонтальную ось (т.е. совершает полный оборот), нужно проигрывать соответствующую ему ноту. Всего 7 шариков, так что я взял ноты аккорда До-минор 13: C, D#, G, A#, D, F, A Я подобрал инструмент в FL Studio и сохранил каждую ноту как отдельный звуковой файл в формате WAV. Чтобы загрузить их в HTML-страницу, воспользуемся встроенным...
Музыка сфер (точнее, окружностей)
По мотивам этой статьи: Я вспомнил про видео из уже полузабытого ютуба, где полиритмы были визуально представлены как бегающие по окружностям шарики. Наблюдая за их относительными скоростями, можно было видеть (и слышать), как хаос постепенно переходит в гармонию и наоборот. Один ритм это "тук... тук... тук..." через равные интервалы. Добавив к этому ритму другой ритм, с другими интервалами, мы получим полиритм. В полиритм можно добавить сколько угодно дополнительных ритмов. Но их секрет в том, что имея разные интервалы, они тем не менее в определённый момент совпадают...
Блог разработки игры Crypt Quest Remake: Менеджер ресурсов
Самый унылый этап разработки – когда игра, собственно, уже работает, но нужно её дооформить до нормального вида. В этом месте всё начинает буксовать, потому что в игру ты уже успел наиграться во время тестирования, основная работа уже проделана, а неосновную делать лень, и кроме того она ещё и может оказаться довольно тяжёлой и нудной. Предыдущая часть: Игра загружала из двух отдельных файлов сборник карт и сборник картинок, а с внедрением GUI появились дополнительно иконки (те же картинки, только в другом формате) и шрифты...
Пишу онлайн-игру Color Lines: Логирование и воспроизведение ходов
В предыдущей части была сделана работающая онлайн-версия: Но цель всего проекта была в том, чтобы иметь возможность записи и воспроизведения игр. Сделать это достаточно легко, не вмешиваясь в основную логику. Когда игрок прислал данные своего хода, их надо просто сохранить в отдельной таблице БД. Эта таблица никогда не будет меняться, просто записали ход и забыли про него. Структура хранения представляется такой: Итого выходит 8 байт на запись. SQL для создания таблицы: Для воспроизведения я сделаю отдельную версию клиента, чтобы она никак не пересекалась с той версией, где происходит игра...
Пишу онлайн-игру Color Lines: Серверная логика и изменения клиента
Я уже запустил игру в настоящем онлайне у себя на ноуте, внёс изменения в клиент и тестирую. В скором времени выложу на публичный хостинг. Предыдущая часть: В прошлый раз я писал про тип массива SplFixedArray в PHP, но решил отказаться от него почти везде, потому что с одной стороны он как бы меньше и быстрее, но с другой у него не хватает функционала стандартных PHP-массивов, например заполнения всех элементов каким-то значением. В результате мне приходилось писать циклы, что и порождало больше скучного кода, и работало в разы медленнее...
Пишу онлайн-игру Color Lines: Сервер
В предыдущей части был закончен прототип клиента, в который уже можно играть с эмуляцией сервера на стороне клиента: Настало время сделать настоящий сервер. В качестве технологического стека я возьму не совсем оптимальный HTTP + PHP + MySQL как самую распространённую "пролетарскую" конфигурацию веб-хостингов. Кроме того, я буду применять другие странные решения, без особых на то причин. Возможны две стратегии работы с сервером. Первая стратегия имеет один жирный плюс. Это минимальная нагрузка на сервер...
Пишу онлайн-игру Color Lines: Игра и её состояния
Продолжаю писать игру Color Lines c клиентом и сервером. Предыдущая часть: Наконец можно перейти непосредственно к телу клиента. Опишем класс игры: Здесь мы храним ассеты imgAssets, размеры игрового поля w и h, массив клеток tiles, игровой счёт score, объект сервера server, рендерер renderer, представление view, компонент поиска пути pathFinder, и состояние игры state. Инициализация компонента: Игра вызывает метод init() сервера. Сервер возвращает объект InitResponse (если что, всё это описано в...
Пишу онлайн-игру Color Lines: Рендерер, представление и эффекты
В предыдущей части более-менее закончили с эмуляцией сервера: Клиент будет сложнее, так как ему нужно обрабатывать пользовательские команды и рисовать интерфейс. Как бы ни хотелось сделать его побыстрее, необходимо структурно разделить его на следующие части: Он будет заниматься отрисовкой графических примитивов. Суть в том, что рендереры могут быть разные, от алфавитно-цифрового до OpenGL. И любой из них можно подсунуть так, чтобы не менять ничего в игре. Рендерер, независимо от реализации, должен предоставлять интерфейс для рисования графических примитивов...
Пишу онлайн-игру Color Lines: Путь и линии
Продолжаю писать о разработке онлайн-версии игры Color Lines 2025. Предыдущая часть: На прокси-сервере осталось реализовать механизмы поиска кратчайшего пути и непрерывных линий. Алгоритм подробно описан здесь: Образно говоря, делаем стартовую клетку "мокрой", далее вокруг каждой "мокрой" клетки помечаем новые "мокрые" клетки, и так до тех пор, пока всё игровое поле не "намокнет". Если финишная клетка тоже "намокла", значит, "вода дырочку нашла" и между двумя клетками есть путь. Сделаем класс компонента PathFinder: Для конструктора нужны ширина и высота поля...