Unity 3D + JS, поділіться власними нотатками

Усім файного часу. Шановні форумчани, якщо ви працюєте з Unity 3D та програмуєте логіку на JS, а також маєте і не шкода власних нотаток, поділіться будь-ласка.

Я цікавлюсь, мені подобається і я вивчаю два напрямки пов’язаних з ІТ, а саме Front-end та Game-Dev. Я не є якимось супер крутим дядьком, не сеньйор в 23 роки і все таке. Навіть ІТішником себе не називаю. Але мені подобаються ці два напрямки розробки і займаюсь тим чим мені подобається. В гуглі не забанили та про «RTFM» я знаю. Суть створеної теми: Збільшення джерел інформації. Розумієте, скільки людей, стільки і ідей. За винятком більшості сайтів рунету, де автори поняття не мають про що пишуть (в будь якій темі, хоч би як зварити гречку), та передирають слово в слово статті, та ще й з помилками. JS саме тому, що його можна використовувати в обох напрямках. Так би мовити шлях по найменшому опору)) Та й думаю вивчати С# не має сенсу для того, щоб написати перевірку на зіткнення, пошкодження ХР, рух і так далі, коли я розумію як то на JS робиться та помаленьку підглядаючи в блокнот роблю. Ух як закрутив.

То ж, якщо хтось щось має цікаве, чи знає файні джерела, поділіться, я буду дуже вдячний, у мене немає оточення в реальності, котре б поділилось досвідом.
Спасибі за увагу.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А мені сподобалось відео Романа Савчука по створенню гри Angry Birds на Unity3D —

Буду, мабуть, сотим, але промовчати не можу — обирай С# :). Для старту на Unity не потрібно бути гуру програмування, достатньо знати базовий синтаксис мови. Інше по ходу діла зустрічатимеш та розберешся. Почни з будь-якої найпростішої гри, де не потрібний штучний інтелект чи безліч левелів — зроби, наприклад, клон 2048. Потім обирай на маркеті щось схоже, але складніе, і так поки не почнеш себе впевнено почувати.
Під час розробки дуже багато всьго готового можна знайти в інтернеті, воно майже все буде на C#, пристосовуючи готові шматки до своєї задачі здобудеш необхідних навичок і у мові, і у читанні та розумінні чужого коду.

В ООП у мене не багато досвіду. Я розумію принципи, але не дуже багато досвіду. В процедурній же частині у мене є досвід усілякі там PHP i Pascal. Модливо це смішно, але для початку знайомства с С# обрав не серйозно написано книгу, а Изучаем С# 3- видання. Російський, не гуглом транслейт, переклад книжки циклу Head First. Читаю, пробую, проблем не виникає. Там де приклади з розміткою XAML також без проблем, теги я знаю. Думав буде спочатку набагато страшніше)) Потім буду читати серйознішу книгу. Проблем поки немає. Від JS модифікованого під Unity відмовився.

В ООП немає нічого страшного, просто є такі собі класи, вони як змінні, але в них є свої змінні і процедури щоб їх міняти. Ось і все ООП. Глибше за потребою. Я С# за книжками взагалі не вчив, починав з С++, трохи універського курсу з базового синтаксису шарпу, все інше за потребою шукаю в інтернеті.

Тобто є задача «Х» і ви просто шукає те «Як виконати завдання Х»? І просто розумієте що написане в запропонованому гуглом варіанті і просто при потребі модифікуєте під себе?

Якщо здалеку дивитись, то якось так :) Треба ділити завдяння на менші шматки і вони вже будуть значно простіші у виконанні. І коли вже завдання розділене на мінімальні шматки і деякі з них(чи може всі) не зрозуміло як робити на допомогу приходить дядько гугл)

Значить я все правильно роблю)

Это не совсем так. Или совсем не так. Вы конечно можете достаточно долго игнорировать сложные штуки из ООП и оперировать объектами на уровне инкапсуляции и изредка наследования, но именно в играх все паттерны проектирования используются на всю катушку.
Игры требуют понимания хардкорного ООП больше чем другие программы.
То есть, почти сразу вы сталкнётесь с предметом нескончаемых дискуссий паттерном Одиночка и сразу с паттерном Состояние и сразу с паттерном Наблюдатель. Без этих паттернов игру сделать можно, но простую, или сложную, но без поддержки.
А потом придётся узнать и вообще всю семейку паттернов, если дело дойдёт до приличных проектов.
Почти наверняка придётся познакомится с обобщёнными классами, интерфейсами, методами и т д.
То есть две три недели вы продержитесь, но дальше начнётся всё это.
Причём прочитать одно и то же придётся не один и не два раза. А чтобы понять надо будет и применить много раз все эти страшные слова на практике.
Зато потом наступит просветление. Как у Нео когда он вдруг увидел истинную картину мира.
Потом это лет через пять. Но не пугайтесь это у всех так.

Не є проблемою вивчити, я цьому не опираюсь. Просто частково, для мене це я похід в темному лабіринті. Ви можете мені написати чи дати посилання на всі патерни котрі мені потрібно розуміти в майбутньому?

Вы почти сразу сталкнётесь с теми тремя, что я упомянул. Для общего осветления лабиринта я бы рекомендовал найти вот эту книгу www.ozon.ru/...ail/id/6108824 Там код на Java но он почти как C# за некоторыми небольшими отличиями. Зато в игровой форме объяснено то почему паттерны это важно именно с практической точки зрения. В игрострое именно паттерны позволяют управлять всем своим зоопарком объектов как единым целым.

с предметом нескончаемых дискуссий паттерном Одиночка
о.0 .. /facepalm
*деякі речі краще все ж не перекладати...

hs недоволен общепринятым переводом который действительно не точный. Singleton это единственный предмет, единственный ребёнок, не имеющий пары, но на русском подходит только моё Единственник ну или Уникальный. Хотя все переводят как Одиночка. Но Одиночка это One, Single person и т д

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

Вы конечно можете достаточно долго игнорировать сложные штуки из ООП и оперировать объектами на уровне инкапсуляции и изредка наследования
/

Тут ниже правильно написали — не замахивайтесь сразу на что-то большое, сделайте ряд простых игр, графику и звуки для которых можно скачать в интернете (на gamedev.ru, например, видела начинающих композиторов, которые бесплатно раздают музыкальные темы для игр, причем неплохие). Составьте список таких небольших проектов, которому будете следовать (например, lines -> тетрис -> match3 -> flappy bird), только доводите их до конца. Возможно, придумаете свою простую, но интересную механику. Более-менее приличную поделку можно залить на какой-нить kongregate.com, вот вам и «реальный опыт разработки» для капризного работодателя :) Удачи!

Спасибі, я не тільки звуки, я і модельки в інтернеті качаю і текстури і так далі. Я насправді не замахуюсь на щось грандіозне. По типу ААА стрілялки і все таке. Я буду робити кілька простих ігор що потребують реалізацію різних механік. Адже в стрілялки одна, в сайд-скролера, в якогось клона Мегаполіса також інша. Виглядатиме воно візуально як халтура зібрана з шматків модельок скачаних в неті. Але програмно воно має працювати без збоїв.

Я не скажу вам щось нове, якщо повідомлю, що для юніті не можна писати на JavaScript?
Там є UnityScript, але він НЕ JavaScript — wiki.unity3d.com/...rsus_JavaScript
Це НЕ той JS, шо у браузерах для фронтенду використовують, дуже різні мови. Я так зрозумів, що ви не про зв’язки юніті плеєра зі сторінкою на якою він вионуєтся пишете, так?
А взагалі для тих, хто на юніті хоче більш-менш серйозно писати — вибору нема (так подивився, наче вже усі написали), тільки C#. Бо... багато що, насправді, ну скажемо, що таки саме він став стандартом.

Спасибі вам, я зрозумів, вже C#-пом займаюсь, другий день приділяю увагу «класичному C#» і паралельно дивлюсь як все це робиться в Юнітівському C#. Я зрозумів що потрібно знати обидва варіанти і цим займаюсь.

