0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
1

Функционального программирования игр

21.04.2018, 00:56. Показов 1780. Ответов 21
Метки нет (Все метки)

Посоветуйте стек технологий для разработки 2D игр на каком-то функциональном языке программирования.
Давно хотел наконец перейти на какой-то язык функционального программированния и сейчас у меня (точнее у нас) есть желания разобратся с разработкой игр. Для начала хотелось бы написать несложную (пока бесплатную) 2D игру (какую именно уже решено) и посмотреть как это все выглядит и кому она понравится. На производительность ограничений нету. Впринципе в ближайшем будущем я таки буду разбиратся с каким то мочным движком (наверно Unreal Engine) поэтому выбор языка стремится к C++.
Я фул-стек веб разработчкик, а для простой игры на 2D сторонний движок использовать какой-то особо нет нужды, поэтому думаю писать на elm... Темболее лучший способ разобратся с какой-то новой темой - это написать велосипед, если есть время на это.

Предлагаю обсудить тему функционального программирования в разработке игр. Как минимум будет полезно услышать о чьем-то опыте.
Конечно если бы можно было бы писать например на Haskell было бы замечательно, но этот код потом прийдется переписывать, если нужно будет использовать в следующих проектах. Знаком с .NET так что F# тоже вариант.
Короче говоря я не знаю насколько это вариант если потом прийдеться разбиратся с Unreal Engine и ламать себе голову как этот функциональный опыт применим в C++ . Но я предпочитаю в первую очередь разобратся, а сделать лишь бы работало и продавать меня не особо интересует в ближайшее время, пока зарабатывать можно и на вебе. Уж слишком люблю программировать чтобы делать что-то некрасиво. Мне психологически легче написать на фунцинальном языке, а потом переписать или транслировать это на С++ чем другие подходы. Разработка языков или инструментов программирования (в данном случае транслятора) мне интересует больше всего на свете, но не вижу как на этом можно серйозно заработать не имея паро лямов)) Але если говорить о суммах меньше то хлеба и воды достаточно
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2018, 00:56
Ответы с готовыми решениями:

Изучения программирования игр
Привет форумчане! Люблю компы, технику и т.д. поэтому решил заняться программированием. Начал с...

ПО для программирования игр
Здравствуйте. Что-то захотелось мне сегодня попробовать заняться чем-то новеньким и мой взгляд...

Какой язык программирования лучше для игр?
си или си++?

Какой язык программирования выбрать для создания игр?
Какой язык программирования выбрать для создания игр? Си или Си++. Собираюсь писать, как сложные,...

21
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 01:05 2
kissarat, В играх ФП применим чуть менее чем никак. В системах такого уровня сложности рулит исключительно грамотное применение ООП.

Добавлено через 6 минут
Цитата Сообщение от kissarat Посмотреть сообщение
это написать велосипед
Для примитивной 3D в духе а-ля Doom-2 там писать то особо нечего, особенно при пользовании толковой древовидной инфраструктуры объектов на интрузивных контейнерах. Кстати вопросов гораздо больше возникает с аналитической геометрией и физикой нежели с разработкой инфраструктуры.

Добавлено через 23 секунды
Цитата Сообщение от kissarat Посмотреть сообщение
это написать велосипед
Для примитивной 3D в духе а-ля Doom-2 там писать то особо нечего, особенно при пользовании толковой древовидной инфраструктуры объектов на интрузивных контейнерах. Кстати вопросов гораздо больше возникает с аналитической геометрией и физикой нежели с разработкой инфраструктуры. 2D - это тот же 3D только без третьей координаты.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 01:12  [ТС] 3
Меня физика не особо интересует. Только логика и красивое абстрагирования. Да с физикой походу разбирусь, это не абстрактная алгебра... (но всегда готов быть неправ)
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В играх ФП применим чуть менее чем никак. В системах такого уровня сложности рулит исключительно грамотное применение ООП.
Но ФП более абстрактно и подходы с ФП можно использовать опираясь на ООП.
В любом случае хочу убежать с веба в свой идеальный мир))
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 01:29 4
Цитата Сообщение от kissarat Посмотреть сообщение
Но ФП более абстрактно и подходы с ФП можно использовать опираясь на ООП
kissarat, глупости. просто новомодные глюпости и не более. Реально виде ФП поделки для набора частных решений объемом 300 тыс строк JS кода которые толком не работают. Для сравнения движок универсального решение подобных задач которое пашет уже более 20 лет с применением ООП укладывается в порядка 20 тыс строк. Это на С++ времен середины 90-х. На современных плюсах будет коротче раза в 2. Как только начинается геометрия, и прочие матфизики и древовидные иерархии сущностей предметной области без ООП никуда.

