вторник, 26 декабря 2017 г.

Об игровых движках в 2017

Вот тут Jeff Preshing пишет о том, зачем может понадобиться писать свой игровой движок. Тут довольно классические причины: вам нравится, вам хочется контроля за тем, что в движке делается (это обо мне), ну и, обучение само собой, куда без него.

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

Что отметил для себя: я как-бы сторонник обобщения до предела, но тут как раз в статье постулируется подход "наоборот", что порой, не всё стоит обобщать и выделять в абстракции и пример с умными указателями действительно хорош.

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

Приятно, что Unity и Unreal не полностью убили разработку игровых движков (особенно на плюсах).

четверг, 14 декабря 2017 г.

Мои итоги года (часть 1 или метапост)

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

В целом, формально мне удалось выполнить это условие. Но качество постов, на мой взгляд, упало до плинтуса. Я подумал над этим и нашел тому три причины.

суббота, 11 ноября 2017 г.

Ubuntu 17.10, VNC и автологин

Неожиданно в новой убунте перестал работать tightvncserver, который дает возможность . Тупо падает с "No VNC extension on ..." и всё. Правки из гугла не помогли, более того - непонятно почему раньше этой проблемы не было.

Перестал работать автологин в LightDM. При этом, как узнал потом, теперь, вместо единого файла /etc/lightdm/lightdm.conf, есть целых три файла:
  • /etc/lightdm/lightdm.conf
  • /etc/lightdm/lightdm.conf.d/
  • /usr/share/lightdm/lightdm.conf.d/
В сумме там 10 замечательных файлов, каждый из которых может поменять конфигурацию, при этом у трех в одной папке ещё и приоритеты совпадают. Отладить это немыслимо. Хорошо хоть логи есть. У меня такое ощущение, что я пропустил момент, когда такой бардак стал нормой. Раньше был едва-едва один файл конфигурации у приложения и админить такой зоопарк было как-то проще. И автологин работал.

В итоге, к черту выпилил стандартный greeter, заменив его на тупейший скрипт - и, о чудо, всё заработало, автологин пошел. tightvncserver тупо заменил на Vino в автозагрузке, который заработал сразу.

Обидно как-то, 2017-й год на дворе, а апдейты софта в Linux как были русской рулеткой с пятью патронами, так и остались.

среда, 8 ноября 2017 г.

Курс по программированию GPU и рендерингу

Вот тут (предыдущий год тут) нашел очень крутой и современный курс по программированию на GPU и рендерингу.  Демки студентов выглядят круто, в заданиях(помимо возни с CUDA, OpenGL) есть даже рендер травы на Vulkan .

пятница, 13 октября 2017 г.

libclipboard и буфер обмена


Недавно у меня возникла задача: встроить в свой плюсовый движок работу со стандартным буфером обмена системы (в моем случае - Windows и Linux (X11)) для получения и копирования туда текста.  Задача, скажем честно, хотя и тривиальная на первый взгляд, но, вообще, довольно нетривиальная в реализации из-за отвратительной реализации работы с буфером обмена в X11.

пятница, 8 сентября 2017 г.

AppVeyor и Qt

Вот на первый взгляд у первого всё хорошо со вторым, вроде бы всё поддерживается.
Но нет, то x86 не поддерживается в сборке, то Qt Script почему-то уберут (последнее вообще непонятно, сколько ни ставил, всегда был в сборке)

Сама сборка тоже ведёт себя почему-то странно: то не подгружаются пути, то ещё что-то. Хоть самому делай свои образы и  CI.

суббота, 12 августа 2017 г.

Список ссылок на открытые коллекции ассетов

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

суббота, 22 июля 2017 г.

Онлайн-курсы и тесты в них

Пост будет, во многом, что называется "rant".

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

Однако то, как иногда устроен контроль знаний в них заставляет меня грустить. 

четверг, 29 июня 2017 г.

C++ и Reflection

Недавно набрел на два очень интересных доклада по рефлексии в C++: 1 и 2 .

воскресенье, 28 мая 2017 г.

Caffe

Попробовал от скуки завести Deep Image Analogy . Даже несмотря на прекомпилированный бинарник запустить не удалось даже близко - увы, GeForce GT 645M даже близко не тянет нагрузку, хотя CUDA 8 запускается и работает.  

воскресенье, 30 апреля 2017 г.

Впечатления от месяца работы с Haskell

Так уж получилось, что данный месяц я провел за прохождением курса по ФП на Haskell. Курс оказался чрезвычайно интересным, но несколько сложным. Я узнал довольно много интересных вещей. Некоторые из них мне понравились, некоторые не очень. Однако тем не менее, некоторые вещи оказались немного непонятны.

четверг, 9 марта 2017 г.

Clang и GCC: бенчмарк от Phoronix

Вот тут на phoronix провели сравнение Clang и GCC. Вкратце: результаты получились очень даже неоднозначными: где-то выиграл Clang, где-то GCC. Правда на физике (Bullet) выиграл почему-то GCC.

Вполне возможно, что мой бенчмарк из предыдущего поста просто попал в те нагрузки, на которых как раз Clang лучше срабатывает. Такие дела.

P.S. Про результаты опроса помню. Пост будет, но позднее, как только появится на него время.

пятница, 17 февраля 2017 г.

Оптимизация типов в современных компиляторах C++



С. Макконнелл в своей замечательной книге даёт рекомендацию вида "Создавайте типы с именами, отражающими их функциональность" ("Совершенный код", с. 307) и предлагает рассмотреть выделение их в классы.

По идее, это значит, что, даже для каких-нибудь типов предметной области, которые можно выразить через базовые типы языка предлагается выделять класс, чтобы ограничить его функционал и не дать написать ерунду. Логично? Логично.

С другой стороны, возникает вопрос: а какой может быть оверхед по производительности на выполнение такой рекомендации? По идее, хотелось бы, чтобы компилятор убирал все типы, которые тупо оборачивают базовые типы данных и оставлял только голые операции с базовыми типами.

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

понедельник, 30 января 2017 г.

Мой опыт с Visual Studion 2017 RC

Недавно из праздного интереса решил поставить Visual Studion 2017 RC. После беглого просмотра решил переводить pet-проекты на него. Потому что это неожиданно очень годная версия студии.