Шрифты и прочее - это уже частности. Беда в другом.
Игра разрабатывается уже очень долго и нудно много лет, но при этом представляет собой нагромождение костылей, местами абсолютно бессмысленных. Это при том, что технически игра ну очень простая. То же касается и форматов. Вот зачем, например, было городить WAD, вместо того, чтобы использовать ZIP, который одним махом кроет все нужды, начиная от проверки хеша и заканчивая сжатием, не требуя при этом изобретения велосипеда.
Я что хочу сказать. Чтобы непродуктивная тягомотина не продолжалась дальше, нужен план, который бы составила вся команда, и который затрагивал все темы без исключения: разбиение кода на независимые модули, логику и структуру этих модулей, план их реализации (кто чем занимается), форматы файлов и прочее. Все это нужно забабахать в текстовый документ, чтобы у каждого к нему был доступ, у чтобы каждый ему четко следовал.
Звучит, может, и зверски, но так всегда поступают два и более человека, работающие в команде, потому что:
• Логическая структура.
• Это экономит до черта времени. Даже если каждый будет продолжать работать над D2D время от времени по чуть-чуть, это в разы повысит эффективность.
• Каждый работает над отдельными частями проекта без опаски создать другим геморрой (ну и самому его не получить), потому что эти части независимы. Т. е. работаю без опаски, что у кого-то из команды внезапно бомбанет фееричесая идея, из-за которой половину кода придется переписывать.
Планирование - вот чего не хватает.
Вы главное мне скажите: подобные вопросы вообще нужно здесь, на форуме, обсуждать, или вы где-то еще кучкуетесь. Я к тому, что если принимать какие-то решения, то всем вместе, синхронно.
Jabberwock wrote:
В игре текстурированные растровые шрифты, перегнать их в вектор с сохранением текстуры вряд ли возможно
Я имел в виду изначально пользоваться векторными. Это я упомянул чисто как один из профитов перехода на юникод. Тем не менее, с растровыми шрифтами вменяемая локализация невозможна, потому что рисовать новый шрифт для каждой - это ужас. А так можно было бы найти подходящий по рисунку, и использовать его без проблем.
Обводку векторным шрифтам можно делать силами FreeType, что касается других эффектов, то для этого нужно уже шейдеры пилить (текстурированный шрифт при этом без проблем делается маскированием).
Jabberwock wrote:
Способа загрузить и отредактировать существующий растровый шрифт я не нашел.
Скажи подробнее, что ты имеешь в виду по "редактированием". Если он растровый, то редактировать его вроде как в Фотошопе нужно.
Черный Думер wrote:
Это безусловно, однако тогда нужно придумать, как для локализаций описывать соответствие символов в растровом шрифте символам UTF-8. У меня только один вариант - для каждой локализации пилить таблицу соответсвий номера символа индексу в UTF-8. Если я правильно мыслю - скажите, буду рад.
Пилить таблиц не нужно - Юникод сам по себе таблица. Если ты используешь
формат уже упомянутого BMfont, то для каждого символа в твоем шрифте уже написан индекс. Дальше все просто: ты берешь из строки один символ и смотришь его наличие в таблице, которую сгенерировал BMFont. Если он есть, то используешь ассоциированные с ним координаты для вывода куска из текстуры. Опять же, с векторными шрифтами все проще.
Черный Думер wrote:
SDL 2 не нужен.
Он нужен обязательно. Практически все без исключения кроссплатформенные игры его используют по ряду объективных причин (главная из них - чтобы не городить собственные багованные велосипеды). Тут даже и сомневаться нечего. Например, сейчас D2D использует win api (через Delphi) для создания окна и какой-то Delphi-костыль для создания OpeGL-контекста. И то, и другое кроссплатформенно можно сделать через SDL. Ввод, опять же: как ты сделаешь его кроссплатформенно (да еще и с джойстиком)? При помощи SDL! Плюс в нем полно всяких фич типа обстракции для ввода-вывода, таймеров и прочего, и все это - в одной библиотеке. Можно, по желанию, заменить проприетарный FMOD на православный опенсорсный
SDL_Mixer. И даже использовать
SDL_ttf, чтобы не долбаться с FreeType и UTF-8 напрямую. Причем эти дополнительные библиотеки разрабатывает тот же автор, что и основной SDL, и все они есть в репозиториях каждого дистрибутива Linux-а, что очень большой плюс.