В этой статье я расскажу как построить простой пайплайн для деплоя Spring Boot проекта на сервере используя GitHub Actions и Docker.
Разработчик, Художник
Мир на геодезической сфере: алгоритмы игры Planet
Planet — наполовину технологическое демо, наполовину игра, в итоге создающая настоящую магию. Не так уж просто разобраться, как она работает, однако, к счастью, мне удалось узнать основные подробности из постов в Twitter и статей самого Оскара.
Проблема N+1 и как её решить с помощью EntityGraph
Всем привет! В данной статье попробуем разобраться с проблемой N+1 (или может правильнее 1+N?) и как ее решить с помощью использования EntityGraph.
Проблема N+1 возникает, когда мы генерируем запрос на получение одной сущности из базы данных, но у данной сущности есть свои связанные сущности, которые мы тоже хотим получить и hibernate генерирует вначале один (1) запрос к базе данных, чтобы получить интересующую нас сущность, а потом N запросов, чтобы достать из базы данных связанные сущности. Данная проблема отражается отрицательно на производительности работы базы данных из-за большого числа обращений к ней.
Создадим проект и подключим следующие зависимости:
За 16 недель я собрал 16 синтезаторов по схемам найденным в интернете
Во второй половине 2021 года освободилось много времени, которое я щедро инвестировал в очередную придурь. Потому что нельзя было просто взять и пережить пандемию на серьёзных щщах.
Введение в Traefik 2.0
Traefik — это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями.
Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет:
- обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах;
- осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами;
- обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети;
- организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр).
В статье будет описываться использование Traefik в Docker в качестве реверс-прокси для других контейнеров Docker, а также не контейнеризированных сервисов.
Советы по разработке игр от создателя Civilization Сида Мейера
В своей книге «Сид Мейер: Жизнь в мире компьютерных игр» знаменитый разработчик рассказывает о ключевых моментах карьеры, много шутит и через всю книгу дает советы и лайфхаки по разработке игр. А в этой статье основные из них — перевод под катом.
Недельный геймдев: #26 — 11 июля, 2021
На этой неделе: вышел Spine 4, Amazon анонсировала движок Open 3D Engine, Unity рассказала про новые фичи 2021, AMD обновили отдельные подключаемые модули Radeon ProRender, для Houdini вышел Modeler 2021.
Из интересностей: разбор управления в играх от третьего лица дизайн-директором Respawn Entertainment, видео-разбор .kkrieger, несколько полезных статей с 80lv и видео с GDC.
UnnyWorld: постмортем
Почему процессоры Skylake иногда работают в 2 раза медленнее
Пост о том, как я игру лепил, из пластилина
Фотостудия для съёмок пластилиновой игры
Алгоритм генерации гирлянды для новогодней головоломки
1. Генерация гирлянды.
2. Работа с платежами в Google Play.
Вот об этом я и расскажу подробнее ниже…
Как я получил 365K загрузок в App Store за две недели (и почему после этого ушёл из геймдева)
Я не стал успешным разработчиком игр. Моя самая популярная игра Frantic Architect достигла всего 410 678 бесплатных установок, прежде чем была удалена из App Store; она ни в какое сравнение не идёт с Flappy Bird или 2048.
Но мне шёл 21-й год, за спиной был необычный, но вполне солидный опыт в играх, и я создал игру самостоятельно, затратив довольно мало усилий. Это походило на отличное начало карьеры инди-разработчика игр.
Вместо этого я бросил её.
Прошло уже полтора года после выхода Frantic Architect. Технологии развиваются быстро и я не тратил много времени на переосмысление заброшенных проектов. Но изучая сегодня App Store, я вижу там разработчиков казуальных мобильных игр, достигших успеха с той же стратегией, которую использовал я тогда. Сомневаюсь, что она ещё долго будет работать, но пока это так, и при этом она очень проста (если не примитивна).
Вам даже не нужна пара лет опыта программирования и дизайна игр, которые у меня были. Если ваша цель — быстрая разработка мобильного приложения, вас не волнует её тип, и вам нужен надёжный способ быстрого получения кучи пользователей без траты миллионов на рекламу, то вам подходит ниша казуальных мобильных игр.
Мне не интересно повторять этот эксперимент, потому что я считаю эту бизнес-модель фиговой. Возможно, вам удастся меня переубедить.
Структура и случайность простых чисел
Разбросаны ли простые числа по числовой оси подобно рассеянным ветром семенам? Разумеется нет: простота — это не вопрос случайности, а результат элементарной арифметики. Число является простым тогда и только тогда, когда ни одно меньшее положительное целое число кроме единицы не делит его нацело.
Но на этом история не заканчивается. Распределение простых чисел выглядит случайным, с неравномерными разрывами и скоплениями, которые выглядят довольно хаотично. Если и существует какая-то схема, то она непостижима. На самом деле, простые числа выглядят достаточно случайными, чтобы можно было сыграть с ними в кости. Создайте список последовательных простых чисел (допустим, начав с 11, 13, 17, 19,... ) и разделите их по модулю 7. Другими словами, разделите каждое простое число на 7 и сохраните только остаток. Результатом будет последовательность целых чисел из множества {1, 2, 3, 4, 5, 6}, которая выглядит почти как результат нескольких бросков правильной кости.
Дизайн уровней для игр три в ряд
Три в ряд — один из самых популярных игровых жанров. Игр существует десятки тысяч, при этом в интернете довольно мало статей по дизайну уровней, а они — основная составляющая игры. Правим этот недостаток, размещая на Хабре свои мысли и опыт в виде тезисов, заметок по сути и по делу, с рассуждениями и картинками.
Как создать качественную карту для метроидвании
Авторы Hollow Knight рассказывают о процессе построения сложного взаимосвязанного мира от набросков до готовой игры
Есть что-то удивительно приятное в исследовании сложных 2D-пространств игр, сделанных по модели Metroid и Castlevania. Такого чувства невозможно получить в других играх: чёткое осознание того, как части мира подогнаны друг к другу, умение распознать наличие скрытой комнаты, удовлетворение от получения новых способностей, позволяющих попасть на ранее недостижимые высоты. Качественная карта метроидвании заставляет игрока хотеть освоить каждый квадратный сантиметр и остаётся интересной, даже когда он проходит тем же маршрутом второй, и десятый, и двадцатый раз.
Так как же создать карту для метроидвании? Как создать взаимосвязанный мир, возвращаться назад в котором интересно, который даёт игроку свободу исследований, но при этом частично сохраняет за собой путь его развития? Есть ли секретная формула, тайное знание? Я задал эти вопросы создателям Hollow Knight, вдохновлённого Metroid фантастического приключения в антураже разлагающегося королевства Hallownest, которое напоминает мне анимационный фильм Дона Блута «Секрет НИМХ» (только вместо крыс здесь насекомые).
Мы поговорили о том, что важно для такой игры, и о том, почему сами авторы никогда не упоминают термин «метроидвания». Потом мы добрались до самого интересного: посмотрели наброски, схемы и рабочие дизайны мира Hollow Knight, от самого начала до финальной версии.
Дизайн и математика игр-кликеров
Инкрементные игры потрясающи и загадочны. Кажется, что они нарушают привычную логику хорошего геймдизайна, и тем не менее, им удаётся привлекать солидную базу игроков. Давайте изучим их более подробно, чтобы раскрыть их секрет.
Что такое инкрементная игра?
Игрок нажимает на кнопку, число увеличивается. Нажимает снова, число снова увеличивается. Игрок продолжает нажимать, и постепенно разблокирует функцию, увеличивающую число за игрока. Числа растут, даже когда вы не играете. И этот процесс повторяется вечно.
В сущности, такова общая структура «инкрементной» игры. Она кажется простой, даже примитивной, но в игровом процессе есть неожиданная глубина и привлекательность. Стили игры могут быть разными — от коммерчески успешных и казуальных Clicker Heroes и AdVenture Capitalist до более экспериментальных или хардкорных примеров, таких как Candy Box, Cookie Clicker и Sandcastle Builder.
Cookie Clicker, самое начало.
Что же самое важное в инкрементной игре? Хотя в этом жанре есть множество вариаций и экспериментов, фундаментальными аспектами дизайна являются:
- наличие хотя бы одной валюты или числа,
- которые увеличиваются с заданной скоростью с минимальными усилиями, или вообще без усилий,
- и которые можно тратить на увеличение скорости прироста.
Именно цикл накопления, реинвестиций и ускорения определяет основы жанра и отличает его от игр, в которых присутствует просто увеличивающийся счёт. Например, в примечательной Cookie Clicker игрок стремится к росту количества «печенек», которое изначально увеличивается нажатием на огромное печенье, а потом тратит печенье на покупку апгрейдов, позволяющих создавать ещё больше печенья.
J-Bird
Изучение геймплейного цикла на примере раннеров
Это была моя первая работа над дизайном раннера, поэтому я изучил популярные игры в этом жанре и составил простую схему их геймплейного цикла. Вот как выглядит схема:
Разработка мобильной 2D-игры «Составь слова из слова»
Как-то обычным летним вечером ехал домой с работы в метро и увидел у одного парня игру на планшете, где нужно составлять слова из букв. Скачал ее на свой планшет и начал играть. Поиграв какое-то время, понял, что некоторые особенности можно было бы реализовать поудобнее, и решив, что я могу сделать игрушку минимум не хуже, принялся за реализацию.
Работа со словарями
Имея некоторый опыт работы с БД Oracle, решил что обработку словарей буду вести в ней (Oracle 11.2 XE). Накачал в интернете несколько словарей в виде текстовых файлов с разделителями и с помощью механизма External Table загрузил в БД. Из загруженных слов отобрал 700 существительных длиной 8-10 букв. Это как раз и будут те слова, из букв которых игроки будут вести составление. Далее необходимо для каждого из этих 700 слов подобрать набор слов, которые можно из него составить. Для этого нужно проиндексировать все слова, чтобы можно было делать поиск по вхождению букв.
Информация
- В рейтинге
- Не участвует
- Откуда
- Новосибирск, Новосибирская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность