arctic-engineers-club

Open full view…

Куда я попал и чего тут можно делать?

tiranas
Sun, 10 Mar 2019 03:04:45 GMT

Huldra
Mon, 11 Mar 2019 13:33:41 GMT

Привет! Ты попал на сайт, созданный ради достижений 2 целей. Тут можно без произвола администрации пообщаться о создании игр и обсудить arctic engine с его разработчиками. На сайте действуют простые и понятные правила, вот тут их можно прочитать: https://arcticengine.com/#!/general:-7sbbaj7adylxl6g Тут можно почитать и обсудить интервью с разработчиками игр, познакомиться с документацией arctic engine, обсудить гейм-дизайн, похвастаться своим проектом, пофлеймить о чем угодно.

f1af
Mon, 11 Mar 2019 17:49:48 GMT

Huldra, https://habr.com/ru/post/335512/ и SFML

f1af
Mon, 11 Mar 2019 17:50:40 GMT

Мне кажется, SFML - это то, что ты всегда искала.

Huldra
Mon, 11 Mar 2019 18:13:54 GMT

ImGui это интересная идея, но как раз с Gui я предпочитаю более классический подход. Можешь посмотреть как устроен Gui в arctic engine. Что же касается SFML, ну давай сравним SFML и arctic engine по этой статье. 1. Создайте простую программу на SFML, которая показывает пустое окно. Если вы раньше этим не занимались, то можете воспользоваться туториалом. Скачайте SFML. Ну ладно, arctic engine тоже надо скачать. Дальше инструкция для Visual Studio какие кнопки нажимать чтобы создать проект. Длинная, на несколько экранов. Нужно переключаться между окнами и вписывать разные значения, ничего не забыть, вписать зависимости по таблице, причем мне чтобы попробовать что-то сделать нужно сначала узнать что мне нужно подключить статически, то есть понять какие компоненты sfml мне нужны для моей игры. Удобно? Нет! Просто? Нет! Даже создать проект на arctic engine несравненно проще. Запустить Snow Wizard и ввести там название проекта и все. Причем создаются проекты сразу и для visual studio, и для xcode и cmake. И обновляются так же легко при изменении состава движка. 2. Скача йте ImGui. А с arctic engine не нужно отдельно качать gui, он в комплекте уже есть. 3. Скачайте ImGui SFML биндинг и положите его в папку, в которую скачали ImGui. Важно: добавьте содержимое imconfig-SFML.h в imconfig.h Вот-вот, еще что-то скачать и добавить, а с arctic engine все уже готово. 4. Добавьте папку ImGui в include директории вашего проекта И вот опять arctic engine побеждает 5. Добавьте следующие файлы в билд вашего проекта: (список файлов) Серьезно? Это так оно просто? 6. Если вы будете получать ошибки линковки, то залинкуйте OpenGL к своему проекту. Просто отлично! Оно настолько просто, что еще и не линкуется из коробки! Попробуй arctic engine и пойми насколько там все проще и удобнее!

f1af
Mon, 11 Mar 2019 20:35:21 GMT

Я слышал, что для висуал студии появился свой пакетный менеджер, кажется, NuGet https://docs.microsoft.com/ru-ru/nuget/what-is-nuget Если в списке пакетов уже есть imlib/sfml - то ничего из выше описанного делать не нужно. Просто тыкаешь "установить" и вот оно у тебя уже доступно и для инклуда и для линковки. В линуксе - так же, устанавливаешь пакет и всё готово. Подобная хрень с "впишите, скопируйте, слинкуйте" возникает из-за того, что под винду по сути до сих пор нет унифицированной дистрибуции девелоперских продуктов. Если честно, я сам уже и не помню, что именно меня побуждало крапотливо выполнять все вышеописанные инстуркции, что ты описала как пример. Помню, ещё на первом или втором курсе, я уже свободно мог собрать свой код в статическую или динамическую библиотеку, или использовать сторонние библиотеки типа imgui. Даже мои друзья "тру-хацкеры" говорили: "о, ты крут". Я первей всех среди своих друзей и одногрупников овладел этой темой. Это является мои приемуществом до сих пор. На работе тоже мало кто горит желанием разбираться с имплементацией какой нибудь опер-сорс библиотеки в свой код. Меня любят за то, что подобные задачи всегда можно свалить на меня, а я тому и рад.

Huldra
Mon, 11 Mar 2019 20:37:12 GMT

> @f1af > Если в списке пакетов уже есть imlib/sfml – то ничего из выше описанного делать не нужно. Просто тыкаешь “установить” и вот оно у тебя уже доступно и для инклуда и для линковки. Пакетный менеджер не отменяет необходимость создавать и настраивать проекты. Да к тому же, если игру хочется собрать под несколько платформ, то придется так же руками создавать cmake и xcodeproj, например. А с arctic engine не придется, все создает визард.

f1af
Mon, 11 Mar 2019 20:47:06 GMT

Иными словами, это очень полезный скил - разбираться в сборке и имплементации в свой проект подобных вещей. Вот банальный пример. Тебе нужно нарисовать линию пересечений двух объектов. Причём объекты могут быть любой форму, могут быть выпуклые, вогнутые, бубликом, чайником, зайчиком. Тебе нужно рассчитать координаты пересечения двух этих объектов и создать сплайн, проходящий поочерёдно через все эти точки. Такие задачи являются общими, фундаментальными задачами, и не зависят от специфики проекта. А значит - как пить дать всё это уже кто-то реализовал. Идёшь ты в гугл - и действительно - уже есть целых цать готовых библиотек на данную тематику, больших и маленьних. Но _все_ из них нужно 1. скачивать 2. настраивать 3. собирать 4. подключать к своему проекту Либо.. можно попытаться написать свой велосипед. Очевидно, что если ты раз засядешь, и таки вникнешь и научишься настраивать, собирать и подключать сторонние библиотеки в своей проект - то ты сможешь в даль нейшем быстро и качественно решать поставленные задачи при помощи уже готовых инструментов, код которых оттачивали и вылизывали годами.

Huldra
Mon, 11 Mar 2019 20:50:20 GMT

А вот не так это работает. Есть продукт. В нашем случае продуктов два: SFML и arctic engine И есть пользователь этого продукта. Потенциальный. Этот пользователь станет настоящим пользователем только если преодолеет порог вхождения и кривую обучения. И вот тут у SFML порог гораздо выше, чем у arctic engine.

f1af
Mon, 11 Mar 2019 20:52:42 GMT