Доброго времени суток.
Ответить на вопрос JavaScript vs C# будет крайне просто если определиться для каких целей Вы хотите освоить эти предметы. Если хотите делать игры для себя, так сказать на коленке и в стор, то не важно как и что вы будете учить. Можете даже забить на ооп вообще! Просто пишите код как Вам нравится и на чем Вам нравится и я уверяю ваши игры могут быть даже более коммерчески успешными чем игры крутых игровых компаний. История игростроя не раз это доказывала. Если же Вы планируете свои навыки из области хобби перевести в реальное трудоустройство в игровой индустрии то Вам прийдется переучивать все с нуля. За несколько лет не видел ни одной вакансии вокруг Unity где довольствовались бы ява скриптом. Оно и логично когда ты сам — то пишешь на чем хочешь, а когда в комманде то пишешь на том на чем и все. Я не буду заявлять что компаний где разрабатывают игры на JavaScript не существуют, но я ни занаю ни одной в противовес десяткам мне известным где не просто хотят знания С#, а так же умение применять принципы ООП и общеизвестные патерны программирования с рядом из которых в юнити и так огромные проблемы, но все равно это маст хэв. И Это в Украине где опыт разработки 3-4 года считется уже сеньер. А в США на любой вакансии по Game Developer (Unity3D) ставится требования от 5-8 лет професионального программирования на С# и 2-3 года программирования в Unity3D. Так же нужно понимать что С# в Unity это не чистый C# а лиш его эмуляция со всеми вытикающими, что уже тут можно сказать про JavaScript(UnityScript), там в этом плане все еще хуже.

П.С. еще одна причина начинать с С# это Visual Studio + Resharper что один что второй инструмент на мой взгляд незаменимы в нашем деле. Но это уже на вкус и цвет все фломастеры разные. :)

У мене є ідея, я її реалізовую на Unity 3D. Це буде щось схоже на старе... навіть вже старовинне творіння Id Software.
Але в майбутньому, в більш далекій перспективі я хочу дійсно працювати в компанії котра розробляє іграшки. На посаду, хоча б, трейні без платні. Тому, ще маю рожеву надію на те, що гарно виконана річ «на колінках» допоможе мені в цьому. Дурнувато якось розповідати що я знаю, чи дізнався в процесі, не маючи прикладу. То ж уже взяв Visual Studio, там де і Unity і практикуюсь ;-)

Лучше не замахиваться на что то большое. Это главный совет всех ветеранов для всех начинающих. К нему очень сложно прислушиваться так как хочется делать что то клевое игру мечты ... но это самый верный путь потерять кучу времени. Если Ваша цель хоть и далекая но цель это работа в гейм деве. То могу поделиться путем которым в него пришел я. Идете на курсы по С# на 2-3 месяца. Не обязательно в разрезе Unity. В Киеве например такие курсы прекрасно преподают в CyberBionic Systematics (это не реклама, просто сам заканчивал их) или любую другуй контору. Можно учить самому но время наш самый бесценный ресурс. Курсы + занятия дома помогут Вам сэкономить как минимум пол года. Паралельно подписываетесь на сайты work.ua, rabota.ua ... и т.д. на получение рассылок вакансий с припиской Unity, C#, Junior ... каждые недели 2-3 появляются вакансии где готовы брать джуниоров. Конечно вам прийдется пройти собеседование и возможно сделать техническое задание. Но если эти 2-3 месяца Вы будете хорошо учиться на курсах, смотреть разные доступные видео уроки, читать книги по базовому программированию (именно базовому, так как от джуниора никто не требует умения синхронизировать потоки) то с большой вероятностью Вы пройдете собеседование и сделаете тестовое задание. Возвращаясь к Вашему проекту от Id Software, не знаю о чем идет речь но ни одного их старого проекта который можно было бы реализовать в одиночку за пол года — год, а то и больше не знаю. Да Вы будете заниматься тем что вам нравится но к вашей глобальной цели Вас это мало приблизит, за тот же год Вы можете сделать от 6 до 24 игр. И вот они вам откроют двери в большинство Украинских компаний которые работают с Юнити. В общем все это советы основанные на моем путаном жизненном опыте. Хотите прислушивайтесь, хотите идети своим путем. В обоих случаях если у Вас есть страсть к этому делу Вы обязательно добьетесь успеха! Удачи.

