10+ лет на ГД.ру

Нашел свой старый аккаунт на gamedev.ru

Это такой популярный русский сайт и форум разработчиков игр.

Холищит! Я же 10+ лет на геймдев.ру. Я даже не помню, что у меня такая почта была! Да у меня вообще разве был уже интернет? ) 2003 год! Блин, да мне можно отправлять резюме в Близзард и прикрепить к нему эту картинку. Жалко пароль не вспомнить. У меня никаких идей…

10 лет гейм дева

http://www.gamedev.ru/users/?id=4085

А вот еще один мой аккаунт. Тоже не восстановить. 2004 год.

http://www.gamedev.ru/users/?id=7201

И в заключение такой аккаунт. Его я смог восстановить. Пожалуй, теперь под ним буду писать на форуме. Для солидности. 2005 год.

http://www.gamedev.ru/users/?id=15747

Octave Server

Начал работать над сервером для GNU Octave для лаборатории. Я поискал-поискал и нашел только PHP привязку, причем сам демон сервера тоже на PHP, что не есть хорошо… Поэтому моя идея – сделать сервер на Erlang.

Прототип уже работает. Можно проверить на

telnet dev.erudite-express.ru 20444

 

internal-rfc1918:OctaveServer tirinox$ telnet dev.erudite-express.ru 20444
Trying 195.122.249.19...
Connected to dev.erudite-express.ru.
Escape character is '^]'.
3+2
ans = 5
10-20
ans = -10

Скобки

Они говорили в LISP много скобок… Да, порой действительно много, но они всегда одинаковые – обычные круглые скобки.

А вот Erlang 🙂

jiffy:encode([{[{<<"a">>,1}]}]).

В одном коротеньком предложении уйма скобок всех возможных видов 🙂

Домашний марсоход

Еще позавчера он нарезал свои самые первые круги по моей комнате, а сегодня на него уже повесили хитровыдуманные датчики и показывают инвесторам. Как же быстро растут дети! 🙂

IMG_2596

Робокамеры begins

Наконец-то! Я ее наладил более менее. (А это было не легко)

Итак, перед вами вебкамера, установленная на поворотное устройство с двумя степенями свободы, вещает изображение в домашнюю Wi-Fi сеть, управляется через браузер с компьютера.

Компоненты блока камеры и поворотного устройства:
– Creative Live! Cam Sync
– Рама самодельная из алюминиевого профиля
– 2 серво-привода Avionix (самые дешевые)
– Коммуникационная плата (самодельная)

Блок управления:
– Роутер TP-Link MR3020 с прошивкой OR-WRT 0.76
– Конвертер уровней для UART 3.3 В – 5 В (самодельный)
– Arduino (Freeduino 2009) с контролером ATmega328
– Коммуникационная плата (самодельная)
– Двухканальный стабилизатор напряжения 5 В с воздушным охлаждением (самодельный)
– Обычный блок питания 12 В на 1 А

Известные проблемы: на ярком свету камера дает помехи и дохнет (стрим падает).
Еще необходимо подправить init скрипты, а то приходится каждый раз запускать UART через SSH

Планирую сделать камеру интеллектуальной: она будет следить за источниками движения.

Теплый ламповый

Осень. Пасмурно. Надоела работа… Сделай перерыв!

Super Mario Bros. запущена на эмуляторе Nestopia под Mac OS X 10.8.5 на хакинтоше. Используется геймпад от PS3. Кстати, на Маке есть уже драйвер для этого геймпада, а виндводам остается мучаться с их неполноценной системой, пытаясь скачать кривой драйвер с левых формумов. Я раньше пробовал, ничего не вышло.

dendy

 

Решение проблемы с неудаляемыми играми

Существует официальный баг в Game Center API, когда из списка не удаляется GKTurnBasedMatch. Баг достаточно распространенный, он происходит главным образом тогда, когда активный участник покидает игру (вызов participantQuitInTurnWithOutcome:…) и удаляет ее из своего списка матчей. Игра получает какое-то неверное состояние, после чего остальные игроки не могут ее удалить из списка. Причем не могут как из интерфейса матч-мэйкера, так и вызовом removeWithCompletionHandler:… Возвращается ошибка номер 17 (Error=17) о том, что какие-то параметры заданы неверно. При этом сам матч может иметь уже статус завершенного GKTurnBasedMatchStatusEnded!

Как я уже отметил, Apple призналась в баге, но не исправила до сих пор.

Баг замечен, например, в игре Ой Ё. Об этом было сказано в их блоге. Мы тоже достаточно быстро столкнулись с этой проблемой, и она висела нерешенной почти два месяца. Тут, наконец-то, изучая многочисленные форумы мне удалось найти решение.

