Опасности опенсорса
Это весьма любопытно, но многие недооценивают опасности опираться на облачные репозитории. Вот сегодня меня удивили юнити, что у них по сути нет своего репозитория с версиями нужных им пакетов https://forum.unity.com/threads/unity-hub-3-1-release-overview.1253823/
В чём суть. Один из контрибьюторов одного из опенсорс пакетов node-ipc внёс в него по сути вредоносную функциональность. Unity Hub использует этот пакет и по сути доставил всем пользователям хаба вредоносное ПО позволяющее писать файлы в системе, что очень опасно. Думаю сейчас у всех этот пакет должен просто попасть в чёрный список, но интересно вот что. Это показательный пример почему тех директора должны объяснять бизнесу «зачем нам своя копия необходимых нам библиотек и свои репозитории». Так как представим у вас завтра релиз, вы обновили хаб (зачем-то) и потеряли все данные. Пусть даже у любого здравого человека сейчас есть бекапы, это трата времени и нервов в итак не самый спокойный день. А если это не хаб, а скажем серверное ПО, то это просто доставка угрозы в ваше облако без смс и переплат
Поэтому к такому нельзя относиться легкомысленно, и лучше всегда иметь ввиду. Опенсорс конечно прекрасен, но он не серебряная пуля и таит в себе неочевидные опасности, если работать с ним бездумно. Но юнити конечно иногда поражают. Многие крупные компании которые я знаю имеют свои клоны репозиториев далеко за долго последних событий, чтобы не создавать себе и пользователям подобные проблемы
Это весьма любопытно, но многие недооценивают опасности опираться на облачные репозитории. Вот сегодня меня удивили юнити, что у них по сути нет своего репозитория с версиями нужных им пакетов https://forum.unity.com/threads/unity-hub-3-1-release-overview.1253823/
В чём суть. Один из контрибьюторов одного из опенсорс пакетов node-ipc внёс в него по сути вредоносную функциональность. Unity Hub использует этот пакет и по сути доставил всем пользователям хаба вредоносное ПО позволяющее писать файлы в системе, что очень опасно. Думаю сейчас у всех этот пакет должен просто попасть в чёрный список, но интересно вот что. Это показательный пример почему тех директора должны объяснять бизнесу «зачем нам своя копия необходимых нам библиотек и свои репозитории». Так как представим у вас завтра релиз, вы обновили хаб (зачем-то) и потеряли все данные. Пусть даже у любого здравого человека сейчас есть бекапы, это трата времени и нервов в итак не самый спокойный день. А если это не хаб, а скажем серверное ПО, то это просто доставка угрозы в ваше облако без смс и переплат
Поэтому к такому нельзя относиться легкомысленно, и лучше всегда иметь ввиду. Опенсорс конечно прекрасен, но он не серебряная пуля и таит в себе неочевидные опасности, если работать с ним бездумно. Но юнити конечно иногда поражают. Многие крупные компании которые я знаю имеют свои клоны репозиториев далеко за долго последних событий, чтобы не создавать себе и пользователям подобные проблемы
👍4
Григорий Дядиченко pinned «Опасности опенсорса Это весьма любопытно, но многие недооценивают опасности опираться на облачные репозитории. Вот сегодня меня удивили юнити, что у них по сути нет своего репозитория с версиями нужных им пакетов https://forum.unity.com/threads/unity-hub…»
Жаль, но видимо Project Tiny всё
Кто не в курсе у юнити был такой замечательный проект, как Project Tiny. Он идеологически должен был позволять делать маленькие легковесные игры, playable ads и т.п. Всё по красоте на DOTS с ECS. Если вы хоть раз связывались с Unity WebGL то вы в курсе насколько он прожорливый и тяжеловестный. Когда-то для совсем небольшого проекта я делал простенькую веб админку (в те времена веб технологии я ещё не знал, поэтому такой экстравагантный выбор) И простенькая админка с парой кнопок и простым UI заставляло мой тогдашний макбук про взлетать. Помимо скорости загрузки, так как только позже я узнал, что в веб гл вообще все ресурсы (кроме базового UI) выносить в ассет бандлы, иначе грузится оно просто вечность)
Хотя официальных заявлений на эту тему я так и не нашёл, но видимо Unity забили на Project Tiny, что очень жаль. Концепт был довольно интересный. Делать легковесный веб на юнити — кайф же. Но в последних версиях Unity его уже даже нет в превью пакетах https://docs.unity3d.com/Packages/com.unity.tiny@0.16/manual/index.html
Чтож, придётся делать веб игры на three или babylon js. Хотя конечно сейчас когда я уже пару недель разбираюсь с pixi и three можно сказать одно. Давно я не писал столько кода, всё же на сколько визуальный редактор и компонентная систему упрощает процесс разработки
Кто не в курсе у юнити был такой замечательный проект, как Project Tiny. Он идеологически должен был позволять делать маленькие легковесные игры, playable ads и т.п. Всё по красоте на DOTS с ECS. Если вы хоть раз связывались с Unity WebGL то вы в курсе насколько он прожорливый и тяжеловестный. Когда-то для совсем небольшого проекта я делал простенькую веб админку (в те времена веб технологии я ещё не знал, поэтому такой экстравагантный выбор) И простенькая админка с парой кнопок и простым UI заставляло мой тогдашний макбук про взлетать. Помимо скорости загрузки, так как только позже я узнал, что в веб гл вообще все ресурсы (кроме базового UI) выносить в ассет бандлы, иначе грузится оно просто вечность)
Хотя официальных заявлений на эту тему я так и не нашёл, но видимо Unity забили на Project Tiny, что очень жаль. Концепт был довольно интересный. Делать легковесный веб на юнити — кайф же. Но в последних версиях Unity его уже даже нет в превью пакетах https://docs.unity3d.com/Packages/com.unity.tiny@0.16/manual/index.html
Чтож, придётся делать веб игры на three или babylon js. Хотя конечно сейчас когда я уже пару недель разбираюсь с pixi и three можно сказать одно. Давно я не писал столько кода, всё же на сколько визуальный редактор и компонентная систему упрощает процесс разработки
👍3
Решил ещё на всякий подключить Дзен, вдруг кому-то там читать будет удобнее :) https://zen.yandex.ru/id/6235ce8fe9c353590fd97c06
Плюс любопытная штука, что яндекс сделал бота, который автоматически переносит посты из телеграма в дзен. Посмотрим, как оно работает. Пока сам дзен работает довольно странно по UX с точки зрения автора :) Но если бот сам всё будет переносить, то почему бы и нет :)
Плюс любопытная штука, что яндекс сделал бота, который автоматически переносит посты из телеграма в дзен. Посмотрим, как оно работает. Пока сам дзен работает довольно странно по UX с точки зрения автора :) Но если бот сам всё будет переносить, то почему бы и нет :)
Дзен
Григорий Дядиченко
Личный блог про AR/VR, компьютерную графику и т.п.
Статьи на хабре: https://habr.com/ru/users/DyadichenkoGA/posts/
Github: https://github.com/Nox7atra
Телеграмм: https://news.1rj.ru/str/nox7atra
Статьи на хабре: https://habr.com/ru/users/DyadichenkoGA/posts/
Github: https://github.com/Nox7atra
Телеграмм: https://news.1rj.ru/str/nox7atra
Полезная и интересная статья про текстуры и виды текстурных карт. В особенности для начинающих https://dtf.ru/gamedev/1113705-plotnost-tekseley-i-nemnogo-teorii-tekstur-ot-entoni-o-donnella?from=rss
DTF
Статья удалена — Gamedev на DTF
Этот материал был удалён по просьбе автора.
🔥1
Немного мыслей про заклинания и UX
На волне массовой миграции игроков из World Of Warcraft я решил также попробовать залететь в Аллодов. Помню давным давно я в них даже играл, ещё когда они выходили и когда они были ниваловскими. Но тогда я по-моему пришёл к выводу, что я слишком беден, чтобы играть в эту бесплатную игру, как это бывает с фри ту плеем :)
И они довольно неплохи, но выглядят скорее как недоделанный WoW. И я заметил одну мелкую недоработку. Я начал играть за метаморфа и почти все спеллы, на низких уровнях по крайней мере, работают странно. При построении любого заклинания с точки зрения игры есть 3 фазы, как оно по хорошему должно работать. Запуск, полёт и попадание. И попадание должно быть:
1) Достаточно ярким
2) Синхронизировано с получением урона
3) Синхронизировано с отлетающим текстам
А в Аллодах это почему-то воспринимается не так. При использовании любого заклинания урон воспринимается как-то странно, то ли он срабатывает раньше, то ли позже. Любопытная мелочь, так как в вове в этом плане всё сделано ювелирно. Даже АОЕ спеллы попавшие в цель всегда имеют выразительный и понятный визуальный отклик
На волне массовой миграции игроков из World Of Warcraft я решил также попробовать залететь в Аллодов. Помню давным давно я в них даже играл, ещё когда они выходили и когда они были ниваловскими. Но тогда я по-моему пришёл к выводу, что я слишком беден, чтобы играть в эту бесплатную игру, как это бывает с фри ту плеем :)
И они довольно неплохи, но выглядят скорее как недоделанный WoW. И я заметил одну мелкую недоработку. Я начал играть за метаморфа и почти все спеллы, на низких уровнях по крайней мере, работают странно. При построении любого заклинания с точки зрения игры есть 3 фазы, как оно по хорошему должно работать. Запуск, полёт и попадание. И попадание должно быть:
1) Достаточно ярким
2) Синхронизировано с получением урона
3) Синхронизировано с отлетающим текстам
А в Аллодах это почему-то воспринимается не так. При использовании любого заклинания урон воспринимается как-то странно, то ли он срабатывает раньше, то ли позже. Любопытная мелочь, так как в вове в этом плане всё сделано ювелирно. Даже АОЕ спеллы попавшие в цель всегда имеют выразительный и понятный визуальный отклик
👍1
Иногда нужно разминаться
Программирование штука комплексная, в которой очень много различных задач. Но в конечном итоге, хотя математика в программировании не обязательное, но очень полезная штука, у разработки и математики есть одно сходство. Проще всего развиваться через практику. Чем больше пишешь кода, тем проще тебе его писать дальше. Так как многие задачи становятся типовыми на уровне "да я 150 раз это делал". И чем больше разного делаешь, тем больше таких задач)
Например написание игрового ИИ и ботов. Да, есть много всяких книжек, где объясняются концепции Behavior Tree или FSM, но чтобы попрактиковаться в написании ИИ в том же юнити — нужно сначала написать игру, и целую систему. Не лучший подход для получения практики. Я периодически люблю для разминки играть в эту штуку: https://www.codingame.com/ Это прикольная платформа с интерактивными заданиями. ИИ это один из моих любимых видов контестов. Так же, как есть всякие пазлы, оптимизации и многое другое на самых разных языках программирования. И шарп тоже есть. И для разминки штука вообще замечательная. Не думаешь про архитектуру, про систему, просто решаешь выделенные задачки и практикуешься :) И главное — он весёлый, так как у игр тут есть графика и т.п.
Можно было бы вспомнить https://codeforces.com/ но для меня он больше олимпиадный для разработчиков олимпиадников, что тоже классно, но мягко говоря в коммерции не всегда нужно и важно. Так как большинство программистов и Кнута то не читали в наши дни :) И главная проблема кодфорсес — он скучный, хотя он и не задумывался, чтобы быть весёлым :)
Программирование штука комплексная, в которой очень много различных задач. Но в конечном итоге, хотя математика в программировании не обязательное, но очень полезная штука, у разработки и математики есть одно сходство. Проще всего развиваться через практику. Чем больше пишешь кода, тем проще тебе его писать дальше. Так как многие задачи становятся типовыми на уровне "да я 150 раз это делал". И чем больше разного делаешь, тем больше таких задач)
Например написание игрового ИИ и ботов. Да, есть много всяких книжек, где объясняются концепции Behavior Tree или FSM, но чтобы попрактиковаться в написании ИИ в том же юнити — нужно сначала написать игру, и целую систему. Не лучший подход для получения практики. Я периодически люблю для разминки играть в эту штуку: https://www.codingame.com/ Это прикольная платформа с интерактивными заданиями. ИИ это один из моих любимых видов контестов. Так же, как есть всякие пазлы, оптимизации и многое другое на самых разных языках программирования. И шарп тоже есть. И для разминки штука вообще замечательная. Не думаешь про архитектуру, про систему, просто решаешь выделенные задачки и практикуешься :) И главное — он весёлый, так как у игр тут есть графика и т.п.
Можно было бы вспомнить https://codeforces.com/ но для меня он больше олимпиадный для разработчиков олимпиадников, что тоже классно, но мягко говоря в коммерции не всегда нужно и важно. Так как большинство программистов и Кнута то не читали в наши дни :) И главная проблема кодфорсес — он скучный, хотя он и не задумывался, чтобы быть весёлым :)
CodinGame
Coding Games and Programming Challenges to Code Better
CodinGame is a challenge-based training platform for programmers where you can play with the hottest programming topics. Solve games, code AI bots, learn from your peers, have fun.
🔥1
Вот как пример одной из игр — гоночки, с которой я раньше любил играться. Хотя до ума я там его и не довёл, болтаюсь где-то на 19 тысячном месте в рейтинге :) https://www.codingame.com/replay/603073981
CodinGame
Coding Games and Programming Challenges to Code Better
CodinGame is a challenge-based training platform for programmers where you can play with the hottest programming topics. Solve games, code AI bots, learn from your peers, have fun.
🔥1
Новый супер красивый ролик от Unity. Волосы просто кайф :) И огонь хорош) https://youtu.be/eXYUNrgqWUU
YouTube
Enemies – real-time cinematic teaser | Unity
Enemies is the latest project by Unity’s award-winning Demo Team, written and directed by Veselin Efremov. It showcases Unity’s capabilities for powering high-end visuals in 2022, including the latest improvements to its High Definition Render Pipeline (HDRP)…
🤩3
Поговорим про графику
Ну и под такой красивый ролик, как не поговорить про графику :) В целом реалтайм пайплайн — это классный концепт сейчас. Конечно же в сравнении с тем, когда кадры рендерятся по несколько минут. Даже когда кадр рендерится одну минуту, то рендер десяти секунд ролика в 30 фпс превращается в 5 часов. Ну и в целом хорошая графика зависит лишь от проработки материалов, системы освещения и т.п.
Небольшая проблема всей истории рендера в реальном времени заключается в том, что строится он по сути на хитростях и хаках, которые надо придумать. Все в реалтайме шулерят на максимум :) И вот интересный вопрос, что дольше и дороже. Рендер ферма с проработанной сценой в том же блендере, или команда разработки сделавшая подобный уровень графики в реалтайме. Надо будет поискать, а то вдруг кто-то сравнивал :)
Ну и под такой красивый ролик, как не поговорить про графику :) В целом реалтайм пайплайн — это классный концепт сейчас. Конечно же в сравнении с тем, когда кадры рендерятся по несколько минут. Даже когда кадр рендерится одну минуту, то рендер десяти секунд ролика в 30 фпс превращается в 5 часов. Ну и в целом хорошая графика зависит лишь от проработки материалов, системы освещения и т.п.
Небольшая проблема всей истории рендера в реальном времени заключается в том, что строится он по сути на хитростях и хаках, которые надо придумать. Все в реалтайме шулерят на максимум :) И вот интересный вопрос, что дольше и дороже. Рендер ферма с проработанной сценой в том же блендере, или команда разработки сделавшая подобный уровень графики в реалтайме. Надо будет поискать, а то вдруг кто-то сравнивал :)
Григорий Дядиченко
Новый супер красивый ролик от Unity. Волосы просто кайф :) И огонь хорош) https://youtu.be/eXYUNrgqWUU
Да, если по этому ролику ещё пока сампл не выложен, но у Unity есть пакет Digital Human (про который многие не знают) Где есть интересные шейдеры кожи, волос, зубов и т.п. https://github.com/Unity-Technologies/com.unity.demoteam.digital-human
И есть более менее разобранный пример с Heretic
И есть более менее разобранный пример с Heretic
GitHub
GitHub - Unity-Technologies/com.unity.demoteam.digital-human: Library of tech features used to realize the digital human from 'The…
Library of tech features used to realize the digital human from 'The Heretic' and 'Enemies'. - Unity-Technologies/com.unity.demoteam.digital-human
🔥2
Обожаю эти выступления. Это довольно старое, но что материал, что подача конечно отличные)
Ну и показывает интересные приколы и фишки юнити :) С точки зрения перфоманса https://youtu.be/W45-fsnPhJY
Ну и показывает интересные приколы и фишки юнити :) С точки зрения перфоманса https://youtu.be/W45-fsnPhJY
YouTube
Unite Berlin 2018 - Unity's Evolving Best Practices
Slides with extra examples: https://www.slideshare.net/unity3d/unitys-evolving-best-practices
Best Practices aren't static -- as Unity's underlying architecture evolves to support Data-Oriented Design, the old tricks might no longer be the best ways to squeeze…
Best Practices aren't static -- as Unity's underlying architecture evolves to support Data-Oriented Design, the old tricks might no longer be the best ways to squeeze…
🔥1
Новый прикольный шоурил от юнити, показывающий разнообразие создаваемых проектов на движке https://youtu.be/c90KRdMz1zw
В целом даже завораживающе, сколько совершенно разных проектов делается в мире, разными командами с разными подходами и уровнями :) Всегда любил наблюдать за разными инди проектами :)
В целом даже завораживающе, сколько совершенно разных проектов делается в мире, разными командами с разными подходами и уровнями :) Всегда любил наблюдать за разными инди проектами :)
YouTube
Inspiring indie games made with Unity | Unity
Indie and small studios choose Unity to make truly innovative games. From Tunic to Unpacking and Boyfriend Dungeon to Neon White, creators’ storytelling, gameplay, and artistry is going bigger and bolder than ever before.
Check out this year’s GDC indies…
Check out this year’s GDC indies…
🔥1
В коммерческой разработке, да и просто игровой, особенно в клиентской, крайне редко нужно писать бенчмарки. Это просто не имеет особого смысла, поэтому если вы не разрабатываете игровой движок или типа того, то вам не нужно в целом то и знать, как пишутся бенчмарки)
Но хоть в этом докладе поднимается тема бенчмарков, я считаю что он полезен всем чисто для общего образования в плане понимания работы процессора, памяти и т.п. https://youtu.be/XGtieBVI1lk Как и в целом многие другие доклады Андрея Акиньшина по дотнету. Я бы правда сказал, это такое знание не которым надо прям пользоваться, но о котором в общих чертах надо помнить. Так как реальная применимость этого — редкая, но знать о том, что такое есть — очень важно, так как это расширяет понимание работы с дотнетом, кодом и т.п.
Но хоть в этом докладе поднимается тема бенчмарков, я считаю что он полезен всем чисто для общего образования в плане понимания работы процессора, памяти и т.п. https://youtu.be/XGtieBVI1lk Как и в целом многие другие доклады Андрея Акиньшина по дотнету. Я бы правда сказал, это такое знание не которым надо прям пользоваться, но о котором в общих чертах надо помнить. Так как реальная применимость этого — редкая, но знать о том, что такое есть — очень важно, так как это расширяет понимание работы с дотнетом, кодом и т.п.
YouTube
Андрей Акиньшин — Поговорим про память
Подробнее о конференции DotNext: https://jrg.su/3WmFRE
— —
Во многих современных приложениях производительность упирается в память. Измерять скорость работы и писать корректные бенчмарки в таком случае не так-то просто: слишком много факторов влияют на итоговое…
— —
Во многих современных приложениях производительность упирается в память. Измерять скорость работы и писать корректные бенчмарки в таком случае не так-то просто: слишком много факторов влияют на итоговое…
🔥1
Профессионал и ремесленник
Разработка достаточно любопытная область. Для того, чтобы зарабатывать в ней деньги знать нужно сравнительно немного. Все супер сложные концепции, тонкое устройство систем, понимание что и как работает — не самые важные знания с коммерческой точки зрения. Можно просто писать код не особо глубоко разбираясь технических аспектах и нюансах, да и спокойно остановиться на уровне мидла. Хотя я видел и сеньоров не разбирающихся скажем в устройстве памяти или скажем в шейдерах. Для кого BSP и BRDF — это просто набор букв, хотя работая с графикой стоит хотя бы поверхностно знать базовые концепции на которых она строится)
К чему это я? Можно оставаться ремесленником, всегда как бы и кусок хлеба будет, и к чаю чего-нибудь. Но что отличает в основном профессионала от ремесленника? Для меня это набор пунктов:
1. Понимание того, что бесполезных знаний не существует — да, это может быть ненужно прямо здесь и сейчас, но чем больше ты знаешь, тем больше у тебя инструментов
2. Большая ориентация на фундаметальные знания — знать много частностей рабочий вариант и это классно, но как в любой области обычно эти частности объединяет общий фундамент. И знания фундамента получается всегда более универсальным
3. Знание большого числа технологий. И вот тут важно зачем. Когда ты понимаешь сетевые технологии, понимаешь веб технологии и т.п. — ты по-настоящему можешь писать кроссплатформенно и что угодно. И тебе проще, так как ты понимаешь всегда другую сторону. Неважно чем ты занимаешься бекендом, фронтендом или чем-то ещё
Сейчас просто одно из печальных наблюдений, что понятие сокетов беркли или веб сокетов — это чуть ли не магия для многих. Хотя работать с ней довольно просто :)
Разработка достаточно любопытная область. Для того, чтобы зарабатывать в ней деньги знать нужно сравнительно немного. Все супер сложные концепции, тонкое устройство систем, понимание что и как работает — не самые важные знания с коммерческой точки зрения. Можно просто писать код не особо глубоко разбираясь технических аспектах и нюансах, да и спокойно остановиться на уровне мидла. Хотя я видел и сеньоров не разбирающихся скажем в устройстве памяти или скажем в шейдерах. Для кого BSP и BRDF — это просто набор букв, хотя работая с графикой стоит хотя бы поверхностно знать базовые концепции на которых она строится)
К чему это я? Можно оставаться ремесленником, всегда как бы и кусок хлеба будет, и к чаю чего-нибудь. Но что отличает в основном профессионала от ремесленника? Для меня это набор пунктов:
1. Понимание того, что бесполезных знаний не существует — да, это может быть ненужно прямо здесь и сейчас, но чем больше ты знаешь, тем больше у тебя инструментов
2. Большая ориентация на фундаметальные знания — знать много частностей рабочий вариант и это классно, но как в любой области обычно эти частности объединяет общий фундамент. И знания фундамента получается всегда более универсальным
3. Знание большого числа технологий. И вот тут важно зачем. Когда ты понимаешь сетевые технологии, понимаешь веб технологии и т.п. — ты по-настоящему можешь писать кроссплатформенно и что угодно. И тебе проще, так как ты понимаешь всегда другую сторону. Неважно чем ты занимаешься бекендом, фронтендом или чем-то ещё
Сейчас просто одно из печальных наблюдений, что понятие сокетов беркли или веб сокетов — это чуть ли не магия для многих. Хотя работать с ней довольно просто :)
🔥3
#рекомендация #литература
Кстати, по части в целом работы с сетью могу порекомендовать книгу "Многопользовательские игры. Разработка сетевых приложений | Глейзер Джошуа, Мадхав Санджай". Она отлично объясняет устройство модели OSI, разные архитектуры сети и тому подобное. И просто в деталях рассказывает низкий уровень устройства сети и каким образом строятся различные мултиплеерные игры :) Очень советую всем прочесть :) Отличная книга)
Кстати, по части в целом работы с сетью могу порекомендовать книгу "Многопользовательские игры. Разработка сетевых приложений | Глейзер Джошуа, Мадхав Санджай". Она отлично объясняет устройство модели OSI, разные архитектуры сети и тому подобное. И просто в деталях рассказывает низкий уровень устройства сети и каким образом строятся различные мултиплеерные игры :) Очень советую всем прочесть :) Отличная книга)
👍5
Смотри как могу
Большая проблема начинающих, да и не только, делать что-то в игре или приложении не потому что надо, а потому что «смотри как могу». Я помню в школе я участвовал в соревновании по, прости господи, вебдизайну. Я тогда учился HTML+CSS по методичке которую мне скинул кто-то из основного состава рейда (тогда ещё я играл в WoW). И помню на htmlbook что ли я нашёл два html тега: fieldset и legend, которые я нигде до этого не видел. И помню что добавил я их в сайт только чтобы выпендриться, что я их знаю. Особого художественного смысла в этом не было)
И встречается это к сожалению часто. В геймплее, в ux решениях, в анимациях. Я сам себя часто бью по рукам за такие мысли. Типа сделать крутую и замороченную штуку за 3 недели вместо простого решения за 2 дня, которое при этом не оценит пользователь. Безусловно иногда нужно морочиться и делать что-то сложное, но только тогда, когда есть ответ на вопрос — зачем. Любой функционал, любая финтифлюшка служат какой-то цели. Анимация тех же иконок (сейчас все с ума сошли по микроанимациям) не имеет смысла, если она не несёт в себе никакой информации. Есть много способов сделать что-то "живее" в том же дизайне, даже просто "перекрасив кнопку в другой цвет". И она уже не будет "мёртвой", а пользователю при этом будет безразлично, что это не сложно преобразовавшийся доллар в крестик)
А что же в разработке? Оооо "потому что я могу" это то что создаёт миллиард проблем всегда. Часто это касается модных фишек языка, или функций которые человек узнал вчера. Хешсеты с переопределением гетхешкода, переопределение дефолтных операторов класса и много другое. Иногда, краайне редко, это имеет смысл. Но когда я вижу, что на списке в котором в максимуме в прыжке 100 элементов кто-то делает хешсет и пишет хеш функцию, это вот прям грустно. Заморочки с генериками, с функторами вместо просто определения класса и метода. Советую всем запомнить. Код в первую очередь должен быть простым! А что является простыми сущностями, которые легко читать? Поля, классы, методы, списки и словари. Если нет обоснования тому, зачем вы тут переусложняете, не надо переусложнять. Так как доказательства требует не то "почему ты здесь использовал List с LINQ ведь это медленно?" (зато супер читаемо) А как раз скорее "зачем ты тут построил супер гибкую абстракцию в три этажа?". И об этом всегда надо помнить. И один из навыков программиста разделять "лишнюю оптимизацию или переусложнение" и "банальные ошибки" (По второму вроде необоснованного GetComponent в Update)
Большая проблема начинающих, да и не только, делать что-то в игре или приложении не потому что надо, а потому что «смотри как могу». Я помню в школе я участвовал в соревновании по, прости господи, вебдизайну. Я тогда учился HTML+CSS по методичке которую мне скинул кто-то из основного состава рейда (тогда ещё я играл в WoW). И помню на htmlbook что ли я нашёл два html тега: fieldset и legend, которые я нигде до этого не видел. И помню что добавил я их в сайт только чтобы выпендриться, что я их знаю. Особого художественного смысла в этом не было)
И встречается это к сожалению часто. В геймплее, в ux решениях, в анимациях. Я сам себя часто бью по рукам за такие мысли. Типа сделать крутую и замороченную штуку за 3 недели вместо простого решения за 2 дня, которое при этом не оценит пользователь. Безусловно иногда нужно морочиться и делать что-то сложное, но только тогда, когда есть ответ на вопрос — зачем. Любой функционал, любая финтифлюшка служат какой-то цели. Анимация тех же иконок (сейчас все с ума сошли по микроанимациям) не имеет смысла, если она не несёт в себе никакой информации. Есть много способов сделать что-то "живее" в том же дизайне, даже просто "перекрасив кнопку в другой цвет". И она уже не будет "мёртвой", а пользователю при этом будет безразлично, что это не сложно преобразовавшийся доллар в крестик)
А что же в разработке? Оооо "потому что я могу" это то что создаёт миллиард проблем всегда. Часто это касается модных фишек языка, или функций которые человек узнал вчера. Хешсеты с переопределением гетхешкода, переопределение дефолтных операторов класса и много другое. Иногда, краайне редко, это имеет смысл. Но когда я вижу, что на списке в котором в максимуме в прыжке 100 элементов кто-то делает хешсет и пишет хеш функцию, это вот прям грустно. Заморочки с генериками, с функторами вместо просто определения класса и метода. Советую всем запомнить. Код в первую очередь должен быть простым! А что является простыми сущностями, которые легко читать? Поля, классы, методы, списки и словари. Если нет обоснования тому, зачем вы тут переусложняете, не надо переусложнять. Так как доказательства требует не то "почему ты здесь использовал List с LINQ ведь это медленно?" (зато супер читаемо) А как раз скорее "зачем ты тут построил супер гибкую абстракцию в три этажа?". И об этом всегда надо помнить. И один из навыков программиста разделять "лишнюю оптимизацию или переусложнение" и "банальные ошибки" (По второму вроде необоснованного GetComponent в Update)
👏4👍2
Буду ждать, когда выпустят исходники :) https://youtu.be/-S6J8zm_w1E
То что юнити пробует свои силы в играх, это классно. Хотя лучше бы в коммерческих, чем в бесплатных. Чтобы метрики бюджетов и сроков бились с реальностью :) Но это прям интересно, даже конечно в ролике видно косяки с биасом теней, но я буду ждать :) Поковырять проект сделаный опытными людьми или крупной командой всегда интересно и полезно :)
То что юнити пробует свои силы в играх, это классно. Хотя лучше бы в коммерческих, чем в бесплатных. Чтобы метрики бюджетов и сроков бились с реальностью :) Но это прям интересно, даже конечно в ролике видно косяки с биасом теней, но я буду ждать :) Поковырять проект сделаный опытными людьми или крупной командой всегда интересно и полезно :)
YouTube
Introducing Gigaya, a new sample game | Unity
*UPDATE: Production of Gigaya has been discontinued. There are currently no active plans to publish it, but it will remain as an internal resource at Unity. We want to thank you for your support and excitement for this project. You can find more information…
🔥2
Программирование не точная наука
Поработав на большом количестве проектов с большим количеством разных лид разработчиков, технических директоров и т.п. всё чаще понимаешь, чем программирование отличается от точных наук. У многих новичков я встречал вопрос: "а правильно ли я пишу код?" И в программировании пожалуй что если и существует, то это грубые ошибки. В остальном тут идёт огромный простор фантазии, иначе бы не было бы такого числа холиваров. В каждой конкретной компании кодовая база в среднем зависит от вкусовых предпочтений конкретного лида. И в этом нет ничего плохого :)
Просто я замечал (и даже за собой) что один и тот же тезис "делаем штуку Х". Я могу как логично поддержать сказав "почему это круто". Также логично и опровергнуть приведя аргументы почему "это хрень". Допустим самый противоречивый паттерн проектирования — синглтон. Можно привести кучу аргументов за, кучу аргументов против. Долго обсуждать чем DI лучше и так далее, но факт в том что. Я работал во множестве компаний, участвовал во множестве проектов, часть компаний консультировал, и я помню как минимум 3 супер успешных крупных проекта, с миллионной аудиторией игроков, где в ядре вообще всё стоит на синглтонах. Это создавало бы некоторые проблемы, но там был выстроен неплохой процесс ревью, который это нивелировал)
Может когда-нибудь программирование достигнет той степени формализации, что можно будет однозначно сказать "это хорошо, а это плохо", но сейчас это не так. Так как вопрос в том, какими метриками мы всё считаем. Можно долго и ловко жонглировать аргументами про "стоимость поддержки", "стабильность системы" и т.п. Но правда в том, что на самом деле даже в этом случае код идёт на второй план. А на первом месте стоят процессы. А уже исходя из процессов подбирается методология написания кода :) А новичкам не стоит ничего бояться, так как либо в компании ваши коллеги вас поправят, либо написав херню вы уже через пол года поймёте почему это херня. Или же гораздо раньше столкнётесь с проблемами. Лучше всего понимают люди зачем нужна архитектура ПО, когда один разок перепишут пол проекта ради какой-то казалось бы простой фичи :)
Поработав на большом количестве проектов с большим количеством разных лид разработчиков, технических директоров и т.п. всё чаще понимаешь, чем программирование отличается от точных наук. У многих новичков я встречал вопрос: "а правильно ли я пишу код?" И в программировании пожалуй что если и существует, то это грубые ошибки. В остальном тут идёт огромный простор фантазии, иначе бы не было бы такого числа холиваров. В каждой конкретной компании кодовая база в среднем зависит от вкусовых предпочтений конкретного лида. И в этом нет ничего плохого :)
Просто я замечал (и даже за собой) что один и тот же тезис "делаем штуку Х". Я могу как логично поддержать сказав "почему это круто". Также логично и опровергнуть приведя аргументы почему "это хрень". Допустим самый противоречивый паттерн проектирования — синглтон. Можно привести кучу аргументов за, кучу аргументов против. Долго обсуждать чем DI лучше и так далее, но факт в том что. Я работал во множестве компаний, участвовал во множестве проектов, часть компаний консультировал, и я помню как минимум 3 супер успешных крупных проекта, с миллионной аудиторией игроков, где в ядре вообще всё стоит на синглтонах. Это создавало бы некоторые проблемы, но там был выстроен неплохой процесс ревью, который это нивелировал)
Может когда-нибудь программирование достигнет той степени формализации, что можно будет однозначно сказать "это хорошо, а это плохо", но сейчас это не так. Так как вопрос в том, какими метриками мы всё считаем. Можно долго и ловко жонглировать аргументами про "стоимость поддержки", "стабильность системы" и т.п. Но правда в том, что на самом деле даже в этом случае код идёт на второй план. А на первом месте стоят процессы. А уже исходя из процессов подбирается методология написания кода :) А новичкам не стоит ничего бояться, так как либо в компании ваши коллеги вас поправят, либо написав херню вы уже через пол года поймёте почему это херня. Или же гораздо раньше столкнётесь с проблемами. Лучше всего понимают люди зачем нужна архитектура ПО, когда один разок перепишут пол проекта ради какой-то казалось бы простой фичи :)
👍2