Цитата Сообщение от kissarat Посмотреть сообщение
Да с физикой походу разбирусь, это не абстрактная алгебра... (но всегда готов быть неправ)
Она вся на алгебре и дифурах построена. А поперед ней аналитическая геометрия для определения того что с чем физичить.

Добавлено через 7 минут
Цитата Сообщение от kissarat Посмотреть сообщение
любом случае хочу убежать с веба в свой идеальный мир))
Цитата Сообщение от kissarat Посмотреть сообщение
это не абстрактная алгебра...
Учитывая второе высказывание идеальнее веба вы для себя врядли что то найдете. Программирование начинается с математики. вообще в вузе на каждый язык программирования отводится около семестра. А разноплановую математику учат все 5 лет. К примеру объем курса только матанализа у программистов равен объему всего курса высшей математики изучаемой общетехническими специальностями. И эта математика - только азы необходимые для того чтобы разбираться в предметной области реальных задач. Геймдев при этом - лидер по разноплановости предметных областей которые необходимо упрячь в одну упряжку.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 01:48  [ТС] 5
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Она вся на алгебре и дифурах построена
Да неужели)) Кроми идеального мира меня еще разработка игр заинтересовала потому что можно подтягнуть математику сразу на примерах и позадротничать/позаморачиваться с поиском лучшего решения с меньшим кодом. Единственная проблема - сами видеоигры меня не интересуют, только конструирования мира. Материальный мир по-интереснее

Добавлено через 6 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Программирование начинается с математики
Наконец я математику увижу, а то одна арифметика пока была)) Впрочем может мне так кажется, потому что много к чему сам дохожу, важно то в первую очередь умения логически мыслить и четко разграничивать эмоции, извращения, фантазий и интуицию, если логика ничего не дает

Добавлено через 5 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Учитывая второе высказывание идеальнее веба вы для себя врядли что то найдете
Нее, там слишком мало ограничений. Изучения мира (физики) все же поинтереснее, может матерым материалистом стану))
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 01:52 6
Цитата Сообщение от kissarat Посмотреть сообщение
Единственная проблема - сами видеоигры меня не интересуют, только конструирования мира. Материальный мир по-интереснее
А те кто реально работают в конструировании реального мира знают всю эту математику настолько хорошо, что на западе геймдеверским компаниям просто не по карману. Настолько сильный дефицит спецов в сфере конструирования моделей реального мира для промышленных и научных нужд, где упрощенные до предела модели считающие иллюзию процесса не пойдут, нужны точные. К примеру предоставьте сколько к примеру матфизики и сопромата заложено в расчета "по наукам" пробития преграды пулей, если на топовом железе, которое геймерам мягко говоря предел мечтаний, счет одного пробития идет часа 3.

Добавлено через 1 минуту
Цитата Сообщение от kissarat Посмотреть сообщение
Изучения мира (физики) все же поинтереснее, может матерым материалистом стану))
Так оно все на алгебре. К примеру аналитическая геометрия - это частный случай линейной алгебры. Физика вся на дифурах и соответственно реализуется на их интегрировании разными численными методами. Там без алгебры вообще никуда, она основа основ всей вышки на которой физика физичит и сопромуть сопромутит.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 01:57  [ТС] 7
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Настолько сильный дефицит спецов в сфере конструирования моделей реального мира
Походу я вообще зря веб девом работал, учитывая то, что постоянно в голове что-то моделирую или симулирую.
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 02:01 8
kissarat, Это на Западе. В СНГ из разработок симуляций если что то и есть то в основном геймдев. Да и то серьезного уровня 2-3 конторы.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 02:12  [ТС] 9
Надо же с чего-то начинать. Всеравно на хорошое понимание гемдева уйдет года два. Да нет, устроится на офис меня не устраивает, слишком уж своенравный. Морально проще самому что-то придумать и есть кому продавать
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 02:23 10
kissarat, И ФП зря голову забивали. Для симуляций ООП единственный годный инструмент. А ФП вытащили из его болота только потому что там замыкания есть спецом для веб фронт-энда. Причина - при обработке древовидных стурктур объектов, состояния по любасу хранить надо. А учить вебдеверов ООП - ну как бы образовнием "средняя школа" которое сейчас в требованиях для процентов 90 вакансий по веб деву на Западе, не отделаешься. ООП это инструмент инженера. Вообще все вакансии Software Engeneer, а особенно из областей моделирования и CAD/CAM, на забугорных сайтах начинаются со слов Strong algorithmical and analitical skills. Strong mathematical background. Strong OOP skills. А о ФП ни пол слова. А выпустить вузы могут процентов 10 спецов от количества вакансий - т.е. отвлекать инженеров на разравнивание кнопочек сильно дорого. Иначе такого уродства как React,Angular, Node и т.д. не было бы в принципе. Задача визуального построения итерфейса и связывания его с источниками данных, в том числе с удаленными, решена общем виде еще в середине 90-х. И перенести ее на веб проблема только одна - от того кто ее пользует требуется очень глубокое знание ООП и умение понимания и построения высокоуровневых абстракций.

