СТАТЬ ПРОГРАММИСТОМ
1.38K subscribers
12 photos
59 links
ЧАТ/СООБЩЕСТВО - @tobeprog_chat

Программирование. Задача канала - полностью разобрать путь становления разработчика, проведя по нему читателя наиболее эффективно
Download Telegram
ursina engine

Простой опенсорсный игровой движок, который может в 3d и к тому же, работает на питоне. 

Такие штуки, лучше сразу смотреть в действии. https://youtu.be/DHSRaVeQxIk [англ.]- достаточно подробный туториал, отдельный респект - прежде чем переходить к написанию “клона minecraft”, немного объясняются основы самого движка(для меня загадка, почему подобное не стало правилом хорошего тона во всех туториалах). 

Объективно - впечатляет, механика строительства уложенная в 30 строк кода. Эти 30 строк - один из примеров, выложенных самим автором движка, в видео выше его как бы разбирают и дописывают. Другие примеры есть на github, их разбор, а также некоторые технические моменты о движке, можно посмотреть в видео - https://youtu.be/aCpBzdciU0o [англ.]

Вся документация, а также несколько туториалов есть на офф. сайте - https://www.ursinaengine.org/documentation.html
У движка есть канал на ютуб, на нем всего два видео, трейлер движка и показ внутриигрового редактора уровней - https://youtu.be/Zn9aCWyoG-I 

Пока, движок не очень известен(как мне кажется, в этом случае, популярность - вопрос времени), и уч. материалов по нему очень мало. В любом случае, он развивается, к тому же проект достаточно интересный, время от времени буду чекать куда все движется.

#gamedev #python
Раз коснулись minecraft в прошлом посте, а следующий о roguelike играх, нельзя не упомянуть о целой группе, очень интересных, но в тоже время сложных задач - процедурной генерации.

Смотрите, с точки зрения игрового процесса, фишка minecraft - в самой механике строительства(ну и очевидно, крафта), но с точки зрения разработки, самое важное и сложное - генерация мира(с этим, к сожалению, у урсины все немного печально, но тут сложно придраться, поскольку сам автор оставляет дисклеймер в коде ‘клона’ игры о том, что решение в данном случае не масштабируется на большую карту).

Чтобы понять в чем состоит сложность, можно ознакомится с решением более простого варианта задачи. Генерация простой карты островов - https://youtu.be/0emj42Bn-_Y [есть автоматический перевод в субтитрах, но он - оставляет желать лучшего]. Даже для такой несложной задачи, уже приходится использовать достаточно сложные метод решения - шум Перлина. И это без 3d, без излишней детализации и т.д. и т.п.

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

#gamedev #python
https://youtu.be/ks4MPfMq8aQ
На канале sentdex есть серия видео посвященная созданию бота для гта5 на opencv. И это один из лучших туториалов по теме(возможно даже лучший). 

Не в последнюю очередь, благодаря такой эффектной презентации, все таки это может быть и упрощенная, но все же модель беспилотного автомобиля, в очень упрощенной, но все же крайне проработанной модели реального мира.

Вообще, гта5 идеальная песочница для подобных проектов, и если понять как они строятся, то все ограничится разве что фантазией разработчика.

Например, далеко ходить не будем, связанные так же с автомобилями:
-Разные системы помощи водителям:
-- определение и подсвечивание дорожных знаков, можно усложнить и добавить реакцию на них, например сброс скорости при знаке ограничивающим онную
-- система автономного экстренного торможения автомобиля(эта штука сейчас есть в куче серийных автомобилей, можно попробовать сделать упрощенную или наоборот более умную модель(например выполняющую объезд препятствия))
-- паркинг, благо в игре куча парковок на любой вкус и цвет

Это крутые, и в тоже время очень не сложные(проект из видео в разы сложнее описанных) в реализации проекты.

Как и другие туториалы с канала sentdex, этот имеет текстовую версию - https://pythonprogramming.net/game-frames-open-cv-python-plays-gta-v

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

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

Очевидно, не стоит пробовать такое в онлайне, можно еще сильней перестраховаться заиметь отдельный акк с игрой(например многие в свое время взяли ее в егс, на по сути пустые аккаунты, сильно жаль которые не будет).

Специально неделю назад потестил этого бота, запускал разные версии, чуть менял, собирал крупных размеров дату(раз пять точно), и вроде бы все норм, но для этого взял игру на новый акк, с основного так бы делать точно не стал.
#ии #youtube #python #opencv
В дополнение к предыдущему посту

https://youtu.be/KecMlLUuiE4 серия видео[англ.] с канала Learn Code By Gaming, в ней автор пишет игрового бота, так же с opencv, все очень простенько и подробно, и так же как у sentdex-а есть текстовые варианты.
 
Есть небольшой минус - код не очень pythonic style(автор явно не python разработчик), это не прям чтобы плохо, тем более в туториале, но этот момент все же надо учитывать.

P.S. как и предыдущем посте, напомню, за такие эксперименты(тем более в онлайне, где подобное делать ну совсем не стоит) можно улететь в бан. Впрочем, автор говорит об этом в начале видео.
#ии #python #youtube #opencv
Python и отсутствие претендентов

