• Объектно-ориентированный интерфейс для SQLite на C++

    SQLite — компактная встраиваемая база данных, идеально подходящая для простых задач, вроде хранения игровых уровней или настроек приложения. Подробнее узнать об этой базе данных можно, например, тут.

    Сама библиотека написана на Си, поэтому для её использования неплохо иметь под рукой более-менее удобную объектно-ориентированную обёртку на C++.

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

    [Читать далее…]

  • Фабрика для расстановки объектов игровой сцены

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

    На первоначальном этапе разработке вполне нормально увидеть в игре такой код:

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

    Дело ясно: нам нужен менеджер уровней, который будет считывать данные об объектах из внешнего хранилища и создавать их на уровне.

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

    [Читать далее…]

  • Поиск и обработка ошибок в C++ и UScript

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

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

    [Читать далее…]