"под несколько платформ, то придется так же руками создавать cmake" нет. cmake - это скриптовый язык, заточенный для сборки любых проектов на любых платформах. Иными словами - для всех платформ в твоём проекте должен быть только один CMakelists.txt. Визард для cmake тоже есть. У него есть параметры option (https://cmake.org/cmake/help/v3.0/command/option.html) и для более удобной настройки через графический интерфейс, словно в визарде, есть cmake-gui https://cmake.org/runningcmake/ Где пользователь твоей библиотеки может так же просто как и в визарде потыкать разные опции, если это вообще необходимо.

f1af
Mon, 11 Mar 2019 20:56:21 GMT

"И вот тут у SFML порог гораздо выше" нет, что касается установки и настройки, то абсолютно у всех библиотек, ну разумеется кроме ae, способ настройки и установки и имплементации - стандартизирован. Он у всех одинаковый, этот порог вхождения. Преодолеваешь его один раз для любой из библиотек - и всё, тебе открываются возможности пользоваться _всеми_ библиотеками, раз освоив их способ подключения.

f1af
Mon, 11 Mar 2019 20:57:34 GMT

Они все подключаются и настраиваются одинаково. Я имею ввиду - принцип один и тот же. И набор возможных настроек - один и тот же у всех.

f1af
Mon, 11 Mar 2019 21:00:28 GMT

Вообщем, тут должно быть желание. Повторюсь, есть крутые программисты-математики, которые пишут сног-сшибательные шейдеры, но они ни то что в сборке проекта, они банально SVN/GIT пользоваться не умеют. И при этом им ничего не мешает 1. зарабатывать хорошие деньги 2. радоваться жизни. Так что если тебе не интересно _понять_ зачем и почему весь мир использует cmake - ну, значит не интересно. Значит ты можешь пока ещё обойтись без этого.

f1af
Mon, 11 Mar 2019 21:01:48 GMT

Ну тем не менее, приятно было поболтать. Прости что я психанул в тот раз.

Huldra
Mon, 11 Mar 2019 21:04:57 GMT

В дизайне SFML есть очень странные вещи, например, разделены sound и music, хотя разница между ними незначительна. В целом SFML похож на arctic engine по API, но у SFML почему-то многие вещи шиворот-навыворот сделаны. Чтобы в SFML нарисовать спрайт нужно вызвать метод окна, в который этот спрайт передается. Но при этом чтобы проиграть звук не нужно вызвать метод звуковой карты, на которой этот звук проиграется, то есть API неконсистентно идеологически. Как будто делали как попало, не задумываясь. В arctic engine я стараюсь делать все удобно и интуитивно понятно. Чтобы нарисовать спрайт нужно вызвать его метод, чтобы проиграть звук нужно вызывать его метод, это гораздо естественнее. Другая особенность SFML в том, что он не предоставляет более гулобокого уровня, есть простое API и им предлагается пользоваться всем. В arctic engine изначально задумано 2 уровня API, на простом уровне игры делаются легко и непринужденно, но API как и API SFML несколько ограничено ради простоты и удобства использования. А вот на детальном уровне arctic engine дает гораздо больше свободы, чем SFML.

Huldra
Mon, 11 Mar 2019 21:10:48 GMT

> @f1af > то абсолютно у всех библиотек, ну разумеется кроме ae, способ настройки и установки и имплементации – стандартизирован. Нет, все не так! Конечно же у ВСЕХ библиотек как раз встречаются ВСЕ возможные способы настройки и установки, и они именно что ВСЕ РАЗНЫЕ. Мало этого, они еще часто оказываются написаны на разных языках и могут требовать, например, разные версии интерпретатора или компилятора или еще каких-то других библиотек, да так, что приходится выбирать, какую из библиотек взять, а от какой отказаться из-за невозможности нормально использовать обе, при том что библиотеки могут быть например для чата и для проигрывания видео. И arctic engine - не библиотека! Это игровой движок!

Huldra
Mon, 11 Mar 2019 21:30:26 GMT

Или вот еще странность в дизайне SFML: я хочу сделать простую игру, в которой можно управлять машинкой и сбрасывать на дорогу за собой мины. Мин всего 4 и очень важно сбросить их именно когда игрок нажал на кнопку сброса мины. SFML позволяет посмотреть на текущее состояние кнопки, но не узнать, когда кнопка была нажата. При этом если между двумя нажатиями для сброса мины будет долгий кадр, игра на SFML запросто пропустит второе нажатие и будет сброшена только одна мина. В arctic engine для этого есть простой метод IsKeyDownward, которым легко воспользоваться для решения этой и многих других задач. Обработка ввода в SFML немного похожа на обработку ввода в arctic engine и можно обработать сообщения "кнопка нажата" и "кнопка отпущена" самостоятельно, но и эти сообщения в SFML доставляются по одному и после их доставки их нужно как-то сразу обрабатывать. Это же не удобно! В arctic engine все сообщения, пришедшие за прошлый кадр, доступны в виде удобного массива. По ним можно проходить в любом порядке и любое количество раз, сообщения вообще являются нормальными структурами, а не как в SFML, где обещают undefined behaviour при попытке создать сообщение руками.

f1af
Tue, 12 Mar 2019 07:17:53 GMT

@Конечно же у ВСЕХ библиотек как раз встречаются ВСЕ возможные способы настройки и установки, и они именно что ВСЕ РАЗНЫЕ.@ Если ты научишься справляться с этими проблемами - это будет твоим очень значимым преимуществом перед коллегами на работе.

first page
previous