Суть в том, чтобы несмотря на завершенность матча попытаться (в случае возникновения ошибки) завершить свой ход, передав его любому другому участнику, затем выйти из игры ВНЕ хода и снова отправить запрос на завершения матча. Этот workaround помог мне со всеми неудаляемыми играми!

Вот код:

- (void) removeGameFromGC
{

    [_match removeWithCompletionHandler:
     ^(NSError *error) {
         if(!error)
         {
             DLog(@"match removed!");
         }
         else
         {
             [self reportError:error];

             GKTurnBasedParticipant *nextParticipant = nil;
             for (GKTurnBasedParticipant *participant in _match.participants)
             {
                 participant.matchOutcome = GKTurnBasedMatchOutcomeTied;
                 if(![TurnBasedHelper isHeLocal:participant.playerID])
                     nextParticipant = participant;
             }

             [_match endTurnWithNextParticipants:@[nextParticipant]
                                     turnTimeout:GKTurnTimeoutDefault
                                       matchData:nil
                               completionHandler:
              ^(NSError *error)
              {
                  if (error)
                  {
                      [self reportError:error];
                  }

                  [_match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit
                                        withCompletionHandler:
                   ^(NSError *error)
                   {
                       if (error)
                       {
                           [self reportError:error];
                       }
                       [_match removeWithCompletionHandler:^(NSError *error)
                        {
                            if (error)
                            {
                                [self reportError:error];
                            }
                        }];
                   }];
              }];
         }

     }];
}

Bioshock Infinite

Bioshock Infinite – лучшее, во что я играл за последние несколько лет 🙂 Настолько все круто, красочно. История, геймплей, сеттинг. Просто офигаеть. Ну и Элизабет, конечно 🙂 Короче стоило того, чтобы собрать под это дело SLI из GTX 670 =)

Элизабет всех достала, поэтому пик рилэйтед будет второй по симпатичности персонаж игры – Захария Хейл Комсток.

Comstock

Игра Study Maths

ТЕМА НА GAMEDEV.RU

Мне лень писать что-то, так что копирую оттуда.

Всем привет.
Мне тут вздумалось погрузиться в дебри нейросетей и запилить быстренько приложение, которое позволяет распозновать рукописные (нарисованные на сенсорном экране пальцем или еще чем-то) цифры. Самая простая идея: игра – обучение/тренировка арифметике. Игроку предлагается некий простенький пример, он решает его и пишет ответ, система распознает и говорит “верно”/”неверно”. Можно еще добавить очки или ограничить время. Тут недавно была похожая тема, но у меня акцент именно на рукописном способе ввода.

Название: Study Maths (рабочее, возможно, сменится)
Жанр: обучающая головоломка
Начало разработки: 19 февраля 2013 года
Текущий статус: есть демка с базовым функционалом
Язык, API: Obj-C, Cocos2D-iPhone

Пока поддерживаются операции сложения (от 0 до 19), вычитания (без отрицательных), умножения (до 10 * 10), деления (на ноль нельзя!).

На алгоритм распознавания потратил очень много времени: почти неделю. Но пока он далек от совершенства. Я использую 5 слойную сверточную нейросеть, наученную на базе рукописных цифр (MNIST, 600000 цифр). Отсюда вытекает главная проблема: в базе цифры написаны ручкой на бумаге, потом отсканированы. У меня же они пишутся пальцем на экране, рендерятся в текстуру и идут на нейросеть. После нейросети есть еще пара хаков: например, моя рукописная 6 всегда почти распознается, как 5. Пришлось использовать некоторые свойства кривых, чтобы различать их. И то, не всегда успешно. Также алгоритм разделения кривых на цифры, который я придумал сегодня утром, иногда сбоит и нуждается в явной доработке. Хочу добавить еще знаки “+” и “-“, позже “.”.

Еще есть концептуальная идея прикрутить к этому делу CMU Sphinx и какой-нить text-to-speech, получим, таким образом, и чисто голосовой вариант. Игра читает игроку пример, игрок отвечает голосом, получает одобрение или наоборот. Обязательно попробую в скором времени, если пойдет гладко (справлюсь менее, чем за неделю), то 100% включу в проект.

Дневник разработки:
19.02.2013 Начало

26.02.2013 Добавлена озвука примеров и результата на аглийском Flite text-to-speech

27.02.2013 Добавлена поддержка распознования голоса (см. видео со звуком):

К сожалению, результат меня сильно не устраивает. Слишком мала точность, требуется тишина, трудно сделать русский язык, приложение очень сильно разбухает в объеме. Так что в первом релизе скорее всего распознования голоса не будет. Я пока не знаю, как улучшить распознования голоса, т.к. использую сторонний API.