Выбор начинающего c++ gamedeveloper-а: SDL, SFML или что-то ещё?
Здравствуйте!
Вопрос такой: для разработки простеньких игр (на данный момент хобби) под C++ (владею языком на среднем уровне) в какую из библиотек лучше углубляться? Слышал, что SFML более современная и поддерживает концепцию ООП, тогда как SDL более популярная и имеет длинную историю =)
Мой выбор пал на SDL (точнее SDL2), однако активное использование в ней си-стайла (указатели вместо ссылок, си-строки и т.п.) наводит на меня тоску. Думаю, если и стоит с ней работать, то только если предварительно найти/создать самому обёртку (со всякими вкусностями типа умных указателей) вокруг её исходных функций. Но в таком случае стоит ли овчинка выделки и не легче ли сразу перейти на SFML (который я ещё не пробовал использовать)?
Изначально же мой выбор пал на SDL потому, что в одном из топиков на Reddit кто-то делился опытом разработки под SFML и сказал, что на многих драйверах их проект слетал, в связи с чем пришлось его полностью переписать под SDL, которая работает вполне стабильно.
В другом месте кто-то упоминал, что SDL даёт доступ к некоторым низкоуровневым вещам, к которым в SFML доступа нет.
Хотелось бы знать (если кто-то в курсе): действительно ли у SFML могут возникнуть проблемы с драйверами? И пригодятся ли мне (теоретически) те низкоуровневые вещи из SDL?
Ну и в целом сравнение этих двух библиотек также приветствуется.
P.S. Где-то в топике про геймдев наткнулся на библиотеку Allegro, которая в отличие от предыдущих двух поддерживает iOS и Android. Также на вики видел упоминание либы clanLib, которая вроде как заточена под гейм-девелопмент. В общем, что я хочу сказать: если знаете что-то по поводу упомянутых или каких-либо других подобных библиотек - также жду от вас ответа.
UPD. Извиняюсь, проглядел - на оффициальном сайте SDL написано, что iOS и Android поддерживаются. На сайте SFML же сказано, что поддержка появится в скором времени.
UPD2. Не указал в вопросе, но вообще хочется иметь дело с чем-то кроссплатформенным (а включая мобильные платформы так вообще красота), а не заточенным под конкретную операционку. Плюс сами проекты собираюсь разрабатывать в Linux Ubuntu (+ потом компиляция готового кода под Windows), соответственно инструменты должны иметь возможность запускаться под линуксом :)
Обращайте внимание на даты плохих и хороших комментариев к фреймворкам.
Лично я предпочёл SFML именно из-за плюсанутости. Писать свои обёртки над SDL желания не было никакого, а недостатки SFML конкретно меня не коснулись. Низкоуровневые вещи в SFML доступны, потому что доступен OpenGL. Просто в SFML нет обёрток для функционала, касающегося 3D.
Игрушка завелась на Win7 и Убунте.
SFML поддерживает и iOS и Android, но там "всё очень сложно".
SDL тоже поддерживает, но могу ошибаться.
"Просто в SFML нет обёрток для функционала, касающегося 3D." но насколько я понимаю, с SDL та же самая история, 3D из либы не доступен? Только если через OpenGL
Про даты комментариев - верно подмечено, подозреваю, что тот отзыв о плохой поддержке драйверов был достаточно давно. Причём даже оказалось, что тот комментарий был вовсе не на реддит и теперь я его даже найти не могу... В общем, зря испугался, не разобравшись в вопросе глубже.
Puchryamba: Я с SDL даже разбираться не счёл нужным, так что не знаю, как там с поддержкой 3D. Меня интересовало именно 2D, а с ним в SFML достаточно неплохо. С документацией у SDL получше, конечно, но туториалы в SFML достаточно обширные, даже шейдеры по ним подключить получилось, хотя никогда ранее их не использовал.
Богдан Марков: В соответствии с UPD2 всё-таки посоветую Unity. Сам от него отказался как раз из-за нежелания учить C# (всё равно придётся рано или поздно) и некоторого оверхеда.
Писать под андроид на чём-то, кроме Явы, не самое приятное занятие. Про iOS ничего не скажу, но уверен, что там swift будет приятнее.
В общем, настоятельно рекомендую Юнити. И себе тоже его рекомендую.)
Я пробовал устанавливать себе Unity, но пока что мне он кажется слишком мощным. И даже наверное не в этом дело, а просто хочется компилить код как обычную программу :)
К тому же, самого Unity под Ubuntu нет, а пока хочется покодить именно здесь, в привычной среде =)
Насколько я понял, HGE создан для разработке на windows-платформе и только под windows-платформу (хотя мб ещё под xbox)? В обязательном порядке использует DirectX.
Суть в том, что я сижу на Linux Ubuntu, поэтому данный инструмент мне не подойдёт, но спасибо за совет =)