Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SFML библиотеки для кодеров
GAMEINATOR forums > Общие разделы > Создание и модификация игр. Геймдев. > Игровые проекты форумчан
jamakasi
Периодически читаю и ищу "всяко разное" на просторах и тут наткнулся на просто уму непостижимые библиотеки.
Сайт проекта.
Минитуториалы, не поймет разве что ребенок не умеющий читать.
Simple and Fast Multimedia Library (Простая и быстрая мультимедиа библиотека).
Текущая версия: 2.1
По сути является огромным и реально простейшим фреймворком над разносторонними(в т.ч. бесплатными) библиотеками(OAL, OGL ...).
Преимущества:
1)Имеет лицензию zlib/png license (Предоставляется как есть, можно использовать в коммерческих целях с указанием использования библиотеки).
2)Полностью кроссплатформена(Win, MacOs X, Linux), вскоре ожидается порт на Android и IOS.
3)Полностью открытый исходный код.
4)Библиотеки как для х64 так и х86(тяжело поверить но это реально так и все сделано аккуратно), также поддержка разных компиляторов.
5)Официально поддерживает языки C и .Net, благодаря сообществу есть порты на Java, Ruby, Python, Go и множество других яп.
6)Библиотеки для работы:
- с сетью. HTTP|FTP|tcp\ip|udp|socks ...
- со звуком. Воспроизведение и т.п.| Запись | Работа со звуком в 3D | VoIP ...
- с графикой. Спрайты | текст | примитивы | лоадеры графики ...
- с системой. Таймеры | стримы(Streams) | потоки(Threads) | строки(поддерживает кирилицу =) ) | векторы ...
- с окнами. Окна на основе OpenGL(есть поточный рендер). Клава,мышь,джостик | эвенты ...
7)Все библиотеки независимы друг от друга. Т.е. можно взять только библиотеку звука или\и графики и т.п. Можно в совокупности всего написать игру.
8)Все реально проще некуда, отличная документация, уйма примеров.
9)Минимальный размер в 9 мегов с примерами, исходниками,документацией, скомпиленными либами и dll.

Недостатки пока не нашел.

Личное ощущение что нашел клад, sdl нервно курит в сторонке.
Приведу пару примеров:
Контекст OpenGL
#include <SFML/OpenGL.hpp>

...

sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 8;
settings.antialiasingLevel = 4;
settings.majorVersion = 3; //Мажор версия OGL
settings.minorVersion = 0; //Минор версия OGL т.е. используем OpenGL 3.0 . Те кто пробовал инициализировать oGL от 2.0 и выше поймут какой это геморой

sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, settings);

Гениально и просто.

Потоки
#include <SFML/System.hpp>

...

sf::Thread thread(&func); Создаем поток

// Запуск
thread.launch();

Звук
#include <SFML/Audio.hpp>

int main()
{
sf::SoundBuffer buffer;
if (!buffer.loadFromFile("sound.wav"))
return -1;

sf::Sound sound;
sound.setBuffer(buffer);
sound.play();

return 0;
}

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

Жду вашего мнения, а сам потихоньку отхожу от шока и читаю api smile.gif
PS: Существует книга по разработке игр на этих либах, гуглится в бухте пиратов по "SFML Game Development" biggrin.gif
nuan
Ммм... Вкусно ) нужно реально сделать раздел под программеров, чтобы можно было такие вещи постить, свои и т.п.
jamakasi
Цитата(nuan @ 09.08.2013, 23:16) *
Ммм... Вкусно ) нужно реально сделать раздел под программеров, чтобы можно было такие вещи постить, свои и т.п.

Полностью поддерживаю. Туда же можно смело перенести темы вопросников по программированию, собирать интересные статьи и библиотеки\движки.

PS: нашел цикл из 11 статей по написанию простейшего пинпонга.
nuan
да именно, разделить асм там, сишники , нет , базы и т.п. , у меня гигов 20 материала по net , sql server и т.п. вещам...
Можно кидать свои исходники, как то обсуждать... искать пути решения, а не сливать все в 1 тему , где уже загадили все.
jamakasi
nuan, разделять точно не надо т.к. на форуме не так много программистов, вот разделить например на 2 ветки WEB и С\NET... будет грамотно. Возможно многих заинтересуют некоторые темы т.к. народ по большей части на форуме креативный.
nuan
Но net то и asp.net и сильверлайт )) это к вэб )
VIGUR
Когда-то серьезно задумывался об использовании SFML для своей игры... Это было после создания Megablox на движке HGE. Тогда, для нового проекта, мне хотелось в перспективе мультиплатформенности одновременно с гибкостью и дополнительными возможностями. Рассматривал кандидатуры SFML и SDL. Преимущества SFML тогда перевесили.
Даже начал что-то делать. Ковырялся с отображением кириллицы в UTF-8 для шрифтов, а потом забил на все это дело. Позже открыл для себя возможности и удобства нативного Displaylist'а в ActionScript, тогда друг посоветовал попробовать и я увидел разницу с разработкой на С++ на тех же HGE и SFML. smile.gif Тогда же друг посоветовал сразу писать на на ActionScript'e, а на новом языке Haxe с использованием NME (фреймворка, который делает разработку на Haxe практически идентичной с разработкой на ActionScript, используя все преимущества последнего, но сразу "из коробки" поддерживая дополнительные удобные фичи и кроссплатформенность, т.е. возможности компиляции не только под Flash-платформу, но и под платформы HTML5(JS), Win(neko, C++), Mac, Android, iOS, Blackberry, Amazon и т.д.). Это действительно оказалось очень удобно. Сейчас заканчиваю Turnabout именно в связке Haxe + NME. Но для тех, кто хочет пописать на плюсах, все-таки могу посоветовать и SFML.
nuan
VIGUR я плюсы , как страшный сон пытаюсь забыть ))) для небольших игр и программ ) вполне net подходит, просто и сердито.
А насчет раздела - подумай... Может реально запилить?
jamakasi
Пара игр разрабатываемых на основе SFML которые понравились мне:
1) Геймплей диаблоподобной хак эн слеш. Оффсайт.
2) Трелер. Добротная космическая стрелялка, полностью играбельна. Исходники есть на гитхабе. Оффсайт
3) Геймплей. Коммерческая игра. Оффсайт.

