VirtualKD + Windows 10

Если вдруг нужно, чтобы взлетел VirtualKD с гостевой Windows 10, то после инсталляции оного внутри машины, нужно ещё обязательно выполнить bcdedit /dbgsettings serial, иначе кина не будет. Сэкономит часик времени на рисчёрч “а чо оно не работает”.

Google Crashpad

Для того, чтобы собрать crashpad под Windows с DLL runtime (/MD /MDd), нужно создать в своём домашнем каталоге (c:/users/konst например) подкаталог .gyp и в него положить файл include.gypi со следующим содержимым:

{
  'target_defaults': {
    'configurations': {
      'Release': {
        'target_conditions': [
          ['OS=="win"', {
            'msvs_settings': {
               'VCCLCompilerTool': {
                  'RuntimeLibrary': '2',
                }, 
             },
          }],
        ],
      },
      'Debug': {
        'target_conditions': [
          ['OS=="win"', {
            'msvs_settings': {
               'VCCLCompilerTool': {
                   'RuntimeLibrary': '3',
                }, 
            },
          }],
        ],
      },
    },
  },
}

И пусть это сэкономит те полдня, которые пришлось потратить, чтобы выяснить этот факт.

espresso test failure

Если внезапно вы решили подключить espresso и начать писать тесты, а потом после очередных манипуляций вдруг тесты приложения перестали запускаться и начали бросать исключение NoClassDefFoundError YourActivity, то вполне вероятно, что может спасти совершенно нелогичное действие:
Добавить исключения суппорт либы в gradle для компиляции espresso (в моём случае espresso-contrib)

androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2') {
    exclude group: 'com.android.support'
    exclude module: 'support-v4'
}

Build Succeeded

Наверняка все программисты рано или поздно сталкиваются с тем, что запускают билд, который должен идти пару минут, после чего открывают браузер и читают “форумы/новости/что-то ещё” пока идёт сборка. Через 15 минут вспоминают, что был запущен билд, но 13 минут уже потеряно.

В общем надоело терять из-за таких вещей время и вместо того, чтобы запретить доступ к интернету я покопал гугль и нашёл прикольную программку – Growl for Windows – она умеет делать нотификации по самым разным событиям

Put simply, Growl lets you know when things happen. Files finished downloading, friends came online, new email has arrived – Growl can let you know when any event occurs with a subtle notification. The rest of the time, Growl stays out of your way.

Самое ценное – это то, что к этой программке есть visual studio плагин, который умеет сообщать об окончании сборки проекта/солюшена.

Выглядит это как всплывающее сообщение в системном трее, которое говорит, что билд успешно собрался или зафейлился.

Поставил себе и всем рекомендую – оно вроде и про свн умеет сообщать (правда в моём случае это не очень важно, т.к. у нас почтовая рассылка налажена).

WPF

Появилась наконец-то возможность потрогать шаловливыми ручками WPF, начал вчера делать маленький hello world петпрожект и изучать новую для меня штуку от майкрософта. Пока нравится, получается достаточно быстро сделать лузер-интерфейс и закодировать нужный функционал. Посмотрим, как дальше пойдёт, вдруг сбудется мечта идиота и получится на его базе сделать генерацию интерфейса для игры 🙂

Батчи

Вот есть такая монструозная вещь, как batch files в виндовсе, намного неудобнее любого sh или perl, но! Зато процессор оных стоит на каждой машине с виндовсом, а значит у каждого художника или геймдизайнера (или бухгалтера, клерка и кто там ещё пользуется компьютером в других отраслях).
Так вот, о чём это я – о том, что на самом деле со времён доса и 98 винды многое изменилось – нынешний cmd стал намного полезней того кошмара, что был много лет назад.
Мне даже удалось написать скрипт для сборки всех 30 наших уровней и практически обойтись без GOTO.

ужасные подробности

OpenMP

Попробовал тут, намедни, OpenMP (Open Multi-Processing – это набор директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с разделяемой памятью на языках C, C++ и Fortran).

И, можно сказать, прозрел. Добавил в существующие исходники всего две строчки кода и время экспорта тестового фрагмента уровня уменьшилось почти в два раза!

Теперь вот, читаю спеки и повышаю многопоточное дао 🙂

Всё новое – хорошо забытое старое

Возникла у меня накануне насущная необходимость обработки игровой логики (триггеры), но при этом скриптинг у нас ещё совсем не готов, а результат нужен вот-вот. предложил глянуть на редактор уровней от старкрафта, я его открыл, посмотрел, посоздавал триггеры, подумал и меня осенила мысль, что такого функционала для нас должно хватить с головой и ещё останется 🙂
И вот, за 3 неполных дня (из них один почти полностью ушёл на экспорт из дизайнеро-удобного вида в игровой бинарь) у меня на руках получилась система, аналогичная по функционалу. У нас есть триггер, к которому привязывается любое количество условий (переместиться в, прошло время, убит, появился итд итп) и любое количество ассоциированных действий (убить, родить, выиграть, проиграть, отформатировать винт итд итп).
При этом она очень даже шустро работает и избавляет нас от необходимости думать о скриптах (в ближайшее время, так точно).

Распирает меня от радости, чёрт побери!