Добавлено через 5 минут
kissarat, Серьезные системы моделирования реального мира от одиночки никто не купит. Они во первых применяются в тех сферах где софт подлежит обязательной сертификации, во вторых если контора садится на такой софт она садится на него очень серьезно - т.е. должна быть уверена в том что будет долгосрочное сопровождение и апгрейды. Одиночка такой уверенности дать не может. При этом работа не то что фрилансм, ремот фулл-тайм в конторах занимающихся подобными разработками априори не существует.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 02:47  [ТС] 11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Серьезные системы моделирования реального мира от одиночки никто не купит
Да не моделирования меня интересует. Меня вообще общий язык интересует) Безпредметно углублятся в математику для этого как-то влом
В геймдеве больше нужно думать чем вебдеве, а то уж совсем разленился
Да и не в одиночку, если уж на то пошло. Была бы идея, инвесторы найдутся
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 03:57 12
Цитата Сообщение от kissarat Посмотреть сообщение
Меня вообще общий язык интересует) Безпредметно углублятся в математику для этого как-то влом
А на самом деле математика и есть общий язык. Любой язык программирования - это всего лишь ручка которой компу записывается найденный способ решения задачи. Вообще разработка софта имеет свойство начинаться с написания толмуда под названием "математическая постановка задачи". А написание кода это самая финальная, наиболее простая часть процесса разработки, которая выполняется тогда когда в задаче уже абсолютно все ясно и понятно.
НУ а если геймдев и вообще графика интересует - то начинать надо с серьезного изучнения векторной алгебры и аналитической геометрии в первую очередь. На них все позиционирование, повороты/перемещения и определение взаимного расположения геометрических примитивов держится.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 04:53  [ТС] 13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А написание кода это самая финальная, наиболее простая часть процесса разработки
Вот как раз меня это смущает. Можно же просто сформулировать задачу на математическом языке в .math файле, грубо говоря, а потом уточнить на этапи программировання там, где код не может быть сгенерирован автоматически. Зачем минимум трижды писать одно и тоже - документацию, код и тесты. Почему первые строки кода - это не ТЗ. На основании документации должны генерироватся тесты или наоборот
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 05:02 14
Цитата Сообщение от kissarat Посмотреть сообщение
Конечно если бы можно было бы писать например на Haskell было бы замечательно
Это было бы ужасно. Хаскель абсолютно непригоден для описания сущностей предметных областей и механизмов взаимодействия между ними. Вообще для серьезных задач в плане моделирования процессов и конструирования мира есть только один годный язык - С++. Для просто числодробилок еще фортран хорошая штука.
Цитата Сообщение от kissarat Посмотреть сообщение
Разработка языков или инструментов программирования (в данном случае транслятора) мне интересует больше всего на свете, но не вижу как на этом можно серйозно заработать не имея паро лямов))
Да в принципе в парсинге языка ничего особо сложного нет. Даже можно сказать больше - существует целое семейство алгоритмов позволяющее задать им синтаксические правила любого языка а на выходе получить абстрактныый синтаксический граф который потом оптимизируется и уже по нему производится кодогенерация. А компиляторы на сегодняшний день все больше и больше стремятся быть фронтендом какой либо VM способной докомпилировать промежуточное представление в код как можно большего количества целевых платформ. Даже современные плюсы через LLVM компилят. С интерпретаторами там все еще проще - по большому счету абстрактный синтаксический граф штука пригодная для пользования его в качестве VM после небольшого допила и привязки менеджера памяти для проги. Ну а вообще многие языки на своем итапе идут путем транспиллера, конвертирующего код с нового языка в уже существующий. К примеру первая реализация С++ была именно такой - транспиллер в С.
.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 05:11  [ТС] 15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А написание кода это самая финальная, наиболее простая часть процесса разработки
Да и не будет целого зоопарка языков, потому что все они со временим станут двухсторонне транслируемые на общий язык. Я не говорю, что возможна однозначная неизбыточная трансляция, но драйвера и алгоритмы в первую очередь следует писать на том, что можно сгенерировать в библиотеку в любом языке. И общих языков тоже будет не один, но победит самый лаконичный.
И когда я говорю общия язык я же не имею ввиду только для машин, да и идея не в том, чтобы он имел какойто один текстовый формат, а чтобы в текст можно было любые форматы транслировать. Математика была бы языком если бы в книгах по математики небыло текста, да и для коммуникации и хранения данных она не предназначена, в ней нельзя обозначить и зафиксировать что-то конкретное, у нее нет библиотек, так что не надо
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 05:33 16
Цитата Сообщение от kissarat Посмотреть сообщение
Можно же просто сформулировать задачу на математическом языке в .math файле
В толмуде "математическая постановка задачи" формулируется не задача, а точный способ ее решения. т.е тупо выводятся все счетные формулы. А вот для записи полученной последовательности действий - т.е. алгоритма - лучше всего подходит специально созданный для этих целей язык. Т.е. алгоритмический язык универсального назначения. Т.е. что то из серии С++, Паскаль и последыши, Ада, фортран. Наиболее удобный для конструирования мира именно С++, в следствие сильно развитой системы шаблонов, позволяющих очень лаконично создавать в том числе и разноплановые автоматы управления памятью. Языки со встроенным GC в таких задачах не пригодны в принципе, в следствие фактически полного отсутствия автоматического управления памятью и возможности ее реализации, при этом все такие языки нишевые и универсальными не являются..