Буквально вчера общался со знакомым .NET-разработчиком, мне во всех красках было описано какой F# замечательный ЯП, почему он превосходит С#(основной инструмент .NET-разработчиков), и почему за ним, очевидно, будущее отрасли.

Разумеется все эти разговоры, что в будущем все предпочтут его C# - крайне спорная штука. Мы все прекрасно понимаем, что все упрется в задачи бизнеса, и если бизнесу будет выгоден такой переход, то он случится, аналогично и обратное(вот такая она суровая реальность).

Однако F#, действительно мощный претендент на место, в каком то смысле это переосмысление, возможно неоднозначное(все таки смена парадигмы), но при этом вполне конкурентоспособное. Он можно сказать дышит в спину C#.

Так вот, довольно интересно, то что буквально все “главные” ЯПы сейчас имеют таких “конкурентов”. 

Еще раз скажу, это действительно конкуренты, не из разряда-так чуть красивше/чуть удобней, здесь речь именно о технической стороне вопроса, закрытии каких-то больших проблем(которые, например, рано легли в основу языка и находятся настолько глубоко, что исправить их просто не представляется возможным).

Java -> Kotlin
C++ -> Rust ежегодно на stackoverflow проходит опрос программистов, и именно этот ЯП лидирует как самый любимый у разработчиков(отрыв от второго места - солидные 20%)
С# -> F#
Js -> TypeScript и Dart

И только питон выделяется из всех, у него вроде как подобных ‘конкурентных’ аналогов нет. Есть много экспериментов на тему ‘так чуть красивше/чуть удобней’, но чего-то серьезного - нет. Справедливо сказать, что таким претендентом в свое время стал сам Python 3, потеснив Python 2, но во-первых, это случилось не вчера, во-вторых, этот пример все равно отличается от выше перечисленных.

Это не значит, что питон лучше/хуже других ЯПов(подобные оценки с инженерной точки зрения просто нелепы), но это значит, что путь развития питона крайне необычен. И судя по реакции сообщества, это движение в верную сторону. И как по мне, это весомый плюс языка, о котором редко говорят.
#python #мысли
Нестандартная область применения ЯПа
Очень редко обсуждаемая тема, при этом - крайне интересная и с каким то гигантским потенциалом.

Рассмотрим на примере python

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

Идея очень простая - мы можем намеренно выбрать нестандартную область применения ЯПа. Что бы говорить о чем-то более конкретном, давайте выберем оную, прошлая серия постов началась с захода в искусство, сделаем так же, только из 2D переместимся в 3D.

Blender - бесплатный опенсорсный 3D-редактор, с крутой историей развития. Долго, упорно, многие в него не верили, но по итогу - он сейчас в топе, в него сильно вложились большие ребята, его много где используют, огромное комьюнити, вообщем, все у него прекрасно.  

Для нас важно, что он еще и “дружит” с питоном, дружба выражается во встроенном интерпретаторе, редакторе кода, консоли. Думаю, очевидно, что совсем небольшая часть 3d-художников пользуется этим инструментарием(программирование - не самый распространенный навык за пределами комьюнити программистов). И здесь появляется первая интересная возможность.
Использование программирования для не программистских задач.
https://youtu.be/r8hqLh_HE08 [англ.]- видео с канала Blender Daily, где David Mignot показывает процесс и объясняет основы создания арта с помощью кода. Собственно, сам код очень даже простой, а результат достаточно интересный.

Большое преимущество генеративного процесса в том, что по сути художник задает рамки, а уже компьютер дает варианты, и разумеется он куда продуктивней человека. Хоть 1000 рендеров, вопрос разве что в мощности машины, художнику лишь остается выбрать и возможно чуть доработать нужный. Просто огромное преимущество, оставляющее вне всякой конкуренции.

Из интересных особенностей: в такой области применения особого смысла говорить о качестве кода - нет, мы его пишем под конкретный результат, поэтому как только результат получен, то насколько код хорош/плох нас особо волновать не должно.

Вторая возможность - именно программистские задачи в нестандартной области
Blender позволяет использовать аддоны, собственно разработка аддонов - и есть нестандартное применение python

Blender - востребован, при этом очень немногие художники могут в программирование, однако аддоны сильно облегчают процесс и этим самым художникам они нужны, собственно здесь на сцену и выходят программисты. 

Это отдельный рынок со своими правилами, со своим спросом/предложением, со своей ценовой политикой и т.д. и т.п. И он абсолютно параллелен типичным питонским областям применения. Таких рынков много и их поиск, разумеется, отдельный большой труд. Он может увенчаться как большим успехом, так и большим ничем.

Тут нужно тратить силы, тратить время, искать. Я не рекомендую относится к таким вещам прям очень серьезно(все-таки время - главный буст карьеры, и тратить его просто так - такое себе), но время от времени проводить анализ из разряда “а можно ли здесь покодить” - идея неплохая.
#blender #python #youtube