Если посмотреть проекты пользователей на форуме то там просто тьма разных игрушек и прототипов.
autistic
друзья! не увлекайтесь фреймворками и библиотеками на все случаи жизни, универсальность не нужна! такие библиотеки не заменят божественный дар писать чистый и понятный код, а только превратят его в говно, в попытках подстроиться под чужую идеологию (иногда не самую приглядную) многоразныхлюдей которые эти библиотеки разрабатывали. фактически, ваш код превращается в некую прослойку, т.н. app glue, между этими библиотеками, писать нечто свое гораздо интереснее и много удобнее.
это не призыв вовсе не использовать сторонние библиотеки, вроде zlib, openal и т.д. но это совсем не одно и то же, тут вы просто используете готовую библиотеку в рамках какой-то отдельной задачи, а не конструктор "сделай сам" где за вас уже кто-то подумал.

Цитата(nuan @ 10.08.2013, 00:40) *
VIGUR я плюсы , как страшный сон пытаюсь забыть

как толсто. нельзя забыть то, что толком не знаешь, так что говори как есть - ниасилил smile.gif
с/с++ и философия этих языков - это не для анскильных питушков, это выбор настоящего джедая, ктоме того это единственный на сегодня инструмент разработчика игр.
jamakasi
Цитата
refuse,друзья! не увлекайтесь фреймворками и библиотеками на все случаи жизни, универсальность не нужна!...
Для мелких проектов самое то, а для больших лучше писать свои велосипеды тут согласен.
autistic
Цитата(jamakasi @ 11.08.2013, 15:51) *
Для мелких проектов самое то

я бы согласился в том случае, если под мелким проектом подразумевалось сколотить что-нибудь на скорую руку, сильно не вникая в детали и не особо заморачиваясь на говнявость производимого кода, а так какой смысл тащить в небольшой проект туеву хучу зависимостей?
jamakasi
refuse, например захотелось сделать просмотрщик моделей из какой либо игры. Вместо того чтобы тратить время на написание болванки рендера для строгой платформы(вин\линь) можно сразу заняться эксперементами и парсингом модели, а уже потом думать по поводу написания рендера с нуля. Или же просто захотелось поэксперементировать\поизучать какую либо область геймдева например бсп деревья то не заморачиваешься с областью ответственной за рендр.
Хотя сколько людей столько и мнений, мне лично именно эти библиотеки понравились больше чем sdl т.к. не имеют никакого мусора и ненужного кода, все прозрачно и понятно. По ощущениям работает быстрее чем тот же sdl. А так даже если начать делать на таком небольшом фреймворке и проект разрастется до чего то серьезного то можно будет и переписать одноименные методы либо просто подправить под свои нужны ,благо код более читаемый чем "опять же smile.gif " в sdl.

PS: написал кашу какую то wink_old.gif , не выспался я сегодня(
autistic
Цитата(jamakasi @ 11.08.2013, 18:42) *
например захотелось сделать просмотрщик моделей из какой либо игры. Вместо того чтобы тратить время на написание болванки рендера для строгой платформы(вин\линь) можно сразу заняться эксперементами

а, ну тогда ок. я правда все же предпочитаю свой графический движок, единожды написанный и используемый в подобных случаях, но было время использовал ogre, osg и qt.
nuan
refuse а зачем заморачиваться ) если можно быстро и эффективно что-то сделать... бывает заказчик хочет сейчас ) ему не нужно чтобы быстро работало, стабильно или еще как то ) главное чтобы кому - то показать )
autistic
Цитата(nuan @ 11.08.2013, 19:14) *
refuse а зачем заморачиваться ) если можно быстро и эффективно что-то сделать... бывает заказчик хочет сейчас ) ему не нужно чтобы быстро работало, стабильно или еще как то ) главное чтобы кому - то показать )

ну тут речь идет об использовании в личных проэктах. если говорить о коммерческой разработке то там много условностей которые необходимо соблюдать, нельзя просто так взять и впилить в проэкт все что тебе вздумается =))

ну а если ты волен самостоятельно принимать решение, то тебе тем более надо позаботиться о сопровождаемости, коллегах и тех несчастных, коим спустя годы придется разгребать это говнище )))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2022 IPS, Inc.