А сможешь в двух словах совсем уж дебилу(мне) объяснить в чём разница между ними, если я решаю шо пора делать игру
От прям на пальцах, а то мне интересно
для игр нужна быстрая реакция на действия игрока, так же скорость отрисовки. это могут делать низкоуровневые языки типа с++. Питон медленный, применяется там где скорость не критична
Питон: написал код за минуту, работа выполнилась за 10 минут
Плюсы: написал код за 10 минут, работа выполнилась за минуту
Утрированно, конечно, но в целом разница в подходе понятна.
По факту компы щас достаточно быстрые чтобы половину индюшатины в стиме гонять на языках типа питона. Работает это так: люди пишут встраиваемый 2д или 3д движок, который сам по себе работает, а медленный язык ему лишь шлет команды. Суть игры это 30-60 раз в секунду принять инпут (какие кнопки нажаты, сколько прошла мышка) и передать движку, что делать дальше. Если логика игры простая, т.е. нет сложной физики или аи, то со всем этим справится и питон тоже. Да и сам движок может быть почти целиком на питоне, т.к. процентально его логика занимает немного по сравнению с загрузкой, гонянием текстур и прочей 2д/3д кухней.
Почему гта5 нельзя на питоне? Потому что в мире, в физике, в звуке, в картинке дохера всего нетривиального происходит. Плюс сам движок кастомный и фишки игры требуют его очень тесную интеграцию с кодом собственно «игры». А интеграция питона с таким движком будет узким местом чисто технически.
Только к сожалению про С++ говорят, что работу можно не найти, вот я и не старался идти дальше циклов for .... хотя честно язык мне больше нравится чем питон
как по мне, учить надо то что нравится, а не то что "нужно". Ну в плане, на плюсах работу найти будет труднее, возможно, но у тебя будет больше положительного экспирианса, чем на том же питоне.
Просто брать и инлайнить то, что сделал бы интерпретатор - это ничо не дает. Суть компиляторов из питона и прочих в сишку в том, что этот компилятор может в частных случаях доказать, что например класс не юзает __getattr__ и не меняет на ходу типы полей, а значит его можно превратить напрямую в аналогичную сишную структуру, хотя бы по месту (часто не без помощи/хинтов от программиста, например asm.js). То же самое делают jit-ы в jit-языках: доказывают сами себе, что например итератор цикла четко инт, а point[i].{x,y} это всегда даблы в рамках текущей функции (на самом деле гиперблока или аналогичной структуры в трейсе), суют их в регистры/hw-стек вместо боксинг-слотов на логическом стеке и генерят соотв.код.
Для баша такое тоже возможно, он даже куда проще устроен. Но shc этого не делает, он прямой транслятор. Это вряд ли кому-то нужно, потому что задача баша - резать строки, открывать файлы/пайпы и запускать программы. В самом нем нечего ускорять, т.к. никто не пишет дохера цпу-баунд кода со сложными структурами.
Делают. Есть pygame и pyglet, например.
Pyglet не пробовал, а Pygame это прям чуть-чуть выше чем свой движок писать, но чтобы основы разработки игр понять будет очень полезно: События, сигналы, построение сцены, отрисовка на экране - сделаешь там и много вопросов потом сами отпадут. В стиме есть коммерческие игры, написанные на обоих фреймворках.
>плюсы в геймдеве
Вот спорную вещь скажу, но это только если ты собрался писать свой движок или если ты просто любишь плюсы, но тогда бы такой вопрос не возник.
>"но анриал"
Не надо знать плюсы от А до Я чтобы там описывать логику игры. Надо знать достаточно, чтобы понимать как немного подправить те же блюпринты под свои нужды.
И, откровенно говоря, твои первые проекты должны быть небольшими, понятными, они могут крутиться вокруг одной простой идеи и быть короткими, которые прошел один раз и забыл. Они должны служить тебе как средства набора опыта. Не надо первым делом планировать убийцу гта, сломаешься под гнётом всего того, что надо сделать.
Сейчас столько всяких инструментов и документации, что не надо ставить себе подножку, а надо брать доступные материалы и начинать делать игры.
Есть годо с gdscript, c# и gdnative\gdextension, есть юнити с c#, есть фреймворки на жабаскрипте том же.
У всего этого хорошие сообщества, есть библиотеки ресурсов, документация, примеры игр с доступным исходным кодом.
Создай несколько проектов, отработай подходы и механики, подтяни общую базу погромирования и тогда сможешь понять еще на этапе проектирования следующего проекта, какие инструменты тебе нужны.
Но вообще я не планирую начинать самостоятельно, хочу изучить язык (и инструменты по необходимости/возможности) и попробовать к кому-нибудь прибиться, бросаться новичком на стену со своими идеями, как по мне, идея сомнительная, лучше сначала набраться опыта с чужих ошибок, потом свои городить. Можешь что по этому маршруту подсказать?
Свои ошибки веселее. И потом, как ты узнаешь, что некий движок тебя не устраивает, если не попробуешь. А прибиться ты сможешь только к чувакам, которые по этим граблям уже прошли или также на авось выбирали. Наделай демок на каждом из популярных - потыкай палочкой так сказать.
Кратко: хорошая идея, но учиться надо на своих ошибках. не бояться признавать, что чего-то не знаешь и не бояться спрашивать, но и уметь самому искать решения.
Все разные и какой-то универсальный путь не существует, попробую из личного опыта.
Сижу уже длительное время в сообществах по одному из движков, поучаствовал в джемах и как раз удачно прибился к одной группе, с которой мы пилили коммерческую игру. Везде, в принципе, один подход: к новичкам отношение положительное, при одном условии: у новичка отработаны основы программирования и взаимодействия с движком.
Самый минимум - это пройти туториал и уметь ориентироваться в документации. А это в свою очередь подразумевает, что ты знаком просто с программированием в выбранном языке от основ (переменные, типы, простые алгоритмы и структуры) до тех блоков, из которых строится игра (а это чаще всего ООП)
Одно дело, когда человек спрашивает "почему у меня выстрелы летят не так, как я ожидаю код такой-то" и ему 99% помогут и объяснят, а вот когда совсем мимокрокодил вваливается в обсуждение и с ходу начинает "хочу сделоть игру суть такова... как мне добавить персонажа на сцену", вот тут сначала вежливо направят на изучение основ, а потом уже просто будут игнорировать. Ну и не бояться спрашивать, видел очень смелых ребят, которые честно пишут "мне 12 лет и сложно понять что этот код делает", тогда тоже люди отзываются положительно.
Насчет идей новичка, это тоже очень от команды зависит. Идея родилась - попробуй сделать. Не знаешь - спрашивай у новых коллег или в сообществе, гугли. Со своих ошибок, как Ontoleo пишет, действительно лучше учиться, потому что каждое решение ты лично вымучиваешь на проекте, который ты лично хочешь сделать. Хотя опять же, это индивидуальности. Кто-то, наверное, смотрит чьи-то дневники разработки на ютьюбе и мотает на ус чужой опыт, я так не умею и 100% вляпываюсь в грабли, пока сам же не найду решение.
Еще не стесняйся копировать, но пробуй добавить что-то своё. Например, если следуешь туториалу по платформеру и там показывают, как добавить персонажу прыжок, копируй смело, но попробуй добавить двойной прыжок.
Еще хорошим упражнением будет создание простых любимых игр. Хоть крестики-нолики.
Есть короткая и в целом хорошо всё описывающая книга "Сделай видеоигру один и не свихнись", там автор среди прочего приводит аргументы в пользу одиночной разработки и разработки в команде.
Люто двачую начинать не с языка, а с экосистемы. Это и не только к играм относится. Если есть среда разработки, где водят за ручку, и ютуб завален туториалами и примерами, то это и есть выбор новичка.
Нужен C# - если на движках и адекватно.
Плюсы - только если ты сверхразум.
Пайтон - он чтоб скрипты писать да данные гонять. Что-то другое на нём делать можно, как и на любом ином языке, но не нужно - если ты конечно не фанат чисто пайтона и готов удалять гланды через жопу в компании с такими же полутора анонимусами.
>>Плюсы - только если ты сверхразум
Это сарказм, и только идиоты учат плюсы перввм языком, или для плюсов как первого языка нужно иметь 150 IQ, просто чтобы его осилить?
Для плюсов как первого языка - надо учить его в учебном заведении.
В иных случаях есть 100500 куда более простых и приятных вариантов, которые ещё и выдают какой-то результат вот прям сразу, чем хорошо мотивируют.
Как я и сказал - шарп.
А так 90% языков C-подобные, пробуй, что понравится - то и изучай.
Один момент только: тебе потом совсем не захочется перелезать на плюсы, потому что это равносильно замене станка с ЧПУ на набор напильников. (Т.е. в теории заимеешь полный и идеальный контроль над тем, что выпиливаешь, а на практике - нахуй оно надо.)
От прям на пальцах, а то мне интересно
Плюсы: написал код за 10 минут, работа выполнилась за минуту
Утрированно, конечно, но в целом разница в подходе понятна.
https://m.youtube.com/@DaFluffyPotato/videos
Вот такого уровня можно делать.
По факту компы щас достаточно быстрые чтобы половину индюшатины в стиме гонять на языках типа питона. Работает это так: люди пишут встраиваемый 2д или 3д движок, который сам по себе работает, а медленный язык ему лишь шлет команды. Суть игры это 30-60 раз в секунду принять инпут (какие кнопки нажаты, сколько прошла мышка) и передать движку, что делать дальше. Если логика игры простая, т.е. нет сложной физики или аи, то со всем этим справится и питон тоже. Да и сам движок может быть почти целиком на питоне, т.к. процентально его логика занимает немного по сравнению с загрузкой, гонянием текстур и прочей 2д/3д кухней.
Почему гта5 нельзя на питоне? Потому что в мире, в физике, в звуке, в картинке дохера всего нетривиального происходит. Плюс сам движок кастомный и фишки игры требуют его очень тесную интеграцию с кодом собственно «игры». А интеграция питона с таким движком будет узким местом чисто технически.
От себя добавлю что С-подобных языков вагон и даже основы С будут очень полезны в изучении программирования для тех же юних систем.
С - компилируемый язык.
Питон - интерпретируемый.
Для баша такое тоже возможно, он даже куда проще устроен. Но shc этого не делает, он прямой транслятор. Это вряд ли кому-то нужно, потому что задача баша - резать строки, открывать файлы/пайпы и запускать программы. В самом нем нечего ускорять, т.к. никто не пишет дохера цпу-баунд кода со сложными структурами.
Но если хочешь в большую студию то unreal и Сишки, да.
Pyglet не пробовал, а Pygame это прям чуть-чуть выше чем свой движок писать, но чтобы основы разработки игр понять будет очень полезно: События, сигналы, построение сцены, отрисовка на экране - сделаешь там и много вопросов потом сами отпадут. В стиме есть коммерческие игры, написанные на обоих фреймворках.
>плюсы в геймдеве
Вот спорную вещь скажу, но это только если ты собрался писать свой движок или если ты просто любишь плюсы, но тогда бы такой вопрос не возник.
>"но анриал"
Не надо знать плюсы от А до Я чтобы там описывать логику игры. Надо знать достаточно, чтобы понимать как немного подправить те же блюпринты под свои нужды.
И, откровенно говоря, твои первые проекты должны быть небольшими, понятными, они могут крутиться вокруг одной простой идеи и быть короткими, которые прошел один раз и забыл. Они должны служить тебе как средства набора опыта. Не надо первым делом планировать убийцу гта, сломаешься под гнётом всего того, что надо сделать.
Сейчас столько всяких инструментов и документации, что не надо ставить себе подножку, а надо брать доступные материалы и начинать делать игры.
Есть годо с gdscript, c# и gdnative\gdextension, есть юнити с c#, есть фреймворки на жабаскрипте том же.
У всего этого хорошие сообщества, есть библиотеки ресурсов, документация, примеры игр с доступным исходным кодом.
Создай несколько проектов, отработай подходы и механики, подтяни общую базу погромирования и тогда сможешь понять еще на этапе проектирования следующего проекта, какие инструменты тебе нужны.
Все разные и какой-то универсальный путь не существует, попробую из личного опыта.
Сижу уже длительное время в сообществах по одному из движков, поучаствовал в джемах и как раз удачно прибился к одной группе, с которой мы пилили коммерческую игру. Везде, в принципе, один подход: к новичкам отношение положительное, при одном условии: у новичка отработаны основы программирования и взаимодействия с движком.
Самый минимум - это пройти туториал и уметь ориентироваться в документации. А это в свою очередь подразумевает, что ты знаком просто с программированием в выбранном языке от основ (переменные, типы, простые алгоритмы и структуры) до тех блоков, из которых строится игра (а это чаще всего ООП)
Одно дело, когда человек спрашивает "почему у меня выстрелы летят не так, как я ожидаю код такой-то" и ему 99% помогут и объяснят, а вот когда совсем мимокрокодил вваливается в обсуждение и с ходу начинает "хочу сделоть игру суть такова... как мне добавить персонажа на сцену", вот тут сначала вежливо направят на изучение основ, а потом уже просто будут игнорировать. Ну и не бояться спрашивать, видел очень смелых ребят, которые честно пишут "мне 12 лет и сложно понять что этот код делает", тогда тоже люди отзываются положительно.
Насчет идей новичка, это тоже очень от команды зависит. Идея родилась - попробуй сделать. Не знаешь - спрашивай у новых коллег или в сообществе, гугли. Со своих ошибок, как Ontoleo пишет, действительно лучше учиться, потому что каждое решение ты лично вымучиваешь на проекте, который ты лично хочешь сделать. Хотя опять же, это индивидуальности. Кто-то, наверное, смотрит чьи-то дневники разработки на ютьюбе и мотает на ус чужой опыт, я так не умею и 100% вляпываюсь в грабли, пока сам же не найду решение.
Еще не стесняйся копировать, но пробуй добавить что-то своё. Например, если следуешь туториалу по платформеру и там показывают, как добавить персонажу прыжок, копируй смело, но попробуй добавить двойной прыжок.
Еще хорошим упражнением будет создание простых любимых игр. Хоть крестики-нолики.
Плюсы - только если ты сверхразум.
Пайтон - он чтоб скрипты писать да данные гонять. Что-то другое на нём делать можно, как и на любом ином языке, но не нужно - если ты конечно не фанат чисто пайтона и готов удалять гланды через жопу в компании с такими же полутора анонимусами.
Это сарказм, и только идиоты учат плюсы перввм языком, или для плюсов как первого языка нужно иметь 150 IQ, просто чтобы его осилить?
В иных случаях есть 100500 куда более простых и приятных вариантов, которые ещё и выдают какой-то результат вот прям сразу, чем хорошо мотивируют.
А так 90% языков C-подобные, пробуй, что понравится - то и изучай.
Один момент только: тебе потом совсем не захочется перелезать на плюсы, потому что это равносильно замене станка с ЧПУ на набор напильников. (Т.е. в теории заимеешь полный и идеальный контроль над тем, что выпиливаешь, а на практике - нахуй оно надо.)
С++
JavaScript! - http://slither.io/
https://habr.com/ru/articles/767342/