• Ultimate Question - 42

    Ultimate Question 42

    Вчера закончился прием заявок на международный конкурс Ludum Dare. Разработчикам нужно за 72 часа (jam)

    Read more »
  • Worms Zone

    Worms Zone – червячная зона

    Worms Zone – онлайн-игра с динамичной сюжетной линией и забавной графикой. Начните растить своего червя

    Read more »
  • Way of Tanks

    Way of Tanks

    Way of Tanks – это танковый ранер с бесконечным геймплеем и разнообразной трассой. Игрок свайпами

    Read more »
  • Road Fighter

    Road Fighter

    Road Fighter — видеоигра в жанре аркадных автогонок, разработанная компанией Konami и выпущенная в виде

    Read more »
  • ZX-Spectrum 48k

    Неизвестный Синклер

    Весьма занимательное чтиво об истории становления компьютера ZX-Spectrum, Клайве Синклере и компании Sinclair Research. Цветной,

    Read more »
  • King Valley

    King’s Valley на ZX-Spectrum

    Моя версия игры King’s Valley для ZX-Spectrum, которую я написал еще в школьные годы, аккурат

    Read more »
  • YouCompleteMe in action

    Рандомные тормоза Vim с плагином YouCompleteMe

    Пользуюсь для C/C++ комплитером YouCompleteMe, базирующемся на clang. Периодически YCM тормозил так сильно, что ввод

    Read more »
  • Simple Viewer GL

    Simple Viewer GL

    Небольшой вьювер изображений использующий OpenGL. Пользуюсь этим вьювером в повседневной работе для быстрого просмотра списка

    Read more »
  • Rubik's Stopwatch

    Rubik’s cube Stop-watch

    Таймер для учёта времени сборки кубика Рубика и прочих головоломок. Более подробно о возможностях таймера

    Read more »

Android NDK native APIs

Постоянно забываю какой API level какому Android относится.
Сводня табличка по стабильным версиям API NDK.
И что бы два раза не вставать – заметки по SDK platform, а заодно и ассеты Android.
Долгое время я использовал API 16, что соответствует Android 4.1 и Android 4.1.1. Сегодня решил в одной игре перейти на API 21. Перед публикацией посмотрю статистику количества отвалившихся пользователей этой игры из-за переходя на новую версию API.

Книга «Шаблоны игрового программирования»

Шаблоны игрового программирования Перевод книги Game Programming Patterns by Robert Nystrom. Книга была создана для удобного чтения на русском языке в формате электронной книги.

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

Краткий список шаблонов, которые рассмотрены в книге: Command, Flyweight, Observer, Prototype, Singleton, State, Component, Event Queue и прочее.

На сайте автора http://gameprogrammingpatterns.com/ можно заказать печатную или электронную версию книги на английском языке.

Темное меню в macOS Mojave

В новой macOS отломали возможность сделать темное меню при активной светлой теме. В итоге или используй темную тему (а она на мой взгляд весьма сырая), или это в терминале:

$ defaults write -g NSRequiresAquaSystemAppearance -bool Yes

После выполнения команды нужно перелогиниться.

Сглаживание шрифтов в macOS Mojave

С выходом macOS Mojave пропала опция настройки сглаживания на старых девайсах без ретины. Это странно, т.к. именно на старых матрицах с низким DPI эта опция наиболее актуальна.

Но настроить все это можно из терминала.

$ defaults -currentHost write -globalDomain AppleFontSmoothing -int {VAL}

Где {VAL} это один из вариантов:
– 1 лёгкое сглаживание
– 2 среднее сглаживание
– 3 сильное сглаживание
– 0 отключить функцию сглаживание шрифтов

$ defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO

Xcode: очередные «улучшения» билд системы

В недавнем обновлении Xcode были сделаны улучшения в билд системе, направленные на повышение скорости сборки проекта.

Xcode build system

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

Но те, кто пользуется внешним редактором или использует внешние инструменты для работы с системой контроля версий, получат незабываемые ощущения.

Я использую VIM как основной редактор кода (да и вообще для любого текста) и GIT в эмуляторе терминала.

Раньше билд система Xcode сравнивала дату модификации файла с объектным файлом (как и делает большинство билд систем), если тот существует, и на этом основании строилось дерево зависимостей, необходимых для сборки. Полагаю, что очередная «оптимизация» билд системы Xcode строит дерево на основании флага об изменении файла во встроенном редакторе. А все, что изменялось из-вне, считается не модифицированным.