Добавлено через 2 минуты
Цитата Сообщение от kissarat Посмотреть сообщение
Да и не будет целого зоопарка языков, потому что все они со временим станут двухсторонне транслируемые на общий язык
НА самом деле все не так просто. К примеру VCL на дельфях писана а не на С++ только потому что автоматическая трансляция с паскаля на С++ возможна, а на оборот нет, даже на невменяемый диалект дельфы который уже 20 лет за уши подтягивают до возможностей С++.

Добавлено через 6 минут
Цитата Сообщение от kissarat Посмотреть сообщение
И общих языков тоже будет не один, но победит самый лаконичный.
В ближайшее время отомрут многие отрасли индустрии. К примеру вебдев очень скоро канет в лету как таковой. Учитывая что пихают в HTML 5.2 и перспективы развития его подтягивают до уровня API осей по возможностям описания элементов интерфейса (окон и контролов), так же интересные нововедения в HTTP 2 который полностью бинарный. Все идет к массовому выдворению скриптовых языков и хуман-ридабле форматов из веба и переходу на средства визуальной разработки интерфейсов и визуального датабиндинга по типу десктопных. Они на порядки продуктивней. Тоже касается бэк-энда. Ужастики по пару миллионов строк там, где скорее всего можно вообще почти без кода, и фронт-енд скрипты на страницах весящие больше чем первые дистрибутивы винды - это уже перебор.

Добавлено через 9 минут
Проблемы с трудно обнаруживаемыми утечками памяти, и прочими негараздами GC тоже всех давно достали, а они резко обострятся при переходе к концепции обработки клиентов в интерактивном режиме, который дают вебсокеты и HTTP2, а не только в пакетном как было в HTTP 1.1, которому концепция отдельно запускаемых на каждый пук процессов-скриптов уже не просто неудобна, а противопоказана в принципе.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 05:51  [ТС] 17
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Наиболее удобный для конструирования мира именно С++
Ладно, решено. Впринципе я это понимал когда создавал тему, но думал ФП пригодится. А с движком каким разобратся? Unreal? Хорошо бы разбиратся сразу с чем-то навороченым чтобы увидеть максимум возможностей.
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 07:25 18
Цитата Сообщение от kissarat Посмотреть сообщение
Хорошо бы разбиратся сразу с чем-то навороченым чтобы увидеть максимум возможностей.
Реально годные движки не то что на халяву не раздают, их не продают. А если и продают то вместе с той конторой которая их разрабатывает. При этом ни один из фришных и насколько знаю ни один из проприентарных движков популярных игр не поддерживает примитивы используемые в САПР годных для разработки единых графическо-физических реалистичных моделей объектов мира. Все работают по принципу графической сцены на элементы которой навешены элементы физики и логики. Это вообще не годная архитектура как на меня - в результате при моделеньи мира приходится делать тройную работу.