Спасибі за те що ділитесь досвідом своїм. Я дуже вдячний за це. На курси не маю фін можливості. Тому мої ресурси це книги, повторення прикладів, власні експерименти для закріплення. Я не планую чогось грандіозного зараз, адже розумію що для цього потрібна хоча б маленька команда. Адже вивчати ще 3D Max чи Blender для моделювання, вміти файно в Photoshop ваяти текстури... не для однією людини. В той же час я хочу максимально навчитись, мати практику щоб вже прийшовши мати перевагу над тими хто просто десь вчився. Та і готовий працювати на дурняк.

Опять же из опыта скажу что умение моделировать, текстурировать, ригить и т.д. Вам в работе программистом вряд ли понадобится. Тоесть знать общие принципы конечно нужно что бы банально на одном языке с дизайнером можно было поговорить. Но не более того. Куда важнее сконцентрироватся исключительно на программировании. Самый интересный способ роста и пополнения своего портфолио это делать маленькие казуальные игры. Сделайте flappy bird, dot in circle ... игр которые программист может сделать в одиночку за один — четыре дня очень много. У Вас как человека разбирающегося паралельно с технологиями и языками это займет больше времени но примеров в интернете много, умных книг тоже, так что за 1-2 недели осилите каждую такую игру. Читая ту или иную книгу или изучая статью сразу думайте как Вы можете в своей игре применить эту технологию. И через те же 2-3 месяца у Вас будет достаточно опыта и знаний для работы в команде.

ну сенс у вивченні іншої мови є завжди :) до того ж на шарпі набагато більше свіжих мануалів та відповідей з кодом на форумах, а це значно полегшує вивчання Юніті. Ну і для розширення кругозору корисно :)

А щодо джерел з JS, то є отака книжка, але вона з Юніті 3.х — www.packtpub.com/...nt/support/8704 — знайти у електронному вигляді можна на трекерах (є навіть переклад російською, але він корявий, наче гугл-тренслейтом перекладали), за моїм посиланням там матеріали до книжки можна завантажити, тільки треба зареєструватися на сайті. Ось тут матеріали до цієї ж книжки під Юніті 4.х є unitybook.net/downloads

Ну а взагалі треба ходити по форумах різних, запитувати, коли щось незрозуміло.
forum.unity3d.com
answers.unity3d.com
unity3d.ru/...ution/index.php

До, речі, ще є конвертери кода з C# у JS, якщо принципово не хочеться вивчати іншу мову, але я не знаю на скільки коректно вони працюють unity3d.ru/...p?f=105&t=12736 :)

Спасибі вам велике за інформацію та пораду. Я просто боюсь не потягну JS та C# одночасно. Англійська мене не лякає, я говорити геть не вмію, в тому сенсі що будувати правильно конструкції. Але я дуже добре розумію англійську. Все що по юніті навчився, то на англомовних ресурсах.

Потягнете:) Якщо є базове розуміння програмування та бажання, то буде не так складно, до того ж у C# низький поріг входження. З C#-пу є непоганий курс від Сергія Байдачного rutracker.org/...c.php?t=3848081 . Потім у нього ще нові курси з’являлися:
www.microsoftvirtualacademy.com/...s/csharp_part_1
www.microsoftvirtualacademy.com/...s/csharp_part_2

Розуміння що і як зробити є, але коли виникає завдання в голові відшукати синтаксис і я лізу в нотатку, знаходжу і воно працює... Чомусь записую собі в «Чувак, ти не шариш». Можна, напевне не скромне питання, ви працюєте з Unity та C#, у вас виникали проблеми на кшталт «Дідько, як же воно правильно пишеться»? І коли ви позбулись цього?

давайте краще в лічкє поспілкуємось.

Геть не по темі... у мене виникло таке питання. Чому в Україні ті хто розробляють відеоігри, не роблять це на unreal engine? Там так само і С# та і C++ є.