Сделал git checkout some_branch_name, жми cmd + shift + k для очистки проекта и его полной пересборки.
Отредактировал файл во внешнем редакторе, снова жми cmd + shift + k для очистки проекта и его полной пересборки.

Новое поведение билд системы теперь включено по умолчанию. Вернуть старую Build System можно из File > Project Settings…

Xcode Legacy Build System

Ultimate Question 42

Вчера закончился прием заявок на международный конкурс Ludum Dare. Разработчикам нужно за 72 часа (jam) или за 48 часов (compo) создать игру с нуля на заданную тему.

Наша команда из 4 человек создала игру Ultimate Question 42 за 72 часа.
Я был в роли программиста и технического специалиста (ну а как иначе :)), Шевадзуцкий Александр за геймдизайнера, а Ходас Артем и Доджо у нас художники.

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

Игру решили писать на моем движке сразу для Web, т.к. позволяет оценить игру сразу, без установки на десктоп или мобильное устройство. На сайте проекта доступна нативная версия для Linux, у меня на смартфоне работает версия для iOS. В будущем планируется выпуск публичных версих для iOS, Android, Apple TV (tvOS), Android TV, а так же для платформы Facebook Instant Games.

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

Ссылка на официальную страницу игры на Ludum Dare – Ultimate Question 42

Загрузка и кодирование в base64 на JavaScript

Для шаринга и инвайта в Facebook / Instant Games нужно в качестве параметра image передать картинку, закодированную в base64. Можно сделать это в offline, но это увеличит размер дистрибутива и увеличит время загрузки игры. Значит это не наш метод.

Я делаю это в рантайме с помощью XMLHttpRequest и FileReader:

function toDataURL(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
        var reader = new FileReader();
        reader.onloadend = function() {
            callback(reader.result);
        }
        reader.readAsDataURL(xhr.response);
    };
    xhr.open('GET', url);
    xhr.responseType = 'blob';
    xhr.send();
}

И что бы было совсем хорошо, загружайте нужную картинку в фоне, тогда реакция на нажатие пользователем кнопки share/invite будет мгновенной.

Emscripten: can’t open file embuilder.py

Начиная с версии 1.38.1 emscripten при компиляции вашего проекта может возникнуть такая ошибка:

ERROR:root:We cannot build the native system library in “~/.emscripten_ports/binaryen/binaryen-version_48” when under the influence of emmake/emconfigure. To avoid this, create system dirs beforehand, so they are not auto-built on demand. For example, for binaryen, do “python embuilder.py build binaryen”
ERROR:root:a problem occurred when using an emscripten-ports library. try to run emcc –clear-ports and then run this command again

Решается эта проблема двумя командами:

$ emcc --clear-ports
$ python embuilder.py build binaryen

При возникновении сообщения об ошибке «can’t open file ’embuilder.py’: [Errno 2] No such file or directory», укажите полный путь к текущей версии embuilder.py. В моем случае путь получается такой:

$ python /usr/local/Cellar/emscripten/1.38.5/libexec/embuilder.py build binaryen

Nexus Player flash firmware

Попытка обновления фирмвари приставки стабильно завершалась с ошибкой:

wiping userdata...
/usr/local/bin/mke2fs failed with status 1
error: Cannot generate image for userdata

Прыжки с бубном и потопывание ногами не помогало. Но решение проблемы оказалось простым – нужно обновить mke2fs до свежей версии:

$ brew cask install android-platform-tools

Smart Tiles

Smart Tiles Smart Tiles – на квадратном поле объединяй несколько одинаковых клеток в одну с большим номиналом. Размышляй, анализируй и дойди до вершины игры – получи клетку с максимальным номиналом. Быстрая, но увлекательная логическая игра с элементами стратегии.

Написал игру за неделю с нуля. Хотел уложиться в 5 рабочих дней, но в итоге ушло 7 дней. Больше всего времени ушло на “мелочи” вроде баланса игры и небольших свисто-перделок. Фоновую музыку и аудио-эффекты взял из библиотеки Sonniss.com, которая не так давно выложила в открытый доступ 30 Гб аудио в формате WAV 44KHz.

Изначально планировал сделать игру для Facebook Messenger, а для Android и iOS игра получилась “автоматически”. Разработку вел из-под macOS для, простите за каламбур, macOS на собственном C++ движке.

Smart Tiles for iOS
Smart Tiles for Android
Smart Tiles for Facebook Messenger

1 2 3 71