Изучение c# путем создания игр, стоит ли идти по такому пути и какие есть варианты?
Доброе время суток.
Так сложилась судьба, попал я на на большой проект, написанный на c# windows forms. Знаю, технология старая, да и десктопные приложения сейчас совсем не в тренде. Раньше занимался веб-ом, php, немного js и другие типичные технологии. Все программирование заключалось в выборке данных из бд и вставке в html.
Хочется научится кодить, хорошо кодить. Для этого нужно читать книги и проецировать, полученные знания, на реальных приложениях. Плюс ко всему, охота проявить творческую жилку. Кажется игры здесь более чем уместны: кодинг, дизайн, интересная история. Люблю побродить в инди-играх, впечатлили limbo, brain. Погуглив, обнаружил движок uniti3d, где можно писать скрипты на c#. Однако, из прочитанного понял, что в нем для создания игр программировать вообще не надо, просто перетаскиваешь готовые элементы, а это не совсем согласуется с целями.
Интересна разработка для мобильных устройств. Windows 10, слышал, предоставляет единую платформу для создания приложения для разных устройств. Но вряд ли эти приложухи будут востребованы, по крайней мере года 2-3. Эту нишу крепко удерживают другие ОС-и.
Может быть это гиблое дело и стоит присоединиться к какому-нибудь опенсорсному проекту, что-нибудь связное с ИИ.
Недавно написал "сапера" на windows forms и оказывается не так страшен черт, как я думал.
Игры делать весело и очень круто, в разработке игр очень много нетривиальных задач, так что мне кажется для закалки скиллов очень даже подходит, но дело в том, что в играх, которые под силу сделать в одиночку не все технологии присутствуют в полной мере, поэтому стоит так же потрудиться над тем, чтобы придумать как и где эти технологии применить.
По поводу unity3d - там c# ведь по сути для небольших скриптов, так что глубоко не изучите.
А вот если вы возьмёте C++ и SDL, то там да, толку может много выйти при должной усидчивости и целеустремлённости.
В общем для освоения c# мне кажется вам стоит не тупо делать игры на юнити, а придумывать различные приложения, которым может быть уже давно есть лучшие аналоги, но все равно делать самому;)
Программирование происходит в голове. Компьютер всего лишь средство выражения, так же как и windows forms. Приучите себя писать не только код, но и документацию. В общем программирование игр на игру совсем не похоже и обрастает кучей допработ, которые делать не всегда хочется, потому что а) я это миллион раз видел у других и б) я думал это должно работать само, а оно во как вышло, что мне нужно сделать то, что пользователи будут стремиться "пропустить" как назойливое препятствие на пути к экшену.
Из маленьких наблюдений за профессией - просто делайте по одному два открытия/инсайта для себя, но каждый день. Сохраняйте темп, продолжайте бежать. :)
Все нижесказанное имеет отношение только с разработке нормальных игр и серьезному программированию, а не к поделкам на коленке, приносящим нулевую прибыль.
1) В Unity3d программировать НАДО. Перетаскиванием готовых элементов вы не отделаетесь. Те, кто утверждает обратное - нагло врут.
2) Творческого с точки зрения интересных историй и тому подобного не программерского для программистов в играх - мало. Творчеством там в первую очередь геймдизайнеры занимаются. И вы успеете их возненваидеть, по три раза переписывая какой нибудь ни разу не творческий модуль.
3) Научится хорошо программировать можно ТОЛЬКО в команде.
4) Обычно на чем написано приложение - не имеет особого значения. Важны подходы, паттерны, алгоритмы, и прочие умные слова.
Какой я бы вывод сделал - продолжайте пока что работать где работайте. Если проект там большой - наберетесь опыта, а он всегда нужен. Если очень зудит делать игры - присоединитесь к какой то АДЕКВАТНОЙ команде. Их можно попробовать поискать на gamedev.ru, хотя там с адекватностью бывает крайне печально.
Созданием игр на Unity3D, C# будите учить долго. И хорошо его не выучишь, в силу отличий нормального подхода и того что в Unity3D.
Конструкторов нет (Awaik, Start), какие то непонятные методы уже унаследованы в игровых объектах и т.д.. Это не плохо, но и не чистый C#, много нюансов от самого движка Unity3D. (такое впечатление после полного прочтения официальной справочной информации)
Из того что почитать:
1) Jon Skeet C# для профессионалов.Тонкости программирования. (даст общее понятие .Net и C#)
2) Джеффри Рихтер CLR via C# Microsoft.NET. (более глубокое познание местами)
3) Макконнелл - Совершенный код. (приведет мысли в порядок)
4) Martin R. Clean Coder. (небольшая книга, тоже мысли приводит в порядок)
5) Кржиштоф Цвалина, Брэд Абрамс "Инфраструктура программных проектов: соглашения, идиомы и шаблоны для многократно используемых библиотек .NET". (очень мощная книга, учит тому как надо писать, а не просто писать что бы работало)
Первые две про код, остальные про правила написания, важность которых вы почувствуете со временем.