Не так само. Геть різні движки. Анріал більш технологічний, є сирці і ти сам можеш ту довбану багу виправити. Основна мова — C++, інше — скрипти з усіма наслідками. Юніті більш... казуальний. Велика інтеграція з редактором та asset store. Основна мова — C#. Різні ліцензії (юніті дешевше). Анріал більше для великих контор і я б не сказав, що його зовсім не використовують у нас.

Ого, та ви просто порвали мені шаблон. Спасибі.

Ці хлопці і на юніті щось робили)

Изучать C# для указанных вами целей смысл есть. Во-первых, писать объектно-ориентированные вещи лучше на классическом объектном языке, а не на закостыленнном под ООП JS. Во-вторых, подавляющее большинство учебного материала по Unity3D на C#. Если вы ещё не гуру JS то есть смысл начать учить С# именно для игр. Есть даже специальная книга для этого rutracker.org/...c.php?t=4683868 Но лучше классическую взять по C# и одновременно разбирать примеры из многочисленных туториалов по Unity. И продолжайте учить просто так JS, он не помешает.

є навіть відеокурс з C# для Unity-девелоперів rutracker.org/...c.php?t=4907370

По Unity огромное количество материала в том числе и на официальном сайте и наверное 90% его на C#

Справді, до гуру в JS як до неба рачки повзти. Хороша ідея. Я спробую відразу взятись C#. Просто при першому знайомстві в голові відбулись наступні думки «JS я трішки знаю, воно підтримується Юніті, можна не лізти в С#, покищо.» Спасибі вам пораду.

Справді, до гуру в JS як до неба рачки повзти
Думаете, что до гуру C# вам ближе?

Звісно що далеко)) Але багаж JS не такий великий щоб магнетично манив не лізти в C#. Але й елементарні речі типу циклів, масивів і тому подібних речей в купі з ООП я розумію. А на C# поняття не маю. Але це питання вивчення кількох вечорів в котрі ввійде теорія+практика. З того що я писав вчора це були постріли, реакція на зіткнення кулі, вмикання частинок котрі імітують попадання, звук пострілу. Тобто події і все таке. Сьогодні на JS вчився і робив панельку котра показувала кількість патронів. Мені щоб щось зробити, потрібно вивчити щось нове і дізнатись, я не роблю це на рівні рефлексів і не дивлячись на клавіатуру друкуючи. Тему створював не для JS vs C#, чи вияснення моїх скілів в якійсь мові, я не шукаю собі роботи в якійсь конторі, а з проханням поділитись зімною інформацією, порадами стосовно книг, чи ресурсами у вигляді посилань на цікаві канали на ютубі чи туторіали.

Ну как раз Javascript — это язык, который учится за несколько вечеров, на C# вы потратите несколько вечеров только чтоб скачать и установить Visual Studio

Перестань советовать то в чём не разбираешься. Студия для Unity3D не нужна. В комплекте идёт свой редактор, который поддерживает три языка C# JS и Boo. На C# написано 90% всех учебников и туториолов для Unity3D. И это ж-ж-ж неспроста, уж поверь.

А про несколько вечеров для установки Студии это ты по диалапу пробовал?

Скажем так, я застал времена, когда Visual Studio была настолько маленькой, что ее можно было скачать даже по диалапу

Перестань сбивать человека с истинного пути. Никто не говорит, что твой JS отстой по сравнению с C#. Просто, конкретно, для Unity3D для игр гораздо полезнее будет последний.

Сейчас Студия на чистую виртуалку встаёт со скачиванием и всеми фреймворками максимум за 30 минут.

Установка Visual Studio 2015 на физический комп заняла около 2 часов с 3-мя перезагрузками.

Как говорил классик, есть вещи, которые не меняются.

вы потратите несколько вечеров только чтоб скачать и установить Visual Studio
заняла около 2 часов с 3-мя перезагрузками.
Как говорил классик, есть вещи, которые не меняются.

Я без всякой иронии считаю, что есть программисты которым комфорт противопоказан. Их много больше половины. Когда они работают в вим, в командной строке, с синтаксисом языка, похожего на набор случайных символов, из-за внутреннего преодоления у них появляется инерция с помощью которой они начинают решать некоторые задачи. Посади их в уютное кресло .net и они расслабятся, заплывут жирком и их можно будет списывать.
Это единственный недостаток .net перед всеми остальными средами и инструментами.

