• 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 »

WordPress Block Editor problem

С обновлением до версии 5.x, редактор WordPress перестал работать. Кнопка (+) редактора неактивна. Проблема оказалась известная, но с выходом обновлений WordPress она так и не решалась. В теме на официальном сайте предлагается добавить следующий код в файл functions.php текущей темы.

function richedit_wp_cloudfront () {
   add_filter('user_can_richedit','__return_true');
}
add_action( 'init', 'richedit_wp_cloudfront', 9 );

Очевидно, что это не решение, а корявый костыль. А лучшим решением будет поставить старую версию редактора в виде плагина или дождаться официального фикса.

Локальное тестирование Facebook Instant Games

Facebook Instant Games Для тестирования игры для платформы Facebook Instant Games есть несколько вариантов:
– Создание тестовой версии продукта в контрольной панели.
– Тестирование локально, без необходимости загрузки игры на сервер Facebook.

Я использую оба варианта. Второй вариант использую гораздо реже и потому каждый раз приходится вспоминать как настроить окружение.

Подробности и иструкция на официальной странице – Testing, Publishing, and Sharing an Instant Game.

JavaScript string length

В веб-версии моего http-загрузчика обнаружилась проблема – длина responseText отличается от реального размера файла. Оказалось, что файл содержал русскую строку текста в utf-8. А я размер получал как responseText.length – длина строки в символах, но не байтах.

Проблема решилась просто – используем Blob:

let size = new Blob([this.responseText]).size;

MySQL: Insert or Update

Есть отличный проект Nakama https://heroiclabs.com но я продолжаю использовать свою реализацию Leaderboards и Profile Storage.

Вчера сделал небольшую оптимизацию SQL-запроса (да, я тот еще SQL-разработчик). Вместо нескольких запросов сделал один, который объединил в себе вставку, обновление и условие обновления.

'INSERT INTO `some_table`' +
' (`user_id`, `timestamp`, `user_name`, `score`)' +
' VALUES(?, NOW(), ?, ?)' +
' ON DUPLICATE KEY UPDATE' +
' `timestamp`=NOW(), `user_name`=?,' +
' `score`=GREATEST(`score`, VALUES(`score`))';

Для работы этого запроса поле `user_id` должно быть UNIQUE.

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

1 2 3 72