Но как бы собственная альтернатива это тяжко. Годная инфраструктура у меня была еще два года назад. Эти два года в плане работ по движку занимаюсь в основном раскапыванием матана нужного для обеспечения работы физики на тех примитивах которые получаются на выходе годных средств моделирования. Нарыл из пригодного для реалтайм счета пока что только то что было более-менее на поверхности - торы, шары, конусы, цилиндры, а как к примеру сплайн-поверхности реалтаймово коллайдить пока что ноль на массу. По физике расклады примерно те же. К примеру полет пули в атмосфере более менее реальный нарыл, пробивание преграды пока ноль на массу. Движки этого кстати не делают - баллистика а тем более пробития и т.д. обычно юзер-кодом. Вообще чтобы эти темы рыть уровень математики должен быть достаточным для чтения и понимания докторских диссертаций на англицком.
0
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 31
21.04.2018, 09:43  [ТС] 19
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но как бы собственная альтернатива это тяжко
А на что ты тогда надеешся? Есть время и возможность поигратся поэтому и делаешь велосипед?
Да я даже не представляю насколько тот же Unreal может быть полезен.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Это вообще не годная архитектура как на меня - в результате при моделеньи мира приходится делать тройную работу.
Не понял. Имеешь ввиду физика и логика отдельно описывается? Так САПР здесь причем, там нужна большая детализация
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А если и продают то вместе с той конторой которая их разрабатывает
Настолько далеко вперед мене не нужно забегать)
0
2054 / 1529 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
21.04.2018, 15:58 20
Цитата Сообщение от kissarat Посмотреть сообщение
А на что ты тогда надеешся? Есть время и возможность поигратся поэтому и делаешь велосипед?
Там набор коллайдеров next-gen просто нужен. Он кстати производительней. К примеру пересечь два цилиндра это гораздо быстрее чем пересечь два 6-гранника которыми их обычно аппроксимируют. При этом нормали точные а значит и физика их столковения. Время есть поэтому и занимаюсь.
Цитата Сообщение от kissarat Посмотреть сообщение
Так САПР здесь причем, там нужна большая детализация
Там это где? В игре или в САПР? Cтрельку на 50k полигонов реально в руке перса отрисовывать без проблем. При этом 50k к к примеру для пистолета - это все рифленые поверхности и надписи геометрией, и вся невидимая внутрянка, включая внутренние стенки гильз патронов в обойме. Так то что на переднем плане реально с детализацией как в САПР отрисовывать. При этом по выхлопу САПР реально генерить ЛОД и бамп-текстуры для более низкого ЛОД автоматически. И набор коллайдеров. Вообще возможность при отрисовке пользовать тот же набор примитивов что и САПРы есть уже 8 лет как минимум. Т.е. модели из треугольников это по большому счету легаси. Они ни к какой вменяемой обработке кроме просто отрисовки непригодны. Вообще технику гораздо удобнее моделить в промышленных САПР, которые именно для этого предназначены, и сходу иметь все вычисляемые по геометрии физические параметры, а не рисовать в 3D пинбрашах типа макса а потом физические параметры с потолка и прошлогодней газеты искать. Вообще чем честнее физика тем проще добиться ее нормальной работы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2018, 15:58

Помощь в написании контрольных, курсовых и дипломных работ здесь.

порты для старых игр (и переиздание игр?)
есть где-то хорошее определение что есть порт для игры? (dos box - это в каком-то смысле порт или...

Язык программирования и Движок для игр!
Подскажите какой язык программирования наиболее подходит для написания игр , движка для игр? ...

Игры по теории функционального программирования
Закончить предложение "Functional programs do not have any internal memory, they are ..." Ответы...

Подскажите ресурсы для изучения Функционального программирования?
Какой ресурс поюзать для поднятия скилла Функционального программирования?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.