при чем тут это? Я где-то жаловался на то, что .NET излишне удобный?

Я без всякой иронии считаю, что есть программисты которым комфорт противопоказан. Их много больше половины. Когда они работают в вим, в командной строке, с синтаксисом языка, похожего на набор случайных символов, из-за внутреннего преодоления у них появляется инерция с помощью которой они начинают решать некоторые задачи. Посади их в уютное кресло .net и они расслабятся, заплывут жирком и их можно будет списывать.
Негодуют товарищи, неспособные написать строчку кода нез IDE?
Это единственный недостаток .net перед всеми остальными средами и инструментами.
ага, у дотнета ровно один недостаток и это «излишнее удобство»? Все ясно, типичный представитель секты свидетелей майкрософта.
Все ясно, типичный представитель секты свидетелей майкрософта.
Да, хотя есть и сервер на Ubunty и виртуалка на Xubunty под которой я пишу на Python и Ruby.
Но быть недовольным Microsoft это как предъявлять претензии к Infiniti проездив всю жизнь на газонокосилке.
зы Я прекрасно понимаю что Infiniti НЕ ПОДСТРИГАЕТ ТРАВУ, а газонокосилка делает это лучше всего в мире. Так же как JS это не язык а костыль для HTML, но кто будет спорить с тем что у него просто нет конкурентов?

Преодоление трудностей абсолютно точно развивает скилы программирования. Начинаешь копаться в кишочках, писать шел-скрипты, понимаешь что что-то можно сделать проще дешевле чем под майкрософт и в конце концов погружаешься в болото программирования ради программирования. Разумеется лучшие программисты находятся в этом болоте. А индусы просто получают удовольствие перетаскивая формочки. Это простой и понятный мир. И я ни с чем не спорю. Я просто люблю Microsoft как вершину продуктов для разработчиков.

Но быть недовольным Microsoft это как предъявлять претензии к Infiniti проездив всю жизнь на газонокосилке.
Я на дотнете пишу с версии 1.1

Может быть дело в этом. Я недавно посмотрел на asp и понял что у меня было бы много претензий если бы я начал с него. Но я начал с 3.5, уже со всем сахаром и плюшками. Поэтому и сохранил чувство восторга.

SSD — рекомендую.

У меня на семилетнем ноуте за полчаса ставится.

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

Майкрософт любит перегружаться.

Либо это какой-то не такой SSD, либо что-то не то с 15 студией. 2013 Cmmunity на ссд стала сильно быстрее. Правда я убирал ненужные галочки.

Samsung 840 Pro 512GB 2.5-Inch SATA 6Gbps Solid State Drive

Делал Full Install

Там дійсно є власний редактор, а стосовно JS як мови котра вчиться за кілька вечорів... то або я дурний і в мене погано з пам’яттю, або ви чи інші люди генії. Бо JSові оті речі типу ВОМ, DOM, та просто стандартний набір типу цикли, масиви і тому подібні речі, з нуля за кілька вечорів не можливо вивчити.
Може я не розбираюсь, але, думаю, що зазубрити синтаксис і конструкції це не те ж саме що вивчити мову.

Изучать C# для указанных вами целей смысл есть. Во-первых, писать объектно-ориентированные вещи лучше на классическом объектном языке.

Ржунимагу. ЭТо шарп — классический объектно-ориентированный язык? Руби с обжективом и смоллтолком заходяцца в истерическом хохоте, когда этот статический кал разные неофиты называют объектным, да еще и классическим языком. А Кей вылезает из тлена и выпивает чекушку.

а не на закостыленнном под ООП JS

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

ТС, не слушайте подобных адептов цервки MS, учите JS и будет вам счастье. Просто кто-то не может смириться, что не обязательно было учить язык прогарммирования 5 лет чтоб писать на нем что-то сложнее Hello World

Я не ТС. Я голос разума и адепт статистики. Дальнейший спор со статистикой разрешаю.

Підписатись на коментарі